UNPKG

webpack-ext-reloader-mv3

Version:

Watch for file changes and reload WebExtensions on browsers.

1,436 lines (1,043 loc) 619 kB
/// <reference path="../typings/webpack-ext-reloader.d.ts" /> (function webpackUniversalModuleDefinition(root, factory) { if(typeof exports === 'object' && typeof module === 'object') module.exports = factory(require("lodash"), require("webpack"), require("useragent"), require("ws"), require("webpack-sources")); else if(typeof define === 'function' && define.amd) define(["lodash", "webpack", "useragent", "ws", "webpack-sources"], factory); else { var a = typeof exports === 'object' ? factory(require("lodash"), require("webpack"), require("useragent"), require("ws"), require("webpack-sources")) : factory(root["lodash"], root["webpack"], root["useragent"], root["ws"], root["webpack-sources"]); for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; } })(global, (__WEBPACK_EXTERNAL_MODULE__467__, __WEBPACK_EXTERNAL_MODULE__9582__, __WEBPACK_EXTERNAL_MODULE__6884__, __WEBPACK_EXTERNAL_MODULE__7836__, __WEBPACK_EXTERNAL_MODULE__5327__) => { return /******/ (() => { // webpackBootstrap /******/ var __webpack_modules__ = ({ /***/ 6048: /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; 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); } 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(_e2) { throw _e2; }, 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(_e3) { didErr = true; err = _e3; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; } function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } 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 _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } 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; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } 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; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } Object.defineProperty(exports, "__esModule", ({ value: true })); var lodash_1 = __webpack_require__(467); var webpack_1 = __webpack_require__(9582); var hot_reload_1 = __webpack_require__(3009); var warnings_1 = __webpack_require__(2436); var middleware_1 = __webpack_require__(6392); var default_options_1 = __webpack_require__(6961); var logger_1 = __webpack_require__(6373); var manifest_1 = __webpack_require__(6005); var AbstractExtensionReloader_1 = __webpack_require__(4257); var CompilerEventsFacade_1 = __webpack_require__(8675); var ExtensionReloaderImpl = /*#__PURE__*/function (_AbstractExtensionRel) { _inherits(ExtensionReloaderImpl, _AbstractExtensionRel); var _super = _createSuper(ExtensionReloaderImpl); function ExtensionReloaderImpl(options) { var _this; _classCallCheck(this, ExtensionReloaderImpl); _this = _super.call(this); _this._opts = options; _this._chunkVersions = {}; return _this; } _createClass(ExtensionReloaderImpl, [{ key: "_isWebpackGToEV5", value: function _isWebpackGToEV5() { if (webpack_1.version) { var _webpack_1$version$sp = webpack_1.version.split("."), _webpack_1$version$sp2 = _slicedToArray(_webpack_1$version$sp, 1), major = _webpack_1$version$sp2[0]; if (parseInt(major, 10) >= 5) { return true; } } return false; } }, { key: "_whatChanged", value: function _whatChanged(chunks, _ref) { var background = _ref.background, contentScript = _ref.contentScript, extensionPage = _ref.extensionPage; var changedChunks = []; // eslint-disable-next-line no-restricted-syntax var _iterator = _createForOfIteratorHelper(chunks), _step; try { for (_iterator.s(); !(_step = _iterator.n()).done;) { var chunk = _step.value; var oldVersion = this._chunkVersions[chunk.name]; this._chunkVersions[chunk.name] = chunk.hash; if (chunk.hash !== oldVersion) { changedChunks.push(chunk); } } } catch (err) { _iterator.e(err); } finally { _iterator.f(); } var contentOrBgChanged = changedChunks.some(function (_ref2) { var name = _ref2.name; var contentChanged = false; var bgChanged = name === background; if (Array.isArray(contentScript)) { contentChanged = contentScript.some(function (script) { return script === name; }); } else { contentChanged = name === contentScript; } return contentChanged || bgChanged; }); // var onlyPageChanged = !contentOrBgChanged && changedChunks.some(function (_ref3) { var name = _ref3.name; var pageChanged = false; if (Array.isArray(extensionPage)) { pageChanged = extensionPage.some(function (script) { return script === name; }); } else { pageChanged = name === extensionPage; } // return pageChanged; }); return { contentOrBgChanged: contentOrBgChanged, onlyPageChanged: onlyPageChanged }; } }, { key: "_registerPlugin", value: function _registerPlugin(compiler) { var _this2 = this; var _ref4 = (0, lodash_1.merge)(default_options_1["default"], this._opts), reloadPage = _ref4.reloadPage, port = _ref4.port, entries = _ref4.entries, manifest = _ref4.manifest; var parsedEntries = manifest ? (0, manifest_1.extractEntries)(compiler.options.entry, manifest, compiler.options.output) : entries; this._eventAPI = new CompilerEventsFacade_1["default"](compiler); this._injector = (0, middleware_1.middlewareInjector)(parsedEntries, { port: port, reloadPage: reloadPage }); this._triggerer = (0, hot_reload_1.changesTriggerer)(port, reloadPage); this._eventAPI.afterOptimizeChunks(function (comp, chunks) { comp.assets = Object.assign(Object.assign({}, comp.assets), _this2._injector(comp.assets, chunks)); }); this._eventAPI.afterEmit(function (comp) { var _this2$_whatChanged = _this2._whatChanged(comp.chunks, parsedEntries), contentOrBgChanged = _this2$_whatChanged.contentOrBgChanged, onlyPageChanged = _this2$_whatChanged.onlyPageChanged; if (contentOrBgChanged || onlyPageChanged) { _this2._triggerer(onlyPageChanged); } }); } }, { key: "apply", value: function apply(compiler) { if ((this._isWebpackGToEV5() ? compiler.options.mode : process.env.NODE_ENV) === "development") { this._registerPlugin(compiler); } else { (0, logger_1.warn)(warnings_1.onlyOnDevelopmentMsg.get()); } } }]); return ExtensionReloaderImpl; }(AbstractExtensionReloader_1["default"]); exports["default"] = ExtensionReloaderImpl; /***/ }), /***/ 9871: /***/ ((__unused_webpack_module, exports) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); exports.NEW_FAST_RELOAD_CALLS = exports.NEW_FAST_RELOAD_DEBOUNCING_FRAME = exports.NEW_FAST_RELOAD_CHROME_VERSION = exports.FAST_RELOAD_WAIT = exports.FAST_RELOAD_CALLS = exports.FAST_RELOAD_DEBOUNCING_FRAME = void 0; /** * Chrome lets only a max number of calls in a time frame * before block the plugin for be reloading itself to much * @see https://github.com/rubenspgcavalcante/webpack-chrome-extension-reloader/issues/2 */ exports.FAST_RELOAD_DEBOUNCING_FRAME = 2000; exports.FAST_RELOAD_CALLS = 6; exports.FAST_RELOAD_WAIT = 10 * 1000; // ================================================================================================================= // /** * A new reloading rate was created after opening a bug ticket on * Chromium, and the revision was merged to master * @see https://chromium-review.googlesource.com/c/chromium/src/+/1340272 */ /** * The Chrome/Chromium version number that includes the new rates * @see https://storage.googleapis.com/chromium-find-releases-static/d3b.html#d3b25e1380984b2f1f23d0e8dc1a337743c6caaf */ exports.NEW_FAST_RELOAD_CHROME_VERSION = [73, 0, 3637]; exports.NEW_FAST_RELOAD_DEBOUNCING_FRAME = 1000; exports.NEW_FAST_RELOAD_CALLS = 30; /***/ }), /***/ 1918: /***/ ((__unused_webpack_module, exports) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); exports.DEBUG = exports.ERROR = exports.WARN = exports.INFO = exports.LOG = exports.NONE = void 0; exports.NONE = 0; exports.LOG = 1; exports.INFO = 2; exports.WARN = 3; exports.ERROR = 4; exports.DEBUG = 5; /***/ }), /***/ 5934: /***/ ((__unused_webpack_module, exports) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); exports.SOCKET_ERR_CODE_REF = exports.RECONNECT_INTERVAL = void 0; exports.RECONNECT_INTERVAL = 2000; exports.SOCKET_ERR_CODE_REF = "https://tools.ietf.org/html/rfc6455#section-7.4.1"; /***/ }), /***/ 8804: /***/ ((__unused_webpack_module, exports) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); exports.DEFAULT_EXTENSION_PAGE_ENTRY = exports.DEFAULT_BACKGROUND_ENTRY = exports.DEFAULT_CONTENT_SCRIPT_ENTRY = exports.DEFAULT_RELOAD_PAGE = exports.DEFAULT_CONFIG = exports.DEFAULT_PORT = void 0; exports.DEFAULT_PORT = 9090; exports.DEFAULT_CONFIG = "webpack.config.js"; exports.DEFAULT_RELOAD_PAGE = true; exports.DEFAULT_CONTENT_SCRIPT_ENTRY = "content-script"; exports.DEFAULT_BACKGROUND_ENTRY = "background"; exports.DEFAULT_EXTENSION_PAGE_ENTRY = "popup"; /***/ }), /***/ 6578: /***/ ((__unused_webpack_module, exports) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); exports.REF_URL = void 0; exports.REF_URL = "https://github.com/rubenspgcavalcante/webpack-extension-reloader/wiki/General-Information"; /***/ }), /***/ 1692: /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } 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; } Object.defineProperty(exports, "__esModule", ({ value: true })); var useragent_1 = __webpack_require__(6884); var ws_1 = __webpack_require__(7836); var logger_1 = __webpack_require__(6373); var SignEmitter_1 = __webpack_require__(7574); var HotReloaderServer = /*#__PURE__*/function () { function HotReloaderServer(port) { _classCallCheck(this, HotReloaderServer); this._server = new ws_1.Server({ port: port }); } _createClass(HotReloaderServer, [{ key: "listen", value: function listen() { var _this = this; this._server.on("connection", function (ws, msg) { var userAgent = (0, useragent_1.parse)(msg.headers["user-agent"]); _this._signEmitter = new SignEmitter_1["default"](_this._server, userAgent); ws.on("message", function (data) { return (0, logger_1.info)("Message from ".concat(userAgent.family, ": ").concat(JSON.parse(data).payload)); }); ws.on("error", function () {// NOOP - swallow socket errors due to http://git.io/vbhSN }); }); } }, { key: "signChange", value: function signChange(reloadPage, onlyPageChanged) { if (this._signEmitter) { return this._signEmitter.safeSignChange(reloadPage, onlyPageChanged); } return Promise.resolve(null); } }]); return HotReloaderServer; }(); exports["default"] = HotReloaderServer; /***/ }), /***/ 7574: /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; 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(_e2) { throw _e2; }, 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(_e3) { didErr = true; err = _e3; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; } function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } 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 _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } 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; } Object.defineProperty(exports, "__esModule", ({ value: true })); var lodash_1 = __webpack_require__(467); var ws_1 = __webpack_require__(7836); var fast_reloading_constants_1 = __webpack_require__(9871); var block_protection_1 = __webpack_require__(9832); var signals_1 = __webpack_require__(1873); var SignEmitter = /*#__PURE__*/function () { function SignEmitter(server, _ref) { var family = _ref.family, major = _ref.major, minor = _ref.minor, patch = _ref.patch; _classCallCheck(this, SignEmitter); this._server = server; if (family === "Chrome") { var _ref2 = this._satisfies([parseInt(major, 10), parseInt(minor, 10), parseInt(patch, 10)], fast_reloading_constants_1.NEW_FAST_RELOAD_CHROME_VERSION) ? [fast_reloading_constants_1.NEW_FAST_RELOAD_CALLS, fast_reloading_constants_1.NEW_FAST_RELOAD_DEBOUNCING_FRAME] : [fast_reloading_constants_1.FAST_RELOAD_CALLS, fast_reloading_constants_1.FAST_RELOAD_DEBOUNCING_FRAME], _ref3 = _slicedToArray(_ref2, 2), reloadCalls = _ref3[0], reloadDeboucingFrame = _ref3[1]; var debouncer = (0, block_protection_1.debounceSignal)(reloadDeboucingFrame, this); var blocker = (0, block_protection_1.fastReloadBlocker)(reloadCalls, fast_reloading_constants_1.FAST_RELOAD_WAIT, this); this._safeSignChange = debouncer(blocker(this._setupSafeSignChange())); } else { this._safeSignChange = this._setupSafeSignChange(); } } _createClass(SignEmitter, [{ key: "safeSignChange", value: function safeSignChange(reloadPage, onlyPageChanged) { var _this = this; return new Promise(function (res, rej) { _this._safeSignChange(reloadPage, onlyPageChanged, res, rej); }); } }, { key: "_setupSafeSignChange", value: function _setupSafeSignChange() { var _this2 = this; return function (reloadPage, onlyPageChanged, onSuccess, onError) { try { _this2._sendMsg((0, signals_1.signChange)({ reloadPage: reloadPage, onlyPageChanged: onlyPageChanged })); onSuccess(); } catch (err) { onError(err); } }; } }, { key: "_sendMsg", value: function _sendMsg(msg) { this._server.clients.forEach(function (client) { if (client.readyState === ws_1.OPEN) { client.send(JSON.stringify(msg)); } }); } }, { key: "_satisfies", value: function _satisfies(browserVersion, targetVersion) { var versionPairs = (0, lodash_1.zip)(browserVersion, targetVersion); // eslint-disable-next-line no-restricted-syntax var _iterator = _createForOfIteratorHelper(versionPairs), _step; try { for (_iterator.s(); !(_step = _iterator.n()).done;) { var _step$value = _slicedToArray(_step.value, 2), _step$value$ = _step$value[0], version = _step$value$ === void 0 ? 0 : _step$value$, _step$value$2 = _step$value[1], target = _step$value$2 === void 0 ? 0 : _step$value$2; if (version !== target) { return version > target; } } } catch (err) { _iterator.e(err); } finally { _iterator.f(); } return true; } }]); return SignEmitter; }(); exports["default"] = SignEmitter; /***/ }), /***/ 3362: /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); var logger_1 = __webpack_require__(6373); var HotReloaderServer_1 = __webpack_require__(1692); var changesTriggerer = function changesTriggerer(port, reloadPage) { var server = new HotReloaderServer_1["default"](port); (0, logger_1.info)("[ Starting the Web Extension Hot Reload Server... ]"); server.listen(); return function (onlyPageChanged) { return server.signChange(reloadPage, onlyPageChanged); }; }; exports["default"] = changesTriggerer; /***/ }), /***/ 3009: /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); exports.changesTriggerer = void 0; var changes_triggerer_1 = __webpack_require__(3362); exports.changesTriggerer = changes_triggerer_1["default"]; /***/ }), /***/ 9820: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var source_map_support_1 = __webpack_require__(6252); var log_constants_1 = __webpack_require__(1918); var ExtensionReloader_1 = __webpack_require__(6048); var logger_1 = __webpack_require__(6373); (0, source_map_support_1.install)(); var logLevel = log_constants_1.ERROR; if (process.env.NODE_ENV !== "production") { logLevel = log_constants_1.DEBUG; } (0, logger_1.setLogLevel)(logLevel); module.exports = ExtensionReloader_1["default"]; /***/ }), /***/ 9197: /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } 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; } Object.defineProperty(exports, "__esModule", ({ value: true })); var safe_1 = __webpack_require__(4431); var lodash_1 = __webpack_require__(467); var log_constants_1 = __webpack_require__(1918); var reference_docs_constants_1 = __webpack_require__(6578); var Message = /*#__PURE__*/function () { function Message(type, referenceNumber, message) { _classCallCheck(this, Message); this.type = type; this.referenceNumber = referenceNumber; this.message = message; } _createClass(Message, [{ key: "get", value: function get() { var additionalData = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; var code = "WER-".concat(this.getPrefix()).concat(this.referenceNumber); var refLink = (0, safe_1.bold)((0, safe_1.white)("".concat(reference_docs_constants_1.REF_URL, "#").concat(code))); return "[".concat(code, "] ").concat((0, lodash_1.template)(this.message, additionalData), ".\nVisit ").concat(refLink, " for complete details\n"); } }, { key: "toString", value: function toString() { return this.get(); } }, { key: "getPrefix", value: function getPrefix() { switch (this.type) { case log_constants_1.INFO: return "I"; case log_constants_1.WARN: return "W"; case log_constants_1.ERROR: return "E"; default: return ""; } } }]); return Message; }(); exports["default"] = Message; /***/ }), /***/ 1049: /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); exports.bgScriptManifestRequiredMsg = exports.bgScriptEntryErrorMsg = void 0; /* eslint-disable no-multi-str */ var log_constants_1 = __webpack_require__(1918); var Message_1 = __webpack_require__(9197); exports.bgScriptEntryErrorMsg = new Message_1["default"](log_constants_1.ERROR, 1, "Background script webpack entry not found/match \ the provided on 'manifest.json' or 'entry.background' \ option of the plugin"); exports.bgScriptManifestRequiredMsg = new Message_1["default"](log_constants_1.ERROR, 2, "Background script on manifest is required"); /***/ }), /***/ 2436: /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); exports.onlyOnDevelopmentMsg = void 0; /* eslint-disable no-multi-str */ var log_constants_1 = __webpack_require__(1918); var Message_1 = __webpack_require__(9197); exports.onlyOnDevelopmentMsg = new Message_1["default"](log_constants_1.WARN, 1, "Warning, Extension Reloader Plugin was not enabled! \ It runs only on webpack --mode=development (v5 or more) \ or with NODE_ENV=development (lower versions)"); /***/ }), /***/ 6392: /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); exports.middlewareInjector = void 0; var middleware_injector_1 = __webpack_require__(91); exports.middlewareInjector = middleware_injector_1["default"]; /***/ }), /***/ 91: /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; function _construct(Parent, args, Class) { if (_isNativeReflectConstruct()) { _construct = Reflect.construct; } else { _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) _setPrototypeOf(instance, Class.prototype); return instance; }; } return _construct.apply(null, arguments); } 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; } } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } Object.defineProperty(exports, "__esModule", ({ value: true })); var webpack_sources_1 = __webpack_require__(5327); var middleware_source_builder_1 = __webpack_require__(6271); var middlewareInjector = function middlewareInjector(_ref, _ref2) { var background = _ref.background, contentScript = _ref.contentScript, extensionPage = _ref.extensionPage; var port = _ref2.port, reloadPage = _ref2.reloadPage; var sourceFactory = function sourceFactory() { for (var _len = arguments.length, sources = new Array(_len), _key = 0; _key < _len; _key++) { sources[_key] = arguments[_key]; } return _construct(webpack_sources_1.ConcatSource, sources); }; var matchBgOrContentOrPage = function matchBgOrContentOrPage(name) { return name === background || name === contentScript || contentScript && contentScript.includes(name) || name === extensionPage || extensionPage && extensionPage.includes(name); }; var getPageType = function getPageType(name) { if (name === contentScript || contentScript && contentScript.includes(name)) { return "content"; } if (name === extensionPage || extensionPage && extensionPage.includes(name)) { return "extension"; } if (name === background) { return "background"; } return "unknown"; }; return function (assets, chunks) { return Array.from(chunks).reduce(function (prev, _ref3) { var name = _ref3.name, files = _ref3.files; if (matchBgOrContentOrPage(name)) { files.forEach(function (entryPoint) { if (/\.js$/.test(entryPoint)) { var source = (0, middleware_source_builder_1["default"])({ port: port, reloadPage: reloadPage, page: getPageType(name) }); var finalSrc = sourceFactory(source, assets[entryPoint]); prev[entryPoint] = finalSrc; } }); } return prev; }, {}); }; }; exports["default"] = middlewareInjector; /***/ }), /***/ 6271: /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); var lodash_1 = __webpack_require__(467); var webpack_sources_1 = __webpack_require__(5327); var wer_middleware_background_raw_1 = __webpack_require__(2288); var wer_middleware_content_raw_1 = __webpack_require__(2995); var wer_middleware_extension_raw_1 = __webpack_require__(916); var raw_loader_webextension_polyfill_1 = __webpack_require__(2634); var middleware_config_constants_1 = __webpack_require__(5934); var signals = __webpack_require__(1873); function middleWareSourceBuilder(_ref) { var port = _ref.port, reloadPage = _ref.reloadPage, page = _ref.page; var rawSource = { content: wer_middleware_content_raw_1["default"], background: wer_middleware_background_raw_1["default"], extension: wer_middleware_extension_raw_1["default"] }; var tmpl = (0, lodash_1.template)(rawSource[page]); return new webpack_sources_1.RawSource(tmpl({ WSHost: "ws://localhost:".concat(port), config: JSON.stringify({ RECONNECT_INTERVAL: middleware_config_constants_1.RECONNECT_INTERVAL, SOCKET_ERR_CODE_REF: middleware_config_constants_1.SOCKET_ERR_CODE_REF }), polyfillSource: "\"||".concat(raw_loader_webextension_polyfill_1["default"], "\""), reloadPage: "".concat(reloadPage), signals: JSON.stringify(signals) })); } exports["default"] = middleWareSourceBuilder; /***/ }), /***/ 9832: /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); exports.fastReloadBlocker = exports.debounceSignal = void 0; var lodash_1 = __webpack_require__(467); var logger_1 = __webpack_require__(6373); var debounceSignal = function debounceSignal(deboucingFrame, context) { return function (func) { if (context) { (0, lodash_1.runInContext)(context); } return (0, lodash_1.debounce)(function () { for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } return func.apply(context, args); }, deboucingFrame); }; }; exports.debounceSignal = debounceSignal; var fastReloadBlocker = function fastReloadBlocker(maxCalls, wait, context) { return function (func) { var calls = 0; var inWait = false; // eslint-disable-next-line consistent-return return function () { for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { args[_key2] = arguments[_key2]; } if (inWait) { /* do nothing */ } else if (calls === maxCalls) { calls = 0; inWait = true; var interval = wait / 1000; (0, logger_1.warn)("Please wait ".concat(interval, " secs. for next reload to prevent your extension being blocked")); var logInterval = setInterval(function () { return (0, logger_1.warn)("".concat(--interval, " ...")); }, 1000); setTimeout(function () { clearInterval(logInterval); (0, logger_1.info)("Signing for reload now"); func.apply(context, args); inWait = false; }, wait); } else { calls++; return func.apply(context, args); } }; }; }; exports.fastReloadBlocker = fastReloadBlocker; /***/ }), /***/ 6961: /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); var options_constants_1 = __webpack_require__(8804); exports["default"] = { entries: { background: options_constants_1.DEFAULT_BACKGROUND_ENTRY, contentScript: options_constants_1.DEFAULT_CONTENT_SCRIPT_ENTRY, extensionPage: options_constants_1.DEFAULT_EXTENSION_PAGE_ENTRY }, port: options_constants_1.DEFAULT_PORT, reloadPage: options_constants_1.DEFAULT_RELOAD_PAGE }; /***/ }), /***/ 6373: /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); exports.debug = exports.error = exports.warn = exports.info = exports.log = exports.setLogLevel = void 0; var safe_1 = __webpack_require__(4431); var log_constants_1 = __webpack_require__(1918); var logLevel; // eslint-disable-next-line no-return-assign var setLogLevel = function setLogLevel(level) { return logLevel = level; }; exports.setLogLevel = setLogLevel; var log = function log(message) { return logLevel >= log_constants_1.LOG && console.log(message); }; exports.log = log; var info = function info(message) { return logLevel >= log_constants_1.INFO && console.info((0, safe_1.green)(message)); }; exports.info = info; var warn = function warn(message) { return logLevel >= log_constants_1.WARN && console.warn((0, safe_1.yellow)(message)); }; exports.warn = warn; var error = function error(message) { return logLevel >= log_constants_1.ERROR && console.error((0, safe_1.red)(message)); }; exports.error = error; var debug = function debug(message) { return logLevel >= log_constants_1.DEBUG && console.debug((0, safe_1.white)((0, exports.debug)(message))); }; exports.debug = debug; /***/ }), /***/ 6005: /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); exports.extractEntries = void 0; var fs_1 = __webpack_require__(7147); var lodash_1 = __webpack_require__(467); var errors_1 = __webpack_require__(1049); function extractEntries(webpackEntry, manifestPath) { var webpackOutput = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; var manifestJson = JSON.parse((0, fs_1.readFileSync)(manifestPath).toString()); var background = manifestJson.background, content_scripts = manifestJson.content_scripts; var filename = webpackOutput.filename; if (!filename) { throw new Error("Please specify the `output.filename` in your webpack config."); } if (!(background === null || background === void 0 ? void 0 : background.scripts)) { throw new TypeError(errors_1.bgScriptManifestRequiredMsg.get()); } var bgScriptFileNames = background.scripts; var toRemove = filename.replace("[name]", ""); var bgWebpackEntry = Object.keys(webpackEntry).find(function (entryName) { return bgScriptFileNames.some(function (bgManifest) { return bgManifest.replace(toRemove, "") === entryName; }); }); if (!bgWebpackEntry) { throw new TypeError(errors_1.bgScriptEntryErrorMsg.get()); } var contentEntries = content_scripts ? (0, lodash_1.flatMapDeep)(Object.keys(webpackEntry), function (entryName) { return content_scripts.map(function (_ref) { var js = _ref.js; return js.map(function (contentItem) { return contentItem.replace(toRemove, ""); }).filter(function (contentItem) { return contentItem === entryName; }); }); }) : null; return { background: bgWebpackEntry, contentScript: contentEntries, extensionPage: null }; } exports.extractEntries = extractEntries; /***/ }), /***/ 1873: /***/ ((__unused_webpack_module, exports) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); exports.signLog = exports.signReloaded = exports.signReload = exports.signChange = exports.SIGN_CONNECT = exports.SIGN_LOG = exports.SIGN_RELOADED = exports.SIGN_RELOAD = exports.SIGN_CHANGE = void 0; exports.SIGN_CHANGE = "SIGN_CHANGE"; exports.SIGN_RELOAD = "SIGN_RELOAD"; exports.SIGN_RELOADED = "SIGN_RELOADED"; exports.SIGN_LOG = "SIGN_LOG"; exports.SIGN_CONNECT = "SIGN_CONNECT"; var signChange = function signChange(_ref) { var _ref$reloadPage = _ref.reloadPage, reloadPage = _ref$reloadPage === void 0 ? true : _ref$reloadPage, _ref$onlyPageChanged = _ref.onlyPageChanged, onlyPageChanged = _ref$onlyPageChanged === void 0 ? false : _ref$onlyPageChanged; return { payload: { reloadPage: reloadPage, onlyPageChanged: onlyPageChanged }, type: exports.SIGN_CHANGE }; }; exports.signChange = signChange; var signReload = function signReload() { return { type: exports.SIGN_RELOAD }; }; exports.signReload = signReload; var signReloaded = function signReloaded(msg) { return { payload: msg, type: exports.SIGN_RELOADED }; }; exports.signReloaded = signReloaded; var signLog = function signLog(msg) { return { payload: msg, type: exports.SIGN_LOG }; }; exports.signLog = signLog; /***/ }), /***/ 4257: /***/ ((__unused_webpack_module, exports) => { "use strict"; 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; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } Object.defineProperty(exports, "__esModule", ({ value: true })); var AbstractExtensionReloader = /*#__PURE__*/_createClass(function AbstractExtensionReloader() { _classCallCheck(this, AbstractExtensionReloader); }); exports["default"] = AbstractExtensionReloader; /***/ }), /***/ 8675: /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } 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; } Object.defineProperty(exports, "__esModule", ({ value: true })); var webpack_1 = __webpack_require__(9582); var CompilerEventsFacade = /*#__PURE__*/function () { function CompilerEventsFacade(compiler) { _classCallCheck(this, CompilerEventsFacade); this._compiler = compiler; } _createClass(CompilerEventsFacade, [{ key: "afterOptimizeChunks", value: function afterOptimizeChunks(call) { return this._compiler.hooks.compilation.tap(CompilerEventsFacade.extensionName, function (comp) { var chunks = new Set(); var afterOptimizeChunkAssets = function afterOptimizeChunkAssets(chunksAfterOptimization) { call(comp, chunksAfterOptimization); }; comp.hooks.processAssets.tap({ name: CompilerEventsFacade.extensionName, stage: webpack_1.Compilation.PROCESS_ASSETS_STAGE_ANALYSE }, function () { comp.chunks.forEach(function (chunk) { chunks.add(chunk); }); afterOptimizeChunkAssets(chunks); }); }); } }, { key: "afterEmit", value: function afterEmit(call) { return this._compiler.hooks.afterEmit.tap(CompilerEventsFacade.extensionName, call); } }]); return CompilerEventsFacade; }(); exports["default"] = CompilerEventsFacade; CompilerEventsFacade.extensionName = "webpack-ext-reloader"; /***/ }), /***/ 5420: /***/ ((module) => { /* eslint-disable node/no-deprecated-api */ var toString = Object.prototype.toString var isModern = ( typeof Buffer !== 'undefined' && typeof Buffer.alloc === 'function' && typeof Buffer.allocUnsafe === 'function' && typeof Buffer.from === 'function' ) function isArrayBuffer (input) { return toString.call(input).slice(8, -1) === 'ArrayBuffer' } function fromArrayBuffer (obj, byteOffset, length) { byteOffset >>>= 0 var maxLength = obj.byteLength - byteOffset if (maxLength < 0) { throw new RangeError("'offset' is out of bounds") } if (length === undefined) { length = maxLength } else { length >>>= 0 if (length > maxLength) { throw new RangeError("'length' is out of bounds") } } return isModern ? Buffer.from(obj.slice(byteOffset, byteOffset + length)) : new Buffer(new Uint8Array(obj.slice(byteOffset, byteOffset + length))) } function fromString (string, encoding) { if (typeof encoding !== 'string' || encoding === '') { encoding = 'utf8' } if (!Buffer.isEncoding(encoding)) { throw new TypeError('"encoding" must be a valid string encoding') } return isModern ? Buffer.from(string, encoding) : new Buffer(string, encoding) } function bufferFrom (value, encodingOrOffset, length) { if (typeof value === 'number') { throw new TypeError('"value" argument must not be a number') } if (isArrayBuffer(value)) { return fromArrayBuffer(value, encodingOrOffset, length) } if (typeof value === 'string') { return fromString(value, encodingOrOffset) } return isModern ? Buffer.from(value) : new Buffer(value) } module.exports = bufferFrom /***/ }), /***/ 2517: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { /* The MIT License (MIT) Original Library - Copyright (c) Marak Squires Additional functionality - Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ var colors = {}; module['exports'] = colors; colors.themes = {}; var util = __webpack_require__(3837); var ansiStyles = colors.styles = __webpack_require__(5784); var defineProps = Object.defineProperties; var newLineRegex = new RegExp(/[\r\n]+/g); colors.supportsColor = (__webpack_require__(6561).supportsColor); if (typeof colors.enabled === 'undefined') { colors.enabled = colors.supportsColor() !== false; } colors.enable = function() { colors.enabled = true; }; colors.disable = function() { colors.enabled = false; }; colors.stripColors = colors.strip = function(str) { return ('' + str).replace(/\x1B\[\d+m/g, ''); }; // eslint-disable-next-line no-unused-vars var stylize = colors.stylize = function stylize(str, style) { if (!colors.enabled) { return str+''; } var styleMap = ansiStyles[style]; // Stylize should work for non-ANSI styles, too if(!styleMap && style in colors){ // Style maps like trap operate as functions on strings; // they don't have properties like open or close. return colors[style](str); } return styleMap.open + str + styleMap.close; }; var matchOperatorsRe = /[|\\{}()[\]^$+*?.]/g; var escapeStringRegexp = function(str) { if (typeof str !== 'string') { throw new TypeError('Expected a string'); } return str.replace(matchOperatorsRe, '\\$&'); }; function build(_styles) { var builder = function builder() { return applyStyle.apply(builder, arguments); }; builder._styles = _styles; // __proto__ is used because we must return a function, but there is // no way to create a function with a different prototype. builder.__proto__ = proto; return builder; } var styles = (function() { var ret = {}; ansiStyles.grey = ansiStyles.gray; Object.keys(ansiStyles).forEach(function(key) { ansiStyles[key].closeRe = new RegExp(escapeStringRegexp(ansiStyles[key].close), 'g'); ret[key] = { get: function() { return build(this._styles.concat(key)); }, }; }); return ret; })(); var proto = defineProps(function colors() {}, styles); function applyStyle() { var args = Array.prototype.slice.call(arguments); var str = args.map(function(arg) { // Use weak equality check so we can colorize null/undefined in safe mode if (arg != null && arg.constructor === String) { return arg; } else { return util.inspect(arg);