mirror of
https://github.com/idanoo/GoScrobble
synced 2025-07-02 06:02:19 +00:00
0.2.0 - Mid migration
This commit is contained in:
parent
139e6a915e
commit
7e38fdbd7d
42393 changed files with 5358157 additions and 62 deletions
52
web/node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/components/CompileErrorTrace.js
generated
vendored
Normal file
52
web/node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/components/CompileErrorTrace.js
generated
vendored
Normal file
|
@ -0,0 +1,52 @@
|
|||
const ansiHTML = require('ansi-html');
|
||||
const HtmlEntities = require('html-entities');
|
||||
const theme = require('../theme');
|
||||
const formatFilename = require('../utils/formatFilename');
|
||||
|
||||
ansiHTML.setColors(theme);
|
||||
|
||||
const entities = new HtmlEntities.Html5Entities();
|
||||
|
||||
/**
|
||||
* @typedef {Object} CompileErrorTraceProps
|
||||
* @property {string} errorMessage
|
||||
*/
|
||||
|
||||
/**
|
||||
* A formatter that turns Webpack compile error messages into highlighted HTML source traces.
|
||||
* @param {Document} document
|
||||
* @param {HTMLElement} root
|
||||
* @param {CompileErrorTraceProps} props
|
||||
* @returns {void}
|
||||
*/
|
||||
function CompileErrorTrace(document, root, props) {
|
||||
const errorParts = props.errorMessage.split('\n');
|
||||
const errorMessage = errorParts
|
||||
.splice(1, 1)[0]
|
||||
// Strip filename from the error message
|
||||
.replace(/^(.*:)\s.*:(\s.*)$/, '$1$2');
|
||||
errorParts[0] = formatFilename(errorParts[0]);
|
||||
errorParts.unshift(errorMessage);
|
||||
|
||||
const stackContainer = document.createElement('pre');
|
||||
stackContainer.innerHTML = entities.decode(ansiHTML(entities.encode(errorParts.join('\n'))));
|
||||
stackContainer.style.fontFamily = [
|
||||
'"Operator Mono SSm"',
|
||||
'"Operator Mono"',
|
||||
'"Fira Code Retina"',
|
||||
'"Fira Code"',
|
||||
'"FiraCode-Retina"',
|
||||
'"Andale Mono"',
|
||||
'"Lucida Console"',
|
||||
'Menlo',
|
||||
'Consolas',
|
||||
'Monaco',
|
||||
'monospace',
|
||||
].join(', ');
|
||||
stackContainer.style.margin = '0';
|
||||
stackContainer.style.whiteSpace = 'pre-wrap';
|
||||
|
||||
root.appendChild(stackContainer);
|
||||
}
|
||||
|
||||
module.exports = CompileErrorTrace;
|
56
web/node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/components/PageHeader.js
generated
vendored
Normal file
56
web/node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/components/PageHeader.js
generated
vendored
Normal file
|
@ -0,0 +1,56 @@
|
|||
const theme = require('../theme');
|
||||
const Spacer = require('./Spacer');
|
||||
|
||||
/**
|
||||
* @typedef {Object} PageHeaderProps
|
||||
* @property {string} [message]
|
||||
* @property {string} title
|
||||
* @property {string} [topOffset]
|
||||
*/
|
||||
|
||||
/**
|
||||
* The header of the overlay.
|
||||
* @param {Document} document
|
||||
* @param {HTMLElement} root
|
||||
* @param {PageHeaderProps} props
|
||||
* @returns {void}
|
||||
*/
|
||||
function PageHeader(document, root, props) {
|
||||
const pageHeaderContainer = document.createElement('div');
|
||||
pageHeaderContainer.style.background = '#' + theme.dimgrey;
|
||||
pageHeaderContainer.style.boxShadow = '0 1px 4px rgba(0, 0, 0, 0.3)';
|
||||
pageHeaderContainer.style.color = '#' + theme.white;
|
||||
pageHeaderContainer.style.left = '0';
|
||||
pageHeaderContainer.style.padding = '1rem 1.5rem';
|
||||
pageHeaderContainer.style.position = 'fixed';
|
||||
pageHeaderContainer.style.top = props.topOffset || '0';
|
||||
pageHeaderContainer.style.width = 'calc(100vw - 3rem)';
|
||||
|
||||
const title = document.createElement('h3');
|
||||
title.innerText = props.title;
|
||||
title.style.color = '#' + theme.red;
|
||||
title.style.fontSize = '1.125rem';
|
||||
title.style.lineHeight = '1.3';
|
||||
title.style.margin = '0';
|
||||
pageHeaderContainer.appendChild(title);
|
||||
|
||||
if (props.message) {
|
||||
title.style.margin = '0 0 0.5rem';
|
||||
|
||||
const message = document.createElement('span');
|
||||
message.innerText = props.message;
|
||||
message.style.color = '#' + theme.white;
|
||||
message.style.wordBreak = 'break-word';
|
||||
pageHeaderContainer.appendChild(message);
|
||||
}
|
||||
|
||||
root.appendChild(pageHeaderContainer);
|
||||
|
||||
// This has to run after appending elements to root
|
||||
// because we need to actual mounted height.
|
||||
Spacer(document, root, {
|
||||
space: pageHeaderContainer.offsetHeight.toString(10),
|
||||
});
|
||||
}
|
||||
|
||||
module.exports = PageHeader;
|
91
web/node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/components/RuntimeErrorFooter.js
generated
vendored
Normal file
91
web/node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/components/RuntimeErrorFooter.js
generated
vendored
Normal file
|
@ -0,0 +1,91 @@
|
|||
const theme = require('../theme');
|
||||
const Spacer = require('./Spacer');
|
||||
|
||||
/**
|
||||
* @typedef {Object} RuntimeErrorFooterProps
|
||||
* @property {string} [initialFocus]
|
||||
* @property {boolean} multiple
|
||||
* @property {function(MouseEvent): void} onClickCloseButton
|
||||
* @property {function(MouseEvent): void} onClickNextButton
|
||||
* @property {function(MouseEvent): void} onClickPrevButton
|
||||
*/
|
||||
|
||||
/**
|
||||
* A fixed footer that handles pagination of runtime errors.
|
||||
* @param {Document} document
|
||||
* @param {HTMLElement} root
|
||||
* @param {RuntimeErrorFooterProps} props
|
||||
* @returns {void}
|
||||
*/
|
||||
function RuntimeErrorFooter(document, root, props) {
|
||||
const footer = document.createElement('div');
|
||||
footer.style.backgroundColor = '#' + theme.dimgrey;
|
||||
footer.style.bottom = '0';
|
||||
footer.style.boxShadow = '0 -1px 4px rgba(0, 0, 0, 0.3)';
|
||||
footer.style.height = '2.5rem';
|
||||
footer.style.left = '0';
|
||||
footer.style.lineHeight = '2.5rem';
|
||||
footer.style.position = 'fixed';
|
||||
footer.style.textAlign = 'center';
|
||||
footer.style.width = '100vw';
|
||||
footer.style.zIndex = '2';
|
||||
|
||||
const BUTTON_CONFIGS = {
|
||||
prev: {
|
||||
id: 'prev',
|
||||
label: '◀ Prev',
|
||||
onClick: props.onClickPrevButton,
|
||||
},
|
||||
close: {
|
||||
id: 'close',
|
||||
label: '× Close',
|
||||
onClick: props.onClickCloseButton,
|
||||
},
|
||||
next: {
|
||||
id: 'next',
|
||||
label: 'Next ▶',
|
||||
onClick: props.onClickNextButton,
|
||||
},
|
||||
};
|
||||
|
||||
let buttons = [BUTTON_CONFIGS.close];
|
||||
if (props.multiple) {
|
||||
buttons = [BUTTON_CONFIGS.prev, BUTTON_CONFIGS.close, BUTTON_CONFIGS.next];
|
||||
}
|
||||
|
||||
/** @type {HTMLButtonElement | undefined} */
|
||||
let initialFocusButton;
|
||||
for (let i = 0; i < buttons.length; i += 1) {
|
||||
const buttonConfig = buttons[i];
|
||||
|
||||
const button = document.createElement('button');
|
||||
button.id = buttonConfig.id;
|
||||
button.innerHTML = buttonConfig.label;
|
||||
button.tabIndex = 1;
|
||||
button.style.backgroundColor = '#' + theme.dimgrey;
|
||||
button.style.border = 'none';
|
||||
button.style.color = '#' + theme.white;
|
||||
button.style.cursor = 'pointer';
|
||||
button.style.fontSize = 'inherit';
|
||||
button.style.height = '100%';
|
||||
button.style.padding = '0.5rem 0.75rem';
|
||||
button.style.width = (100 / buttons.length).toString(10) + '%';
|
||||
button.addEventListener('click', buttonConfig.onClick);
|
||||
|
||||
if (buttonConfig.id === props.initialFocus) {
|
||||
initialFocusButton = button;
|
||||
}
|
||||
|
||||
footer.appendChild(button);
|
||||
}
|
||||
|
||||
root.appendChild(footer);
|
||||
|
||||
Spacer(document, root, { space: '2.5rem' });
|
||||
|
||||
if (initialFocusButton) {
|
||||
initialFocusButton.focus();
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = RuntimeErrorFooter;
|
37
web/node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/components/RuntimeErrorHeader.js
generated
vendored
Normal file
37
web/node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/components/RuntimeErrorHeader.js
generated
vendored
Normal file
|
@ -0,0 +1,37 @@
|
|||
const theme = require('../theme');
|
||||
const Spacer = require('./Spacer');
|
||||
|
||||
/**
|
||||
* @typedef {Object} RuntimeErrorHeaderProps
|
||||
* @property {number} currentErrorIndex
|
||||
* @property {number} totalErrors
|
||||
*/
|
||||
|
||||
/**
|
||||
* A fixed header that shows the total runtime error count.
|
||||
* @param {Document} document
|
||||
* @param {HTMLElement} root
|
||||
* @param {RuntimeErrorHeaderProps} props
|
||||
* @returns {void}
|
||||
*/
|
||||
function RuntimeErrorHeader(document, root, props) {
|
||||
const header = document.createElement('div');
|
||||
header.innerText = 'Error ' + (props.currentErrorIndex + 1) + ' of ' + props.totalErrors;
|
||||
header.style.backgroundColor = '#' + theme.red;
|
||||
header.style.color = '#' + theme.white;
|
||||
header.style.fontWeight = '500';
|
||||
header.style.height = '2.5rem';
|
||||
header.style.left = '0';
|
||||
header.style.lineHeight = '2.5rem';
|
||||
header.style.position = 'fixed';
|
||||
header.style.textAlign = 'center';
|
||||
header.style.top = '0';
|
||||
header.style.width = '100vw';
|
||||
header.style.zIndex = '2';
|
||||
|
||||
root.appendChild(header);
|
||||
|
||||
Spacer(document, root, { space: '2.5rem' });
|
||||
}
|
||||
|
||||
module.exports = RuntimeErrorHeader;
|
79
web/node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/components/RuntimeErrorStack.js
generated
vendored
Normal file
79
web/node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/components/RuntimeErrorStack.js
generated
vendored
Normal file
|
@ -0,0 +1,79 @@
|
|||
const ErrorStackParser = require('error-stack-parser');
|
||||
const theme = require('../theme');
|
||||
const formatFilename = require('../utils/formatFilename');
|
||||
|
||||
/**
|
||||
* @typedef {Object} RuntimeErrorStackProps
|
||||
* @property {Error} error
|
||||
*/
|
||||
|
||||
/**
|
||||
* A formatter that turns runtime error stacks into highlighted HTML stacks.
|
||||
* @param {Document} document
|
||||
* @param {HTMLElement} root
|
||||
* @param {RuntimeErrorStackProps} props
|
||||
* @returns {void}
|
||||
*/
|
||||
function RuntimeErrorStack(document, root, props) {
|
||||
const stackTitle = document.createElement('h4');
|
||||
stackTitle.innerText = 'Call Stack';
|
||||
stackTitle.style.color = '#' + theme.white;
|
||||
stackTitle.style.fontSize = '1.0625rem';
|
||||
stackTitle.style.fontWeight = '500';
|
||||
stackTitle.style.lineHeight = '1.3';
|
||||
stackTitle.style.margin = '0 0 0.5rem';
|
||||
|
||||
const stackContainer = document.createElement('div');
|
||||
stackContainer.style.fontSize = '0.8125rem';
|
||||
stackContainer.style.lineHeight = '1.3';
|
||||
stackContainer.style.whiteSpace = 'pre-wrap';
|
||||
|
||||
let errorStacks;
|
||||
try {
|
||||
errorStacks = ErrorStackParser.parse(props.error);
|
||||
} catch (e) {
|
||||
errorStacks = [];
|
||||
stackContainer.innerHTML = 'No stack trace is available for this error!';
|
||||
}
|
||||
|
||||
for (let i = 0; i < Math.min(errorStacks.length, 10); i += 1) {
|
||||
const currentStack = errorStacks[i];
|
||||
|
||||
const functionName = document.createElement('code');
|
||||
functionName.innerHTML = ' ' + currentStack.functionName || '(anonymous function)';
|
||||
functionName.style.color = '#' + theme.yellow;
|
||||
functionName.style.fontFamily = [
|
||||
'"Operator Mono SSm"',
|
||||
'"Operator Mono"',
|
||||
'"Fira Code Retina"',
|
||||
'"Fira Code"',
|
||||
'"FiraCode-Retina"',
|
||||
'"Andale Mono"',
|
||||
'"Lucida Console"',
|
||||
'Menlo',
|
||||
'Consolas',
|
||||
'Monaco',
|
||||
'monospace',
|
||||
].join(', ');
|
||||
|
||||
const fileName = document.createElement('div');
|
||||
fileName.innerHTML =
|
||||
'  ' +
|
||||
formatFilename(currentStack.fileName) +
|
||||
':' +
|
||||
currentStack.lineNumber +
|
||||
':' +
|
||||
currentStack.columnNumber;
|
||||
fileName.style.color = '#' + theme.white;
|
||||
fileName.style.fontSize = '0.6875rem';
|
||||
fileName.style.marginBottom = '0.25rem';
|
||||
|
||||
stackContainer.appendChild(functionName);
|
||||
stackContainer.appendChild(fileName);
|
||||
}
|
||||
|
||||
root.appendChild(stackTitle);
|
||||
root.appendChild(stackContainer);
|
||||
}
|
||||
|
||||
module.exports = RuntimeErrorStack;
|
19
web/node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/components/Spacer.js
generated
vendored
Normal file
19
web/node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/components/Spacer.js
generated
vendored
Normal file
|
@ -0,0 +1,19 @@
|
|||
/**
|
||||
* @typedef {Object} SpacerProps
|
||||
* @property {string} space
|
||||
*/
|
||||
|
||||
/**
|
||||
* An empty element to add spacing manually.
|
||||
* @param {Document} document
|
||||
* @param {HTMLElement} root
|
||||
* @param {SpacerProps} props
|
||||
* @returns {void}
|
||||
*/
|
||||
function Spacer(document, root, props) {
|
||||
const spacer = document.createElement('div');
|
||||
spacer.style.paddingBottom = props.space;
|
||||
root.appendChild(spacer);
|
||||
}
|
||||
|
||||
module.exports = Spacer;
|
Loading…
Add table
Add a link
Reference in a new issue