You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

311 lines
8.0 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

"use strict";
function _react() {
const data = _interopRequireDefault(require("react"));
_react = function _react() {
return data;
};
return data;
}
function _sockjsClient() {
const data = _interopRequireDefault(require("sockjs-client"));
_sockjsClient = function _sockjsClient() {
return data;
};
return data;
}
function _url() {
const data = _interopRequireDefault(require("url"));
_url = function _url() {
return data;
};
return data;
}
function ErrorOverlay() {
const data = _interopRequireWildcard(require("react-error-overlay"));
ErrorOverlay = function ErrorOverlay() {
return data;
};
return data;
}
function _stripAnsi() {
const data = _interopRequireDefault(require("strip-ansi"));
_stripAnsi = function _stripAnsi() {
return data;
};
return data;
}
var _formatWebpackMessages = _interopRequireDefault(require("./formatWebpackMessages"));
function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
// @ts-ignore
let hadRuntimeError = false;
ErrorOverlay().startReportingRuntimeErrors({
onError: function onError() {
hadRuntimeError = true;
}
});
let isFirstCompilation = true;
let mostRecentCompilationHash = null;
let hasCompileErrors = false;
function handleHashChange(hash) {
mostRecentCompilationHash = hash;
}
function handleSuccess(data) {
if (data && data.reload) {
window.location.reload();
return;
}
const isHotUpdate = !isFirstCompilation;
isFirstCompilation = false;
hasCompileErrors = false;
if (isHotUpdate) {
tryApplyUpdates(() => {
ErrorOverlay().dismissBuildError();
});
}
}
function handleWarnings(warnings) {
var isHotUpdate = !isFirstCompilation;
isFirstCompilation = false;
hasCompileErrors = false;
function printWarnings() {
const formatted = (0, _formatWebpackMessages.default)({
warnings,
errors: []
});
formatted.warnings.forEach(warning => {
console.warn((0, _stripAnsi().default)(warning));
});
}
if (isHotUpdate) {
tryApplyUpdates(() => {
printWarnings();
ErrorOverlay().dismissBuildError();
});
} else {
printWarnings();
}
}
function handleErrors(errors) {
isFirstCompilation = false;
hasCompileErrors = true;
const formatted = (0, _formatWebpackMessages.default)({
errors,
warnings: []
});
ErrorOverlay().reportBuildError(formatted.errors[0]);
formatted.errors.forEach(error => {
console.error((0, _stripAnsi().default)(error));
});
}
let tryApplyUpdates = null; // function tryApplyUpdates(onHotUpdateSuccess?: Function) {
// // @ts-ignore
// if (!module.hot) {
// window.location.reload();
// return;
// }
//
// function isUpdateAvailable() {
// // @ts-ignore
// return mostRecentCompilationHash !== __webpack_hash__;
// }
//
// // TODO: is update available?
// // @ts-ignore
// if (!isUpdateAvailable() || module.hot.status() !== 'idle') {
// return;
// }
//
// function handleApplyUpdates(err: Error | null, updatedModules: any) {
// if (err || !updatedModules || hadRuntimeError) {
// window.location.reload();
// return;
// }
//
// onHotUpdateSuccess?.();
//
// if (isUpdateAvailable()) {
// // While we were updating, there was a new update! Do it again.
// tryApplyUpdates();
// }
// }
//
// // @ts-ignore
// module.hot.check(true).then(
// function (updatedModules: any) {
// handleApplyUpdates(null, updatedModules);
// },
// function (err: Error) {
// handleApplyUpdates(err, null);
// },
// );
// }
const showPending = () => {
const el = document.createElement('div');
el.style.position = 'absolute';
el.style.left = '0px';
el.style.top = '0px';
el.style.width = '100%';
el.style.background = '#fff1b8';
el.style.zIndex = '2147483647000000';
el.style.color = '#613400';
el.style.textAlign = 'center';
el.style.fontSize = '18px';
el.style.fontFamily = 'Consolas, Menlo, Courier, monospace';
el.style.padding = '8px 0';
el.style.boxShadow = '0px 4px 8px rgba(0, 0, 0, 0.1)';
el.innerHTML = 'Disconnected from the devServer, trying to reconnect...';
document.body.appendChild(el);
return el;
};
let sock;
let retries = 0;
let pending;
function stripLastSlash(url) {
if (url.slice(-1) === '/') {
return url.slice(0, -1);
} else {
return url;
}
}
function getSocketHost() {
var _document$body, _document$body$queryS;
if (process.env.SOCKET_SERVER) {
return stripLastSlash(process.env.SOCKET_SERVER);
}
let host, protocol;
const scripts = ((_document$body = document.body) === null || _document$body === void 0 ? void 0 : (_document$body$queryS = _document$body.querySelectorAll) === null || _document$body$queryS === void 0 ? void 0 : _document$body$queryS.call(_document$body, 'script')) || [];
const dataFromSrc = scripts[scripts.length - 1] ? scripts[scripts.length - 1].getAttribute('src') : '';
if (dataFromSrc && dataFromSrc.includes('umi.js')) {
const urlParsed = _url().default.parse(dataFromSrc);
host = urlParsed.host;
protocol = urlParsed.protocol;
} else {
// 某些场景可能没有 umi.js比如微前端的场景
host = location.host;
protocol = location.protocol;
}
return host && protocol ? _url().default.format({
host,
protocol
}) : '';
}
function initSocket() {
const host = getSocketHost();
sock = new (_sockjsClient().default)(`${host}/dev-server`);
sock.onopen = () => {
var _pending, _pending$parentElemen;
retries = 0;
(_pending = pending) === null || _pending === void 0 ? void 0 : (_pending$parentElemen = _pending.parentElement) === null || _pending$parentElemen === void 0 ? void 0 : _pending$parentElemen.removeChild(pending);
};
sock.onmessage = e => {
const message = JSON.parse(e.data);
switch (message.type) {
case 'hash':
handleHashChange(message.data);
break;
case 'still-ok':
case 'ok':
handleSuccess(message.data);
break;
case 'warnings':
handleWarnings(message.data);
break;
case 'errors':
handleErrors(message.data);
break;
default:
break;
}
};
sock.onclose = e => {
if (retries === 0) {
var _console;
if (typeof ((_console = console) === null || _console === void 0 ? void 0 : _console.info) === 'function') {
console.info('The development server has disconnected.\nRefresh the page if necessary.');
}
} // @ts-ignore
sock = null;
if (!pending) {
pending = showPending();
}
if (retries <= 10) {
const retryInMs = 1000 * Math.pow(2, retries) + Math.random() * 100;
retries += 1;
setTimeout(() => {
initSocket();
}, retryInMs);
}
};
} // TODO: improve this
// @ts-ignore
window.g_initWebpackHotDevClient = function (opts) {
tryApplyUpdates = opts.tryApplyUpdates;
initSocket();
}; // @ts-ignore
window.g_getMostRecentCompilationHash = () => {
return mostRecentCompilationHash;
}; // @ts-ignore
window.g_getHadRuntimeError = () => {
return hadRuntimeError;
};