From 12bee6790b32bf93fab33b986c07d9baa537f176 Mon Sep 17 00:00:00 2001 From: Valentin Radulescu Date: Sat, 5 Sep 2026 12:27:53 +0300 Subject: [PATCH 1/5] Archive Space Jam logo experiment --- README.md | 2 + index.html | 8 ++ space-jam-logo/index.css | 241 ++++++++++++++++++++++++++++++++++++++ space-jam-logo/index.html | 44 +++++++ space-jam-logo/index.js | 9 ++ 5 files changed, 304 insertions(+) create mode 100644 space-jam-logo/index.css create mode 100644 space-jam-logo/index.html create mode 100644 space-jam-logo/index.js diff --git a/README.md b/README.md index dc11655..7d15574 100644 --- a/README.md +++ b/README.md @@ -13,3 +13,5 @@ Daily creative learning experiments using React, VR, A-Frame and Three.js. Origi | 7 | 💤 Pillow | https://codepen.io/valentin/full/KymZdV | | 8 | 🍦 Fridge | https://codepen.io/valentin/full/vWjNPv | | 9 | 🍟 French Fries | https://codepen.io/valentin/full/aVGZvB | +| Bonus | 🐰🏀 Space Jam Logo | https://codepen.io/valentin/full/NaJMmG | + diff --git a/index.html b/index.html index c354d70..fd43d3f 100644 --- a/index.html +++ b/index.html @@ -207,6 +207,14 @@

🍟 French Fries

CodePen +
  • + Bonus +

    🐰🏀 Space Jam Logo

    + +
  • diff --git a/space-jam-logo/index.css b/space-jam-logo/index.css new file mode 100644 index 0000000..7a0937e --- /dev/null +++ b/space-jam-logo/index.css @@ -0,0 +1,241 @@ +body { + display: flex; + align-items: center; + justify-content: center; + height: 100vh; + background-color: #020107; + background-image: + radial-gradient(circle at 18px 22px, rgba(255, 255, 255, 0.7), transparent 2px), + radial-gradient(circle at 94px 15px, rgba(255, 255, 255, 0.4), transparent 1px), + radial-gradient(circle at 43px 61px, rgba(255, 255, 255, 0.8), transparent 2px), + radial-gradient(circle at 116px 48px, rgba(255, 255, 255, 0.5), transparent 1px), + radial-gradient(circle at 72px 91px, rgba(255, 255, 255, 0.6), transparent 2px), + radial-gradient(circle at 13px 108px, rgba(255, 255, 255, 0.3), transparent 1px), + radial-gradient(circle at 105px 116px, rgba(255, 255, 255, 0.7), transparent 2px), + radial-gradient(circle at 58px 35px, rgba(255, 255, 255, 0.4), transparent 1px), + radial-gradient(circle at 31px 83px, rgba(255, 255, 255, 0.5), transparent 1px), + radial-gradient(circle at 87px 72px, rgba(255, 255, 255, 0.8), transparent 2px); + background-size: 128px 128px; + overflow: hidden; + font-size: 16px; +} + +.space-jam { + position: relative; + width: 720px; + height: 471px; + margin: 0; + font-family: "Luckiest Guy", cursive; + font-weight: normal; + line-height: 1; + text-transform: uppercase; + opacity: 1; + transform: scale(1); + animation: intro-anim 1s forwards reverse; + will-change: transform, opacity; + cursor: pointer; +} + +.space-jam span { + position: absolute; + display: inline-block; + text-shadow: 0.03em 0.03em #11192f; + transform: translateY(0); + animation: letter-anim 0.9s forwards ease-in-out; + will-change: transform; +} + +.space-jam span::after { + content: attr(data-text); + position: absolute; + top: 0; + left: 0; + background: radial-gradient(circle at center, #cede73 0%, #a5cd63 21%, #3ab473 36%, #036ba5 54%); + background-clip: text; + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + -webkit-text-stroke: 4px white; + text-shadow: none; +} + +.space-jam span:nth-of-type(2) { animation-delay: 1.1s; } +.space-jam span:nth-of-type(3) { animation-delay: 1.2s; } +.space-jam span:nth-of-type(4) { animation-delay: 1.3s; } +.space-jam span:nth-of-type(5) { animation-delay: 1.4s; } +.space-jam span:nth-of-type(6) { animation-delay: 1.5s; } +.space-jam span:nth-of-type(7) { animation-delay: 1.6s; } +.space-jam span:nth-of-type(8) { animation-delay: 1.7s; } +.space-jam span:nth-of-type(9) { animation-delay: 1.8s; } + +.space-jam span:first-of-type, +.space-jam span:last-of-type { + animation-delay: 1.6s; +} + +.s-s { + top: 120px; + left: 0; + z-index: 4; + font-size: 160px; +} + +.s-s::after { background-position: 5px 14px; } + +.s-p { + top: 132px; + left: 70px; + z-index: 3; + font-size: 133px; +} + +.s-p::after { background-position: 8px 20px; } + +.s-a { + top: 123px; + left: 116px; + z-index: 2; + font-size: 155px; +} + +.s-a::after { background-position: -20px 25px; } + +.s-c { + top: 138px; + left: 197px; + z-index: 3; + font-size: 140px; +} + +.s-c::after { background-position: 8px 25px; } + +.s-e { + top: 125px; + left: 258px; + z-index: 2; + font-size: 140px; +} + +.s-e::after { background-position: -10px 25px; } + +.j-j { + top: -25px; + left: 228px; + display: inline-block; + font-family: "Paytone One", sans-serif; + font-size: 500px; +} + +.j-j::after { background-position: -20px 25px; } + +.j-j:not(:first-child):not(:last-child) { + clip: rect(388px, 62px, 453px, -10px); +} + +.j-j:last-child { + clip: rect(0, 231px, 224px, 0); +} + +.j-a { + top: 70px; + left: 375px; + z-index: 3; + font-size: 280px; +} + +.j-a::after { background-position: 10px 20px; } + +.j-m { + top: 70px; + left: 505px; + z-index: 2; + font-size: 270px; +} + +.j-m::after { background-position: 30px 25px; } + +.rings { + position: absolute; + top: -10px; + left: 187px; + width: 400px; + height: 400px; + transform: rotate(8deg) skewX(-33deg); +} + +.rings [class^="ring-"] { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); +} + +.rings [class^="ring-"]::after { + content: ""; + position: absolute; + display: block; + border-radius: 50%; +} + +.ring-1, +.ring-1::after { + width: 400px; + height: 400px; +} + +.ring-1::after { + background: radial-gradient(circle closest-side, transparent 85%, #f6eb16 85%, #ed2224 88%, #35469d 100%); +} + +.ring-2, +.ring-2::after { + width: 340px; + height: 340px; +} + +.ring-2::after { + background: radial-gradient(circle closest-side, transparent 82.353%, #f6eb16 82.353%, #ed2224 88%, #35469d 100%); +} + +.ring-3, +.ring-3::after { + width: 280px; + height: 280px; +} + +.ring-3::after { + background: radial-gradient(circle closest-side, transparent 78.571%, #f6eb16 78.571%, #ed2224 88%, #35469d 100%); +} + +.ring-4, +.ring-4::after { + width: 220px; + height: 220px; +} + +.ring-4::after { + background: radial-gradient(circle closest-side, transparent 72.727%, #f6eb16 72.727%, #ed2224 88%, #35469d 100%); +} + +@keyframes intro-anim { + 100% { + opacity: 0; + transform: scale(3); + } +} + +@keyframes letter-anim { + 0%, 100% { transform: translateY(0); } + 25% { transform: translateY(-10px); } + 60% { transform: translateY(20px); } +} + +iframe { + position: absolute; + top: 0; + left: 0; + width: 1px; + height: 1px; + border: 0; + overflow: hidden; +} + diff --git a/space-jam-logo/index.html b/space-jam-logo/index.html new file mode 100644 index 0000000..cb77c37 --- /dev/null +++ b/space-jam-logo/index.html @@ -0,0 +1,44 @@ + + + + + + + 🐰🏀 Space Jam Logo + + + + + + +

    + + + S + p + a + c + e + J + a + m + +

    + + + + + + + diff --git a/space-jam-logo/index.js b/space-jam-logo/index.js new file mode 100644 index 0000000..9cfd80b --- /dev/null +++ b/space-jam-logo/index.js @@ -0,0 +1,9 @@ +const jam = document.querySelector('.space-jam'); +const video = document.querySelector('#video'); + +jam.addEventListener('click', () => { + const url = new URL(video.src); + url.searchParams.set('autoplay', '1'); + video.src = url; +}); + From a3405497da1d3da5a637f7a984a5f8c54d15903c Mon Sep 17 00:00:00 2001 From: Valentin Radulescu Date: Sat, 5 Sep 2026 16:05:36 +0000 Subject: [PATCH 2/5] Update package lock --- package-lock.json | 182 +++++++++++++++++++++++++++++++--------------- 1 file changed, 122 insertions(+), 60 deletions(-) diff --git a/package-lock.json b/package-lock.json index 88e2fec..030ecae 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,95 +1,126 @@ { "name": "codevember-2017", "version": "1.0.0", - "lockfileVersion": 1, + "lockfileVersion": 3, "requires": true, - "dependencies": { - "async": { + "packages": { + "": { + "name": "codevember-2017", + "version": "1.0.0", + "license": "MIT", + "devDependencies": { + "http-server": "^0.12.0" + } + }, + "node_modules/async": { "version": "2.6.3", "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", "dev": true, - "requires": { + "dependencies": { "lodash": "^4.17.14" } }, - "basic-auth": { + "node_modules/basic-auth": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-1.1.0.tgz", "integrity": "sha1-RSIe5Cn37h5QNb4/UVM/HN/SmIQ=", - "dev": true + "dev": true, + "engines": { + "node": ">= 0.6" + } }, - "colors": { + "node_modules/colors": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.1.90" + } }, - "corser": { + "node_modules/corser": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/corser/-/corser-2.0.1.tgz", "integrity": "sha1-jtolLsqrWEDc2XXOuQ2TcMgZ/4c=", - "dev": true + "dev": true, + "engines": { + "node": ">= 0.4.0" + } }, - "debug": { + "node_modules/debug": { "version": "3.2.6", "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "deprecated": "Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)", "dev": true, - "requires": { + "dependencies": { "ms": "^2.1.1" } }, - "ecstatic": { + "node_modules/ecstatic": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/ecstatic/-/ecstatic-3.3.2.tgz", "integrity": "sha512-fLf9l1hnwrHI2xn9mEDT7KIi22UDqA2jaCwyCbSUJh9a1V+LEUSL/JO/6TIz/QyuBURWUHrFL5Kg2TtO1bkkog==", + "deprecated": "This package is unmaintained and deprecated. See the GH Issue 259.", "dev": true, - "requires": { + "dependencies": { "he": "^1.1.1", "mime": "^1.6.0", "minimist": "^1.1.0", "url-join": "^2.0.5" + }, + "bin": { + "ecstatic": "lib/ecstatic.js" } }, - "eventemitter3": { + "node_modules/eventemitter3": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.0.tgz", "integrity": "sha512-qerSRB0p+UDEssxTtm6EDKcE7W4OaoisfIMl4CngyEhjpYglocpNg6UEqCvemdGhosAsg4sO2dXJOdyBifPGCg==", "dev": true }, - "follow-redirects": { + "node_modules/follow-redirects": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.9.0.tgz", "integrity": "sha512-CRcPzsSIbXyVDl0QI01muNDu69S8trU4jArW9LpOt2WtC6LyUJetcIrmfHsRBx7/Jb6GHJUiuqyYxPooFfNt6A==", "dev": true, - "requires": { + "dependencies": { "debug": "^3.0.0" + }, + "engines": { + "node": ">=4.0" } }, - "he": { + "node_modules/he": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "dev": true + "dev": true, + "bin": { + "he": "bin/he" + } }, - "http-proxy": { + "node_modules/http-proxy": { "version": "1.18.0", "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.0.tgz", "integrity": "sha512-84I2iJM/n1d4Hdgc6y2+qY5mDaz2PUVjlg9znE9byl+q0uC3DeByqBGReQu5tpLK0TAqTIXScRUV+dg7+bUPpQ==", "dev": true, - "requires": { + "dependencies": { "eventemitter3": "^4.0.0", "follow-redirects": "^1.0.0", "requires-port": "^1.0.0" + }, + "engines": { + "node": ">=6.0.0" } }, - "http-server": { + "node_modules/http-server": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/http-server/-/http-server-0.12.0.tgz", "integrity": "sha512-imGLDSTT1BZ0QG1rBFnaZ6weK5jeisUnCxZQI1cpYTdz0luPUM5e3s+WU5zRWEkiI6DQxL2p54oeKrDlzO6bRw==", "dev": true, - "requires": { + "dependencies": { "basic-auth": "^1.0.3", "colors": "^1.3.3", "corser": "^2.0.1", @@ -100,122 +131,153 @@ "portfinder": "^1.0.20", "secure-compare": "3.0.1", "union": "~0.5.0" + }, + "bin": { + "hs": "bin/http-server", + "http-server": "bin/http-server" + }, + "engines": { + "node": ">=6" } }, - "lodash": { + "node_modules/lodash": { "version": "4.17.19", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==", "dev": true }, - "mime": { + "node_modules/mime": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "dev": true + "dev": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } }, - "minimist": { + "node_modules/minimist": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", "dev": true }, - "mkdirp": { + "node_modules/mkdirp": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "deprecated": "Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.)", "dev": true, - "requires": { + "dependencies": { "minimist": "0.0.8" }, - "dependencies": { - "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", - "dev": true - } + "bin": { + "mkdirp": "bin/cmd.js" } }, - "ms": { + "node_modules/mkdirp/node_modules/minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + }, + "node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, - "opener": { + "node_modules/opener": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.1.tgz", "integrity": "sha512-goYSy5c2UXE4Ra1xixabeVh1guIX/ZV/YokJksb6q2lubWu6UbvPQ20p542/sFIll1nl8JnCyK9oBaOcCWXwvA==", - "dev": true + "dev": true, + "bin": { + "opener": "bin/opener-bin.js" + } }, - "optimist": { + "node_modules/optimist": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", "dev": true, - "requires": { + "dependencies": { "minimist": "~0.0.1", "wordwrap": "~0.0.2" - }, - "dependencies": { - "minimist": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", - "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=", - "dev": true - } } }, - "portfinder": { + "node_modules/optimist/node_modules/minimist": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", + "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=", + "dev": true + }, + "node_modules/portfinder": { "version": "1.0.25", "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.25.tgz", "integrity": "sha512-6ElJnHBbxVA1XSLgBp7G1FiCkQdlqGzuF7DswL5tcea+E8UpuvPU7beVAjjRwCioTS9ZluNbu+ZyRvgTsmqEBg==", "dev": true, - "requires": { + "dependencies": { "async": "^2.6.2", "debug": "^3.1.1", "mkdirp": "^0.5.1" + }, + "engines": { + "node": ">= 0.12.0" } }, - "qs": { + "node_modules/qs": { "version": "6.9.1", "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.1.tgz", "integrity": "sha512-Cxm7/SS/y/Z3MHWSxXb8lIFqgqBowP5JMlTUFyJN88y0SGQhVmZnqFK/PeuMX9LzUyWsqqhNxIyg0jlzq946yA==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "requires-port": { + "node_modules/requires-port": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", "dev": true }, - "secure-compare": { + "node_modules/secure-compare": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/secure-compare/-/secure-compare-3.0.1.tgz", "integrity": "sha1-8aAymzCLIh+uN7mXTz1XjQypmeM=", "dev": true }, - "union": { + "node_modules/union": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/union/-/union-0.5.0.tgz", "integrity": "sha512-N6uOhuW6zO95P3Mel2I2zMsbsanvvtgn6jVqJv4vbVcz/JN0OkL9suomjQGmWtxJQXOCqUJvquc1sMeNz/IwlA==", "dev": true, - "requires": { + "dependencies": { "qs": "^6.4.0" + }, + "engines": { + "node": ">= 0.8.0" } }, - "url-join": { + "node_modules/url-join": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/url-join/-/url-join-2.0.5.tgz", "integrity": "sha1-WvIvGMBSoACkjXuCxenC4v7tpyg=", "dev": true }, - "wordwrap": { + "node_modules/wordwrap": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.4.0" + } } } } From c75b3bca80f5b55f7d00652232b3e37996fa201e Mon Sep 17 00:00:00 2001 From: Valentin Radulescu Date: Sat, 5 Sep 2026 16:10:07 +0000 Subject: [PATCH 3/5] Add original SCSS styles for Space Jam --- index.html | 2 +- space-jam-logo/index.css | 241 ------------------ space-jam/index.css | 296 +++++++++++++++++++++++ {space-jam-logo => space-jam}/index.html | 0 {space-jam-logo => space-jam}/index.js | 0 space-jam/index.scss | 262 ++++++++++++++++++++ 6 files changed, 559 insertions(+), 242 deletions(-) delete mode 100644 space-jam-logo/index.css create mode 100644 space-jam/index.css rename {space-jam-logo => space-jam}/index.html (100%) rename {space-jam-logo => space-jam}/index.js (100%) create mode 100644 space-jam/index.scss diff --git a/index.html b/index.html index fd43d3f..87856f6 100644 --- a/index.html +++ b/index.html @@ -211,7 +211,7 @@

    🍟 French Fries

    Bonus

    🐰🏀 Space Jam Logo

    diff --git a/space-jam-logo/index.css b/space-jam-logo/index.css deleted file mode 100644 index 7a0937e..0000000 --- a/space-jam-logo/index.css +++ /dev/null @@ -1,241 +0,0 @@ -body { - display: flex; - align-items: center; - justify-content: center; - height: 100vh; - background-color: #020107; - background-image: - radial-gradient(circle at 18px 22px, rgba(255, 255, 255, 0.7), transparent 2px), - radial-gradient(circle at 94px 15px, rgba(255, 255, 255, 0.4), transparent 1px), - radial-gradient(circle at 43px 61px, rgba(255, 255, 255, 0.8), transparent 2px), - radial-gradient(circle at 116px 48px, rgba(255, 255, 255, 0.5), transparent 1px), - radial-gradient(circle at 72px 91px, rgba(255, 255, 255, 0.6), transparent 2px), - radial-gradient(circle at 13px 108px, rgba(255, 255, 255, 0.3), transparent 1px), - radial-gradient(circle at 105px 116px, rgba(255, 255, 255, 0.7), transparent 2px), - radial-gradient(circle at 58px 35px, rgba(255, 255, 255, 0.4), transparent 1px), - radial-gradient(circle at 31px 83px, rgba(255, 255, 255, 0.5), transparent 1px), - radial-gradient(circle at 87px 72px, rgba(255, 255, 255, 0.8), transparent 2px); - background-size: 128px 128px; - overflow: hidden; - font-size: 16px; -} - -.space-jam { - position: relative; - width: 720px; - height: 471px; - margin: 0; - font-family: "Luckiest Guy", cursive; - font-weight: normal; - line-height: 1; - text-transform: uppercase; - opacity: 1; - transform: scale(1); - animation: intro-anim 1s forwards reverse; - will-change: transform, opacity; - cursor: pointer; -} - -.space-jam span { - position: absolute; - display: inline-block; - text-shadow: 0.03em 0.03em #11192f; - transform: translateY(0); - animation: letter-anim 0.9s forwards ease-in-out; - will-change: transform; -} - -.space-jam span::after { - content: attr(data-text); - position: absolute; - top: 0; - left: 0; - background: radial-gradient(circle at center, #cede73 0%, #a5cd63 21%, #3ab473 36%, #036ba5 54%); - background-clip: text; - -webkit-background-clip: text; - -webkit-text-fill-color: transparent; - -webkit-text-stroke: 4px white; - text-shadow: none; -} - -.space-jam span:nth-of-type(2) { animation-delay: 1.1s; } -.space-jam span:nth-of-type(3) { animation-delay: 1.2s; } -.space-jam span:nth-of-type(4) { animation-delay: 1.3s; } -.space-jam span:nth-of-type(5) { animation-delay: 1.4s; } -.space-jam span:nth-of-type(6) { animation-delay: 1.5s; } -.space-jam span:nth-of-type(7) { animation-delay: 1.6s; } -.space-jam span:nth-of-type(8) { animation-delay: 1.7s; } -.space-jam span:nth-of-type(9) { animation-delay: 1.8s; } - -.space-jam span:first-of-type, -.space-jam span:last-of-type { - animation-delay: 1.6s; -} - -.s-s { - top: 120px; - left: 0; - z-index: 4; - font-size: 160px; -} - -.s-s::after { background-position: 5px 14px; } - -.s-p { - top: 132px; - left: 70px; - z-index: 3; - font-size: 133px; -} - -.s-p::after { background-position: 8px 20px; } - -.s-a { - top: 123px; - left: 116px; - z-index: 2; - font-size: 155px; -} - -.s-a::after { background-position: -20px 25px; } - -.s-c { - top: 138px; - left: 197px; - z-index: 3; - font-size: 140px; -} - -.s-c::after { background-position: 8px 25px; } - -.s-e { - top: 125px; - left: 258px; - z-index: 2; - font-size: 140px; -} - -.s-e::after { background-position: -10px 25px; } - -.j-j { - top: -25px; - left: 228px; - display: inline-block; - font-family: "Paytone One", sans-serif; - font-size: 500px; -} - -.j-j::after { background-position: -20px 25px; } - -.j-j:not(:first-child):not(:last-child) { - clip: rect(388px, 62px, 453px, -10px); -} - -.j-j:last-child { - clip: rect(0, 231px, 224px, 0); -} - -.j-a { - top: 70px; - left: 375px; - z-index: 3; - font-size: 280px; -} - -.j-a::after { background-position: 10px 20px; } - -.j-m { - top: 70px; - left: 505px; - z-index: 2; - font-size: 270px; -} - -.j-m::after { background-position: 30px 25px; } - -.rings { - position: absolute; - top: -10px; - left: 187px; - width: 400px; - height: 400px; - transform: rotate(8deg) skewX(-33deg); -} - -.rings [class^="ring-"] { - position: absolute; - top: 50%; - left: 50%; - transform: translate(-50%, -50%); -} - -.rings [class^="ring-"]::after { - content: ""; - position: absolute; - display: block; - border-radius: 50%; -} - -.ring-1, -.ring-1::after { - width: 400px; - height: 400px; -} - -.ring-1::after { - background: radial-gradient(circle closest-side, transparent 85%, #f6eb16 85%, #ed2224 88%, #35469d 100%); -} - -.ring-2, -.ring-2::after { - width: 340px; - height: 340px; -} - -.ring-2::after { - background: radial-gradient(circle closest-side, transparent 82.353%, #f6eb16 82.353%, #ed2224 88%, #35469d 100%); -} - -.ring-3, -.ring-3::after { - width: 280px; - height: 280px; -} - -.ring-3::after { - background: radial-gradient(circle closest-side, transparent 78.571%, #f6eb16 78.571%, #ed2224 88%, #35469d 100%); -} - -.ring-4, -.ring-4::after { - width: 220px; - height: 220px; -} - -.ring-4::after { - background: radial-gradient(circle closest-side, transparent 72.727%, #f6eb16 72.727%, #ed2224 88%, #35469d 100%); -} - -@keyframes intro-anim { - 100% { - opacity: 0; - transform: scale(3); - } -} - -@keyframes letter-anim { - 0%, 100% { transform: translateY(0); } - 25% { transform: translateY(-10px); } - 60% { transform: translateY(20px); } -} - -iframe { - position: absolute; - top: 0; - left: 0; - width: 1px; - height: 1px; - border: 0; - overflow: hidden; -} - diff --git a/space-jam/index.css b/space-jam/index.css new file mode 100644 index 0000000..fdf8877 --- /dev/null +++ b/space-jam/index.css @@ -0,0 +1,296 @@ +body { + display: flex; + align-items: center; + justify-content: center; + font-size: 16px; + height: 100vh; + background-image: + radial-gradient(circle at 105px 82px, rgba(255, 255, 255, 0.4), transparent 2px), + radial-gradient(circle at 11px 100px, rgba(255, 255, 255, 0.6), transparent 1px), + radial-gradient(circle at 113px 115px, rgba(255, 255, 255, 0.5), transparent 2px), + radial-gradient(circle at 74px 114px, rgba(255, 255, 255, 0.7), transparent 2px), + radial-gradient(circle at 21px 45px, rgba(255, 255, 255, 0.5), transparent 2px), + radial-gradient(circle at 10px 109px, rgba(255, 255, 255, 0.5), transparent 1px), + radial-gradient(circle at 68px 86px, rgba(255, 255, 255, 0.4), transparent 1px), + radial-gradient(circle at 66px 48px, rgba(255, 255, 255, 0.4), transparent 1px), + radial-gradient(circle at 17px 101px, rgba(255, 255, 255, 0.4), transparent 2px), + radial-gradient(circle at 53px 93px, rgba(255, 255, 255, 0.5), transparent 2px); + background-size: 128px 128px; + background-color: #020107; + overflow: hidden; +} + +.space-jam { + position: relative; + margin: 0; + width: 720px; + height: 471px; + font-family: 'Luckiest Guy', cursive; + font-weight: normal; + line-height: 1; + text-transform: uppercase; + opacity: 1; + transform: scale(1); + animation: introAnim 1s forwards reverse; + will-change: transform, opacity; + cursor: pointer; +} + +.space-jam span { + position: absolute; + display: inline-block; + text-shadow: 0.03em 0.03em #11192f; + transform: translateY(0); + animation: letterAnim 0.9s forwards ease-in-out; + will-change: transform; +} + +.space-jam span:after { + content: attr(data-text); + position: absolute; + top: 0; + left: 0; + text-shadow: none; + background: radial-gradient(circle at center, #cede73 0%, #a5cd63 21%, #3ab473 36%, #036ba5 54%); + background-clip: text; + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + -webkit-text-stroke-color: white; + -webkit-text-stroke-width: 4px; +} + +.space-jam span:nth-of-type(2) { + animation-delay: 1.1s; +} + +.space-jam span:nth-of-type(3) { + animation-delay: 1.2s; +} + +.space-jam span:nth-of-type(4) { + animation-delay: 1.3s; +} + +.space-jam span:nth-of-type(5) { + animation-delay: 1.4s; +} + +.space-jam span:nth-of-type(6) { + animation-delay: 1.5s; +} + +.space-jam span:nth-of-type(7) { + animation-delay: 1.6s; +} + +.space-jam span:nth-of-type(8) { + animation-delay: 1.7s; +} + +.space-jam span:nth-of-type(9) { + animation-delay: 1.8s; +} + +.space-jam span:first-of-type, +.space-jam span:last-of-type { + animation-delay: 1.6s; +} + +.space-jam .s-s { + font-size: 160px; + top: 120px; + left: 0px; + z-index: 4; +} + +.space-jam .s-s:after { + background-position: 5px 14px; +} + +.space-jam .s-p { + font-size: 133px; + top: 132px; + left: 70px; + z-index: 3; +} + +.space-jam .s-p:after { + background-position: 8px 20px; +} + +.space-jam .s-a { + font-size: 155px; + top: 123px; + left: 116px; + z-index: 2; +} + +.space-jam .s-a:after { + background-position: -20px 25px; +} + +.space-jam .s-c { + font-size: 140px; + top: 138px; + left: 197px; + z-index: 3; +} + +.space-jam .s-c:after { + background-position: 8px 25px; +} + +.space-jam .s-e { + font-size: 140px; + top: 125px; + left: 258px; + z-index: 2; +} + +.space-jam .s-e:after { + background-position: -10px 25px; +} + +.space-jam .j-j { + top: -25px; + left: 228px; + font-size: 500px; + font-family: 'Paytone One'; + display: inline-block; +} + +.space-jam .j-j:after { + background-position: -20px 25px; +} + +.space-jam .j-j:not(:first-child):not(:last-child) { + clip: rect(388px, 62px, 453px, -10px); +} + +.space-jam .j-j:last-child { + clip: rect(0px, 231px, 224px, 0px); +} + +.space-jam .j-a { + top: 70px; + left: 375px; + font-size: 280px; + z-index: 3; +} + +.space-jam .j-a:after { + background-position: 10px 20px; +} + +.space-jam .j-m { + top: 70px; + left: 505px; + font-size: 270px; + z-index: 2; +} + +.space-jam .j-m:after { + background-position: 30px 25px; +} + +.space-jam .rings { + position: absolute; + top: -10px; + left: 187px; + width: 400px; + height: 400px; + transform: rotate(8deg) skewX(-33deg); +} + +.space-jam .rings [class^=ring-] { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); +} + +.space-jam .rings [class^=ring-]:after { + content: ''; + display: block; + position: absolute; + border-radius: 50%; +} + +.space-jam .rings .ring-1 { + width: 400px; + height: 400px; +} + +.space-jam .rings .ring-1:after { + width: 400px; + height: 400px; + background: radial-gradient(circle closest-side, transparent 85%, #f6eb16 85%, #ed2224 88%, #35469d 100%); +} + +.space-jam .rings .ring-2 { + width: 340px; + height: 340px; +} + +.space-jam .rings .ring-2:after { + width: 340px; + height: 340px; + background: radial-gradient(circle closest-side, transparent 82.3529411765%, #f6eb16 82.3529411765%, #ed2224 88%, #35469d 100%); +} + +.space-jam .rings .ring-3 { + width: 280px; + height: 280px; +} + +.space-jam .rings .ring-3:after { + width: 280px; + height: 280px; + background: radial-gradient(circle closest-side, transparent 78.5714285714%, #f6eb16 78.5714285714%, #ed2224 88%, #35469d 100%); +} + +.space-jam .rings .ring-4 { + width: 220px; + height: 220px; +} + +.space-jam .rings .ring-4:after { + width: 220px; + height: 220px; + background: radial-gradient(circle closest-side, transparent 72.7272727273%, #f6eb16 72.7272727273%, #ed2224 88%, #35469d 100%); +} + +@keyframes introAnim { + 100% { + opacity: 0; + transform: scale(3); + } +} + +@keyframes letterAnim { + 0% { + transform: translateY(0px); + } + + 25% { + transform: translateY(-10px); + } + + 60% { + transform: translateY(20px); + } + + 100% { + transform: translateY(0px); + } +} + +/* :) */ +iframe { + position: absolute; + top: 0; + left: 0; + width: 1px; + height: 1px; + overflow: hidden; +} \ No newline at end of file diff --git a/space-jam-logo/index.html b/space-jam/index.html similarity index 100% rename from space-jam-logo/index.html rename to space-jam/index.html diff --git a/space-jam-logo/index.js b/space-jam/index.js similarity index 100% rename from space-jam-logo/index.js rename to space-jam/index.js diff --git a/space-jam/index.scss b/space-jam/index.scss new file mode 100644 index 0000000..d8b08b7 --- /dev/null +++ b/space-jam/index.scss @@ -0,0 +1,262 @@ +$rThickness: 30px; +$rDiameter: 400px; + +$backroundSize: 128px; +$numberOfStars: 10; + +$initialAnimLength: 1s; +$letterAnimDelay: .1s; +$letterAnimLength: .9s; + +body { + display: flex; + align-items: center; + justify-content: center; + font-size: 16px; + height: 100vh; + + $stars: (); + + @for $i from 1 through $numberOfStars { + $spread: random(2); + $brightness: (random(5) + 3) / 10; + $xPos: random($backroundSize - 5) + 5; + $yPos: random($backroundSize - 5) + 5; + + $stars: append($stars, unquote("radial-gradient(circle at #{$xPos}px #{$yPos}px, rgba(255, 255, 255, #{$brightness}), transparent #{$spread}px)"), comma); + } + + background-image: $stars; + background-size: $backroundSize $backroundSize; + background-color: #020107; + overflow: hidden; +} + +.space-jam { + position: relative; + margin: 0; + width: 720px; + height: 471px; + font-family: 'Luckiest Guy', cursive; + font-weight: normal; + line-height: 1; + text-transform: uppercase; + opacity: 1; + transform: scale(1); + animation: introAnim $initialAnimLength forwards reverse; + will-change: transform, opacity; + cursor: pointer; + + span { + position: absolute; + display: inline-block; + text-shadow: .03em .03em #11192f; + transform: translateY(0); + animation: letterAnim $letterAnimLength forwards ease-in-out; + will-change: transform; + + &:after { + content: attr(data-text); + position: absolute; + top: 0; + left: 0; + text-shadow: none; + background: radial-gradient(circle at center, #cede73 0%,#a5cd63 21%,#3ab473 36%,#036ba5 54%); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + -webkit-text-stroke-color: white; + -webkit-text-stroke-width: 4px; + } + + @for $i from 2 through 9 { + &:nth-of-type(#{$i}) { + animation-delay: ($i - 1) * $letterAnimDelay + $initialAnimLength; + } + } + + &:first-of-type, + &:last-of-type { + animation-delay: 6 * $letterAnimDelay + $initialAnimLength; + } + } + + .s-s { + font-size: 160px; + top: 120px; + left: 0px; + z-index: 4; + + &:after { + background-position: 5px 14px; + } + } + + .s-p { + font-size: 133px; + top: 132px; + left: 70px; + z-index: 3; + + &:after { + background-position: 8px 20px; + } + } + + .s-a { + font-size: 155px; + top: 123px; + left: 116px; + z-index: 2; + + &:after { + background-position: -20px 25px; + } + } + + .s-c { + font-size: 140px; + top: 138px; + left: 197px; + z-index: 3; + + &:after { + background-position: 8px 25px; + } + } + + .s-e { + font-size: 140px; + top: 125px; + left: 258px; + z-index: 2; + + &:after { + background-position: -10px 25px; + } + } + + .j-j { + top: -25px; + left: 228px; + font-size: 500px; + font-family: 'Paytone One'; + display: inline-block; + + + &:after { + background-position: -20px 25px; + } + + &:not(:first-child):not(:last-child) { + clip: rect(388px, 62px, 453px, -10px); + } + + &:last-child { + clip: rect(0px, 231px, 224px, 0px); + } + } + + .j-a { + top: 70px; + left: 375px; + font-size: 280px; + z-index: 3; + + &:after { + background-position: 10px 20px; + } + } + + .j-m { + top: 70px; + left: 505px; + font-size: 270px; + z-index: 2; + + &:after { + background-position: 30px 25px; + } + } + + .rings { + position: absolute; + top: -10px; + left: 187px; + width: $rDiameter; + height: $rDiameter; + transform: rotate(8deg) skewX(-33deg); + + [class^=ring-] { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + + &:after { + content: ''; + display: block; + position: absolute; + border-radius: 50%; + } + } + + @for $i from 0 through 3 { + .ring-#{$i+1} { + $newDiameter: $rDiameter - 2 * $i * $rThickness; + // convert ring thickness to % value for gradient + $percThickness: 100% - 100% * $rThickness / ($newDiameter / 2); + + width: $newDiameter; + height: $newDiameter; + + &:after { + width: $newDiameter; + height: $newDiameter; + background: radial-gradient( + circle closest-side, + transparent $percThickness, + #f6eb16 $percThickness, + #ed2224 88%, + #35469d 100% + ); + } + } + } + } +} + +@keyframes introAnim { + 100% { + opacity: 0; + transform: scale(3); + } +} + +@keyframes letterAnim { + 0% { + transform: translateY(0px); + } + + 25% { + transform: translateY(-10px); + } + + 60% { + transform: translateY(20px); + } + + 100% { + transform: translateY(0px); + } +} + +/* :) */ + +iframe { + position: absolute; + top: 0; + left: 0; + width: 1px; + height: 1px; + overflow: hidden; +} \ No newline at end of file From 4e4d2c56b3190190095557816ed0cf289dc1e9a4 Mon Sep 17 00:00:00 2001 From: RadValentin Date: Sun, 6 Sep 2026 19:09:27 +0300 Subject: [PATCH 4/5] Update dependency --- package-lock.json | 620 ++++++++++++++++++++++++++++++++++++---------- package.json | 6 +- 2 files changed, 494 insertions(+), 132 deletions(-) diff --git a/package-lock.json b/package-lock.json index 030ecae..5e7cf24 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,87 +9,313 @@ "version": "1.0.0", "license": "MIT", "devDependencies": { - "http-server": "^0.12.0" + "http-server": "^14.1.1" } }, - "node_modules/async": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", - "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { - "lodash": "^4.17.14" + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/async": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", + "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", + "dev": true, + "license": "MIT" + }, "node_modules/basic-auth": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-1.1.0.tgz", - "integrity": "sha1-RSIe5Cn37h5QNb4/UVM/HN/SmIQ=", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", + "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "5.1.2" + }, "engines": { - "node": ">= 0.6" + "node": ">= 0.8" } }, - "node_modules/colors": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", - "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, "engines": { - "node": ">=0.1.90" + "node": ">= 0.4" } }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, "node_modules/corser": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/corser/-/corser-2.0.1.tgz", - "integrity": "sha1-jtolLsqrWEDc2XXOuQ2TcMgZ/4c=", + "integrity": "sha512-utCYNzRSQIZNPIcGZdQc92UVJYAhtGAteCFg0yRaFm8f0P+CPtyGyHXJcGXnffjCybUCEx3FQ2G7U3/o9eIkVQ==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4.0" } }, "node_modules/debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "deprecated": "Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)", + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", "dev": true, + "license": "MIT", "dependencies": { - "ms": "^2.1.1" + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/ecstatic": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/ecstatic/-/ecstatic-3.3.2.tgz", - "integrity": "sha512-fLf9l1hnwrHI2xn9mEDT7KIi22UDqA2jaCwyCbSUJh9a1V+LEUSL/JO/6TIz/QyuBURWUHrFL5Kg2TtO1bkkog==", - "deprecated": "This package is unmaintained and deprecated. See the GH Issue 259.", + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", "dev": true, + "license": "MIT", "dependencies": { - "he": "^1.1.1", - "mime": "^1.6.0", - "minimist": "^1.1.0", - "url-join": "^2.0.5" + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" }, - "bin": { - "ecstatic": "lib/ecstatic.js" + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.2.tgz", + "integrity": "sha512-HWcBoN6NileqtSydK2FqHbS/LoDd2pqrnQHLyJzBj4kOp/ky2MWMN694xOfkK8/SnUsW2DH7EfyVlydKCsm1Zw==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" } }, "node_modules/eventemitter3": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.0.tgz", - "integrity": "sha512-qerSRB0p+UDEssxTtm6EDKcE7W4OaoisfIMl4CngyEhjpYglocpNg6UEqCvemdGhosAsg4sO2dXJOdyBifPGCg==", - "dev": true + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true, + "license": "MIT" }, "node_modules/follow-redirects": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.9.0.tgz", - "integrity": "sha512-CRcPzsSIbXyVDl0QI01muNDu69S8trU4jArW9LpOt2WtC6LyUJetcIrmfHsRBx7/Jb6GHJUiuqyYxPooFfNt6A==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.16.0.tgz", + "integrity": "sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==", "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "dev": true, + "license": "MIT", "dependencies": { - "debug": "^3.0.0" + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" }, "engines": { - "node": ">=4.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.4.tgz", + "integrity": "sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==", + "dev": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" } }, "node_modules/he": { @@ -97,60 +323,96 @@ "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", "dev": true, + "license": "MIT", "bin": { "he": "bin/he" } }, + "node_modules/html-encoding-sniffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", + "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==", + "dev": true, + "license": "MIT", + "dependencies": { + "whatwg-encoding": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/http-proxy": { - "version": "1.18.0", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.0.tgz", - "integrity": "sha512-84I2iJM/n1d4Hdgc6y2+qY5mDaz2PUVjlg9znE9byl+q0uC3DeByqBGReQu5tpLK0TAqTIXScRUV+dg7+bUPpQ==", + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", "dev": true, + "license": "MIT", "dependencies": { "eventemitter3": "^4.0.0", "follow-redirects": "^1.0.0", "requires-port": "^1.0.0" }, "engines": { - "node": ">=6.0.0" + "node": ">=8.0.0" } }, "node_modules/http-server": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/http-server/-/http-server-0.12.0.tgz", - "integrity": "sha512-imGLDSTT1BZ0QG1rBFnaZ6weK5jeisUnCxZQI1cpYTdz0luPUM5e3s+WU5zRWEkiI6DQxL2p54oeKrDlzO6bRw==", + "version": "14.1.1", + "resolved": "https://registry.npmjs.org/http-server/-/http-server-14.1.1.tgz", + "integrity": "sha512-+cbxadF40UXd9T01zUHgA+rlo2Bg1Srer4+B4NwIHdaGxAGGv59nYRnGGDJ9LBk7alpS0US+J+bLLdQOOkJq4A==", "dev": true, + "license": "MIT", "dependencies": { - "basic-auth": "^1.0.3", - "colors": "^1.3.3", + "basic-auth": "^2.0.1", + "chalk": "^4.1.2", "corser": "^2.0.1", - "ecstatic": "^3.3.2", - "http-proxy": "^1.17.0", + "he": "^1.2.0", + "html-encoding-sniffer": "^3.0.0", + "http-proxy": "^1.18.1", + "mime": "^1.6.0", + "minimist": "^1.2.6", "opener": "^1.5.1", - "optimist": "~0.6.1", - "portfinder": "^1.0.20", + "portfinder": "^1.0.28", "secure-compare": "3.0.1", - "union": "~0.5.0" + "union": "~0.5.0", + "url-join": "^4.0.1" }, "bin": { - "hs": "bin/http-server", "http-server": "bin/http-server" }, "engines": { - "node": ">=6" + "node": ">=12" } }, - "node_modules/lodash": { - "version": "4.17.19", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", - "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==", - "dev": true + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } }, "node_modules/mime": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", "dev": true, + "license": "MIT", "bin": { "mime": "cli.js" }, @@ -159,80 +421,69 @@ } }, "node_modules/minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - }, - "node_modules/mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "deprecated": "Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.)", + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", "dev": true, - "dependencies": { - "minimist": "0.0.8" - }, - "bin": { - "mkdirp": "bin/cmd.js" + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/mkdirp/node_modules/minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", - "dev": true - }, "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" }, - "node_modules/opener": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.1.tgz", - "integrity": "sha512-goYSy5c2UXE4Ra1xixabeVh1guIX/ZV/YokJksb6q2lubWu6UbvPQ20p542/sFIll1nl8JnCyK9oBaOcCWXwvA==", + "node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", "dev": true, - "bin": { - "opener": "bin/opener-bin.js" + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/optimist": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", - "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "node_modules/opener": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", + "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", "dev": true, - "dependencies": { - "minimist": "~0.0.1", - "wordwrap": "~0.0.2" + "license": "(WTFPL OR MIT)", + "bin": { + "opener": "bin/opener-bin.js" } }, - "node_modules/optimist/node_modules/minimist": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", - "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=", - "dev": true - }, "node_modules/portfinder": { - "version": "1.0.25", - "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.25.tgz", - "integrity": "sha512-6ElJnHBbxVA1XSLgBp7G1FiCkQdlqGzuF7DswL5tcea+E8UpuvPU7beVAjjRwCioTS9ZluNbu+ZyRvgTsmqEBg==", + "version": "1.0.38", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.38.tgz", + "integrity": "sha512-rEwq/ZHlJIKw++XtLAO8PPuOQA/zaPJOZJ37BVuN97nLpMJeuDVLVGRwbFoBgLudgdTMP2hdRJP++H+8QOA3vg==", "dev": true, + "license": "MIT", "dependencies": { - "async": "^2.6.2", - "debug": "^3.1.1", - "mkdirp": "^0.5.1" + "async": "^3.2.6", + "debug": "^4.3.6" }, "engines": { - "node": ">= 0.12.0" + "node": ">= 10.12" } }, "node_modules/qs": { - "version": "6.9.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.1.tgz", - "integrity": "sha512-Cxm7/SS/y/Z3MHWSxXb8lIFqgqBowP5JMlTUFyJN88y0SGQhVmZnqFK/PeuMX9LzUyWsqqhNxIyg0jlzq946yA==", + "version": "6.16.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.16.0.tgz", + "integrity": "sha512-h6fhOIaRrID2CbEY2fqs+7t+UXZo+MLAnU5gRIq85uFtdiUPCdsApMlHhXogKVM4HM2DVbIjGNTTYH2OcmP1vA==", "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "es-define-property": "^1.0.1", + "side-channel": "^1.1.1" + }, "engines": { "node": ">=0.6" }, @@ -243,14 +494,119 @@ "node_modules/requires-port": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", - "dev": true + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true, + "license": "MIT" + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true, + "license": "MIT" }, "node_modules/secure-compare": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/secure-compare/-/secure-compare-3.0.1.tgz", - "integrity": "sha1-8aAymzCLIh+uN7mXTz1XjQypmeM=", - "dev": true + "integrity": "sha512-AckIIV90rPDcBcglUwXPF3kg0P0qmPsPXAj6BBEENQE1p5yA1xfmDJzfi1Tappj37Pv2mVbKpL3Z1T+Nn7k1Qw==", + "dev": true, + "license": "MIT" + }, + "node_modules/side-channel": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.1.tgz", + "integrity": "sha512-6x6dK6zJdpTzF4sQeNYxwtvBzf6Eg4GtlesS94HOvTudUeyK2WXAaIfmDgsyslYrRBeFIlsi54AYsFGUuhmvrQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.4", + "side-channel-list": "^1.0.1", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.1.tgz", + "integrity": "sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } }, "node_modules/union": { "version": "0.5.0", @@ -265,18 +621,24 @@ } }, "node_modules/url-join": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/url-join/-/url-join-2.0.5.tgz", - "integrity": "sha1-WvIvGMBSoACkjXuCxenC4v7tpyg=", - "dev": true + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz", + "integrity": "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==", + "dev": true, + "license": "MIT" }, - "node_modules/wordwrap": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", - "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", + "node_modules/whatwg-encoding": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", + "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", + "deprecated": "Use @exodus/bytes instead for a more spec-conformant and faster implementation", "dev": true, + "license": "MIT", + "dependencies": { + "iconv-lite": "0.6.3" + }, "engines": { - "node": ">=0.4.0" + "node": ">=12" } } } diff --git a/package.json b/package.json index 55ebccd..cdf4321 100644 --- a/package.json +++ b/package.json @@ -19,10 +19,10 @@ "url": "https://github.com/RadValentin/codevember-2017/issues" }, "homepage": "https://github.com/RadValentin/codevember-2017#readme", - "devDependencies": { - "http-server": "^0.12.0" - }, "scripts": { "start": "http-server -c-1" + }, + "devDependencies": { + "http-server": "^14.1.1" } } From 0e266c30a9db2cf23d017e7d915687b971de4b75 Mon Sep 17 00:00:00 2001 From: RadValentin Date: Sun, 6 Sep 2026 19:10:12 +0300 Subject: [PATCH 5/5] Restore source files to exactly how they were written initially --- space-jam/index.html | 8 +++++--- space-jam/index.js | 11 ++++------- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/space-jam/index.html b/space-jam/index.html index cb77c37..aa91640 100644 --- a/space-jam/index.html +++ b/space-jam/index.html @@ -13,7 +13,7 @@

    -