Merge pull request #67258 from Faless/web/4.x_eslint_html

[Web] Add auto-formatting to HTML files.
This commit is contained in:
Rémi Verschelde 2022-10-12 08:54:52 +02:00
commit fb9b4a1dd0
7 changed files with 1325 additions and 1040 deletions

File diff suppressed because it is too large Load Diff

View File

@ -1,247 +1,245 @@
<!DOCTYPE html> <!DOCTYPE html>
<html xmlns='https://www.w3.org/1999/xhtml' lang='' xml:lang=''> <html lang="en">
<head> <head>
<meta charset='utf-8' /> <meta charset="utf-8">
<meta name='viewport' content='width=device-width, user-scalable=no' /> <meta name="viewport" content="width=device-width, user-scalable=no">
<title>$GODOT_PROJECT_NAME</title> <title>$GODOT_PROJECT_NAME</title>
<style type='text/css'> <style>
body {
touch-action: none;
margin: 0;
border: 0 none;
padding: 0;
text-align: center;
background-color: black;
}
body { #canvas {
touch-action: none; display: block;
margin: 0; margin: 0;
border: 0 none; color: white;
padding: 0; }
text-align: center;
background-color: black;
}
#canvas { #canvas:focus {
display: block; outline: none;
margin: 0; }
color: white;
}
#canvas:focus { .godot {
outline: none; font-family: 'Noto Sans', 'Droid Sans', Arial, sans-serif;
} color: #e0e0e0;
background-color: #3b3943;
background-image: linear-gradient(to bottom, #403e48, #35333c);
border: 1px solid #45434e;
box-shadow: 0 0 1px 1px #2f2d35;
}
.godot { /* Status display */
font-family: 'Noto Sans', 'Droid Sans', Arial, sans-serif;
color: #e0e0e0;
background-color: #3b3943;
background-image: linear-gradient(to bottom, #403e48, #35333c);
border: 1px solid #45434e;
box-shadow: 0 0 1px 1px #2f2d35;
}
#status {
position: absolute;
left: 0;
top: 0;
right: 0;
bottom: 0;
display: flex;
justify-content: center;
align-items: center;
/* don't consume click events - make children visible explicitly */
visibility: hidden;
}
/* Status display #status-progress {
* ============== */ width: 366px;
height: 7px;
background-color: #38363A;
border: 1px solid #444246;
padding: 1px;
box-shadow: 0 0 2px 1px #1B1C22;
border-radius: 2px;
visibility: visible;
}
#status { @media only screen and (orientation:portrait) {
position: absolute; #status-progress {
left: 0; width: 61.8%;
top: 0; }
right: 0; }
bottom: 0;
display: flex;
justify-content: center;
align-items: center;
/* don't consume click events - make children visible explicitly */
visibility: hidden;
}
#status-progress { #status-progress-inner {
width: 366px; height: 100%;
height: 7px; width: 0;
background-color: #38363A; box-sizing: border-box;
border: 1px solid #444246; transition: width 0.5s linear;
padding: 1px; background-color: #202020;
box-shadow: 0 0 2px 1px #1B1C22; border: 1px solid #222223;
border-radius: 2px; box-shadow: 0 0 1px 1px #27282E;
visibility: visible; border-radius: 3px;
} }
@media only screen and (orientation:portrait) { #status-indeterminate {
#status-progress { height: 42px;
width: 61.8%; visibility: visible;
} position: relative;
} }
#status-progress-inner { #status-indeterminate > div {
height: 100%; width: 4.5px;
width: 0; height: 0;
box-sizing: border-box; border-style: solid;
transition: width 0.5s linear; border-width: 9px 3px 0 3px;
background-color: #202020; border-color: #2b2b2b transparent transparent transparent;
border: 1px solid #222223; transform-origin: center 21px;
box-shadow: 0 0 1px 1px #27282E; position: absolute;
border-radius: 3px; }
}
#status-indeterminate { #status-indeterminate > div:nth-child(1) { transform: rotate( 22.5deg); }
height: 42px; #status-indeterminate > div:nth-child(2) { transform: rotate( 67.5deg); }
visibility: visible; #status-indeterminate > div:nth-child(3) { transform: rotate(112.5deg); }
position: relative; #status-indeterminate > div:nth-child(4) { transform: rotate(157.5deg); }
} #status-indeterminate > div:nth-child(5) { transform: rotate(202.5deg); }
#status-indeterminate > div:nth-child(6) { transform: rotate(247.5deg); }
#status-indeterminate > div:nth-child(7) { transform: rotate(292.5deg); }
#status-indeterminate > div:nth-child(8) { transform: rotate(337.5deg); }
#status-indeterminate > div { #status-notice {
width: 4.5px; margin: 0 100px;
height: 0; line-height: 1.3;
border-style: solid; visibility: visible;
border-width: 9px 3px 0 3px; padding: 4px 6px;
border-color: #2b2b2b transparent transparent transparent; visibility: visible;
transform-origin: center 21px; }
position: absolute; </style>
} $GODOT_HEAD_INCLUDE
</head>
#status-indeterminate > div:nth-child(1) { transform: rotate( 22.5deg); } <body>
#status-indeterminate > div:nth-child(2) { transform: rotate( 67.5deg); } <canvas id="canvas">
#status-indeterminate > div:nth-child(3) { transform: rotate(112.5deg); } HTML5 canvas appears to be unsupported in the current browser.<br >
#status-indeterminate > div:nth-child(4) { transform: rotate(157.5deg); } Please try updating or use a different browser.
#status-indeterminate > div:nth-child(5) { transform: rotate(202.5deg); } </canvas>
#status-indeterminate > div:nth-child(6) { transform: rotate(247.5deg); } <div id="status">
#status-indeterminate > div:nth-child(7) { transform: rotate(292.5deg); } <div id="status-progress" style="display: none;" oncontextmenu="event.preventDefault();">
#status-indeterminate > div:nth-child(8) { transform: rotate(337.5deg); } <div id ="status-progress-inner"></div>
</div>
#status-notice { <div id="status-indeterminate" style="display: none;" oncontextmenu="event.preventDefault();">
margin: 0 100px; <div></div>
line-height: 1.3; <div></div>
visibility: visible; <div></div>
padding: 4px 6px; <div></div>
visibility: visible; <div></div>
} <div></div>
</style> <div></div>
$GODOT_HEAD_INCLUDE <div></div>
</head> </div>
<body> <div id="status-notice" class="godot" style="display: none;"></div>
<canvas id='canvas'>
HTML5 canvas appears to be unsupported in the current browser.<br />
Please try updating or use a different browser.
</canvas>
<div id='status'>
<div id='status-progress' style='display: none;' oncontextmenu='event.preventDefault();'><div id ='status-progress-inner'></div></div>
<div id='status-indeterminate' style='display: none;' oncontextmenu='event.preventDefault();'>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
</div> </div>
<div id='status-notice' class='godot' style='display: none;'></div>
</div>
<script type='text/javascript' src='$GODOT_URL'></script> <script src="$GODOT_URL"></script>
<script type='text/javascript'>//<![CDATA[ <script>
const GODOT_CONFIG = $GODOT_CONFIG;
const engine = new Engine(GODOT_CONFIG);
const GODOT_CONFIG = $GODOT_CONFIG; (function () {
var engine = new Engine(GODOT_CONFIG); const INDETERMINATE_STATUS_STEP_MS = 100;
const statusProgress = document.getElementById('status-progress');
const statusProgressInner = document.getElementById('status-progress-inner');
const statusIndeterminate = document.getElementById('status-indeterminate');
const statusNotice = document.getElementById('status-notice');
(function() { let initializing = true;
const INDETERMINATE_STATUS_STEP_MS = 100; let statusMode = 'hidden';
var statusProgress = document.getElementById('status-progress');
var statusProgressInner = document.getElementById('status-progress-inner');
var statusIndeterminate = document.getElementById('status-indeterminate');
var statusNotice = document.getElementById('status-notice');
var initializing = true; let animationCallbacks = [];
var statusMode = 'hidden'; function animate(time) {
animationCallbacks.forEach((callback) => callback(time));
requestAnimationFrame(animate);
}
requestAnimationFrame(animate);
var animationCallbacks = []; function animateStatusIndeterminate(ms) {
function animate(time) { const i = Math.floor((ms / INDETERMINATE_STATUS_STEP_MS) % 8);
animationCallbacks.forEach(callback => callback(time)); if (statusIndeterminate.children[i].style.borderTopColor === '') {
requestAnimationFrame(animate); Array.prototype.slice.call(statusIndeterminate.children).forEach((child) => {
} child.style.borderTopColor = '';
requestAnimationFrame(animate); });
statusIndeterminate.children[i].style.borderTopColor = '#dfdfdf';
}
}
function setStatusMode(mode) { function setStatusMode(mode) {
if (statusMode === mode || !initializing) {
return;
}
[statusProgress, statusIndeterminate, statusNotice].forEach((elem) => {
elem.style.display = 'none';
});
animationCallbacks = animationCallbacks.filter(function (value) {
return (value !== animateStatusIndeterminate);
});
switch (mode) {
case 'progress':
statusProgress.style.display = 'block';
break;
case 'indeterminate':
statusIndeterminate.style.display = 'block';
animationCallbacks.push(animateStatusIndeterminate);
break;
case 'notice':
statusNotice.style.display = 'block';
break;
case 'hidden':
break;
default:
throw new Error('Invalid status mode');
}
statusMode = mode;
}
if (statusMode === mode || !initializing) function setStatusNotice(text) {
return; while (statusNotice.lastChild) {
[statusProgress, statusIndeterminate, statusNotice].forEach(elem => { statusNotice.removeChild(statusNotice.lastChild);
elem.style.display = 'none'; }
}); const lines = text.split('\n');
animationCallbacks = animationCallbacks.filter(function(value) { lines.forEach((line) => {
return (value != animateStatusIndeterminate); statusNotice.appendChild(document.createTextNode(line));
}); statusNotice.appendChild(document.createElement('br'));
switch (mode) { });
case 'progress': }
statusProgress.style.display = 'block';
break;
case 'indeterminate':
statusIndeterminate.style.display = 'block';
animationCallbacks.push(animateStatusIndeterminate);
break;
case 'notice':
statusNotice.style.display = 'block';
break;
case 'hidden':
break;
default:
throw new Error('Invalid status mode');
}
statusMode = mode;
}
function animateStatusIndeterminate(ms) { function displayFailureNotice(err) {
var i = Math.floor(ms / INDETERMINATE_STATUS_STEP_MS % 8); const msg = err.message || err;
if (statusIndeterminate.children[i].style.borderTopColor == '') { console.error(msg);
Array.prototype.slice.call(statusIndeterminate.children).forEach(child => { setStatusNotice(msg);
child.style.borderTopColor = ''; setStatusMode('notice');
}); initializing = false;
statusIndeterminate.children[i].style.borderTopColor = '#dfdfdf'; }
}
}
function setStatusNotice(text) { const missing = Engine.getMissingFeatures();
while (statusNotice.lastChild) { if (missing.length !== 0) {
statusNotice.removeChild(statusNotice.lastChild); const missingMsg = 'Warning!\nThe following features required to run Godot projects on the Web are missing:\n';
} displayFailureNotice(missingMsg + missing.join('\n'));
var lines = text.split('\n'); } else {
lines.forEach((line) => { setStatusMode('indeterminate');
statusNotice.appendChild(document.createTextNode(line)); engine.startGame({
statusNotice.appendChild(document.createElement('br')); 'onProgress': function (current, total) {
}); if (total > 0) {
}; statusProgressInner.style.width = `${(current / total) * 100}%`;
setStatusMode('progress');
function displayFailureNotice(err) { if (current === total) {
var msg = err.message || err; // wait for progress bar animation
console.error(msg); setTimeout(() => {
setStatusNotice(msg);
setStatusMode('notice');
initializing = false;
};
const missing = Engine.getMissingFeatures();
if (missing.length !== 0) {
const missingMsg = 'Warning!\nThe following features required to run Godot projects on the Web are missing:\n';
displayFailureNotice(missingMsg + missing.join("\n"));
} else {
setStatusMode('indeterminate');
engine.startGame({
'onProgress': function (current, total) {
if (total > 0) {
statusProgressInner.style.width = current/total * 100 + '%';
setStatusMode('progress');
if (current === total) {
// wait for progress bar animation
setTimeout(() => {
setStatusMode('indeterminate');
}, 500);
}
} else {
setStatusMode('indeterminate'); setStatusMode('indeterminate');
} }, 500);
}, }
}).then(() => { } else {
setStatusMode('hidden'); setStatusMode('indeterminate');
initializing = false; }
}, displayFailureNotice); },
} }).then(() => {
})(); setStatusMode('hidden');
//]]></script> initializing = false;
</body> }, displayFailureNotice);
}
}());
</script>
</body>
</html> </html>

View File

@ -1,42 +1,41 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="en"> <html lang="en">
<head> <head>
<meta charset="utf-8" /> <meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1" /> <meta name="viewport" content="width=device-width, initial-scale=1">
<title>You are offline</title> <title>You are offline</title>
<style> <style>
html { html {
background-color: #000000; background-color: #000000;
color: #ffffff; color: #ffffff;
} }
body { body {
font-family: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; font-family: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
margin: 2rem; margin: 2rem;
} }
p { p {
margin-block: 1rem; margin-block: 1rem;
} }
button { button {
display: block; display: block;
padding: 1rem 2rem; padding: 1rem 2rem;
margin: 3rem auto 0; margin: 3rem auto 0;
} }
</style> </style>
</head> </head>
<body> <body>
<h1>You are offline</h1> <h1>You are offline</h1>
<p>This application requires an Internet connection to run for the first time.</p> <p>This application requires an Internet connection to run for the first time.</p>
<p>Press the button below to try reloading:</p> <p>Press the button below to try reloading:</p>
<button type="button">Reload</button> <button type="button">Reload</button>
<script>
<script> document.querySelector('button').addEventListener('click', () => {
document.querySelector("button").addEventListener("click", () => { window.location.reload();
window.location.reload(); });
}); </script>
</script> </body>
</body>
</html> </html>

View File

@ -1,44 +1,44 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="en"> <html lang="en">
<head> <head>
<meta charset="utf-8" /> <meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1" /> <meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="theme-color" content="#202531" /> <meta name="theme-color" content="#202531">
<meta name="msapplication-navbutton-color" content="#202531" /> <meta name="msapplication-navbutton-color" content="#202531">
<title>You are offline</title> <title>You are offline</title>
<style> <style>
html { html {
background-color: #333b4f; background-color: #333b4f;
color: #e0e0e0; color: #e0e0e0;
} }
body { body {
font-family: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; font-family: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
margin: 2rem; margin: 2rem;
} }
p { p {
margin-block: 1rem; margin-block: 1rem;
} }
button { button {
display: block; display: block;
padding: 1rem 2rem; padding: 1rem 2rem;
margin: 3rem auto 0; margin: 3rem auto 0;
} }
</style> </style>
</head> </head>
<body> <body>
<h1>You are offline</h1> <h1>You are offline</h1>
<p>This application requires an Internet connection to run for the first time.</p> <p>This application requires an Internet connection to run for the first time.</p>
<p>Press the button below to try reloading:</p> <p>Press the button below to try reloading:</p>
<button type="button">Reload</button> <button type="button">Reload</button>
<script> <script>
document.querySelector("button").addEventListener("click", () => { document.querySelector('button').addEventListener('click', () => {
window.location.reload(); window.location.reload();
}); });
</script> </script>
</body> </body>
</html> </html>

View File

@ -0,0 +1,19 @@
module.exports = {
"plugins": [
"html",
"@html-eslint",
],
"parser": "@html-eslint/parser",
"extends": ["plugin:@html-eslint/recommended", "./.eslintrc.js"],
"rules": {
"no-alert": "off",
"no-console": "off",
"@html-eslint/require-closing-tags": ["error", { "selfClosing": "never" }],
"@html-eslint/indent": ["error", "tab"],
},
"globals": {
"Godot": true,
"Engine": true,
"$GODOT_CONFIG": true,
},
};

View File

@ -8,8 +8,13 @@
"name": "godot", "name": "godot",
"version": "1.0.0", "version": "1.0.0",
"license": "MIT", "license": "MIT",
"dependencies": {
"eslint-plugin-html": "^7.1.0"
},
"devDependencies": { "devDependencies": {
"eslint": "^7.28.0", "@html-eslint/eslint-plugin": "^0.15.0",
"@html-eslint/parser": "^0.15.0",
"eslint": "^7.32.0",
"eslint-config-airbnb-base": "^14.2.1", "eslint-config-airbnb-base": "^14.2.1",
"eslint-plugin-import": "^2.23.4", "eslint-plugin-import": "^2.23.4",
"jsdoc": "^3.6.7" "jsdoc": "^3.6.7"
@ -83,9 +88,9 @@
} }
}, },
"node_modules/@eslint/eslintrc": { "node_modules/@eslint/eslintrc": {
"version": "0.4.2", "version": "0.4.3",
"resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.2.tgz", "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz",
"integrity": "sha512-8nmGq/4ycLpIwzvhI4tNDmQztZ8sp+hI7cyG8i1nQDhkAbRzHpXPidRAHlNvCZQpJTKw5ItIpMw9RSToGF00mg==", "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"ajv": "^6.12.4", "ajv": "^6.12.4",
@ -102,6 +107,47 @@
"node": "^10.12.0 || >=12.0.0" "node": "^10.12.0 || >=12.0.0"
} }
}, },
"node_modules/@html-eslint/eslint-plugin": {
"version": "0.15.0",
"resolved": "https://registry.npmjs.org/@html-eslint/eslint-plugin/-/eslint-plugin-0.15.0.tgz",
"integrity": "sha512-6DUb2ZN1PUlzlNzNj4aBhoObBp3Kl/+YbZ6CnkgFAsQSW0tSFAu7p8WwESkz9RZLZZN9gCUlcaYKJnQjTkmnDA==",
"dev": true,
"engines": {
"node": ">=8.10.0"
}
},
"node_modules/@html-eslint/parser": {
"version": "0.15.0",
"resolved": "https://registry.npmjs.org/@html-eslint/parser/-/parser-0.15.0.tgz",
"integrity": "sha512-fA+HQtWnODhOIK6j1p4XWqltINx7hM0WNNTM2RvlH/2glzeRDCcYq3vEmeQhnytvGocidu4ofTzNk80cLnnyiw==",
"dev": true,
"dependencies": {
"es-html-parser": "^0.0.8"
},
"engines": {
"node": ">=8.10.0"
}
},
"node_modules/@humanwhocodes/config-array": {
"version": "0.5.0",
"resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz",
"integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==",
"dev": true,
"dependencies": {
"@humanwhocodes/object-schema": "^1.2.0",
"debug": "^4.1.1",
"minimatch": "^3.0.4"
},
"engines": {
"node": ">=10.10.0"
}
},
"node_modules/@humanwhocodes/object-schema": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz",
"integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==",
"dev": true
},
"node_modules/@types/json5": { "node_modules/@types/json5": {
"version": "0.0.29", "version": "0.0.29",
"resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz",
@ -143,9 +189,9 @@
} }
}, },
"node_modules/acorn-jsx": { "node_modules/acorn-jsx": {
"version": "5.3.1", "version": "5.3.2",
"resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
"integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==", "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
"dev": true, "dev": true,
"peerDependencies": { "peerDependencies": {
"acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
@ -419,9 +465,9 @@
} }
}, },
"node_modules/debug": { "node_modules/debug": {
"version": "4.3.1", "version": "4.3.4",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
"integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"ms": "2.1.2" "ms": "2.1.2"
@ -465,6 +511,68 @@
"node": ">=6.0.0" "node": ">=6.0.0"
} }
}, },
"node_modules/dom-serializer": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz",
"integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==",
"dependencies": {
"domelementtype": "^2.3.0",
"domhandler": "^5.0.2",
"entities": "^4.2.0"
},
"funding": {
"url": "https://github.com/cheeriojs/dom-serializer?sponsor=1"
}
},
"node_modules/dom-serializer/node_modules/entities": {
"version": "4.4.0",
"resolved": "https://registry.npmjs.org/entities/-/entities-4.4.0.tgz",
"integrity": "sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA==",
"engines": {
"node": ">=0.12"
},
"funding": {
"url": "https://github.com/fb55/entities?sponsor=1"
}
},
"node_modules/domelementtype": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz",
"integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==",
"funding": [
{
"type": "github",
"url": "https://github.com/sponsors/fb55"
}
]
},
"node_modules/domhandler": {
"version": "5.0.3",
"resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz",
"integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==",
"dependencies": {
"domelementtype": "^2.3.0"
},
"engines": {
"node": ">= 4"
},
"funding": {
"url": "https://github.com/fb55/domhandler?sponsor=1"
}
},
"node_modules/domutils": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/domutils/-/domutils-3.0.1.tgz",
"integrity": "sha512-z08c1l761iKhDFtfXO04C7kTdPBLi41zwOZl00WS8b5eiaebNpY00HKbztwBq+e3vyqWNwWF3mP9YLUeqIrF+Q==",
"dependencies": {
"dom-serializer": "^2.0.0",
"domelementtype": "^2.3.0",
"domhandler": "^5.0.1"
},
"funding": {
"url": "https://github.com/fb55/domutils?sponsor=1"
}
},
"node_modules/emoji-regex": { "node_modules/emoji-regex": {
"version": "8.0.0", "version": "8.0.0",
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
@ -531,6 +639,12 @@
"url": "https://github.com/sponsors/ljharb" "url": "https://github.com/sponsors/ljharb"
} }
}, },
"node_modules/es-html-parser": {
"version": "0.0.8",
"resolved": "https://registry.npmjs.org/es-html-parser/-/es-html-parser-0.0.8.tgz",
"integrity": "sha512-kjMH23xhvTBw/7Ve1Dtb/7yZdFajfvwOpdsgRHmnyt8yvTsDJnkFjUgEEaMZFW+e1OhN/eoZrvF9wehq+waTGg==",
"dev": true
},
"node_modules/es-to-primitive": { "node_modules/es-to-primitive": {
"version": "1.2.1", "version": "1.2.1",
"resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
@ -561,13 +675,14 @@
} }
}, },
"node_modules/eslint": { "node_modules/eslint": {
"version": "7.28.0", "version": "7.32.0",
"resolved": "https://registry.npmjs.org/eslint/-/eslint-7.28.0.tgz", "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz",
"integrity": "sha512-UMfH0VSjP0G4p3EWirscJEQ/cHqnT/iuH6oNZOB94nBjWbMnhGEPxsZm1eyIW0C/9jLI0Fow4W5DXLjEI7mn1g==", "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@babel/code-frame": "7.12.11", "@babel/code-frame": "7.12.11",
"@eslint/eslintrc": "^0.4.2", "@eslint/eslintrc": "^0.4.3",
"@humanwhocodes/config-array": "^0.5.0",
"ajv": "^6.10.0", "ajv": "^6.10.0",
"chalk": "^4.0.0", "chalk": "^4.0.0",
"cross-spawn": "^7.0.2", "cross-spawn": "^7.0.2",
@ -681,6 +796,14 @@
"ms": "^2.1.1" "ms": "^2.1.1"
} }
}, },
"node_modules/eslint-plugin-html": {
"version": "7.1.0",
"resolved": "https://registry.npmjs.org/eslint-plugin-html/-/eslint-plugin-html-7.1.0.tgz",
"integrity": "sha512-fNLRraV/e6j8e3XYOC9xgND4j+U7b1Rq+OygMlLcMg+wI/IpVbF+ubQa3R78EjKB9njT6TQOlcK5rFKBVVtdfg==",
"dependencies": {
"htmlparser2": "^8.0.1"
}
},
"node_modules/eslint-plugin-import": { "node_modules/eslint-plugin-import": {
"version": "2.23.4", "version": "2.23.4",
"resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.23.4.tgz", "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.23.4.tgz",
@ -1005,9 +1128,9 @@
} }
}, },
"node_modules/globals": { "node_modules/globals": {
"version": "13.9.0", "version": "13.17.0",
"resolved": "https://registry.npmjs.org/globals/-/globals-13.9.0.tgz", "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz",
"integrity": "sha512-74/FduwI/JaIrr1H8e71UbDE+5x7pIPs1C2rrwC52SszOo043CsWOZEMW7o2Y58xwm9b+0RBKDxY5n2sUpEFxA==", "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"type-fest": "^0.20.2" "type-fest": "^0.20.2"
@ -1073,6 +1196,35 @@
"integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==",
"dev": true "dev": true
}, },
"node_modules/htmlparser2": {
"version": "8.0.1",
"resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.1.tgz",
"integrity": "sha512-4lVbmc1diZC7GUJQtRQ5yBAeUCL1exyMwmForWkRLnwyzWBFxN633SALPMGYaWZvKe9j1pRZJpauvmxENSp/EA==",
"funding": [
"https://github.com/fb55/htmlparser2?sponsor=1",
{
"type": "github",
"url": "https://github.com/sponsors/fb55"
}
],
"dependencies": {
"domelementtype": "^2.3.0",
"domhandler": "^5.0.2",
"domutils": "^3.0.1",
"entities": "^4.3.0"
}
},
"node_modules/htmlparser2/node_modules/entities": {
"version": "4.4.0",
"resolved": "https://registry.npmjs.org/entities/-/entities-4.4.0.tgz",
"integrity": "sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA==",
"engines": {
"node": ">=0.12"
},
"funding": {
"url": "https://github.com/fb55/entities?sponsor=1"
}
},
"node_modules/ignore": { "node_modules/ignore": {
"version": "4.0.6", "version": "4.0.6",
"resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz",
@ -2067,7 +2219,7 @@
"node_modules/sprintf-js": { "node_modules/sprintf-js": {
"version": "1.0.3", "version": "1.0.3",
"resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
"integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==",
"dev": true "dev": true
}, },
"node_modules/string-width": { "node_modules/string-width": {
@ -2406,9 +2558,9 @@
"dev": true "dev": true
}, },
"@eslint/eslintrc": { "@eslint/eslintrc": {
"version": "0.4.2", "version": "0.4.3",
"resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.2.tgz", "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz",
"integrity": "sha512-8nmGq/4ycLpIwzvhI4tNDmQztZ8sp+hI7cyG8i1nQDhkAbRzHpXPidRAHlNvCZQpJTKw5ItIpMw9RSToGF00mg==", "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==",
"dev": true, "dev": true,
"requires": { "requires": {
"ajv": "^6.12.4", "ajv": "^6.12.4",
@ -2422,6 +2574,38 @@
"strip-json-comments": "^3.1.1" "strip-json-comments": "^3.1.1"
} }
}, },
"@html-eslint/eslint-plugin": {
"version": "0.15.0",
"resolved": "https://registry.npmjs.org/@html-eslint/eslint-plugin/-/eslint-plugin-0.15.0.tgz",
"integrity": "sha512-6DUb2ZN1PUlzlNzNj4aBhoObBp3Kl/+YbZ6CnkgFAsQSW0tSFAu7p8WwESkz9RZLZZN9gCUlcaYKJnQjTkmnDA==",
"dev": true
},
"@html-eslint/parser": {
"version": "0.15.0",
"resolved": "https://registry.npmjs.org/@html-eslint/parser/-/parser-0.15.0.tgz",
"integrity": "sha512-fA+HQtWnODhOIK6j1p4XWqltINx7hM0WNNTM2RvlH/2glzeRDCcYq3vEmeQhnytvGocidu4ofTzNk80cLnnyiw==",
"dev": true,
"requires": {
"es-html-parser": "^0.0.8"
}
},
"@humanwhocodes/config-array": {
"version": "0.5.0",
"resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz",
"integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==",
"dev": true,
"requires": {
"@humanwhocodes/object-schema": "^1.2.0",
"debug": "^4.1.1",
"minimatch": "^3.0.4"
}
},
"@humanwhocodes/object-schema": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz",
"integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==",
"dev": true
},
"@types/json5": { "@types/json5": {
"version": "0.0.29", "version": "0.0.29",
"resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz",
@ -2457,9 +2641,9 @@
"dev": true "dev": true
}, },
"acorn-jsx": { "acorn-jsx": {
"version": "5.3.1", "version": "5.3.2",
"resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
"integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==", "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
"dev": true, "dev": true,
"requires": {} "requires": {}
}, },
@ -2672,9 +2856,9 @@
} }
}, },
"debug": { "debug": {
"version": "4.3.1", "version": "4.3.4",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
"integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
"dev": true, "dev": true,
"requires": { "requires": {
"ms": "2.1.2" "ms": "2.1.2"
@ -2704,6 +2888,46 @@
"esutils": "^2.0.2" "esutils": "^2.0.2"
} }
}, },
"dom-serializer": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz",
"integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==",
"requires": {
"domelementtype": "^2.3.0",
"domhandler": "^5.0.2",
"entities": "^4.2.0"
},
"dependencies": {
"entities": {
"version": "4.4.0",
"resolved": "https://registry.npmjs.org/entities/-/entities-4.4.0.tgz",
"integrity": "sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA=="
}
}
},
"domelementtype": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz",
"integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw=="
},
"domhandler": {
"version": "5.0.3",
"resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz",
"integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==",
"requires": {
"domelementtype": "^2.3.0"
}
},
"domutils": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/domutils/-/domutils-3.0.1.tgz",
"integrity": "sha512-z08c1l761iKhDFtfXO04C7kTdPBLi41zwOZl00WS8b5eiaebNpY00HKbztwBq+e3vyqWNwWF3mP9YLUeqIrF+Q==",
"requires": {
"dom-serializer": "^2.0.0",
"domelementtype": "^2.3.0",
"domhandler": "^5.0.1"
}
},
"emoji-regex": { "emoji-regex": {
"version": "8.0.0", "version": "8.0.0",
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
@ -2758,6 +2982,12 @@
"unbox-primitive": "^1.0.1" "unbox-primitive": "^1.0.1"
} }
}, },
"es-html-parser": {
"version": "0.0.8",
"resolved": "https://registry.npmjs.org/es-html-parser/-/es-html-parser-0.0.8.tgz",
"integrity": "sha512-kjMH23xhvTBw/7Ve1Dtb/7yZdFajfvwOpdsgRHmnyt8yvTsDJnkFjUgEEaMZFW+e1OhN/eoZrvF9wehq+waTGg==",
"dev": true
},
"es-to-primitive": { "es-to-primitive": {
"version": "1.2.1", "version": "1.2.1",
"resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
@ -2776,13 +3006,14 @@
"dev": true "dev": true
}, },
"eslint": { "eslint": {
"version": "7.28.0", "version": "7.32.0",
"resolved": "https://registry.npmjs.org/eslint/-/eslint-7.28.0.tgz", "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz",
"integrity": "sha512-UMfH0VSjP0G4p3EWirscJEQ/cHqnT/iuH6oNZOB94nBjWbMnhGEPxsZm1eyIW0C/9jLI0Fow4W5DXLjEI7mn1g==", "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==",
"dev": true, "dev": true,
"requires": { "requires": {
"@babel/code-frame": "7.12.11", "@babel/code-frame": "7.12.11",
"@eslint/eslintrc": "^0.4.2", "@eslint/eslintrc": "^0.4.3",
"@humanwhocodes/config-array": "^0.5.0",
"ajv": "^6.10.0", "ajv": "^6.10.0",
"chalk": "^4.0.0", "chalk": "^4.0.0",
"cross-spawn": "^7.0.2", "cross-spawn": "^7.0.2",
@ -2881,6 +3112,14 @@
} }
} }
}, },
"eslint-plugin-html": {
"version": "7.1.0",
"resolved": "https://registry.npmjs.org/eslint-plugin-html/-/eslint-plugin-html-7.1.0.tgz",
"integrity": "sha512-fNLRraV/e6j8e3XYOC9xgND4j+U7b1Rq+OygMlLcMg+wI/IpVbF+ubQa3R78EjKB9njT6TQOlcK5rFKBVVtdfg==",
"requires": {
"htmlparser2": "^8.0.1"
}
},
"eslint-plugin-import": { "eslint-plugin-import": {
"version": "2.23.4", "version": "2.23.4",
"resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.23.4.tgz", "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.23.4.tgz",
@ -3139,9 +3378,9 @@
} }
}, },
"globals": { "globals": {
"version": "13.9.0", "version": "13.17.0",
"resolved": "https://registry.npmjs.org/globals/-/globals-13.9.0.tgz", "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz",
"integrity": "sha512-74/FduwI/JaIrr1H8e71UbDE+5x7pIPs1C2rrwC52SszOo043CsWOZEMW7o2Y58xwm9b+0RBKDxY5n2sUpEFxA==", "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==",
"dev": true, "dev": true,
"requires": { "requires": {
"type-fest": "^0.20.2" "type-fest": "^0.20.2"
@ -3186,6 +3425,24 @@
"integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==",
"dev": true "dev": true
}, },
"htmlparser2": {
"version": "8.0.1",
"resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.1.tgz",
"integrity": "sha512-4lVbmc1diZC7GUJQtRQ5yBAeUCL1exyMwmForWkRLnwyzWBFxN633SALPMGYaWZvKe9j1pRZJpauvmxENSp/EA==",
"requires": {
"domelementtype": "^2.3.0",
"domhandler": "^5.0.2",
"domutils": "^3.0.1",
"entities": "^4.3.0"
},
"dependencies": {
"entities": {
"version": "4.4.0",
"resolved": "https://registry.npmjs.org/entities/-/entities-4.4.0.tgz",
"integrity": "sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA=="
}
}
},
"ignore": { "ignore": {
"version": "4.0.6", "version": "4.0.6",
"resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz",
@ -3936,7 +4193,7 @@
"sprintf-js": { "sprintf-js": {
"version": "1.0.3", "version": "1.0.3",
"resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
"integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==",
"dev": true "dev": true
}, },
"string-width": { "string-width": {

View File

@ -5,23 +5,30 @@
"description": "Development and linting setup for Godot's Web platform code", "description": "Development and linting setup for Godot's Web platform code",
"scripts": { "scripts": {
"docs": "jsdoc --template js/jsdoc2rst/ js/engine/engine.js js/engine/config.js js/engine/features.js --destination ''", "docs": "jsdoc --template js/jsdoc2rst/ js/engine/engine.js js/engine/config.js js/engine/features.js --destination ''",
"lint": "npm run lint:engine && npm run lint:libs && npm run lint:modules && npm run lint:tools", "lint": "npm run lint:engine && npm run lint:libs && npm run lint:modules && npm run lint:tools && npm run lint:html",
"lint:engine": "eslint \"js/engine/*.js\" --no-eslintrc -c .eslintrc.engine.js", "lint:engine": "eslint \"js/engine/*.js\" --no-eslintrc -c .eslintrc.engine.js",
"lint:libs": "eslint \"js/libs/*.js\" --no-eslintrc -c .eslintrc.libs.js", "lint:libs": "eslint \"js/libs/*.js\" --no-eslintrc -c .eslintrc.libs.js",
"lint:modules": "eslint \"../../modules/**/*.js\" --no-eslintrc -c .eslintrc.libs.js", "lint:modules": "eslint \"../../modules/**/*.js\" --no-eslintrc -c .eslintrc.libs.js",
"lint:tools": "eslint \"js/jsdoc2rst/**/*.js\" --no-eslintrc -c .eslintrc.engine.js", "lint:tools": "eslint \"js/jsdoc2rst/**/*.js\" --no-eslintrc -c .eslintrc.engine.js",
"format": "npm run format:engine && npm run format:libs && npm run format:modules && npm run format:tools", "lint:html": "eslint \"../../misc/dist/html/*.html\" --no-eslintrc -c .eslintrc.html.js",
"format": "npm run format:engine && npm run format:libs && npm run format:modules && npm run format:tools && npm run format:html",
"format:engine": "npm run lint:engine -- --fix", "format:engine": "npm run lint:engine -- --fix",
"format:libs": "npm run lint:libs -- --fix", "format:libs": "npm run lint:libs -- --fix",
"format:modules": "npm run lint:modules -- --fix", "format:modules": "npm run lint:modules -- --fix",
"format:tools": "npm run lint:tools -- --fix" "format:tools": "npm run lint:tools -- --fix",
"format:html": "npm run lint:html -- --fix"
}, },
"author": "Godot Engine contributors", "author": "Godot Engine contributors",
"license": "MIT", "license": "MIT",
"devDependencies": { "devDependencies": {
"eslint": "^7.28.0", "@html-eslint/eslint-plugin": "^0.15.0",
"@html-eslint/parser": "^0.15.0",
"eslint": "^7.32.0",
"eslint-config-airbnb-base": "^14.2.1", "eslint-config-airbnb-base": "^14.2.1",
"eslint-plugin-import": "^2.23.4", "eslint-plugin-import": "^2.23.4",
"jsdoc": "^3.6.7" "jsdoc": "^3.6.7"
},
"dependencies": {
"eslint-plugin-html": "^7.1.0"
} }
} }