841dea9155b605b73c3a15f9898f213ead996f887ef6f0752e0ba37ce25516e3.json 12 KB

1
  1. {"ast":null,"code":"function ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n return target;\n}\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _toPropertyKey(arg) {\n var key = _toPrimitive(arg, \"string\");\n return typeof key === \"symbol\" ? key : String(key);\n}\nfunction _toPrimitive(input, hint) {\n if (typeof input !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (typeof res !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}\n// The error overlay is inspired (and mostly copied) from Create React App (https://github.com/facebookincubator/create-react-app)\n// They, in turn, got inspired by webpack-hot-middleware (https://github.com/glenjamin/webpack-hot-middleware).\n\nimport ansiHTML from \"ansi-html-community\";\nimport { encode } from \"html-entities\";\nimport { listenToRuntimeError, listenToUnhandledRejection, parseErrorToStacks } from \"./overlay/runtime-error.js\";\nimport createOverlayMachine from \"./overlay/state-machine.js\";\nimport { containerStyle, dismissButtonStyle, headerStyle, iframeStyle, msgStyles, msgTextStyle, msgTypeStyle } from \"./overlay/styles.js\";\nvar colors = {\n reset: [\"transparent\", \"transparent\"],\n black: \"181818\",\n red: \"E36049\",\n green: \"B3CB74\",\n yellow: \"FFD080\",\n blue: \"7CAFC2\",\n magenta: \"7FACCA\",\n cyan: \"C3C2EF\",\n lightgrey: \"EBE7E3\",\n darkgrey: \"6D7891\"\n};\nansiHTML.setColors(colors);\n\n/**\n * @param {string} type\n * @param {string | { file?: string, moduleName?: string, loc?: string, message?: string; stack?: string[] }} item\n * @returns {{ header: string, body: string }}\n */\nfunction formatProblem(type, item) {\n var header = type === \"warning\" ? \"WARNING\" : \"ERROR\";\n var body = \"\";\n if (typeof item === \"string\") {\n body += item;\n } else {\n var file = item.file || \"\";\n // eslint-disable-next-line no-nested-ternary\n var moduleName = item.moduleName ? item.moduleName.indexOf(\"!\") !== -1 ? \"\".concat(item.moduleName.replace(/^(\\s|\\S)*!/, \"\"), \" (\").concat(item.moduleName, \")\") : \"\".concat(item.moduleName) : \"\";\n var loc = item.loc;\n header += \"\".concat(moduleName || file ? \" in \".concat(moduleName ? \"\".concat(moduleName).concat(file ? \" (\".concat(file, \")\") : \"\") : file).concat(loc ? \" \".concat(loc) : \"\") : \"\");\n body += item.message || \"\";\n }\n if (Array.isArray(item.stack)) {\n item.stack.forEach(function (stack) {\n if (typeof stack === \"string\") {\n body += \"\\r\\n\".concat(stack);\n }\n });\n }\n return {\n header: header,\n body: body\n };\n}\n\n/**\n * @typedef {Object} CreateOverlayOptions\n * @property {string | null} trustedTypesPolicyName\n * @property {boolean | (error: Error) => void} [catchRuntimeError]\n */\n\n/**\n *\n * @param {CreateOverlayOptions} options\n */\nvar createOverlay = function createOverlay(options) {\n /** @type {HTMLIFrameElement | null | undefined} */\n var iframeContainerElement;\n /** @type {HTMLDivElement | null | undefined} */\n var containerElement;\n /** @type {HTMLDivElement | null | undefined} */\n var headerElement;\n /** @type {Array<(element: HTMLDivElement) => void>} */\n var onLoadQueue = [];\n /** @type {TrustedTypePolicy | undefined} */\n var overlayTrustedTypesPolicy;\n\n /**\n *\n * @param {HTMLElement} element\n * @param {CSSStyleDeclaration} style\n */\n function applyStyle(element, style) {\n Object.keys(style).forEach(function (prop) {\n element.style[prop] = style[prop];\n });\n }\n\n /**\n * @param {string | null} trustedTypesPolicyName\n */\n function createContainer(trustedTypesPolicyName) {\n // Enable Trusted Types if they are available in the current browser.\n if (window.trustedTypes) {\n overlayTrustedTypesPolicy = window.trustedTypes.createPolicy(trustedTypesPolicyName || \"webpack-dev-server#overlay\", {\n createHTML: function createHTML(value) {\n return value;\n }\n });\n }\n iframeContainerElement = document.createElement(\"iframe\");\n iframeContainerElement.id = \"webpack-dev-server-client-overlay\";\n iframeContainerElement.src = \"about:blank\";\n applyStyle(iframeContainerElement, iframeStyle);\n iframeContainerElement.onload = function () {\n var contentElement = /** @type {Document} */\n /** @type {HTMLIFrameElement} */\n iframeContainerElement.contentDocument.createElement(\"div\");\n containerElement = /** @type {Document} */\n /** @type {HTMLIFrameElement} */\n iframeContainerElement.contentDocument.createElement(\"div\");\n contentElement.id = \"webpack-dev-server-client-overlay-div\";\n applyStyle(contentElement, containerStyle);\n headerElement = document.createElement(\"div\");\n headerElement.innerText = \"Compiled with problems:\";\n applyStyle(headerElement, headerStyle);\n var closeButtonElement = document.createElement(\"button\");\n applyStyle(closeButtonElement, dismissButtonStyle);\n closeButtonElement.innerText = \"×\";\n closeButtonElement.ariaLabel = \"Dismiss\";\n closeButtonElement.addEventListener(\"click\", function () {\n // eslint-disable-next-line no-use-before-define\n overlayService.send({\n type: \"DISMISS\"\n });\n });\n contentElement.appendChild(headerElement);\n contentElement.appendChild(closeButtonElement);\n contentElement.appendChild(containerElement);\n\n /** @type {Document} */\n /** @type {HTMLIFrameElement} */\n iframeContainerElement.contentDocument.body.appendChild(contentElement);\n onLoadQueue.forEach(function (onLoad) {\n onLoad( /** @type {HTMLDivElement} */contentElement);\n });\n onLoadQueue = [];\n\n /** @type {HTMLIFrameElement} */\n iframeContainerElement.onload = null;\n };\n document.body.appendChild(iframeContainerElement);\n }\n\n /**\n * @param {(element: HTMLDivElement) => void} callback\n * @param {string | null} trustedTypesPolicyName\n */\n function ensureOverlayExists(callback, trustedTypesPolicyName) {\n if (containerElement) {\n containerElement.innerHTML = \"\";\n // Everything is ready, call the callback right away.\n callback(containerElement);\n return;\n }\n onLoadQueue.push(callback);\n if (iframeContainerElement) {\n return;\n }\n createContainer(trustedTypesPolicyName);\n }\n\n // Successful compilation.\n function hide() {\n if (!iframeContainerElement) {\n return;\n }\n\n // Clean up and reset internal state.\n document.body.removeChild(iframeContainerElement);\n iframeContainerElement = null;\n containerElement = null;\n }\n\n // Compilation with errors (e.g. syntax error or missing modules).\n /**\n * @param {string} type\n * @param {Array<string | { moduleIdentifier?: string, moduleName?: string, loc?: string, message?: string }>} messages\n * @param {string | null} trustedTypesPolicyName\n * @param {'build' | 'runtime'} messageSource\n */\n function show(type, messages, trustedTypesPolicyName, messageSource) {\n ensureOverlayExists(function () {\n headerElement.innerText = messageSource === \"runtime\" ? \"Uncaught runtime errors:\" : \"Compiled with problems:\";\n messages.forEach(function (message) {\n var entryElement = document.createElement(\"div\");\n var msgStyle = type === \"warning\" ? msgStyles.warning : msgStyles.error;\n applyStyle(entryElement, _objectSpread(_objectSpread({}, msgStyle), {}, {\n padding: \"1rem 1rem 1.5rem 1rem\"\n }));\n var typeElement = document.createElement(\"div\");\n var _formatProblem = formatProblem(type, message),\n header = _formatProblem.header,\n body = _formatProblem.body;\n typeElement.innerText = header;\n applyStyle(typeElement, msgTypeStyle);\n if (message.moduleIdentifier) {\n applyStyle(typeElement, {\n cursor: \"pointer\"\n });\n // element.dataset not supported in IE\n typeElement.setAttribute(\"data-can-open\", true);\n typeElement.addEventListener(\"click\", function () {\n fetch(\"/webpack-dev-server/open-editor?fileName=\".concat(message.moduleIdentifier));\n });\n }\n\n // Make it look similar to our terminal.\n var text = ansiHTML(encode(body));\n var messageTextNode = document.createElement(\"div\");\n applyStyle(messageTextNode, msgTextStyle);\n messageTextNode.innerHTML = overlayTrustedTypesPolicy ? overlayTrustedTypesPolicy.createHTML(text) : text;\n entryElement.appendChild(typeElement);\n entryElement.appendChild(messageTextNode);\n\n /** @type {HTMLDivElement} */\n containerElement.appendChild(entryElement);\n });\n }, trustedTypesPolicyName);\n }\n var overlayService = createOverlayMachine({\n showOverlay: function showOverlay(_ref) {\n var _ref$level = _ref.level,\n level = _ref$level === void 0 ? \"error\" : _ref$level,\n messages = _ref.messages,\n messageSource = _ref.messageSource;\n return show(level, messages, options.trustedTypesPolicyName, messageSource);\n },\n hideOverlay: hide\n });\n if (options.catchRuntimeError) {\n /**\n * @param {Error | undefined} error\n * @param {string} fallbackMessage\n */\n var handleError = function handleError(error, fallbackMessage) {\n var errorObject = error instanceof Error ? error : new Error(error || fallbackMessage);\n var shouldDisplay = typeof options.catchRuntimeError === \"function\" ? options.catchRuntimeError(errorObject) : true;\n if (shouldDisplay) {\n overlayService.send({\n type: \"RUNTIME_ERROR\",\n messages: [{\n message: errorObject.message,\n stack: parseErrorToStacks(errorObject)\n }]\n });\n }\n };\n listenToRuntimeError(function (errorEvent) {\n // error property may be empty in older browser like IE\n var error = errorEvent.error,\n message = errorEvent.message;\n if (!error && !message) {\n return;\n }\n handleError(error, message);\n });\n listenToUnhandledRejection(function (promiseRejectionEvent) {\n var reason = promiseRejectionEvent.reason;\n handleError(reason, \"Unknown promise rejection reason\");\n });\n }\n return overlayService;\n};\nexport { formatProblem, createOverlay };","map":null,"metadata":{},"sourceType":"module","externalDependencies":[]}