UNPKG

webpack-ext-reloader-mv3

Version:

Watch for file changes and reload WebExtensions on browsers.

1,392 lines (1,001 loc) 636 kB
#!/usr/bin/env node /// <reference path="../typings/webpack-ext-reloader.d.ts" /> (function webpackUniversalModuleDefinition(root, factory) { if(typeof exports === 'object' && typeof module === 'object') module.exports = factory(require("minimist"), require("webpack"), require("lodash"), require("useragent"), require("ws"), require("webpack-sources")); else if(typeof define === 'function' && define.amd) define(["minimist", "webpack", "lodash", "useragent", "ws", "webpack-sources"], factory); else { var a = typeof exports === 'object' ? factory(require("minimist"), require("webpack"), require("lodash"), require("useragent"), require("ws"), require("webpack-sources")) : factory(root["minimist"], root["webpack"], root["lodash"], root["useragent"], root["ws"], root["webpack-sources"]); for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; } })(global, (__WEBPACK_EXTERNAL_MODULE__3476__, __WEBPACK_EXTERNAL_MODULE__9582__, __WEBPACK_EXTERNAL_MODULE__467__, __WEBPACK_EXTERNAL_MODULE__6884__, __WEBPACK_EXTERNAL_MODULE__7836__, __WEBPACK_EXTERNAL_MODULE__5327__) => { return /******/ (() => { // webpackBootstrap /******/ var __webpack_modules__ = ({ /***/ 5658: /***/ ((__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 util_1 = __webpack_require__(3837); var webpack = __webpack_require__(9582); var ExtensionReloader_1 = __webpack_require__(6048); var logger_1 = __webpack_require__(6373); var ExtensionCompiler = /*#__PURE__*/function () { function ExtensionCompiler(config, pluginOptions) { _classCallCheck(this, ExtensionCompiler); this.compiler = webpack(config); new ExtensionReloader_1["default"](pluginOptions).apply(this.compiler); } _createClass(ExtensionCompiler, [{ key: "watch", value: function watch() { // eslint-disable-next-line consistent-return this.compiler.watch({}, function (err, stats) { if (err) { return ExtensionCompiler.treatErrors(err); } (0, logger_1.info)(stats.toString({ colors: true })); }); } }], [{ key: "treatErrors", value: function treatErrors(err) { (0, util_1.log)(err.stack || err); if (err.details) { (0, util_1.log)(err.details); } } }]); return ExtensionCompiler; }(); exports["default"] = ExtensionCompiler; /***/ }), /***/ 5106: /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); /* eslint-disable no-throw-literal */ var path_1 = __webpack_require__(1017); var process_1 = __webpack_require__(7282); var util_1 = __webpack_require__(3837); var options_constants_1 = __webpack_require__(8804); var args_constant_1 = __webpack_require__(2205); var events_constants_1 = __webpack_require__(3443); var manual_1 = __webpack_require__(3128); exports["default"] = function (args) { if (args[args_constant_1.HELP]) { (0, util_1.log)((0, manual_1["default"])()); throw { type: events_constants_1.SIG_EXIT, payload: 0 }; } var config = args[args_constant_1.CONFIG] || options_constants_1.DEFAULT_CONFIG; var port = args[args_constant_1.PORT] || options_constants_1.DEFAULT_PORT; var manifest = args[args_constant_1.MANIFEST] || null; var pluginOptions = { manifest: manifest, port: port, reloadPage: !args[args_constant_1.NO_PAGE_RELOAD] }; var optPath = (0, path_1.resolve)((0, process_1.cwd)(), config); try { // eslint-disable-next-line no-eval var webpackConfig = eval("require")(optPath); return { webpackConfig: webpackConfig, pluginOptions: pluginOptions }; } catch (err) { (0, util_1.log)("[Error] Couldn't require the file: ".concat(optPath)); (0, util_1.log)(err); throw { type: events_constants_1.SIG_EXIT, payload: 1 }; } }; /***/ }), /***/ 2205: /***/ ((__unused_webpack_module, exports) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); exports.MANIFEST = exports.NO_PAGE_RELOAD = exports.PORT = exports.CONFIG = exports.HELP = void 0; exports.HELP = "help"; exports.CONFIG = "config"; exports.PORT = "port"; exports.NO_PAGE_RELOAD = "no-page-reload"; exports.MANIFEST = "manifest"; /***/ }), /***/ 3443: /***/ ((__unused_webpack_module, exports) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); exports.SIG_EXIT = void 0; exports.SIG_EXIT = "SIG_EXIT"; /***/ }), /***/ 8777: /***/ (function(__unused_webpack_module, exports, __webpack_require__) { "use strict"; var __rest = this && this.__rest || function (s, e) { var t = {}; for (var p in s) { if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p]; } if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]]; } return t; }; Object.defineProperty(exports, "__esModule", ({ value: true })); var minimist = __webpack_require__(3476); var source_map_support_1 = __webpack_require__(6252); var util_1 = __webpack_require__(3837); var args_parser_1 = __webpack_require__(5106); var events_constants_1 = __webpack_require__(3443); var ExtensionCompiler_1 = __webpack_require__(5658); (0, source_map_support_1.install)(); var _a = minimist(process.argv.slice(2)), _ = _a._, args = __rest(_a, ["_"]); try { var _ref = (0, args_parser_1["default"])(args), webpackConfig = _ref.webpackConfig, pluginOptions = _ref.pluginOptions; var compiler = new ExtensionCompiler_1["default"](webpackConfig, pluginOptions); compiler.watch(); } catch (err) { if (err.type === events_constants_1.SIG_EXIT) { process.exit(err.payload); } else { (0, util_1.log)(err); process.exit(err.code); } } /***/ }), /***/ 3128: /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); /* eslint-disable no-useless-escape */ var options_constants_1 = __webpack_require__(8804); exports["default"] = function () { return "\nUsage:\n wer [--config <config_path>] [--port <port_number>] [--no-page-reload] [--content-script <content_script_paths>] [--background <bg_script_path>] [--extension-page <extension_page_paths>]\n\nComplete API:\n+------------------------------------------------------------------------------------------------------------+\n| name | default | description |\n|--------------------|-------------------|-------------------------------------------------------------------|\n| --help | | Show this help\n| --config | ".concat(options_constants_1.DEFAULT_CONFIG, " | The webpack configuration file path |\n| --port | ").concat(options_constants_1.DEFAULT_PORT, " | The port to run the server |\n| --content-script | ").concat(options_constants_1.DEFAULT_CONTENT_SCRIPT_ENTRY, " | The **entry/entries** name(s) for the content script(s) |\n| --background | ").concat(options_constants_1.DEFAULT_BACKGROUND_ENTRY, " | The **entry** name for the background script |\n| --extension-page | ").concat(options_constants_1.DEFAULT_EXTENSION_PAGE_ENTRY, " | The **entry/entries** name(s) for the extension pages(s) |\n| --manifest | null | The **manifest.json** path |\n| --no-page-reload | | Disable the auto reloading of all **pages** which runs the plugin |\n+------------------------------------------------------------------------------------------------------------+\n"); }; /***/ }), /***/ 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"]; /***/ }), /***/ 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