$
This commit is contained in:
68
node_modules/webpack-dev-server/client/clients/SockJSClient.js
generated
vendored
Normal file
68
node_modules/webpack-dev-server/client/clients/SockJSClient.js
generated
vendored
Normal file
@@ -0,0 +1,68 @@
|
||||
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; }
|
||||
|
||||
import SockJS from "../modules/sockjs-client/index.js";
|
||||
import { log } from "../utils/log.js";
|
||||
|
||||
var SockJSClient = /*#__PURE__*/function () {
|
||||
/**
|
||||
* @param {string} url
|
||||
*/
|
||||
function SockJSClient(url) {
|
||||
_classCallCheck(this, SockJSClient);
|
||||
|
||||
// SockJS requires `http` and `https` protocols
|
||||
this.sock = new SockJS(url.replace(/^ws:/i, "http:").replace(/^wss:/i, "https:"));
|
||||
|
||||
this.sock.onerror =
|
||||
/**
|
||||
* @param {Error} error
|
||||
*/
|
||||
function (error) {
|
||||
log.error(error);
|
||||
};
|
||||
}
|
||||
/**
|
||||
* @param {(...args: any[]) => void} f
|
||||
*/
|
||||
|
||||
|
||||
_createClass(SockJSClient, [{
|
||||
key: "onOpen",
|
||||
value: function onOpen(f) {
|
||||
this.sock.onopen = f;
|
||||
}
|
||||
/**
|
||||
* @param {(...args: any[]) => void} f
|
||||
*/
|
||||
|
||||
}, {
|
||||
key: "onClose",
|
||||
value: function onClose(f) {
|
||||
this.sock.onclose = f;
|
||||
} // call f with the message string as the first argument
|
||||
|
||||
/**
|
||||
* @param {(...args: any[]) => void} f
|
||||
*/
|
||||
|
||||
}, {
|
||||
key: "onMessage",
|
||||
value: function onMessage(f) {
|
||||
this.sock.onmessage =
|
||||
/**
|
||||
* @param {Error & { data: string }} e
|
||||
*/
|
||||
function (e) {
|
||||
f(e.data);
|
||||
};
|
||||
}
|
||||
}]);
|
||||
|
||||
return SockJSClient;
|
||||
}();
|
||||
|
||||
export { SockJSClient as default };
|
||||
58
node_modules/webpack-dev-server/client/clients/WebSocketClient.js
generated
vendored
Normal file
58
node_modules/webpack-dev-server/client/clients/WebSocketClient.js
generated
vendored
Normal file
@@ -0,0 +1,58 @@
|
||||
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; }
|
||||
|
||||
import { log } from "../utils/log.js";
|
||||
|
||||
var WebSocketClient = /*#__PURE__*/function () {
|
||||
/**
|
||||
* @param {string} url
|
||||
*/
|
||||
function WebSocketClient(url) {
|
||||
_classCallCheck(this, WebSocketClient);
|
||||
|
||||
this.client = new WebSocket(url);
|
||||
|
||||
this.client.onerror = function (error) {
|
||||
log.error(error);
|
||||
};
|
||||
}
|
||||
/**
|
||||
* @param {(...args: any[]) => void} f
|
||||
*/
|
||||
|
||||
|
||||
_createClass(WebSocketClient, [{
|
||||
key: "onOpen",
|
||||
value: function onOpen(f) {
|
||||
this.client.onopen = f;
|
||||
}
|
||||
/**
|
||||
* @param {(...args: any[]) => void} f
|
||||
*/
|
||||
|
||||
}, {
|
||||
key: "onClose",
|
||||
value: function onClose(f) {
|
||||
this.client.onclose = f;
|
||||
} // call f with the message string as the first argument
|
||||
|
||||
/**
|
||||
* @param {(...args: any[]) => void} f
|
||||
*/
|
||||
|
||||
}, {
|
||||
key: "onMessage",
|
||||
value: function onMessage(f) {
|
||||
this.client.onmessage = function (e) {
|
||||
f(e.data);
|
||||
};
|
||||
}
|
||||
}]);
|
||||
|
||||
return WebSocketClient;
|
||||
}();
|
||||
|
||||
export { WebSocketClient as default };
|
||||
309
node_modules/webpack-dev-server/client/index.js
generated
vendored
Normal file
309
node_modules/webpack-dev-server/client/index.js
generated
vendored
Normal file
@@ -0,0 +1,309 @@
|
||||
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
||||
|
||||
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
||||
|
||||
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
||||
|
||||
/* global __resourceQuery, __webpack_hash__ */
|
||||
/// <reference types="webpack/module" />
|
||||
import webpackHotLog from "webpack/hot/log.js";
|
||||
import stripAnsi from "./utils/stripAnsi.js";
|
||||
import parseURL from "./utils/parseURL.js";
|
||||
import socket from "./socket.js";
|
||||
import { formatProblem, show, hide } from "./overlay.js";
|
||||
import { log, logEnabledFeatures, setLogLevel } from "./utils/log.js";
|
||||
import sendMessage from "./utils/sendMessage.js";
|
||||
import reloadApp from "./utils/reloadApp.js";
|
||||
import createSocketURL from "./utils/createSocketURL.js";
|
||||
/**
|
||||
* @typedef {Object} Options
|
||||
* @property {boolean} hot
|
||||
* @property {boolean} liveReload
|
||||
* @property {boolean} progress
|
||||
* @property {boolean | { warnings?: boolean, errors?: boolean, trustedTypesPolicyName?: string }} overlay
|
||||
* @property {string} [logging]
|
||||
* @property {number} [reconnect]
|
||||
*/
|
||||
|
||||
/**
|
||||
* @typedef {Object} Status
|
||||
* @property {boolean} isUnloading
|
||||
* @property {string} currentHash
|
||||
* @property {string} [previousHash]
|
||||
*/
|
||||
|
||||
/**
|
||||
* @type {Status}
|
||||
*/
|
||||
|
||||
var status = {
|
||||
isUnloading: false,
|
||||
// TODO Workaround for webpack v4, `__webpack_hash__` is not replaced without HotModuleReplacement
|
||||
// eslint-disable-next-line camelcase
|
||||
currentHash: typeof __webpack_hash__ !== "undefined" ? __webpack_hash__ : ""
|
||||
};
|
||||
/** @type {Options} */
|
||||
|
||||
var options = {
|
||||
hot: false,
|
||||
liveReload: false,
|
||||
progress: false,
|
||||
overlay: false
|
||||
};
|
||||
var parsedResourceQuery = parseURL(__resourceQuery);
|
||||
var enabledFeatures = {
|
||||
"Hot Module Replacement": false,
|
||||
"Live Reloading": false,
|
||||
Progress: false,
|
||||
Overlay: false
|
||||
};
|
||||
|
||||
if (parsedResourceQuery.hot === "true") {
|
||||
options.hot = true;
|
||||
enabledFeatures["Hot Module Replacement"] = true;
|
||||
}
|
||||
|
||||
if (parsedResourceQuery["live-reload"] === "true") {
|
||||
options.liveReload = true;
|
||||
enabledFeatures["Live Reloading"] = true;
|
||||
}
|
||||
|
||||
if (parsedResourceQuery.progress === "true") {
|
||||
options.progress = true;
|
||||
enabledFeatures.Progress = true;
|
||||
}
|
||||
|
||||
if (parsedResourceQuery.overlay) {
|
||||
try {
|
||||
options.overlay = JSON.parse(parsedResourceQuery.overlay);
|
||||
} catch (e) {
|
||||
log.error("Error parsing overlay options from resource query:", e);
|
||||
} // Fill in default "true" params for partially-specified objects.
|
||||
|
||||
|
||||
if (typeof options.overlay === "object") {
|
||||
options.overlay = _objectSpread({
|
||||
errors: true,
|
||||
warnings: true
|
||||
}, options.overlay);
|
||||
}
|
||||
|
||||
enabledFeatures.Overlay = true;
|
||||
}
|
||||
|
||||
if (parsedResourceQuery.logging) {
|
||||
options.logging = parsedResourceQuery.logging;
|
||||
}
|
||||
|
||||
if (typeof parsedResourceQuery.reconnect !== "undefined") {
|
||||
options.reconnect = Number(parsedResourceQuery.reconnect);
|
||||
}
|
||||
|
||||
logEnabledFeatures(enabledFeatures);
|
||||
/**
|
||||
* @param {string} level
|
||||
*/
|
||||
|
||||
function setAllLogLevel(level) {
|
||||
// This is needed because the HMR logger operate separately from dev server logger
|
||||
webpackHotLog.setLogLevel(level === "verbose" || level === "log" ? "info" : level);
|
||||
setLogLevel(level);
|
||||
}
|
||||
|
||||
if (options.logging) {
|
||||
setAllLogLevel(options.logging);
|
||||
}
|
||||
|
||||
self.addEventListener("beforeunload", function () {
|
||||
status.isUnloading = true;
|
||||
});
|
||||
var onSocketMessage = {
|
||||
hot: function hot() {
|
||||
if (parsedResourceQuery.hot === "false") {
|
||||
return;
|
||||
}
|
||||
|
||||
options.hot = true;
|
||||
},
|
||||
liveReload: function liveReload() {
|
||||
if (parsedResourceQuery["live-reload"] === "false") {
|
||||
return;
|
||||
}
|
||||
|
||||
options.liveReload = true;
|
||||
},
|
||||
invalid: function invalid() {
|
||||
log.info("App updated. Recompiling..."); // Fixes #1042. overlay doesn't clear if errors are fixed but warnings remain.
|
||||
|
||||
if (options.overlay) {
|
||||
hide();
|
||||
}
|
||||
|
||||
sendMessage("Invalid");
|
||||
},
|
||||
|
||||
/**
|
||||
* @param {string} hash
|
||||
*/
|
||||
hash: function hash(_hash) {
|
||||
status.previousHash = status.currentHash;
|
||||
status.currentHash = _hash;
|
||||
},
|
||||
logging: setAllLogLevel,
|
||||
|
||||
/**
|
||||
* @param {boolean} value
|
||||
*/
|
||||
overlay: function overlay(value) {
|
||||
if (typeof document === "undefined") {
|
||||
return;
|
||||
}
|
||||
|
||||
options.overlay = value;
|
||||
},
|
||||
|
||||
/**
|
||||
* @param {number} value
|
||||
*/
|
||||
reconnect: function reconnect(value) {
|
||||
if (parsedResourceQuery.reconnect === "false") {
|
||||
return;
|
||||
}
|
||||
|
||||
options.reconnect = value;
|
||||
},
|
||||
|
||||
/**
|
||||
* @param {boolean} value
|
||||
*/
|
||||
progress: function progress(value) {
|
||||
options.progress = value;
|
||||
},
|
||||
|
||||
/**
|
||||
* @param {{ pluginName?: string, percent: number, msg: string }} data
|
||||
*/
|
||||
"progress-update": function progressUpdate(data) {
|
||||
if (options.progress) {
|
||||
log.info("".concat(data.pluginName ? "[".concat(data.pluginName, "] ") : "").concat(data.percent, "% - ").concat(data.msg, "."));
|
||||
}
|
||||
|
||||
sendMessage("Progress", data);
|
||||
},
|
||||
"still-ok": function stillOk() {
|
||||
log.info("Nothing changed.");
|
||||
|
||||
if (options.overlay) {
|
||||
hide();
|
||||
}
|
||||
|
||||
sendMessage("StillOk");
|
||||
},
|
||||
ok: function ok() {
|
||||
sendMessage("Ok");
|
||||
|
||||
if (options.overlay) {
|
||||
hide();
|
||||
}
|
||||
|
||||
reloadApp(options, status);
|
||||
},
|
||||
// TODO: remove in v5 in favor of 'static-changed'
|
||||
|
||||
/**
|
||||
* @param {string} file
|
||||
*/
|
||||
"content-changed": function contentChanged(file) {
|
||||
log.info("".concat(file ? "\"".concat(file, "\"") : "Content", " from static directory was changed. Reloading..."));
|
||||
self.location.reload();
|
||||
},
|
||||
|
||||
/**
|
||||
* @param {string} file
|
||||
*/
|
||||
"static-changed": function staticChanged(file) {
|
||||
log.info("".concat(file ? "\"".concat(file, "\"") : "Content", " from static directory was changed. Reloading..."));
|
||||
self.location.reload();
|
||||
},
|
||||
|
||||
/**
|
||||
* @param {Error[]} warnings
|
||||
* @param {any} params
|
||||
*/
|
||||
warnings: function warnings(_warnings, params) {
|
||||
log.warn("Warnings while compiling.");
|
||||
|
||||
var printableWarnings = _warnings.map(function (error) {
|
||||
var _formatProblem = formatProblem("warning", error),
|
||||
header = _formatProblem.header,
|
||||
body = _formatProblem.body;
|
||||
|
||||
return "".concat(header, "\n").concat(stripAnsi(body));
|
||||
});
|
||||
|
||||
sendMessage("Warnings", printableWarnings);
|
||||
|
||||
for (var i = 0; i < printableWarnings.length; i++) {
|
||||
log.warn(printableWarnings[i]);
|
||||
}
|
||||
|
||||
var needShowOverlayForWarnings = typeof options.overlay === "boolean" ? options.overlay : options.overlay && options.overlay.warnings;
|
||||
|
||||
if (needShowOverlayForWarnings) {
|
||||
var trustedTypesPolicyName = typeof options.overlay === "object" && options.overlay.trustedTypesPolicyName;
|
||||
show("warning", _warnings, trustedTypesPolicyName || null);
|
||||
}
|
||||
|
||||
if (params && params.preventReloading) {
|
||||
return;
|
||||
}
|
||||
|
||||
reloadApp(options, status);
|
||||
},
|
||||
|
||||
/**
|
||||
* @param {Error[]} errors
|
||||
*/
|
||||
errors: function errors(_errors) {
|
||||
log.error("Errors while compiling. Reload prevented.");
|
||||
|
||||
var printableErrors = _errors.map(function (error) {
|
||||
var _formatProblem2 = formatProblem("error", error),
|
||||
header = _formatProblem2.header,
|
||||
body = _formatProblem2.body;
|
||||
|
||||
return "".concat(header, "\n").concat(stripAnsi(body));
|
||||
});
|
||||
|
||||
sendMessage("Errors", printableErrors);
|
||||
|
||||
for (var i = 0; i < printableErrors.length; i++) {
|
||||
log.error(printableErrors[i]);
|
||||
}
|
||||
|
||||
var needShowOverlayForErrors = typeof options.overlay === "boolean" ? options.overlay : options.overlay && options.overlay.errors;
|
||||
|
||||
if (needShowOverlayForErrors) {
|
||||
var trustedTypesPolicyName = typeof options.overlay === "object" && options.overlay.trustedTypesPolicyName;
|
||||
show("error", _errors, trustedTypesPolicyName || null);
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* @param {Error} error
|
||||
*/
|
||||
error: function error(_error) {
|
||||
log.error(_error);
|
||||
},
|
||||
close: function close() {
|
||||
log.info("Disconnected!");
|
||||
|
||||
if (options.overlay) {
|
||||
hide();
|
||||
}
|
||||
|
||||
sendMessage("Close");
|
||||
}
|
||||
};
|
||||
var socketURL = createSocketURL(parsedResourceQuery);
|
||||
socket(socketURL, onSocketMessage, options.reconnect);
|
||||
827
node_modules/webpack-dev-server/client/modules/logger/index.js
generated
vendored
Normal file
827
node_modules/webpack-dev-server/client/modules/logger/index.js
generated
vendored
Normal file
File diff suppressed because it is too large
Load Diff
5689
node_modules/webpack-dev-server/client/modules/sockjs-client/index.js
generated
vendored
Normal file
5689
node_modules/webpack-dev-server/client/modules/sockjs-client/index.js
generated
vendored
Normal file
File diff suppressed because it is too large
Load Diff
214
node_modules/webpack-dev-server/client/overlay.js
generated
vendored
Normal file
214
node_modules/webpack-dev-server/client/overlay.js
generated
vendored
Normal file
@@ -0,0 +1,214 @@
|
||||
// The error overlay is inspired (and mostly copied) from Create React App (https://github.com/facebookincubator/create-react-app)
|
||||
// They, in turn, got inspired by webpack-hot-middleware (https://github.com/glenjamin/webpack-hot-middleware).
|
||||
import ansiHTML from "ansi-html-community";
|
||||
import { encode } from "html-entities";
|
||||
var colors = {
|
||||
reset: ["transparent", "transparent"],
|
||||
black: "181818",
|
||||
red: "E36049",
|
||||
green: "B3CB74",
|
||||
yellow: "FFD080",
|
||||
blue: "7CAFC2",
|
||||
magenta: "7FACCA",
|
||||
cyan: "C3C2EF",
|
||||
lightgrey: "EBE7E3",
|
||||
darkgrey: "6D7891"
|
||||
};
|
||||
/** @type {HTMLIFrameElement | null | undefined} */
|
||||
|
||||
var iframeContainerElement;
|
||||
/** @type {HTMLDivElement | null | undefined} */
|
||||
|
||||
var containerElement;
|
||||
/** @type {Array<(element: HTMLDivElement) => void>} */
|
||||
|
||||
var onLoadQueue = [];
|
||||
/** @type {TrustedTypePolicy | undefined} */
|
||||
|
||||
var overlayTrustedTypesPolicy;
|
||||
ansiHTML.setColors(colors);
|
||||
/**
|
||||
* @param {string | null} trustedTypesPolicyName
|
||||
*/
|
||||
|
||||
function createContainer(trustedTypesPolicyName) {
|
||||
// Enable Trusted Types if they are available in the current browser.
|
||||
if (window.trustedTypes) {
|
||||
overlayTrustedTypesPolicy = window.trustedTypes.createPolicy(trustedTypesPolicyName || "webpack-dev-server#overlay", {
|
||||
createHTML: function createHTML(value) {
|
||||
return value;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
iframeContainerElement = document.createElement("iframe");
|
||||
iframeContainerElement.id = "webpack-dev-server-client-overlay";
|
||||
iframeContainerElement.src = "about:blank";
|
||||
iframeContainerElement.style.position = "fixed";
|
||||
iframeContainerElement.style.left = 0;
|
||||
iframeContainerElement.style.top = 0;
|
||||
iframeContainerElement.style.right = 0;
|
||||
iframeContainerElement.style.bottom = 0;
|
||||
iframeContainerElement.style.width = "100vw";
|
||||
iframeContainerElement.style.height = "100vh";
|
||||
iframeContainerElement.style.border = "none";
|
||||
iframeContainerElement.style.zIndex = 9999999999;
|
||||
|
||||
iframeContainerElement.onload = function () {
|
||||
containerElement =
|
||||
/** @type {Document} */
|
||||
|
||||
/** @type {HTMLIFrameElement} */
|
||||
iframeContainerElement.contentDocument.createElement("div");
|
||||
containerElement.id = "webpack-dev-server-client-overlay-div";
|
||||
containerElement.style.position = "fixed";
|
||||
containerElement.style.boxSizing = "border-box";
|
||||
containerElement.style.left = 0;
|
||||
containerElement.style.top = 0;
|
||||
containerElement.style.right = 0;
|
||||
containerElement.style.bottom = 0;
|
||||
containerElement.style.width = "100vw";
|
||||
containerElement.style.height = "100vh";
|
||||
containerElement.style.backgroundColor = "rgba(0, 0, 0, 0.85)";
|
||||
containerElement.style.color = "#E8E8E8";
|
||||
containerElement.style.fontFamily = "Menlo, Consolas, monospace";
|
||||
containerElement.style.fontSize = "large";
|
||||
containerElement.style.padding = "2rem";
|
||||
containerElement.style.lineHeight = "1.2";
|
||||
containerElement.style.whiteSpace = "pre-wrap";
|
||||
containerElement.style.overflow = "auto";
|
||||
var headerElement = document.createElement("span");
|
||||
headerElement.innerText = "Compiled with problems:";
|
||||
var closeButtonElement = document.createElement("button");
|
||||
closeButtonElement.innerText = "X";
|
||||
closeButtonElement.style.background = "transparent";
|
||||
closeButtonElement.style.border = "none";
|
||||
closeButtonElement.style.fontSize = "20px";
|
||||
closeButtonElement.style.fontWeight = "bold";
|
||||
closeButtonElement.style.color = "white";
|
||||
closeButtonElement.style.cursor = "pointer";
|
||||
closeButtonElement.style.cssFloat = "right"; // @ts-ignore
|
||||
|
||||
closeButtonElement.style.styleFloat = "right";
|
||||
closeButtonElement.addEventListener("click", function () {
|
||||
hide();
|
||||
});
|
||||
containerElement.appendChild(headerElement);
|
||||
containerElement.appendChild(closeButtonElement);
|
||||
containerElement.appendChild(document.createElement("br"));
|
||||
containerElement.appendChild(document.createElement("br"));
|
||||
/** @type {Document} */
|
||||
|
||||
/** @type {HTMLIFrameElement} */
|
||||
iframeContainerElement.contentDocument.body.appendChild(containerElement);
|
||||
onLoadQueue.forEach(function (onLoad) {
|
||||
onLoad(
|
||||
/** @type {HTMLDivElement} */
|
||||
containerElement);
|
||||
});
|
||||
onLoadQueue = [];
|
||||
/** @type {HTMLIFrameElement} */
|
||||
|
||||
iframeContainerElement.onload = null;
|
||||
};
|
||||
|
||||
document.body.appendChild(iframeContainerElement);
|
||||
}
|
||||
/**
|
||||
* @param {(element: HTMLDivElement) => void} callback
|
||||
* @param {string | null} trustedTypesPolicyName
|
||||
*/
|
||||
|
||||
|
||||
function ensureOverlayExists(callback, trustedTypesPolicyName) {
|
||||
if (containerElement) {
|
||||
// Everything is ready, call the callback right away.
|
||||
callback(containerElement);
|
||||
return;
|
||||
}
|
||||
|
||||
onLoadQueue.push(callback);
|
||||
|
||||
if (iframeContainerElement) {
|
||||
return;
|
||||
}
|
||||
|
||||
createContainer(trustedTypesPolicyName);
|
||||
} // Successful compilation.
|
||||
|
||||
|
||||
function hide() {
|
||||
if (!iframeContainerElement) {
|
||||
return;
|
||||
} // Clean up and reset internal state.
|
||||
|
||||
|
||||
document.body.removeChild(iframeContainerElement);
|
||||
iframeContainerElement = null;
|
||||
containerElement = null;
|
||||
}
|
||||
/**
|
||||
* @param {string} type
|
||||
* @param {string | { file?: string, moduleName?: string, loc?: string, message?: string }} item
|
||||
* @returns {{ header: string, body: string }}
|
||||
*/
|
||||
|
||||
|
||||
function formatProblem(type, item) {
|
||||
var header = type === "warning" ? "WARNING" : "ERROR";
|
||||
var body = "";
|
||||
|
||||
if (typeof item === "string") {
|
||||
body += item;
|
||||
} else {
|
||||
var file = item.file || ""; // eslint-disable-next-line no-nested-ternary
|
||||
|
||||
var moduleName = item.moduleName ? item.moduleName.indexOf("!") !== -1 ? "".concat(item.moduleName.replace(/^(\s|\S)*!/, ""), " (").concat(item.moduleName, ")") : "".concat(item.moduleName) : "";
|
||||
var loc = item.loc;
|
||||
header += "".concat(moduleName || file ? " in ".concat(moduleName ? "".concat(moduleName).concat(file ? " (".concat(file, ")") : "") : file).concat(loc ? " ".concat(loc) : "") : "");
|
||||
body += item.message || "";
|
||||
}
|
||||
|
||||
return {
|
||||
header: header,
|
||||
body: body
|
||||
};
|
||||
} // Compilation with errors (e.g. syntax error or missing modules).
|
||||
|
||||
/**
|
||||
* @param {string} type
|
||||
* @param {Array<string | { file?: string, moduleName?: string, loc?: string, message?: string }>} messages
|
||||
* @param {string | null} trustedTypesPolicyName
|
||||
*/
|
||||
|
||||
|
||||
function show(type, messages, trustedTypesPolicyName) {
|
||||
ensureOverlayExists(function () {
|
||||
messages.forEach(function (message) {
|
||||
var entryElement = document.createElement("div");
|
||||
var typeElement = document.createElement("span");
|
||||
|
||||
var _formatProblem = formatProblem(type, message),
|
||||
header = _formatProblem.header,
|
||||
body = _formatProblem.body;
|
||||
|
||||
typeElement.innerText = header;
|
||||
typeElement.style.color = "#".concat(colors.red); // Make it look similar to our terminal.
|
||||
|
||||
var text = ansiHTML(encode(body));
|
||||
var messageTextNode = document.createElement("div");
|
||||
messageTextNode.innerHTML = overlayTrustedTypesPolicy ? overlayTrustedTypesPolicy.createHTML(text) : text;
|
||||
entryElement.appendChild(typeElement);
|
||||
entryElement.appendChild(document.createElement("br"));
|
||||
entryElement.appendChild(document.createElement("br"));
|
||||
entryElement.appendChild(messageTextNode);
|
||||
entryElement.appendChild(document.createElement("br"));
|
||||
entryElement.appendChild(document.createElement("br"));
|
||||
/** @type {HTMLDivElement} */
|
||||
|
||||
containerElement.appendChild(entryElement);
|
||||
});
|
||||
}, trustedTypesPolicyName);
|
||||
}
|
||||
|
||||
export { formatProblem, show, hide };
|
||||
65
node_modules/webpack-dev-server/client/socket.js
generated
vendored
Normal file
65
node_modules/webpack-dev-server/client/socket.js
generated
vendored
Normal file
@@ -0,0 +1,65 @@
|
||||
/* global __webpack_dev_server_client__ */
|
||||
import WebSocketClient from "./clients/WebSocketClient.js";
|
||||
import { log } from "./utils/log.js"; // this WebsocketClient is here as a default fallback, in case the client is not injected
|
||||
|
||||
/* eslint-disable camelcase */
|
||||
|
||||
var Client = // eslint-disable-next-line no-nested-ternary
|
||||
typeof __webpack_dev_server_client__ !== "undefined" ? typeof __webpack_dev_server_client__.default !== "undefined" ? __webpack_dev_server_client__.default : __webpack_dev_server_client__ : WebSocketClient;
|
||||
/* eslint-enable camelcase */
|
||||
|
||||
var retries = 0;
|
||||
var maxRetries = 10; // Initialized client is exported so external consumers can utilize the same instance
|
||||
// It is mutable to enforce singleton
|
||||
// eslint-disable-next-line import/no-mutable-exports
|
||||
|
||||
export var client = null;
|
||||
/**
|
||||
* @param {string} url
|
||||
* @param {{ [handler: string]: (data?: any, params?: any) => any }} handlers
|
||||
* @param {number} [reconnect]
|
||||
*/
|
||||
|
||||
var socket = function initSocket(url, handlers, reconnect) {
|
||||
client = new Client(url);
|
||||
client.onOpen(function () {
|
||||
retries = 0;
|
||||
|
||||
if (typeof reconnect !== "undefined") {
|
||||
maxRetries = reconnect;
|
||||
}
|
||||
});
|
||||
client.onClose(function () {
|
||||
if (retries === 0) {
|
||||
handlers.close();
|
||||
} // Try to reconnect.
|
||||
|
||||
|
||||
client = null; // After 10 retries stop trying, to prevent logspam.
|
||||
|
||||
if (retries < maxRetries) {
|
||||
// Exponentially increase timeout to reconnect.
|
||||
// Respectfully copied from the package `got`.
|
||||
// eslint-disable-next-line no-restricted-properties
|
||||
var retryInMs = 1000 * Math.pow(2, retries) + Math.random() * 100;
|
||||
retries += 1;
|
||||
log.info("Trying to reconnect...");
|
||||
setTimeout(function () {
|
||||
socket(url, handlers, reconnect);
|
||||
}, retryInMs);
|
||||
}
|
||||
});
|
||||
client.onMessage(
|
||||
/**
|
||||
* @param {any} data
|
||||
*/
|
||||
function (data) {
|
||||
var message = JSON.parse(data);
|
||||
|
||||
if (handlers[message.type]) {
|
||||
handlers[message.type](message.data, message.params);
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
export default socket;
|
||||
137
node_modules/webpack-dev-server/client/utils/createSocketURL.js
generated
vendored
Normal file
137
node_modules/webpack-dev-server/client/utils/createSocketURL.js
generated
vendored
Normal file
@@ -0,0 +1,137 @@
|
||||
/**
|
||||
* @param {{ protocol?: string, auth?: string, hostname?: string, port?: string, pathname?: string, search?: string, hash?: string, slashes?: boolean }} objURL
|
||||
* @returns {string}
|
||||
*/
|
||||
function format(objURL) {
|
||||
var protocol = objURL.protocol || "";
|
||||
|
||||
if (protocol && protocol.substr(-1) !== ":") {
|
||||
protocol += ":";
|
||||
}
|
||||
|
||||
var auth = objURL.auth || "";
|
||||
|
||||
if (auth) {
|
||||
auth = encodeURIComponent(auth);
|
||||
auth = auth.replace(/%3A/i, ":");
|
||||
auth += "@";
|
||||
}
|
||||
|
||||
var host = "";
|
||||
|
||||
if (objURL.hostname) {
|
||||
host = auth + (objURL.hostname.indexOf(":") === -1 ? objURL.hostname : "[".concat(objURL.hostname, "]"));
|
||||
|
||||
if (objURL.port) {
|
||||
host += ":".concat(objURL.port);
|
||||
}
|
||||
}
|
||||
|
||||
var pathname = objURL.pathname || "";
|
||||
|
||||
if (objURL.slashes) {
|
||||
host = "//".concat(host || "");
|
||||
|
||||
if (pathname && pathname.charAt(0) !== "/") {
|
||||
pathname = "/".concat(pathname);
|
||||
}
|
||||
} else if (!host) {
|
||||
host = "";
|
||||
}
|
||||
|
||||
var search = objURL.search || "";
|
||||
|
||||
if (search && search.charAt(0) !== "?") {
|
||||
search = "?".concat(search);
|
||||
}
|
||||
|
||||
var hash = objURL.hash || "";
|
||||
|
||||
if (hash && hash.charAt(0) !== "#") {
|
||||
hash = "#".concat(hash);
|
||||
}
|
||||
|
||||
pathname = pathname.replace(/[?#]/g,
|
||||
/**
|
||||
* @param {string} match
|
||||
* @returns {string}
|
||||
*/
|
||||
function (match) {
|
||||
return encodeURIComponent(match);
|
||||
});
|
||||
search = search.replace("#", "%23");
|
||||
return "".concat(protocol).concat(host).concat(pathname).concat(search).concat(hash);
|
||||
}
|
||||
/**
|
||||
* @param {URL & { fromCurrentScript?: boolean }} parsedURL
|
||||
* @returns {string}
|
||||
*/
|
||||
|
||||
|
||||
function createSocketURL(parsedURL) {
|
||||
var hostname = parsedURL.hostname; // Node.js module parses it as `::`
|
||||
// `new URL(urlString, [baseURLString])` parses it as '[::]'
|
||||
|
||||
var isInAddrAny = hostname === "0.0.0.0" || hostname === "::" || hostname === "[::]"; // why do we need this check?
|
||||
// hostname n/a for file protocol (example, when using electron, ionic)
|
||||
// see: https://github.com/webpack/webpack-dev-server/pull/384
|
||||
|
||||
if (isInAddrAny && self.location.hostname && self.location.protocol.indexOf("http") === 0) {
|
||||
hostname = self.location.hostname;
|
||||
}
|
||||
|
||||
var socketURLProtocol = parsedURL.protocol || self.location.protocol; // When https is used in the app, secure web sockets are always necessary because the browser doesn't accept non-secure web sockets.
|
||||
|
||||
if (socketURLProtocol === "auto:" || hostname && isInAddrAny && self.location.protocol === "https:") {
|
||||
socketURLProtocol = self.location.protocol;
|
||||
}
|
||||
|
||||
socketURLProtocol = socketURLProtocol.replace(/^(?:http|.+-extension|file)/i, "ws");
|
||||
var socketURLAuth = ""; // `new URL(urlString, [baseURLstring])` doesn't have `auth` property
|
||||
// Parse authentication credentials in case we need them
|
||||
|
||||
if (parsedURL.username) {
|
||||
socketURLAuth = parsedURL.username; // Since HTTP basic authentication does not allow empty username,
|
||||
// we only include password if the username is not empty.
|
||||
|
||||
if (parsedURL.password) {
|
||||
// Result: <username>:<password>
|
||||
socketURLAuth = socketURLAuth.concat(":", parsedURL.password);
|
||||
}
|
||||
} // In case the host is a raw IPv6 address, it can be enclosed in
|
||||
// the brackets as the brackets are needed in the final URL string.
|
||||
// Need to remove those as url.format blindly adds its own set of brackets
|
||||
// if the host string contains colons. That would lead to non-working
|
||||
// double brackets (e.g. [[::]]) host
|
||||
//
|
||||
// All of these web socket url params are optionally passed in through resourceQuery,
|
||||
// so we need to fall back to the default if they are not provided
|
||||
|
||||
|
||||
var socketURLHostname = (hostname || self.location.hostname || "localhost").replace(/^\[(.*)\]$/, "$1");
|
||||
var socketURLPort = parsedURL.port;
|
||||
|
||||
if (!socketURLPort || socketURLPort === "0") {
|
||||
socketURLPort = self.location.port;
|
||||
} // If path is provided it'll be passed in via the resourceQuery as a
|
||||
// query param so it has to be parsed out of the querystring in order for the
|
||||
// client to open the socket to the correct location.
|
||||
|
||||
|
||||
var socketURLPathname = "/ws";
|
||||
|
||||
if (parsedURL.pathname && !parsedURL.fromCurrentScript) {
|
||||
socketURLPathname = parsedURL.pathname;
|
||||
}
|
||||
|
||||
return format({
|
||||
protocol: socketURLProtocol,
|
||||
auth: socketURLAuth,
|
||||
hostname: socketURLHostname,
|
||||
port: socketURLPort,
|
||||
pathname: socketURLPathname,
|
||||
slashes: true
|
||||
});
|
||||
}
|
||||
|
||||
export default createSocketURL;
|
||||
26
node_modules/webpack-dev-server/client/utils/getCurrentScriptSource.js
generated
vendored
Normal file
26
node_modules/webpack-dev-server/client/utils/getCurrentScriptSource.js
generated
vendored
Normal file
@@ -0,0 +1,26 @@
|
||||
/**
|
||||
* @returns {string}
|
||||
*/
|
||||
function getCurrentScriptSource() {
|
||||
// `document.currentScript` is the most accurate way to find the current script,
|
||||
// but is not supported in all browsers.
|
||||
if (document.currentScript) {
|
||||
return document.currentScript.getAttribute("src");
|
||||
} // Fallback to getting all scripts running in the document.
|
||||
|
||||
|
||||
var scriptElements = document.scripts || [];
|
||||
var scriptElementsWithSrc = Array.prototype.filter.call(scriptElements, function (element) {
|
||||
return element.getAttribute("src");
|
||||
});
|
||||
|
||||
if (scriptElementsWithSrc.length > 0) {
|
||||
var currentScript = scriptElementsWithSrc[scriptElementsWithSrc.length - 1];
|
||||
return currentScript.getAttribute("src");
|
||||
} // Fail as there was no script to use.
|
||||
|
||||
|
||||
throw new Error("[webpack-dev-server] Failed to get current script source.");
|
||||
}
|
||||
|
||||
export default getCurrentScriptSource;
|
||||
55
node_modules/webpack-dev-server/client/utils/log.js
generated
vendored
Normal file
55
node_modules/webpack-dev-server/client/utils/log.js
generated
vendored
Normal file
@@ -0,0 +1,55 @@
|
||||
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; }
|
||||
|
||||
import logger from "../modules/logger/index.js";
|
||||
var name = "webpack-dev-server"; // default level is set on the client side, so it does not need
|
||||
// to be set by the CLI or API
|
||||
|
||||
var defaultLevel = "info"; // options new options, merge with old options
|
||||
|
||||
/**
|
||||
* @param {false | true | "none" | "error" | "warn" | "info" | "log" | "verbose"} level
|
||||
* @returns {void}
|
||||
*/
|
||||
|
||||
function setLogLevel(level) {
|
||||
logger.configureDefaultLogger({
|
||||
level: level
|
||||
});
|
||||
}
|
||||
|
||||
setLogLevel(defaultLevel);
|
||||
var log = logger.getLogger(name);
|
||||
|
||||
var logEnabledFeatures = function logEnabledFeatures(features) {
|
||||
var enabledFeatures = Object.entries(features);
|
||||
|
||||
if (!features || enabledFeatures.length === 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
var logString = "Server started:"; // Server started: Hot Module Replacement enabled, Live Reloading enabled, Overlay disabled.
|
||||
|
||||
for (var _i = 0, _Object$entries = Object.entries(features); _i < _Object$entries.length; _i++) {
|
||||
var _Object$entries$_i = _slicedToArray(_Object$entries[_i], 2),
|
||||
key = _Object$entries$_i[0],
|
||||
value = _Object$entries$_i[1];
|
||||
|
||||
logString += " ".concat(key, " ").concat(value ? "enabled" : "disabled", ",");
|
||||
} // replace last comma with a period
|
||||
|
||||
|
||||
logString = logString.slice(0, -1).concat(".");
|
||||
log.info(logString);
|
||||
};
|
||||
|
||||
export { log, logEnabledFeatures, setLogLevel };
|
||||
41
node_modules/webpack-dev-server/client/utils/parseURL.js
generated
vendored
Normal file
41
node_modules/webpack-dev-server/client/utils/parseURL.js
generated
vendored
Normal file
@@ -0,0 +1,41 @@
|
||||
import getCurrentScriptSource from "./getCurrentScriptSource.js";
|
||||
/**
|
||||
* @param {string} resourceQuery
|
||||
* @returns {{ [key: string]: string | boolean }}
|
||||
*/
|
||||
|
||||
function parseURL(resourceQuery) {
|
||||
/** @type {{ [key: string]: string }} */
|
||||
var options = {};
|
||||
|
||||
if (typeof resourceQuery === "string" && resourceQuery !== "") {
|
||||
var searchParams = resourceQuery.slice(1).split("&");
|
||||
|
||||
for (var i = 0; i < searchParams.length; i++) {
|
||||
var pair = searchParams[i].split("=");
|
||||
options[pair[0]] = decodeURIComponent(pair[1]);
|
||||
}
|
||||
} else {
|
||||
// Else, get the url from the <script> this file was called with.
|
||||
var scriptSource = getCurrentScriptSource();
|
||||
var scriptSourceURL;
|
||||
|
||||
try {
|
||||
// The placeholder `baseURL` with `window.location.href`,
|
||||
// is to allow parsing of path-relative or protocol-relative URLs,
|
||||
// and will have no effect if `scriptSource` is a fully valid URL.
|
||||
scriptSourceURL = new URL(scriptSource, self.location.href);
|
||||
} catch (error) {// URL parsing failed, do nothing.
|
||||
// We will still proceed to see if we can recover using `resourceQuery`
|
||||
}
|
||||
|
||||
if (scriptSourceURL) {
|
||||
options = scriptSourceURL;
|
||||
options.fromCurrentScript = true;
|
||||
}
|
||||
}
|
||||
|
||||
return options;
|
||||
}
|
||||
|
||||
export default parseURL;
|
||||
72
node_modules/webpack-dev-server/client/utils/reloadApp.js
generated
vendored
Normal file
72
node_modules/webpack-dev-server/client/utils/reloadApp.js
generated
vendored
Normal file
@@ -0,0 +1,72 @@
|
||||
import hotEmitter from "webpack/hot/emitter.js";
|
||||
import { log } from "./log.js";
|
||||
/** @typedef {import("../index").Options} Options
|
||||
/** @typedef {import("../index").Status} Status
|
||||
|
||||
/**
|
||||
* @param {Options} options
|
||||
* @param {Status} status
|
||||
*/
|
||||
|
||||
function reloadApp(_ref, status) {
|
||||
var hot = _ref.hot,
|
||||
liveReload = _ref.liveReload;
|
||||
|
||||
if (status.isUnloading) {
|
||||
return;
|
||||
}
|
||||
|
||||
var currentHash = status.currentHash,
|
||||
previousHash = status.previousHash;
|
||||
var isInitial = currentHash.indexOf(
|
||||
/** @type {string} */
|
||||
previousHash) >= 0;
|
||||
|
||||
if (isInitial) {
|
||||
return;
|
||||
}
|
||||
/**
|
||||
* @param {Window} rootWindow
|
||||
* @param {number} intervalId
|
||||
*/
|
||||
|
||||
|
||||
function applyReload(rootWindow, intervalId) {
|
||||
clearInterval(intervalId);
|
||||
log.info("App updated. Reloading...");
|
||||
rootWindow.location.reload();
|
||||
}
|
||||
|
||||
var search = self.location.search.toLowerCase();
|
||||
var allowToHot = search.indexOf("webpack-dev-server-hot=false") === -1;
|
||||
var allowToLiveReload = search.indexOf("webpack-dev-server-live-reload=false") === -1;
|
||||
|
||||
if (hot && allowToHot) {
|
||||
log.info("App hot update...");
|
||||
hotEmitter.emit("webpackHotUpdate", status.currentHash);
|
||||
|
||||
if (typeof self !== "undefined" && self.window) {
|
||||
// broadcast update to window
|
||||
self.postMessage("webpackHotUpdate".concat(status.currentHash), "*");
|
||||
}
|
||||
} // allow refreshing the page only if liveReload isn't disabled
|
||||
else if (liveReload && allowToLiveReload) {
|
||||
var rootWindow = self; // use parent window for reload (in case we're in an iframe with no valid src)
|
||||
|
||||
var intervalId = self.setInterval(function () {
|
||||
if (rootWindow.location.protocol !== "about:") {
|
||||
// reload immediately if protocol is valid
|
||||
applyReload(rootWindow, intervalId);
|
||||
} else {
|
||||
rootWindow = rootWindow.parent;
|
||||
|
||||
if (rootWindow.parent === rootWindow) {
|
||||
// if parent equals current window we've reached the root which would continue forever, so trigger a reload anyways
|
||||
applyReload(rootWindow, intervalId);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
export default reloadApp;
|
||||
17
node_modules/webpack-dev-server/client/utils/sendMessage.js
generated
vendored
Normal file
17
node_modules/webpack-dev-server/client/utils/sendMessage.js
generated
vendored
Normal file
@@ -0,0 +1,17 @@
|
||||
/* global __resourceQuery WorkerGlobalScope */
|
||||
// Send messages to the outside, so plugins can consume it.
|
||||
|
||||
/**
|
||||
* @param {string} type
|
||||
* @param {any} [data]
|
||||
*/
|
||||
function sendMsg(type, data) {
|
||||
if (typeof self !== "undefined" && (typeof WorkerGlobalScope === "undefined" || !(self instanceof WorkerGlobalScope))) {
|
||||
self.postMessage({
|
||||
type: "webpack".concat(type),
|
||||
data: data
|
||||
}, "*");
|
||||
}
|
||||
}
|
||||
|
||||
export default sendMsg;
|
||||
20
node_modules/webpack-dev-server/client/utils/stripAnsi.js
generated
vendored
Normal file
20
node_modules/webpack-dev-server/client/utils/stripAnsi.js
generated
vendored
Normal file
@@ -0,0 +1,20 @@
|
||||
var ansiRegex = new RegExp(["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)", "(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]))"].join("|"), "g");
|
||||
/**
|
||||
*
|
||||
* Strip [ANSI escape codes](https://en.wikipedia.org/wiki/ANSI_escape_code) from a string.
|
||||
* Adapted from code originally released by Sindre Sorhus
|
||||
* Licensed the MIT License
|
||||
*
|
||||
* @param {string} string
|
||||
* @return {string}
|
||||
*/
|
||||
|
||||
function stripAnsi(string) {
|
||||
if (typeof string !== "string") {
|
||||
throw new TypeError("Expected a `string`, got `".concat(typeof string, "`"));
|
||||
}
|
||||
|
||||
return string.replace(ansiRegex, "");
|
||||
}
|
||||
|
||||
export default stripAnsi;
|
||||
Reference in New Issue
Block a user