// ==UserScript== // @name WELearn网课助手 // @namespace https://github.com/SSmJaE/WELearnHelper // @description 显示WE Learn随行课堂题目答案;支持班级测试;自动答题;刷时长;开放自定义设置 // @version 0.9.3 // @author SSmJaE // @license GPL-3.0 // @compatible Chrome // @match https://course.sflep.com/* // @match https://welearn.sflep.com/* // @match https://courseappserver.sflep.com/* // @match https://centercourseware.sflep.com/* // @run-at document-end // @connect localhost // @connect 47.100.166.53 // @grant GM_setValue // @grant GM_getValue // @grant GM_setClipboard // @grant GM_xmlhttpRequest // @grant unsafeWindow // @require https://cdn.jsdelivr.net/npm/vue@2.6.14/dist/vue.min.js // ==/UserScript== /******/ (function(modules) { // webpackBootstrap /******/ // install a JSONP callback for chunk loading /******/ function webpackJsonpCallback(data) { /******/ var chunkIds = data[0]; /******/ var moreModules = data[1]; /******/ /******/ /******/ // add "moreModules" to the modules object, /******/ // then flag all "chunkIds" as loaded and fire callback /******/ var moduleId, chunkId, i = 0, resolves = []; /******/ for(;i < chunkIds.length; i++) { /******/ chunkId = chunkIds[i]; /******/ if(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) { /******/ resolves.push(installedChunks[chunkId][0]); /******/ } /******/ installedChunks[chunkId] = 0; /******/ } /******/ for(moduleId in moreModules) { /******/ if(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) { /******/ modules[moduleId] = moreModules[moduleId]; /******/ } /******/ } /******/ if(parentJsonpFunction) parentJsonpFunction(data); /******/ /******/ while(resolves.length) { /******/ resolves.shift()(); /******/ } /******/ /******/ }; /******/ /******/ /******/ // The module cache /******/ var installedModules = {}; /******/ /******/ // object to store loaded and loading chunks /******/ // undefined = chunk not loaded, null = chunk preloaded/prefetched /******/ // Promise = chunk loading, 0 = chunk loaded /******/ var installedChunks = { /******/ 0: 0 /******/ }; /******/ /******/ /******/ /******/ // script path function /******/ function jsonpScriptSrc(chunkId) { /******/ return __webpack_require__.p + "" + chunkId + ".WELearnHelper0.9.3.user.js" /******/ } /******/ /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ /******/ // Check if module is in cache /******/ if(installedModules[moduleId]) { /******/ return installedModules[moduleId].exports; /******/ } /******/ // Create a new module (and put it into the cache) /******/ var module = installedModules[moduleId] = { /******/ i: moduleId, /******/ l: false, /******/ exports: {} /******/ }; /******/ /******/ // Execute the module function /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); /******/ /******/ // Flag the module as loaded /******/ module.l = true; /******/ /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ /******/ // The chunk loading function for additional chunks /******/ // Since all referenced chunks are already included /******/ // in this file, this function is empty here. /******/ __webpack_require__.e = function requireEnsure() { /******/ return Promise.resolve(); /******/ }; /******/ /******/ // expose the modules object (__webpack_modules__) /******/ __webpack_require__.m = modules; /******/ /******/ // expose the module cache /******/ __webpack_require__.c = installedModules; /******/ /******/ // define getter function for harmony exports /******/ __webpack_require__.d = function(exports, name, getter) { /******/ if(!__webpack_require__.o(exports, name)) { /******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); /******/ } /******/ }; /******/ /******/ // define __esModule on exports /******/ __webpack_require__.r = function(exports) { /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); /******/ } /******/ Object.defineProperty(exports, '__esModule', { value: true }); /******/ }; /******/ /******/ // create a fake namespace object /******/ // mode & 1: value is a module id, require it /******/ // mode & 2: merge all properties of value into the ns /******/ // mode & 4: return value when already ns object /******/ // mode & 8|1: behave like require /******/ __webpack_require__.t = function(value, mode) { /******/ if(mode & 1) value = __webpack_require__(value); /******/ if(mode & 8) return value; /******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; /******/ var ns = Object.create(null); /******/ __webpack_require__.r(ns); /******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); /******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); /******/ return ns; /******/ }; /******/ /******/ // getDefaultExport function for compatibility with non-harmony modules /******/ __webpack_require__.n = function(module) { /******/ var getter = module && module.__esModule ? /******/ function getDefault() { return module['default']; } : /******/ function getModuleExports() { return module; }; /******/ __webpack_require__.d(getter, 'a', getter); /******/ return getter; /******/ }; /******/ /******/ // Object.prototype.hasOwnProperty.call /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; /******/ /******/ // __webpack_public_path__ /******/ __webpack_require__.p = ""; /******/ /******/ // on error function for async loading /******/ __webpack_require__.oe = function(err) { console.error(err); throw err; }; /******/ /******/ var jsonpArray = window["webpackJsonp"] = window["webpackJsonp"] || []; /******/ var oldJsonpFunction = jsonpArray.push.bind(jsonpArray); /******/ jsonpArray.push = webpackJsonpCallback; /******/ jsonpArray = jsonpArray.slice(); /******/ for(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]); /******/ var parentJsonpFunction = oldJsonpFunction; /******/ /******/ /******/ // Load entry module and return exports /******/ return __webpack_require__(__webpack_require__.s = 78); /******/ }) /************************************************************************/ /******/ ([ /* 0 */ /***/ (function(module, exports, __webpack_require__) { module.exports = __webpack_require__(46); /***/ }), /* 1 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "e", function() { return store; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return BASE_URL; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return DEBUG_MODE; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "d", function() { return VERSION; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return QUERY_INTERVAL; }); /* harmony import */ var _actions__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3); /* harmony import */ var _package_json__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(42); var _package_json__WEBPACK_IMPORTED_MODULE_1___namespace = /*#__PURE__*/__webpack_require__.t(42, 1); var store = { messages: [], USER_SETTINGS: {}, collapse: false, showExamQueryButton: false, showExamUploadButton: false }; // *--------------------以下为常量 var BASE_URL; var DEBUG_MODE; if (false) {} else { BASE_URL = "http://47.100.166.53/api/welearn"; DEBUG_MODE = false; } var VERSION = _package_json__WEBPACK_IMPORTED_MODULE_1__[/* version */ "a"]; var QUERY_INTERVAL = 3000; //单位ms /***/ }), /* 2 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _asyncToGenerator; }); 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); }); }; } /***/ }), /* 3 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return addMessage; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return clearMessage; }); /* harmony import */ var _babel_runtime_helpers_esm_typeof__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6); /* harmony import */ var _babel_runtime_helpers_esm_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(2); /* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(0); /* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2__); /* harmony import */ var _src_utils_common__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(4); /* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(1); function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; } 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); } 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; } function addMessage(_x) { return _addMessage.apply(this, arguments); } /** 清空消息 */ function _addMessage() { _addMessage = Object(_babel_runtime_helpers_esm_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"])( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2___default.a.mark(function _callee2(message) { var type, scrollDown, add, _add, _iterator, _step, line, _args2 = arguments; return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2___default.a.wrap(function _callee2$(_context2) { while (1) { switch (_context2.prev = _context2.next) { case 0: _add = function _add3() { _add = Object(_babel_runtime_helpers_esm_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"])( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2___default.a.mark(function _callee(finalInfo, finalType) { var single, _args = arguments; return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2___default.a.wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: single = _args.length > 2 && _args[2] !== undefined ? _args[2] : true; if (!(finalType !== "hr")) { _context.next = 4; break; } if (!(finalInfo === "")) { _context.next = 4; break; } return _context.abrupt("return"); case 4: _index__WEBPACK_IMPORTED_MODULE_4__[/* store */ "e"].messages.push({ info: finalInfo, type: finalType }); if (!(_index__WEBPACK_IMPORTED_MODULE_4__[/* store */ "e"].USER_SETTINGS.autoSlide && single === true)) { _context.next = 9; break; } _context.next = 8; return Object(_src_utils_common__WEBPACK_IMPORTED_MODULE_3__[/* sleep */ "h"])(10); case 8: //等待message渲染完成,不然不会拉到最底 scrollDown(); case 9: case "end": return _context.stop(); } } }, _callee); })); return _add.apply(this, arguments); }; add = function _add2(_x2, _x3) { return _add.apply(this, arguments); }; scrollDown = function _scrollDown() { document.querySelector("#container-messages").scrollBy(0, 1000); }; type = _args2.length > 1 && _args2[1] !== undefined ? _args2[1] : "normal"; if (!Array.isArray(message)) { _context2.next = 30; break; } _iterator = _createForOfIteratorHelper(message); _context2.prev = 6; _iterator.s(); case 8: if ((_step = _iterator.n()).done) { _context2.next = 19; break; } line = _step.value; if (!(Object(_babel_runtime_helpers_esm_typeof__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(line) === "object")) { _context2.next = 15; break; } _context2.next = 13; return add(line.info, line.type, false); case 13: _context2.next = 17; break; case 15: _context2.next = 17; return add(String(line), type !== null && type !== void 0 ? type : "normal", false); case 17: _context2.next = 8; break; case 19: _context2.next = 24; break; case 21: _context2.prev = 21; _context2.t0 = _context2["catch"](6); _iterator.e(_context2.t0); case 24: _context2.prev = 24; _iterator.f(); return _context2.finish(24); case 27: scrollDown(); _context2.next = 32; break; case 30: _context2.next = 32; return add(String(message), type); case 32: case "end": return _context2.stop(); } } }, _callee2, null, [[6, 21, 24, 27]]); })); return _addMessage.apply(this, arguments); } function clearMessage() { _index__WEBPACK_IMPORTED_MODULE_4__[/* store */ "e"].messages = []; } /***/ }), /* 4 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; // EXPORTS __webpack_require__.d(__webpack_exports__, "c", function() { return /* binding */ injectToContent; }); __webpack_require__.d(__webpack_exports__, "h", function() { return /* binding */ common_sleep; }); __webpack_require__.d(__webpack_exports__, "d", function() { return /* binding */ makeDraggable; }); __webpack_require__.d(__webpack_exports__, "f", function() { return /* binding */ requestErrorHandler; }); __webpack_require__.d(__webpack_exports__, "e", function() { return /* binding */ perSession; }); __webpack_require__.d(__webpack_exports__, "g", function() { return /* binding */ setValue; }); __webpack_require__.d(__webpack_exports__, "b", function() { return /* binding */ getValue; }); __webpack_require__.d(__webpack_exports__, "a", function() { return /* binding */ copyToClipboard; }); // UNUSED EXPORTS: appendToSideBar // EXTERNAL MODULE: ./node_modules/.pnpm/registry.npmmirror.com+@babel+runtime@7.17.8/node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js var asyncToGenerator = __webpack_require__(2); // EXTERNAL MODULE: ./node_modules/.pnpm/registry.npmmirror.com+@babel+runtime@7.17.8/node_modules/@babel/runtime/regenerator/index.js var regenerator = __webpack_require__(0); var regenerator_default = /*#__PURE__*/__webpack_require__.n(regenerator); // EXTERNAL MODULE: ./src/store/actions.ts var actions = __webpack_require__(3); // EXTERNAL MODULE: ./node_modules/.pnpm/registry.npmmirror.com+@babel+runtime@7.17.8/node_modules/@babel/runtime/helpers/esm/classCallCheck.js var classCallCheck = __webpack_require__(11); // EXTERNAL MODULE: ./node_modules/.pnpm/registry.npmmirror.com+@babel+runtime@7.17.8/node_modules/@babel/runtime/helpers/esm/createClass.js var createClass = __webpack_require__(12); // EXTERNAL MODULE: ./node_modules/.pnpm/registry.npmmirror.com+@babel+runtime@7.17.8/node_modules/@babel/runtime/helpers/esm/defineProperty.js var defineProperty = __webpack_require__(7); // CONCATENATED MODULE: ./src/utils/bridge.ts function sleep(ms) { return new Promise(function (resolve) { return setTimeout(resolve, ms); }); } /**inject和content公用的消息组件*/ var bridge_Communication = /*#__PURE__*/function () { function Communication(serviceType, serviceSource, serviceTarget) { Object(classCallCheck["a" /* default */])(this, Communication); Object(defineProperty["a" /* default */])(this, "sessions", new Set()); Object(defineProperty["a" /* default */])(this, "responses", {}); this.serviceType = serviceType; this.serviceSource = serviceSource; this.serviceTarget = serviceTarget; this.listen(); } Object(createClass["a" /* default */])(Communication, [{ key: "emit", value: function emit(event, payload) {} }, { key: "listen", value: function listen() { var _this = this; window.addEventListener("message", /*#__PURE__*/function () { var _ref = Object(asyncToGenerator["a" /* default */])( /*#__PURE__*/regenerator_default.a.mark(function _callee(event) { var data, response, payload, key, value, defaultValue, returnValue; return regenerator_default.a.wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: // console.error(event); data = event.data; if (!(data.extension === "unipus-helper")) { _context.next = 33; break; } if (!(data.serviceTarget === _this.serviceSource && data.serviceSource === _this.serviceTarget)) { _context.next = 33; break; } if (!(data.type === "request")) { _context.next = 32; break; } if (!(data.serviceSource === "inject" && data.serviceTarget === "content")) { _context.next = 30; break; } payload = JSON.parse(data.payload); _context.t0 = payload.type; _context.next = _context.t0 === "fetch" ? 9 : _context.t0 === "setValue" ? 13 : _context.t0 === "getValue" ? 19 : 26; break; case 9: _context.next = 11; return new Promise(function (resolve) { return chrome.runtime.sendMessage(data.payload, function (response) { // console.error(554321); // console.error(response); resolve(response); }); }); case 11: response = _context.sent; return _context.abrupt("break", 28); case 13: key = payload.key; value = payload.value; _context.next = 17; return new Promise(function (resolve) { chrome.storage.sync.set(Object(defineProperty["a" /* default */])({}, key, value), function () { console.log("".concat(key, " is set to ") + value); resolve(); }); }); case 17: response = {}; return _context.abrupt("break", 28); case 19: key = payload.key; defaultValue = payload.defaultValue; _context.next = 23; return new Promise(function (resolve) { chrome.storage.sync.get(key, function (result) { // console.error(`${key} currently is ` + result[key]); var temp; try { temp = JSON.parse(result[key]); } catch (e) { temp = result[key]; } resolve(temp); }); }); case 23: returnValue = _context.sent; response = returnValue ? returnValue : defaultValue; return _context.abrupt("break", 28); case 26: response = "no event handler for " + payload.type; return _context.abrupt("break", 28); case 28: _context.next = 31; break; case 30: response = {}; case 31: window.postMessage({ extension: "unipus-helper", sessionId: data.sessionId, serviceType: _this.serviceType, serviceSource: _this.serviceSource, serviceTarget: _this.serviceTarget, type: "response", status: "200", payload: response }, "*"); case 32: if (data.type === "response") { // console.error( // `${this.serviceType} ${this.serviceSource} receive server ${this.serviceTarget}'s response`, // ); _this.responses[data.sessionId] = data.payload; _this.sessions.delete(data.sessionId); } case 33: case "end": return _context.stop(); } } }, _callee); })); return function (_x) { return _ref.apply(this, arguments); }; }()); } /**模拟网络请求 */ }, { key: "request", value: function request(message) { var _this2 = this; return new Promise( /*#__PURE__*/function () { var _ref2 = Object(asyncToGenerator["a" /* default */])( /*#__PURE__*/regenerator_default.a.mark(function _callee2(resolve, reject) { var sessionId, response; return regenerator_default.a.wrap(function _callee2$(_context2) { while (1) { switch (_context2.prev = _context2.next) { case 0: if (!(_this2.serviceSource === "content" && _this2.serviceTarget === "background")) { _context2.next = 4; break; } chrome.runtime.sendMessage(message, function (response) { resolve(response); }); _context2.next = 13; break; case 4: sessionId = String(Math.random()); window.postMessage({ extension: "unipus-helper", sessionId: sessionId, serviceType: _this2.serviceType, serviceSource: _this2.serviceSource, serviceTarget: _this2.serviceTarget, type: "request", payload: JSON.stringify(message) }, "*"); _this2.sessions.add(sessionId); case 7: if (false) {} if (!_this2.sessions.has(sessionId)) { response = _this2.responses[sessionId]; delete _this2.responses[sessionId]; resolve(response); } _context2.next = 11; return sleep(50); case 11: _context2.next = 7; break; case 13: case "end": return _context2.stop(); } } }, _callee2); })); return function (_x2, _x3) { return _ref2.apply(this, arguments); }; }()); } }]); return Communication; }(); /* harmony default export */ var bridge = (bridge_Communication); // CONCATENATED MODULE: ./src/utils/common.ts var injectToContent = false ? undefined : {}; function common_sleep(ms) { return new Promise(function (resolve) { return setTimeout(resolve, ms); }); } function getProperty(ele, prop) { return parseInt(window.getComputedStyle(ele)[prop], 10); } /**实现拖动,带边界检测*/ function makeDraggable(handle, container) { var draggable = false, pastX, pastY, containerLeft, containerTop, containerWidth, containerHeight, windowWidth, windowHeight; handle.addEventListener("mousedown", function (e) { handle.style.cursor = "grabbing"; draggable = true; pastX = e.clientX; pastY = e.clientY; containerLeft = getProperty(container, "left"); containerTop = getProperty(container, "top"); containerWidth = getProperty(container, "width"); containerHeight = getProperty(container, "height"); windowWidth = window.innerWidth; windowHeight = window.innerHeight; }, false); document.addEventListener("mousemove", function (e) { if (draggable === true) { var currentX = e.clientX, currentY = e.clientY, diffX = currentX - pastX, diffY = currentY - pastY; var targetX = containerLeft + diffX; var targetY = containerTop + diffY; if (targetX <= 0) targetX = 0; if (targetY <= 0) targetY = 0; if (targetX >= windowWidth - containerWidth) targetX = windowWidth - containerWidth; if (targetY >= windowHeight - containerHeight) targetY = windowHeight - containerHeight; container.style.left = targetX + "px"; container.style.top = targetY + "px"; } }); handle.addEventListener("mouseup", function () { handle.style.cursor = "grab"; draggable = false; containerLeft = getProperty(container, "left"); containerTop = getProperty(container, "top"); }, false); //防止意外未退出拖动状态 document.body.addEventListener("keydown", function (e) { if (e.key === "Escape") { handle.style.cursor = "grab"; draggable = false; containerLeft = getProperty(container, "left"); containerTop = getProperty(container, "top"); } }, false); } function errorMessageFactory(error) { var message = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "请求异常,稍后再试"; var mode = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : "message"; var toDisplay = ""; switch (mode) { case "message": toDisplay += message; break; case "originError": toDisplay += "".concat(error.message); break; case "both": toDisplay += message + "
".concat(error.message); break; } Object(actions["a" /* addMessage */])("".concat(toDisplay), "error"); } /** 通过装饰器,实现请求失败时,输出定制化的提示信息 * * 如果不对request进行装饰器包裹,异常直接输出至console * * 如果使用了装饰器,但是未提供message,输出默认值 */ function requestErrorHandler() { var message = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : "请求异常,稍后再试"; var mode = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "message"; return function (target, propertyKey, descriptor) { var originalMethod = descriptor.value; descriptor.value = function () { for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } // let result = undefined; // try { // if (originalMethod && typeof originalMethod.then === "function") { // originalMethod.catch((error: Error) => { // throw error; // }); // } // result = originalMethod.apply(this, args); // } catch (error) { // errorMessageFactory(error as Error, message, mode); // } finally { // return result; // } var result = originalMethod.apply(this, args); result.catch(function (error) { errorMessageFactory(error, message, mode); }); return result; }; return descriptor; }; } /** 通过装饰器,实现每次会话仅请求一次——限流 */ function perSession(storageKey) { return function (target, propertyKey, descriptor) { var originalMethod = descriptor.value; descriptor.value = function () { var hasChecked = sessionStorage.getItem(storageKey); if (!hasChecked) { for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { args[_key2] = arguments[_key2]; } var result = originalMethod.apply(this, args); console.log("".concat(storageKey, "\u672A\u6267\u884C\u8FC7\uFF0C\u5F00\u59CB\u6267\u884C")); sessionStorage.setItem(storageKey, new Date().toISOString()); return result; } else { console.log("".concat(storageKey, "\u5DF2\u6267\u884C\u8FC7\uFF0C\u653E\u5F03\u6267\u884C")); return Promise.resolve(); } }; return descriptor; }; } /**调用GM_setValue或者chrome.storage * * 如果调用的是GM_setValue,会对value进行JSON.stringify */ function setValue(_x, _x2) { return _setValue.apply(this, arguments); } /**调用GM_getValue或者chrome.storage * * 如果调用的是GM_getValue,返回JSON.parse后的结果 */ function _setValue() { _setValue = Object(asyncToGenerator["a" /* default */])( /*#__PURE__*/regenerator_default.a.mark(function _callee(key, value) { return regenerator_default.a.wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: typeof GM_setValue === "function" || function GM_setValue() {}; if (true) { _context.next = 6; break; } _context.next = 4; return injectToContent.request({ type: "setValue", key: key, value: value }); case 4: _context.next = 7; break; case 6: GM_setValue(key, JSON.stringify(value)); case 7: case "end": return _context.stop(); } } }, _callee); })); return _setValue.apply(this, arguments); } function getValue(_x3, _x4) { return _getValue.apply(this, arguments); } /**针对带数字索引的答案 */ function _getValue() { _getValue = Object(asyncToGenerator["a" /* default */])( /*#__PURE__*/regenerator_default.a.mark(function _callee2(key, defaultValue) { var returnValue, temp; return regenerator_default.a.wrap(function _callee2$(_context2) { while (1) { switch (_context2.prev = _context2.next) { case 0: typeof GM_getValue === "function" || function GM_getValue() {}; if (true) { _context2.next = 7; break; } _context2.next = 4; return injectToContent.request({ type: "getValue", key: key, defaultValue: defaultValue }); case 4: returnValue = _context2.sent; _context2.next = 9; break; case 7: temp = GM_getValue(key, defaultValue); try { returnValue = JSON.parse(temp); } catch (error) { returnValue = temp; } case 9: return _context2.abrupt("return", returnValue); case 10: case "end": return _context2.stop(); } } }, _callee2); })); return _getValue.apply(this, arguments); } function copyToClipboard(_x5) { return _copyToClipboard.apply(this, arguments); } /** * 注册按钮至侧边栏,class应为iconfont class */ function _copyToClipboard() { _copyToClipboard = Object(asyncToGenerator["a" /* default */])( /*#__PURE__*/regenerator_default.a.mark(function _callee3(text) { var copyFrom; return regenerator_default.a.wrap(function _callee3$(_context3) { while (1) { switch (_context3.prev = _context3.next) { case 0: // await navigator.clipboard.writeText(text.replace(/^.*、/, "")); copyFrom = document.createElement("textarea"); copyFrom.textContent = text.replace(/^.*、/, ""); document.body.appendChild(copyFrom); copyFrom.select(); document.execCommand("copy"); copyFrom.blur(); document.body.removeChild(copyFrom); case 7: case "end": return _context3.stop(); } } }, _callee3); })); return _copyToClipboard.apply(this, arguments); } function appendToSideBar(id, className, name) { try { if (!document.querySelector("sidebar-button-style")) { var buttonStyle = document.createElement("style"); buttonStyle.id = "sidebar-button-style"; buttonStyle.setAttribute("type", "text/css"); buttonStyle.innerHTML = "\n .courseware_sidebar_2 .sidebar-button {\n color: white;\n z-index: 100;\n font-size: 23px;\n cursor: pointer;\n position: relative;\n left: 15px;\n top: 5px;\n text-align: center; \n }\n\n .courseware_sidebar_2 .sidebar-button:hover {\n color: rgb(0,230,227);\n background: #3b3b3b 100px 100px;\n }\n \n .courseware_sidebar_2 .sidebar-button a { \n color: #494949; \n font-size: 14px; \n line-height: 20px;\n position: relative;\n left: -15px;\n }\n\n .courseware_sidebar_2 .sidebar-button:hover a {\n color: #ccc;\n }\n "; document.body.append(buttonStyle); } var button = document.createElement("span"); button.id = "".concat(id); button.className = "sidebar-button ".concat(className); button.innerHTML = "".concat(name, ""); document.querySelector(".courseware_sidebar_2 ul.c_s_2 li").appendChild(button); return button; //可以跨域添加元素,但是无法跨域操作元素 // (top.frames[0].document.querySelector( // "container-setting-button", // ) as HTMLElement).style.display = "none"; //todo 还是说,必须要分成两步?不然解释不了为什么上方可以修改style } catch (error) { console.log(error); } } /***/ }), /* 5 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /* MIT License http://www.opensource.org/licenses/mit-license.php Author Tobias Koppers @sokra */ // css base code, injected by the css-loader // eslint-disable-next-line func-names module.exports = function (useSourceMap) { var list = []; // return the list of modules as css string list.toString = function toString() { return this.map(function (item) { var content = cssWithMappingToString(item, useSourceMap); if (item[2]) { return "@media ".concat(item[2], " {").concat(content, "}"); } return content; }).join(''); }; // import a list of modules into the list // eslint-disable-next-line func-names list.i = function (modules, mediaQuery, dedupe) { if (typeof modules === 'string') { // eslint-disable-next-line no-param-reassign modules = [[null, modules, '']]; } var alreadyImportedModules = {}; if (dedupe) { for (var i = 0; i < this.length; i++) { // eslint-disable-next-line prefer-destructuring var id = this[i][0]; if (id != null) { alreadyImportedModules[id] = true; } } } for (var _i = 0; _i < modules.length; _i++) { var item = [].concat(modules[_i]); if (dedupe && alreadyImportedModules[item[0]]) { // eslint-disable-next-line no-continue continue; } if (mediaQuery) { if (!item[2]) { item[2] = mediaQuery; } else { item[2] = "".concat(mediaQuery, " and ").concat(item[2]); } } list.push(item); } }; return list; }; function cssWithMappingToString(item, useSourceMap) { var content = item[1] || ''; // eslint-disable-next-line prefer-destructuring var cssMapping = item[3]; if (!cssMapping) { return content; } if (useSourceMap && typeof btoa === 'function') { var sourceMapping = toComment(cssMapping); var sourceURLs = cssMapping.sources.map(function (source) { return "/*# sourceURL=".concat(cssMapping.sourceRoot || '').concat(source, " */"); }); return [content].concat(sourceURLs).concat([sourceMapping]).join('\n'); } return [content].join('\n'); } // Adapted from convert-source-map (MIT) function toComment(sourceMap) { // eslint-disable-next-line no-undef var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))); var data = "sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(base64); return "/*# ".concat(data, " */"); } /***/ }), /* 6 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _typeof; }); function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } /***/ }), /* 7 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _defineProperty; }); function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } /***/ }), /* 8 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; // EXPORTS __webpack_require__.d(__webpack_exports__, "a", function() { return /* binding */ requests_Requests; }); // EXTERNAL MODULE: ./node_modules/.pnpm/registry.npmmirror.com+@babel+runtime@7.17.8/node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js var asyncToGenerator = __webpack_require__(2); // EXTERNAL MODULE: ./node_modules/.pnpm/registry.npmmirror.com+@babel+runtime@7.17.8/node_modules/@babel/runtime/helpers/esm/classCallCheck.js var classCallCheck = __webpack_require__(11); // EXTERNAL MODULE: ./node_modules/.pnpm/registry.npmmirror.com+@babel+runtime@7.17.8/node_modules/@babel/runtime/helpers/esm/createClass.js var createClass = __webpack_require__(12); // EXTERNAL MODULE: ./node_modules/.pnpm/registry.npmmirror.com+@babel+runtime@7.17.8/node_modules/@babel/runtime/helpers/esm/typeof.js var esm_typeof = __webpack_require__(6); // EXTERNAL MODULE: ./node_modules/.pnpm/registry.npmmirror.com+@babel+runtime@7.17.8/node_modules/@babel/runtime/regenerator/index.js var regenerator = __webpack_require__(0); var regenerator_default = /*#__PURE__*/__webpack_require__.n(regenerator); // EXTERNAL MODULE: ./src/store/index.ts var store = __webpack_require__(1); // EXTERNAL MODULE: ./src/store/actions.ts var actions = __webpack_require__(3); // EXTERNAL MODULE: ./src/utils/common.ts + 1 modules var common = __webpack_require__(4); // EXTERNAL MODULE: ./node_modules/.pnpm/registry.npmmirror.com+@babel+runtime@7.17.8/node_modules/@babel/runtime/helpers/esm/defineProperty.js var defineProperty = __webpack_require__(7); // EXTERNAL MODULE: ./node_modules/.pnpm/registry.npmmirror.com+@babel+runtime@7.17.8/node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js var assertThisInitialized = __webpack_require__(9); // EXTERNAL MODULE: ./node_modules/.pnpm/registry.npmmirror.com+@babel+runtime@7.17.8/node_modules/@babel/runtime/helpers/esm/inherits.js var inherits = __webpack_require__(16); // EXTERNAL MODULE: ./node_modules/.pnpm/registry.npmmirror.com+@babel+runtime@7.17.8/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js var possibleConstructorReturn = __webpack_require__(15); // EXTERNAL MODULE: ./node_modules/.pnpm/registry.npmmirror.com+@babel+runtime@7.17.8/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js var getPrototypeOf = __webpack_require__(10); // EXTERNAL MODULE: ./node_modules/.pnpm/registry.npmmirror.com+@babel+runtime@7.17.8/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js var setPrototypeOf = __webpack_require__(17); // CONCATENATED MODULE: ./node_modules/.pnpm/registry.npmmirror.com+@babel+runtime@7.17.8/node_modules/@babel/runtime/helpers/esm/isNativeFunction.js function _isNativeFunction(fn) { return Function.toString.call(fn).indexOf("[native code]") !== -1; } // CONCATENATED MODULE: ./node_modules/.pnpm/registry.npmmirror.com+@babel+runtime@7.17.8/node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } // CONCATENATED MODULE: ./node_modules/.pnpm/registry.npmmirror.com+@babel+runtime@7.17.8/node_modules/@babel/runtime/helpers/esm/construct.js function construct_construct(Parent, args, Class) { if (_isNativeReflectConstruct()) { construct_construct = Reflect.construct; } else { construct_construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) Object(setPrototypeOf["a" /* default */])(instance, Class.prototype); return instance; }; } return construct_construct.apply(null, arguments); } // CONCATENATED MODULE: ./node_modules/.pnpm/registry.npmmirror.com+@babel+runtime@7.17.8/node_modules/@babel/runtime/helpers/esm/wrapNativeSuper.js function wrapNativeSuper_wrapNativeSuper(Class) { var _cache = typeof Map === "function" ? new Map() : undefined; wrapNativeSuper_wrapNativeSuper = function _wrapNativeSuper(Class) { if (Class === null || !_isNativeFunction(Class)) return Class; if (typeof Class !== "function") { throw new TypeError("Super expression must either be null or a function"); } if (typeof _cache !== "undefined") { if (_cache.has(Class)) return _cache.get(Class); _cache.set(Class, Wrapper); } function Wrapper() { return construct_construct(Class, arguments, Object(getPrototypeOf["a" /* default */])(this).constructor); } Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } }); return Object(setPrototypeOf["a" /* default */])(Wrapper, Class); }; return wrapNativeSuper_wrapNativeSuper(Class); } // CONCATENATED MODULE: ./node_modules/.pnpm/registry.npmmirror.com+@babel+runtime@7.17.8/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; } // CONCATENATED MODULE: ./node_modules/.pnpm/registry.npmmirror.com+@babel+runtime@7.17.8/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; } // EXTERNAL MODULE: ./node_modules/.pnpm/registry.npmmirror.com+@babel+runtime@7.17.8/node_modules/@babel/runtime/helpers/esm/slicedToArray.js + 3 modules var slicedToArray = __webpack_require__(18); // EXTERNAL MODULE: ./node_modules/.pnpm/registry.npmmirror.com+query-string@7.1.1/node_modules/query-string/index.js var query_string = __webpack_require__(25); // CONCATENATED MODULE: ./src/utils/request-base.ts var _excluded = ["body", "query"]; function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { Object(defineProperty["a" /* default */])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } function generateFinalUrl(url) { return url.startsWith("/") ? store["a" /* BASE_URL */] + url : url; } if (typeof GM_xmlhttpRequest !== "function") { var _GM_xmlhttpRequest = function _GM_xmlhttpRequest() {}; } /**对GM_xmlhttpRequest的封装,以实现一致的fetch风格的request通用接口 */ function requestOfGm(url) { var init = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : { method: "GET", headers: {}, body: undefined, query: undefined }; //可以直接传入object,而不用每次手动stringify var body = Object(esm_typeof["a" /* default */])(init.body) === "object" ? JSON.stringify(init.body) : init.body; //可以以对象形式传入查询字符串 url = Object(esm_typeof["a" /* default */])(init.query) === "object" ? query_string["stringifyUrl"]({ url: url, query: init.query }) : url; return new Promise(function (resolve, reject) { GM_xmlhttpRequest({ url: generateFinalUrl(url), method: init.method, headers: init.headers, data: body, timeout: 5000, responseType: "json", onload: function onload(response) { var code = response.status; if (code >= 200 && code <= 300) { response.json = function () { return new Promise(function (resolve) { return resolve(response.response); }); }; response.text = function () { return new Promise(function (resolve) { return resolve(response.responseText); }); }; resolve(response); } else reject(response); }, onabort: function onabort(response) { return reject(response); }, onerror: function onerror(response) { return reject(response); }, ontimeout: function ontimeout(response) { return reject(response); } }); }); } /**原生fetch并不支持query,所以还是要自己实现 */ function generateFinalUrlWithQueryParams(url, query) { for (var _i = 0, _Object$entries = Object.entries(query || {}); _i < _Object$entries.length; _i++) { var _Object$entries$_i = Object(slicedToArray["a" /* default */])(_Object$entries[_i], 2), value = _Object$entries$_i[1]; if (Object(esm_typeof["a" /* default */])(value) === "object") throw new Error("query params不应为嵌套对象,拍平或者手动序列化子对象"); } var absoluteUrl = url.startsWith("/") ? store["a" /* BASE_URL */] + url : url; return query_string["stringifyUrl"]({ url: absoluteUrl, query: query }); } /**对crx sendMessage的封装,以实现一致的fetch风格的request通用接口 */ function requestOfCrx(_x) { return _requestOfCrx.apply(this, arguments); } function _requestOfCrx() { _requestOfCrx = Object(asyncToGenerator["a" /* default */])( /*#__PURE__*/regenerator_default.a.mark(function _callee2(url) { var init, _args2 = arguments; return regenerator_default.a.wrap(function _callee2$(_context2) { while (1) { switch (_context2.prev = _context2.next) { case 0: init = _args2.length > 1 && _args2[1] !== undefined ? _args2[1] : { method: "GET", headers: {}, body: undefined, query: undefined }; return _context2.abrupt("return", new Promise( /*#__PURE__*/function () { var _ref = Object(asyncToGenerator["a" /* default */])( /*#__PURE__*/regenerator_default.a.mark(function _callee(resolve, reject) { var body, query, realisticInit, response, text; return regenerator_default.a.wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: body = init.body, query = init.query, realisticInit = _objectWithoutProperties(init, _excluded); //todo background return interface _context.next = 3; return common["c" /* injectToContent */].request({ type: "fetch", url: generateFinalUrlWithQueryParams(url, init.query), init: _objectSpread(_objectSpread({}, realisticInit), {}, { body: JSON.stringify(body) }) }); case 3: response = _context.sent; text = response ? response.text : undefined; response.json = function () { return new Promise(function (resolve) { return resolve(JSON.parse(text)); }); }; response.text = function () { return new Promise(function (resolve) { return resolve(text); }); }; response.ok ? resolve(response) : reject(response); case 8: case "end": return _context.stop(); } } }, _callee); })); return function (_x2, _x3) { return _ref.apply(this, arguments); }; }())); case 2: case "end": return _context2.stop(); } } }, _callee2); })); return _requestOfCrx.apply(this, arguments); } /* harmony default export */ var request_base = ( false ? undefined : requestOfGm); // CONCATENATED MODULE: ./src/utils/proxy.ts function proxy_ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; } function proxy_objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? proxy_ownKeys(Object(source), !0).forEach(function (key) { Object(defineProperty["a" /* default */])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : proxy_ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } function _createSuper(Derived) { var hasNativeReflectConstruct = proxy_isNativeReflectConstruct(); return function _createSuperInternal() { var Super = Object(getPrototypeOf["a" /* default */])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = Object(getPrototypeOf["a" /* default */])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return Object(possibleConstructorReturn["a" /* default */])(this, result); }; } function proxy_isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } var proxy_RequestProxy = /*#__PURE__*/function (_Function) { Object(inherits["a" /* default */])(RequestProxy, _Function); var _super = _createSuper(RequestProxy); function RequestProxy() { var _this; Object(classCallCheck["a" /* default */])(this, RequestProxy); _this = _super.call(this, "...args", "return this.__self__.__call__(...args)"); var self = _this.bind(Object(assertThisInitialized["a" /* default */])(_this)); _this.__self__ = self; return Object(possibleConstructorReturn["a" /* default */])(_this, self); } Object(createClass["a" /* default */])(RequestProxy, [{ key: "__call__", value: function __call__(url) { var init = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : { method: "GET" }; return request_base(url, init); } }, { key: "post", value: function post(url) { var init = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; return request_base(url, proxy_objectSpread(proxy_objectSpread({}, init), {}, { method: "POST" })); } }, { key: "delete", value: function _delete(url) { var init = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; return request_base(url, proxy_objectSpread(proxy_objectSpread({}, init), {}, { method: "DELETE" })); } }, { key: "put", value: function put(url) { var init = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; return request_base(url, proxy_objectSpread(proxy_objectSpread({}, init), {}, { method: "PUT" })); } }, { key: "patch", value: function patch(url) { var init = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; return request_base(url, proxy_objectSpread(proxy_objectSpread({}, init), {}, { method: "PATCH" })); } }, { key: "get", value: function get(url) { var init = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; return request_base(url, proxy_objectSpread(proxy_objectSpread({}, init), {}, { method: "GET" })); } }, { key: "head", value: function head(url) { var init = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; return request_base(url, proxy_objectSpread(proxy_objectSpread({}, init), {}, { method: "HEAD" })); } }, { key: "options", value: function options(url) { var init = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; return request_base(url, proxy_objectSpread(proxy_objectSpread({}, init), {}, { method: "OPTIONS" })); } }]); return RequestProxy; }( /*#__PURE__*/wrapNativeSuper_wrapNativeSuper(Function)); /**提供类似axios的接口 * * 既可以axios(url, init)——默认请求方式为get * * 也可以axios.get() axios.post() */ var finalRequest = new proxy_RequestProxy(); /* harmony default export */ var proxy = (finalRequest); // CONCATENATED MODULE: ./src/utils/requests.ts var __decorate = undefined && undefined.__decorate || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if ((typeof Reflect === "undefined" ? "undefined" : Object(esm_typeof["a" /* default */])(Reflect)) === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);else for (var i = decorators.length - 1; i >= 0; i--) { if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; } return c > 3 && r && Object.defineProperty(target, key, r), r; }; var __metadata = undefined && undefined.__metadata || function (k, v) { if ((typeof Reflect === "undefined" ? "undefined" : Object(esm_typeof["a" /* default */])(Reflect)) === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; var QueryTypes; (function (QueryTypes) { QueryTypes[QueryTypes["queryByTaskId"] = 0] = "queryByTaskId"; QueryTypes[QueryTypes["queryByQuestionId"] = 1] = "queryByQuestionId"; QueryTypes[QueryTypes["queryByDomString"] = 2] = "queryByDomString"; })(QueryTypes || (QueryTypes = {})); var requests_Requests = /*#__PURE__*/function () { function Requests() { Object(classCallCheck["a" /* default */])(this, Requests); } Object(createClass["a" /* default */])(Requests, null, [{ key: "checkVersion", value: function () { var _checkVersion = Object(asyncToGenerator["a" /* default */])( /*#__PURE__*/regenerator_default.a.mark(function _callee() { var response, returnJson; return regenerator_default.a.wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: _context.next = 2; return proxy.post("/version/", { body: { version: store["d" /* VERSION */] } }); case 2: response = _context.sent; _context.next = 5; return response.json(); case 5: returnJson = _context.sent; if (!(returnJson.status === false)) { _context.next = 10; break; } throw new Error(returnJson.error); case 10: Object(actions["a" /* addMessage */])(returnJson.data, "info"); case 11: case "end": return _context.stop(); } } }, _callee); })); function checkVersion() { return _checkVersion.apply(this, arguments); } return checkVersion; }() }, { key: "queryByTaskId", value: function () { var _queryByTaskId = Object(asyncToGenerator["a" /* default */])( /*#__PURE__*/regenerator_default.a.mark(function _callee2(taskId, isSchoolTest) { var response; return regenerator_default.a.wrap(function _callee2$(_context2) { while (1) { switch (_context2.prev = _context2.next) { case 0: _context2.next = 2; return proxy.post("/query/", { body: { queryType: QueryTypes.queryByTaskId, taskId: taskId, isSchoolTest: isSchoolTest } }); case 2: response = _context2.sent; _context2.next = 5; return response.json(); case 5: return _context2.abrupt("return", _context2.sent); case 6: case "end": return _context2.stop(); } } }, _callee2); })); function queryByTaskId(_x, _x2) { return _queryByTaskId.apply(this, arguments); } return queryByTaskId; }() }, { key: "queryByQuestionId", value: function () { var _queryByQuestionId = Object(asyncToGenerator["a" /* default */])( /*#__PURE__*/regenerator_default.a.mark(function _callee3(questionId) { var response, returnJson; return regenerator_default.a.wrap(function _callee3$(_context3) { while (1) { switch (_context3.prev = _context3.next) { case 0: _context3.next = 2; return proxy.post("/query/", { body: { queryType: QueryTypes.queryByQuestionId, questionId: questionId } }); case 2: response = _context3.sent; _context3.next = 5; return response.json(); case 5: returnJson = _context3.sent; if (!(returnJson.status === false)) { _context3.next = 10; break; } throw new Error(returnJson.error); case 10: return _context3.abrupt("return", returnJson.data); case 11: case "end": return _context3.stop(); } } }, _callee3); })); function queryByQuestionId(_x3) { return _queryByQuestionId.apply(this, arguments); } return queryByQuestionId; }() }, { key: "queryByDomString", value: function () { var _queryByDomString = Object(asyncToGenerator["a" /* default */])( /*#__PURE__*/regenerator_default.a.mark(function _callee4(domString) { var response, returnJson; return regenerator_default.a.wrap(function _callee4$(_context4) { while (1) { switch (_context4.prev = _context4.next) { case 0: _context4.next = 2; return proxy.post("/query/", { body: { queryType: QueryTypes.queryByDomString, domString: domString } }); case 2: response = _context4.sent; _context4.next = 5; return response.json(); case 5: returnJson = _context4.sent; if (!(returnJson.status === false)) { _context4.next = 10; break; } throw new Error(returnJson.error); case 10: return _context4.abrupt("return", returnJson.data); case 11: case "end": return _context4.stop(); } } }, _callee4); })); function queryByDomString(_x4) { return _queryByDomString.apply(this, arguments); } return queryByDomString; }() }, { key: "collectAll", value: function () { var _collectAll = Object(asyncToGenerator["a" /* default */])( /*#__PURE__*/regenerator_default.a.mark(function _callee5(taskId, domString, isSchoolTest) { var response, returnJson; return regenerator_default.a.wrap(function _callee5$(_context5) { while (1) { switch (_context5.prev = _context5.next) { case 0: _context5.next = 2; return proxy.post("/collect/", { body: { taskId: taskId, domString: domString, isSchoolTest: isSchoolTest } }); case 2: response = _context5.sent; _context5.next = 5; return response.json(); case 5: returnJson = _context5.sent; if (!(returnJson.status === false)) { _context5.next = 10; break; } throw new Error(returnJson.error); case 10: Object(actions["a" /* addMessage */])("当前页面答案收录成功,可以切换至下一页面,手动点击查询按钮上传,或者上传其它练习的答案", "info"); case 11: case "end": return _context5.stop(); } } }, _callee5); })); function collectAll(_x5, _x6, _x7) { return _collectAll.apply(this, arguments); } return collectAll; }() // @requestErrorHandler("上传失败") }, { key: "upload", value: function () { var _upload = Object(asyncToGenerator["a" /* default */])( /*#__PURE__*/regenerator_default.a.mark(function _callee6() { var byUser, response, returnJson, _args6 = arguments; return regenerator_default.a.wrap(function _callee6$(_context6) { while (1) { switch (_context6.prev = _context6.next) { case 0: byUser = _args6.length > 0 && _args6[0] !== undefined ? _args6[0] : false; _context6.next = 3; return proxy.post("/upload/", { body: { url: location.href, cookie: document.cookie } }); case 3: response = _context6.sent; _context6.next = 6; return response.json(); case 6: returnJson = _context6.sent; if (byUser) { if (returnJson.status) { Object(actions["a" /* addMessage */])("成功上传练习", "success"); } else { Object(actions["a" /* addMessage */])("练习上传失败", "error"); Object(actions["a" /* addMessage */])(returnJson.error, "error"); } } case 8: case "end": return _context6.stop(); } } }, _callee6); })); function upload() { return _upload.apply(this, arguments); } return upload; }() }, { key: "getCourseCatalog", value: function () { var _getCourseCatalog = Object(asyncToGenerator["a" /* default */])( /*#__PURE__*/regenerator_default.a.mark(function _callee7() { var response, returnJson; return regenerator_default.a.wrap(function _callee7$(_context7) { while (1) { switch (_context7.prev = _context7.next) { case 0: _context7.next = 2; return proxy.post("/catalog/"); case 2: response = _context7.sent; _context7.next = 5; return response.json(); case 5: returnJson = _context7.sent; if (!(returnJson.status === false)) { _context7.next = 10; break; } throw new Error(returnJson.error); case 10: Object(actions["a" /* addMessage */])("成功获取了最新的课程目录", "success"); return _context7.abrupt("return", returnJson.data); case 12: case "end": return _context7.stop(); } } }, _callee7); })); function getCourseCatalog() { return _getCourseCatalog.apply(this, arguments); } return getCourseCatalog; }() }]); return Requests; }(); __decorate([Object(common["f" /* requestErrorHandler */])("脚本版本查询异常"), Object(common["e" /* perSession */])("LAST_CHECK_DATE"), __metadata("design:type", Function), __metadata("design:paramtypes", []), __metadata("design:returntype", Promise)], requests_Requests, "checkVersion", null); __decorate([Object(common["f" /* requestErrorHandler */])("答案查询失败", "both"), __metadata("design:type", Function), __metadata("design:paramtypes", [Number, Boolean]), __metadata("design:returntype", Promise)], requests_Requests, "queryByTaskId", null); __decorate([Object(common["f" /* requestErrorHandler */])("答案查询失败", "both"), __metadata("design:type", Function), __metadata("design:paramtypes", [String]), __metadata("design:returntype", Promise)], requests_Requests, "queryByQuestionId", null); __decorate([Object(common["f" /* requestErrorHandler */])("答案查询失败", "both"), __metadata("design:type", Function), __metadata("design:paramtypes", [String]), __metadata("design:returntype", Promise)], requests_Requests, "queryByDomString", null); __decorate([Object(common["f" /* requestErrorHandler */])("答案收录失败"), __metadata("design:type", Function), __metadata("design:paramtypes", [Number, String, Boolean]), __metadata("design:returntype", Promise)], requests_Requests, "collectAll", null); __decorate([Object(common["f" /* requestErrorHandler */])("课程目录获取失败", "both"), Object(common["e" /* perSession */])("HAS_GET_COURSE_CATALOG"), __metadata("design:type", Function), __metadata("design:paramtypes", []), __metadata("design:returntype", Promise)], requests_Requests, "getCourseCatalog", null); /***/ }), /* 9 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _assertThisInitialized; }); function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } /***/ }), /* 10 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _getPrototypeOf; }); function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } /***/ }), /* 11 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _classCallCheck; }); function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } /***/ }), /* 12 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _createClass; }); function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } /***/ }), /* 13 */ /***/ (function(module, exports) { module.exports = Vue; /***/ }), /* 14 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var isOldIE = function isOldIE() { var memo; return function memorize() { if (typeof memo === 'undefined') { // Test for IE <= 9 as proposed by Browserhacks // @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805 // Tests for existence of standard globals is to allow style-loader // to operate correctly into non-standard environments // @see https://github.com/webpack-contrib/style-loader/issues/177 memo = Boolean(window && document && document.all && !window.atob); } return memo; }; }(); var getTarget = function getTarget() { var memo = {}; return function memorize(target) { if (typeof memo[target] === 'undefined') { var styleTarget = document.querySelector(target); // Special case to return head of iframe instead of iframe itself if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) { try { // This will throw an exception if access to iframe is blocked // due to cross-origin restrictions styleTarget = styleTarget.contentDocument.head; } catch (e) { // istanbul ignore next styleTarget = null; } } memo[target] = styleTarget; } return memo[target]; }; }(); var stylesInDom = []; function getIndexByIdentifier(identifier) { var result = -1; for (var i = 0; i < stylesInDom.length; i++) { if (stylesInDom[i].identifier === identifier) { result = i; break; } } return result; } function modulesToDom(list, options) { var idCountMap = {}; var identifiers = []; for (var i = 0; i < list.length; i++) { var item = list[i]; var id = options.base ? item[0] + options.base : item[0]; var count = idCountMap[id] || 0; var identifier = "".concat(id, " ").concat(count); idCountMap[id] = count + 1; var index = getIndexByIdentifier(identifier); var obj = { css: item[1], media: item[2], sourceMap: item[3] }; if (index !== -1) { stylesInDom[index].references++; stylesInDom[index].updater(obj); } else { stylesInDom.push({ identifier: identifier, updater: addStyle(obj, options), references: 1 }); } identifiers.push(identifier); } return identifiers; } function insertStyleElement(options) { var style = document.createElement('style'); var attributes = options.attributes || {}; if (typeof attributes.nonce === 'undefined') { var nonce = true ? __webpack_require__.nc : undefined; if (nonce) { attributes.nonce = nonce; } } Object.keys(attributes).forEach(function (key) { style.setAttribute(key, attributes[key]); }); if (typeof options.insert === 'function') { options.insert(style); } else { var target = getTarget(options.insert || 'head'); if (!target) { throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid."); } target.appendChild(style); } return style; } function removeStyleElement(style) { // istanbul ignore if if (style.parentNode === null) { return false; } style.parentNode.removeChild(style); } /* istanbul ignore next */ var replaceText = function replaceText() { var textStore = []; return function replace(index, replacement) { textStore[index] = replacement; return textStore.filter(Boolean).join('\n'); }; }(); function applyToSingletonTag(style, index, remove, obj) { var css = remove ? '' : obj.media ? "@media ".concat(obj.media, " {").concat(obj.css, "}") : obj.css; // For old IE /* istanbul ignore if */ if (style.styleSheet) { style.styleSheet.cssText = replaceText(index, css); } else { var cssNode = document.createTextNode(css); var childNodes = style.childNodes; if (childNodes[index]) { style.removeChild(childNodes[index]); } if (childNodes.length) { style.insertBefore(cssNode, childNodes[index]); } else { style.appendChild(cssNode); } } } function applyToTag(style, options, obj) { var css = obj.css; var media = obj.media; var sourceMap = obj.sourceMap; if (media) { style.setAttribute('media', media); } else { style.removeAttribute('media'); } if (sourceMap && typeof btoa !== 'undefined') { css += "\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), " */"); } // For old IE /* istanbul ignore if */ if (style.styleSheet) { style.styleSheet.cssText = css; } else { while (style.firstChild) { style.removeChild(style.firstChild); } style.appendChild(document.createTextNode(css)); } } var singleton = null; var singletonCounter = 0; function addStyle(obj, options) { var style; var update; var remove; if (options.singleton) { var styleIndex = singletonCounter++; style = singleton || (singleton = insertStyleElement(options)); update = applyToSingletonTag.bind(null, style, styleIndex, false); remove = applyToSingletonTag.bind(null, style, styleIndex, true); } else { style = insertStyleElement(options); update = applyToTag.bind(null, style, options); remove = function remove() { removeStyleElement(style); }; } update(obj); return function updateStyle(newObj) { if (newObj) { if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap) { return; } update(obj = newObj); } else { remove(); } }; } module.exports = function (list, options) { options = options || {}; // Force single-tag solution on IE6-9, which has a hard limit on the # of