diff --git a/.babelrc b/.babelrc index 3f700e8..8c0643d 100644 --- a/.babelrc +++ b/.babelrc @@ -7,5 +7,5 @@ "html-tag-js/jsx/syntax-parser.js", "@babel/transform-runtime" ], - "compact": true + "compact": false } \ No newline at end of file diff --git a/biome.json b/biome.json index 7b848bc..7401512 100644 --- a/biome.json +++ b/biome.json @@ -13,6 +13,7 @@ "!**/jsconfig.json", "!**/.babelrc", "!**/.hintrc", + "!**/*.svg", "!**/*/selection.json" ] }, diff --git a/client/components/announcementBanner/index.js b/client/components/announcementBanner/index.js index 4e00462..80b39bd 100644 --- a/client/components/announcementBanner/index.js +++ b/client/components/announcementBanner/index.js @@ -91,11 +91,13 @@ export default function AnnouncementBanner() { clearInterval(intervalId); sessionStorage.setItem('announcement-banner-closed', 'true'); $link.removeAttribute('data-visible'); + document.documentElement.style.setProperty('--announcement-height', '0px'); }); // Check if banner was closed in this session if (sessionStorage.getItem('announcement-banner-closed') === 'true') { $link.classList.add('hidden'); + document.documentElement.style.setProperty('--announcement-height', '0px'); } const $content = $link.querySelector('.announcement-banner__content'); diff --git a/client/components/announcementBanner/style.scss b/client/components/announcementBanner/style.scss index d74d77c..728596d 100644 --- a/client/components/announcementBanner/style.scss +++ b/client/components/announcementBanner/style.scss @@ -7,24 +7,17 @@ position: sticky; top: 0; width: 100%; - padding: 12px 50px 12px 20px; + padding: 0 44px 0 16px; box-sizing: border-box; - background: linear-gradient(135deg, - #1a1a2e 0%, - #16213e 25%, - #0f3460 50%, - #1a1a2e 100%); - background-size: 200% 200%; - animation: gradientShift 8s ease infinite; + background: #16181e; text-decoration: none; cursor: pointer; overflow: hidden; - border-bottom: 1px solid rgba(255, 255, 255, 0.1); - transition: background 0.5s ease, background-size 0.3s ease; - height: 60px; + border-bottom: 1px solid rgba(255, 255, 255, 0.06); + height: 40px; &[data-visible='true']+header { - top: 60px; + top: 40px; } // Hanging Piece theme - chess-inspired dark green @@ -51,87 +44,62 @@ } &--shellular { - background: linear-gradient(135deg, - #08090b 0%, - #0d0d0f 24%, - #18181b 56%, - #1b1b1f 100%); - border-bottom-color: rgba(214, 194, 161, 0.18); + background: #16181e; + border-bottom-color: rgba(255, 255, 255, 0.06); .announcement-banner__new-badge { - background: linear-gradient(135deg, #f1c98d, #d6c2a1); - color: #140f0a; - box-shadow: 0 2px 10px rgba(214, 194, 161, 0.35); - } - - .announcement-banner__title { - color: #f5f1e8; + background: transparent; + color: rgba(214, 194, 161, 0.9); + box-shadow: none; + border: 1px solid rgba(214, 194, 161, 0.35); } + .announcement-banner__title, .announcement-banner__mobile-title { - color: #f5f1e8; + color: rgba(245, 241, 232, 0.88); } .announcement-banner__subtitle { - color: rgba(245, 241, 232, 0.78); + color: rgba(245, 241, 232, 0.5); } .announcement-banner__cta { - background: linear-gradient(135deg, #d6c2a1, #8a745c); - color: #140f0a; - box-shadow: 0 4px 15px rgba(138, 116, 92, 0.3); + background: transparent; + color: rgba(214, 194, 161, 0.95); + box-shadow: none; + border: 1px solid rgba(214, 194, 161, 0.3); } .announcement-banner__logo-wrapper { - background: rgba(214, 194, 161, 0.12); - box-shadow: 0 4px 15px rgba(20, 15, 10, 0.35); + background: rgba(214, 194, 161, 0.08); + box-shadow: none; } .announcement-banner__indicator.active { - background: #f1c98d; - box-shadow: 0 0 12px rgba(241, 201, 141, 0.5); + background: rgba(214, 194, 161, 0.8); + box-shadow: none; } .announcement-banner__close { - background: rgba(214, 194, 161, 0.12); + background: transparent; .icon { - color: rgba(245, 241, 232, 0.82); + color: rgba(245, 241, 232, 0.45); } &:hover { - background: rgba(214, 194, 161, 0.24); + background: rgba(255, 255, 255, 0.06); .icon { - color: #f5f1e8; + color: rgba(245, 241, 232, 0.85); } } } } - &::before { - content: ''; - position: absolute; - top: 0; - left: -100%; - width: 100%; - height: 100%; - background: linear-gradient(90deg, - transparent, - rgba(255, 255, 255, 0.05), - transparent); - animation: shimmer 3s infinite; - } - &:hover { - background-size: 250% 250%; - .announcement-banner__cta { - transform: translateX(5px); - } - - .announcement-banner__arrow { - transform: translateX(3px); + border-color: rgba(255, 255, 255, 0.22); } } @@ -142,36 +110,36 @@ &__close { position: absolute; - right: 12px; + right: 8px; top: 0; bottom: 0; margin: auto; display: flex; align-items: center; justify-content: center; - width: 28px; - height: 28px; - background: rgba(255, 255, 255, 0.1); + width: 24px; + height: 24px; + background: transparent; border: none; - border-radius: 50%; + border-radius: 6px; cursor: pointer; - transition: all 0.3s ease; + transition: background 0.2s ease; z-index: 2; padding: 0; .icon { - color: rgba(255, 255, 255, 0.7); - font-size: 0.9rem; + color: rgba(255, 255, 255, 0.4); + font-size: 0.8rem; display: flex; align-items: center; justify-content: center; } &:hover { - background: rgba(255, 255, 255, 0.2); + background: rgba(255, 255, 255, 0.06); .icon { - color: #fff; + color: rgba(255, 255, 255, 0.85); } } } @@ -237,8 +205,9 @@ display: flex; align-items: center; - gap: 16px; + gap: 10px; max-width: 1200px; + min-width: 0; z-index: 1; } @@ -246,14 +215,11 @@ display: flex; align-items: center; justify-content: center; - width: 36px; - height: 36px; - border-radius: 10px; - background: rgba(255, 255, 255, 0.1); - backdrop-filter: blur(10px); - // padding: 4px; + width: 22px; + height: 22px; + border-radius: 6px; + background: rgba(255, 255, 255, 0.06); flex-shrink: 0; - box-shadow: 0 4px 15px rgba(0, 0, 0, 0.2); } &__logo { @@ -266,57 +232,63 @@ &__text { display: flex; align-items: center; - gap: 12px; - flex-wrap: wrap; + gap: 8px; + flex-wrap: nowrap; + min-width: 0; } &__new-badge { display: inline-flex; align-items: center; - padding: 4px 10px; - background: linear-gradient(135deg, #e94560, #ff6b6b); - color: #fff; - font-size: 0.65rem; - font-weight: 700; - letter-spacing: 1px; - border-radius: 20px; + padding: 1px 6px; + background: transparent; + color: rgba(255, 255, 255, 0.5); + font-size: 0.6rem; + font-weight: 600; + letter-spacing: 0.08em; + border-radius: 4px; text-transform: uppercase; - box-shadow: 0 2px 10px rgba(233, 69, 96, 0.4); + border: 1px solid rgba(255, 255, 255, 0.16); } &__title { - color: #fff; - font-size: 0.95rem; - font-weight: 600; - letter-spacing: 0.3px; + color: rgba(255, 255, 255, 0.88); + font-size: 0.8rem; + font-weight: 500; + letter-spacing: 0; } &__mobile-title { display: none; - color: #fff; - font-size: 0.9rem; - font-weight: 600; - letter-spacing: 0.2px; + color: rgba(255, 255, 255, 0.88); + font-size: 0.78rem; + font-weight: 500; + letter-spacing: 0; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + max-width: min(52vw, 16rem); } &__subtitle { - color: rgba(255, 255, 255, 0.7); - font-size: 0.85rem; + color: rgba(255, 255, 255, 0.45); + font-size: 0.8rem; font-weight: 400; } &__cta { display: flex; align-items: center; - gap: 6px; - padding: 8px 16px; - background: linear-gradient(135deg, #00d2d3, #54a0ff); - color: #fff; - font-size: 0.8rem; - font-weight: 600; - border-radius: 25px; - transition: all 0.3s ease; - box-shadow: 0 4px 15px rgba(0, 210, 211, 0.3); + gap: 4px; + padding: 4px 10px; + background: transparent; + color: rgba(255, 255, 255, 0.78); + font-size: 0.75rem; + font-weight: 500; + border-radius: 999px; + border: 1px solid rgba(255, 255, 255, 0.14); + transition: border-color 0.2s ease, color 0.2s ease; + box-shadow: none; white-space: nowrap; } @@ -330,38 +302,24 @@ } &__indicators { - position: absolute; - bottom: 4px; - left: 50%; - transform: translateX(-50%); - display: flex; - gap: 6px; - z-index: 2; + display: none; } &__indicator { - width: 6px; - height: 6px; - border-radius: 50%; - background: rgba(255, 255, 255, 0.3); - transition: all 0.3s ease; - - &.active { - background: rgba(255, 255, 255, 0.9); - transform: scale(1.2); - } + display: none; } // Responsive styles @media screen and (max-width: 768px) { - padding: 10px 16px; + padding: 0 36px 0 12px; &[data-visible='true']+header { - top: 60px; + top: 40px; } &__content { - gap: 12px; + gap: 8px; + min-width: 0; } &__logo-wrapper { diff --git a/client/components/dialogs/style.scss b/client/components/dialogs/style.scss index 246aa20..887e7ca 100644 --- a/client/components/dialogs/style.scss +++ b/client/components/dialogs/style.scss @@ -43,9 +43,10 @@ } .dialog-box { - background-color: var(--secondary-color); - color: var(--secondary-text-color); - border-radius: 4px; + background-color: #1c1f27; + color: var(--page-text, #f1f2f4); + border: 1px solid var(--page-line, rgba(255, 255, 255, 0.08)); + border-radius: 16px; box-shadow: 0 0 10px 0 rgba(0, 0, 0, 0.5); min-width: 200px; z-index: 1; diff --git a/client/components/input/style.scss b/client/components/input/style.scss index 3bee286..9f9e867 100644 --- a/client/components/input/style.scss +++ b/client/components/input/style.scss @@ -1,7 +1,7 @@ @mixin input-active($labelTop) { transform: translateY($labelTop) scale(0.8) !important; - background-color: var(--secondary-color) !important; - color: var(--secondary-text-color) !important; + background-color: #1c1f27 !important; + color: var(--page-muted, rgba(241, 242, 244, 0.64)) !important; } .custom-input:not(.radio):not(.checkbox) { @@ -11,8 +11,9 @@ margin: 10px 0; z-index: 0; font-size: 14px; - background-color: white; - border-radius: 4px; + background-color: rgba(255, 255, 255, 0.05); + border: 1px solid var(--page-line, rgba(255, 255, 255, 0.08)); + border-radius: 10px; box-sizing: border-box; &.drop-effect { @@ -26,7 +27,7 @@ bottom: 0; left: 0; padding: 5px 10px; - color: var(--primary-color); + color: var(--page-muted, rgba(241, 242, 244, 0.64)); z-index: 1; transition: all 0.2s ease-in-out; display: block; @@ -62,6 +63,11 @@ width: 100%; z-index: -1; margin: 0; + color: #fff; + background: transparent; + border: none; + box-shadow: none; + outline: none; &[type='file'] { opacity: 0; @@ -70,17 +76,17 @@ } &:disabled { - background-color: white; + background-color: transparent; } &::placeholder { - color: transparent; + color: transparent !important; + opacity: 0 !important; } - &:focus { - &::placeholder { - color: var(--text-color); - } + &:focus::placeholder { + color: var(--page-muted, rgba(241, 242, 244, 0.64)) !important; + opacity: 1 !important; } } } @@ -121,7 +127,11 @@ input, textarea { &::placeholder { - opacity: 0.5; + opacity: 0; + } + + &:focus::placeholder { + opacity: 1; } } diff --git a/client/components/plugins/style.scss b/client/components/plugins/style.scss index 01699e4..baf06d2 100644 --- a/client/components/plugins/style.scss +++ b/client/components/plugins/style.scss @@ -1,27 +1,31 @@ .plugins { - display: flex; - flex-wrap: wrap; - margin: 0 -10px; + display: grid; + grid-template-columns: repeat(3, minmax(0, 1fr)); + gap: 16px; + margin: 0; &:empty::after { content: attr(data-msg); display: block; text-align: center; width: 100%; + grid-column: 1 / -1; margin: 10px; } .plugin { position: relative; - width: calc(33% - 30px); - min-width: 250px; - margin: 10px 0 0 10px; - background-color: var(--secondary-color); + width: auto; + min-width: 0; + margin: 0; + background-color: var(--page-surface, rgba(255, 255, 255, 0.035)); color: var(--secondary-text-color); - padding: 10px; + padding: 14px; text-align: center; - border-radius: 4px; + border-radius: 16px; + border: 1px solid var(--page-line, transparent); text-decoration: none; + transition: transform 0.2s ease, border-color 0.2s ease, box-shadow 0.2s ease; .badge { position: absolute; @@ -62,7 +66,7 @@ width: auto; height: auto; padding: 2px 8px; - background-color: #7c3aed; + background-color: #3499fe; color: #fff; font-size: 11px; font-weight: 600; @@ -74,15 +78,17 @@ } @media screen and (max-width: 925px) { - width: calc(50% - 35px); + width: auto; } @media screen and (max-width: 600px) { - width: calc(100% - 40px); + width: auto; } &:hover { - box-shadow: -2px 2px 12px 2px rgba($color: #000000, $alpha: 0.4); + transform: translateY(-2px); + border-color: rgba(255, 255, 255, 0.16); + box-shadow: 0 16px 40px rgba(8, 10, 16, 0.4); } .plugin-icon { @@ -124,4 +130,12 @@ .rejected { color: #f33; } + + @media screen and (max-width: 925px) { + grid-template-columns: repeat(2, minmax(0, 1fr)); + } + + @media screen and (max-width: 600px) { + grid-template-columns: 1fr; + } } \ No newline at end of file diff --git a/client/main.js b/client/main.js index 8b65316..41170d1 100644 --- a/client/main.js +++ b/client/main.js @@ -20,7 +20,7 @@ document.addEventListener('DOMContentLoaded', () => { appName='Acode' routes={[ { href: '/faqs', text: 'FAQs' }, - { href: 'https://docs.acode.app', text: 'Plugin Docs' }, + { href: 'https://docs.acode.app', text: 'Docs' }, { href: '/plugins', text: 'Plugins' }, { href: '/sponsors', text: 'Sponsors' }, { href: 'https://academy.acode.app', text: 'Learn' }, @@ -29,11 +29,11 @@ document.addEventListener('DOMContentLoaded', () => { ); app.addEventListener('scroll', (e) => { + const depth = Math.min(e.target.scrollTop / 80, 1); app.get('#main-header').style.cssText = ` - background-color: rgba(0, 0, 0, ${Math.min(e.target.scrollTop / 100, 0.5)}); - backdrop-filter: blur(${Math.min(e.target.scrollTop / 10, 10)}px); - box-shadow: 0 2px 5px rgba(0, 0, 0, ${Math.min(e.target.scrollTop / 100, 0.2)}); - transition: background-color 0.3s ease, backdrop-filter 0.3s ease, box-shadow 0.3s ease; + background-color: rgba(12, 13, 17, ${depth * 0.78}); + backdrop-filter: blur(${depth * 16}px); + border-bottom-color: rgba(255, 255, 255, ${depth * 0.08}); `; if (e.target.scrollTop > 0) { app.classList.add('scrolled'); diff --git a/client/main.scss b/client/main.scss index 8b9e6e5..8acbf2c 100644 --- a/client/main.scss +++ b/client/main.scss @@ -1,8 +1,15 @@ -@import url('https://fonts.googleapis.com/css2?family=Lato:ital,wght@0,100;0,300;0,400;0,700;0,900;1,100;1,300;1,400;1,700;1,900&display=swap'); +@import url('https://fonts.googleapis.com/css2?family=Instrument+Sans:wght@400;500;600;700&display=swap'); :root { - font-family: 'Lato', sans-serif; - --announcement-height: 60px; + color-scheme: dark; + font-family: 'Instrument Sans', 'Montserrat', sans-serif; + --announcement-height: 40px; + --page-text: #f1f2f4; + --page-muted: rgba(241, 242, 244, 0.64); + --page-faint: rgba(241, 242, 244, 0.4); + --page-line: rgba(255, 255, 255, 0.08); + --page-accent: #3499fe; + --page-surface: rgba(255, 255, 255, 0.035); } body, @@ -11,11 +18,9 @@ html { width: 100%; overflow: hidden; margin: 0; - background: linear-gradient(135deg, - #141824 0%, - #1f232f 25%); + background: #12141a; color: var(--primary-text-color); - font-family: 'Montserrat', sans-serif; + font-family: 'Instrument Sans', 'Montserrat', sans-serif; } #app { @@ -30,6 +35,23 @@ html { display: none; } + &::before { + content: ''; + pointer-events: none; + position: fixed; + inset: 0; + z-index: 0; + background-image: + linear-gradient(to right, rgba(255, 255, 255, 0.05) 1px, transparent 1px), + linear-gradient(to bottom, rgba(255, 255, 255, 0.05) 1px, transparent 1px), + linear-gradient(to right, rgba(255, 255, 255, 0.025) 1px, transparent 1px), + linear-gradient(to bottom, rgba(255, 255, 255, 0.025) 1px, transparent 1px); + background-size: 80px 80px, 80px 80px, 20px 20px, 20px 20px; + background-position: center top; + mask-image: radial-gradient(120% 70% at 50% 0%, #000 0%, rgba(0, 0, 0, 0.4) 48%, transparent 78%); + -webkit-mask-image: radial-gradient(120% 70% at 50% 0%, #000 0%, rgba(0, 0, 0, 0.4) 48%, transparent 78%); + } + &.scrolled { header { background-color: rgba(0, 0, 0, 0.1); @@ -51,103 +73,65 @@ html { form { &.glass { position: relative; - backdrop-filter: blur(4px) saturate(1.2); - padding: 10px 20px 20px 20px; - border-radius: 30px; - background: rgba(255, 255, 255, 0.018); - background-clip: padding-box; - border: 1px solid #0000; - box-shadow: - 0 8px 32px rgba(0, 0, 0, 0.15), - 0 2px 8px rgba(0, 0, 0, 0.05), inset 0 1px 0 rgba(255, 255, 255, 0.12), - inset 0 -1px 0 rgba(255, 255, 255, 0.06); + padding: 32px 28px 28px; + border-radius: 16px; + background: rgba(255, 255, 255, 0.035); + border: 1px solid var(--page-line, rgba(255, 255, 255, 0.08)); + box-shadow: 0 24px 64px rgba(8, 10, 16, 0.45); width: 100%; overflow: hidden; - .glass-layer-1 { - position: absolute; - inset: 0; - border-radius: 30px; - padding: 1px; - background: linear-gradient(180deg, rgba(57, 57, 57, 0.21) 1%, rgba(151, 151, 151, 0.35) 100%); - mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0); - mask-composite: exclude; - -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0); - -webkit-mask-composite: xor; - pointer-events: none; - } - - .glass-layer-2 { - position: absolute; - inset: 1px; - border-radius: 19px; - box-shadow: inset 0 0 2px 0 rgba(255, 255, 255, 0.15), inset 0 2px 4px 0 rgba(255, 255, 255, 0.08), inset 0 -2px 2px 0 rgba(255, 255, 255, 0.12); - pointer-events: none; - } - - .glass-layer-3 { - position: absolute; - inset: 2px; - border-radius: 18px; - background: radial-gradient(circle at 30% 20%, rgba(255, 255, 255, 0.15) 0%, transparent 70%); - mix-blend-mode: overlay; - pointer-events: none; - } - - &::before { - content: ''; - position: absolute; - top: 0; - left: 0; - right: 0; - height: 1px; - background: linear-gradient(90deg, - transparent, - rgba(255, 255, 255, 0.18), - transparent); - } - + .glass-layer-1, + .glass-layer-2, + .glass-layer-3, + &::before, &::after { - content: ''; - position: absolute; - top: 0; - left: 0; - width: 1px; - height: 100%; - background: linear-gradient(180deg, - rgba(255, 255, 255, 0.15), - transparent, - rgba(255, 255, 255, 0.06)); + display: none; } } &.user-form { width: 90%; - max-width: 400px; + max-width: 420px; box-sizing: border-box; .divider { display: flex; align-items: center; - margin: 12px 0; + margin: 16px 0; &::before, &::after { content: ''; flex: 1; height: 1px; - background: rgba(255, 255, 255, 0.15); + background: var(--page-line, rgba(255, 255, 255, 0.08)); } span { padding: 0 16px; - color: rgba(255, 255, 255, 0.5); - font-size: 0.85rem; + color: var(--page-faint, rgba(241, 242, 244, 0.4)); + font-size: 0.82rem; } } - button[type=submit] { + button[type='submit'] { width: 100%; + height: 46px; + margin-top: 8px; + border: none; + border-radius: 10px; + background: #f4f6f8; + color: #111216; + font-size: 0.95rem; + font-weight: 600; + cursor: pointer; + transition: transform 0.2s ease, background-color 0.2s ease; + + &:hover { + transform: translateY(-1px); + background: #fff; + } } h1, @@ -155,14 +139,50 @@ form { display: flex; gap: 10px; align-items: center; - font-weight: normal; + justify-content: center; + font-weight: 500; + letter-spacing: -0.04em; + color: #fff; } h1 { - font-size: 1.4rem; + font-size: 1.7rem; + margin-bottom: 8px; .icon { - color: #3399ff; + color: var(--page-accent, #3499fe); + } + } + + a.link { + color: var(--page-muted, rgba(241, 242, 244, 0.64)); + text-decoration: none; + font-size: 0.88rem; + + &:hover { + color: #fff; + } + } + + .custom-input:not(.radio):not(.checkbox) { + background-color: rgba(255, 255, 255, 0.05); + border: 1px solid var(--page-line, rgba(255, 255, 255, 0.08)); + border-radius: 10px; + overflow: visible; + margin-top: 18px; + + .label { + color: var(--page-faint, rgba(241, 242, 244, 0.45)); + } + + input, + textarea { + color: #fff; + background: transparent; + + &:disabled { + background: transparent; + } } } } @@ -217,18 +237,18 @@ header { display: flex; position: sticky; align-items: center; - transition: all 1s ease-in-out; - background-color: rgba(0, 0, 0, 0); + height: 52px; + padding: 0 16px; + background-color: rgba(12, 13, 17, 0); backdrop-filter: blur(0px); - box-shadow: rgba(0, 0, 0, 0) 0px 2px 5px; - transition: background-color 0.3s, backdrop-filter 0.3s, box-shadow 0.3s; - + border-bottom: 1px solid transparent; + transition: background-color 0.25s ease, backdrop-filter 0.25s ease, border-color 0.25s ease; .user-avatar { height: fit-content; overflow: hidden; padding: 0; - margin: 0 10px; + margin: 0 6px; cursor: pointer; &:hover { @@ -236,27 +256,27 @@ header { } img { - height: 38px; - width: 38px; + height: 30px; + width: 30px; border-radius: 50%; object-fit: cover; } } >.icon { - height: 60px; - width: 60px; + height: 40px; + width: 40px; display: flex; align-items: center; justify-content: center; cursor: pointer; - font-size: 1.5rem; + font-size: 1.25rem; margin: 0; padding: 0; - border-radius: 4px; + border-radius: 8px; &:hover { - background-color: rgba(0, 0, 0, 0.5); + background-color: rgba(255, 255, 255, 0.06); } } @@ -264,7 +284,13 @@ header { display: none; } - @media screen and (max-width: 700px) { + @media screen and (max-width: 760px) { + .get-pro-btn { + padding: 0 10px !important; + margin: 0 4px 0 0 !important; + font-size: 0.75rem !important; + } + label[for='nav-menu-toggler']:not(.mask) { display: flex; height: 40px; @@ -284,29 +310,32 @@ header { #nav-menu-toggler:checked~.mask { z-index: unset; pointer-events: all; - background-color: rgba($color: #000000, $alpha: 0.2); + background-color: rgba(0, 0, 0, 0.45); } nav:nth-of-type(2) { flex-direction: column; + align-items: stretch; position: fixed; top: 0; left: 0; transform: translateX(-100%); - width: 40%; - min-width: 200px; - max-width: 250px; - height: 100vh; - z-index: 1; - background-color: var(--secondary-color); - transition: all 0.3s ease-in-out; + width: min(80vw, 280px); + height: 100dvh; + padding: 64px 12px 24px; + z-index: 2; + background-color: #16181e; + border-right: 1px solid rgba(255, 255, 255, 0.08); + transition: transform 0.25s ease; label, a { - margin-left: 0; + margin: 0; width: 100%; + height: 44px; + padding: 0 12px; box-sizing: border-box; - margin: 0; + border-radius: 8px; } } } @@ -323,19 +352,22 @@ header { label, a { - color: var(--secondary-text-color); + color: rgba(241, 242, 244, 0.72); display: inline-flex; text-decoration: none; - border-radius: 4px; - height: 30px; + border-radius: 8px; + height: 32px; padding: 0 10px; align-items: center; z-index: 1; + font-size: 0.9rem; + font-weight: 500; + letter-spacing: -0.01em; .icon { height: fit-content; width: fit-content; - margin-right: 10px; + margin-right: 8px; } &.play-button { @@ -349,41 +381,46 @@ header { &.logo { display: flex; align-items: center; + color: #fff; + padding-left: 4px; img { - height: 30px; - margin-right: 10px; + height: 26px; + margin-right: 8px; } .text { - font-size: 1.15rem; + font-size: 1.05rem; line-height: 1; - font-weight: 700; + font-weight: 600; + letter-spacing: -0.03em; } } - &:not(.logo):hover { - background-color: rgba(0, 0, 0, 0.5); + &:not(.logo):not(.get-pro-btn):hover { + color: #fff; + background-color: rgba(255, 255, 255, 0.06); } &.get-pro-btn { - background: linear-gradient(135deg, #f59e0b, #f97316); - color: #000; - font-weight: 700; - font-size: 0.85rem; - border-radius: 20px; - padding: 0 14px; + background: #f59e0b; + color: #111216; + font-weight: 600; + font-size: 0.8rem; + border-radius: 999px; + padding: 0 12px; gap: 4px; - margin: 0 6px; + margin: 0 8px 0 4px; justify-content: center; + height: 30px; .icon { - font-size: 0.9rem; + font-size: 0.85rem; margin: 0; } &:hover { - background: linear-gradient(135deg, #fbbf24, #fb923c); + background: #fbbf24; } } } @@ -391,6 +428,8 @@ header { } main { + position: relative; + z-index: 1; width: 100%; min-height: calc(100% - 50px - var(--announcement-height)); @@ -499,15 +538,50 @@ form { } select, -input, -button { - height: 30px; - border: none; - border-radius: 4px; +input:not([type='checkbox']):not([type='radio']):not([type='file']):not([type='range']):not([type='color']), +textarea { + height: 40px; + padding: 0 12px; + color: var(--page-text, #f1f2f4); + background-color: rgba(255, 255, 255, 0.05); + border: 1px solid var(--page-line, rgba(255, 255, 255, 0.08)); + border-radius: 10px; + caret-color: var(--page-text, #f1f2f4); + + &::placeholder { + color: var(--page-muted, rgba(241, 242, 244, 0.64)); + } + + &:focus { + outline: 2px solid var(--page-accent, #3499fe); + outline-offset: 0; + border-color: var(--page-accent, #3499fe); + } } -input { - padding: 0 10px; +select { + appearance: none; + cursor: pointer; + background-image: url("data:image/svg+xml,%3Csvg width='12' height='8' viewBox='0 0 12 8' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1 1L6 6L11 1' stroke='%23f1f2f4' stroke-width='1.6' stroke-linecap='round'/%3E%3C/svg%3E"); + background-repeat: no-repeat; + background-position: right 12px center; + padding-right: 36px; +} + +option, +optgroup { + background-color: #1c1f27; + color: #f1f2f4; +} + +input:-webkit-autofill, +input:-webkit-autofill:hover, +input:-webkit-autofill:focus, +textarea:-webkit-autofill, +select:-webkit-autofill { + -webkit-text-fill-color: #f1f2f4; + box-shadow: 0 0 0 1000px #1c1f27 inset; + transition: background-color 9999s ease-out; } button { @@ -598,15 +672,12 @@ code { } footer { - background: linear-gradient(180deg, - rgba(0, 0, 0, 0.05) 0%, - rgba(0, 0, 0, 0.3) 100%); - backdrop-filter: blur(30px); - border-top: 1px solid rgba(51, 153, 255, 0.15); + background: #0e1014; + border-top: 1px solid rgba(255, 255, 255, 0.06); position: relative; - z-index: 0; - padding: 60px 20px 40px; - margin-top: 100px; + z-index: 1; + padding: 56px 24px 36px; + margin-top: 80px; .footer-content { max-width: 1000px; @@ -637,12 +708,11 @@ footer { } h4 { - font-family: 'Lexend', sans-serif; - font-size: 0.8rem; + font-size: 0.75rem; font-weight: 600; text-transform: uppercase; - letter-spacing: 0.1em; - color: #fff; + letter-spacing: 0.08em; + color: rgba(255, 255, 255, 0.55); margin-bottom: 16px; } @@ -675,13 +745,10 @@ footer { } span { - font-family: 'Lexend', sans-serif; - font-size: 1.2rem; - font-weight: 700; - background: linear-gradient(135deg, #3399ff, #66b3ff); - -webkit-background-clip: text; - -webkit-text-fill-color: transparent; - background-clip: text; + font-size: 1.1rem; + font-weight: 600; + letter-spacing: -0.03em; + color: #fff; } } @@ -706,10 +773,9 @@ footer { transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); &:hover { - background: rgba(51, 153, 255, 0.1); - border-color: rgba(51, 153, 255, 0.4); - color: #3399ff; - transform: translateY(-2px); + background: rgba(255, 255, 255, 0.08); + border-color: rgba(255, 255, 255, 0.2); + color: #fff; } } } @@ -796,17 +862,18 @@ footer { position: fixed; top: 100px; right: 0; - width: 150px; + width: 180px; flex-direction: column; z-index: 999; - background-color: var(--secondary-color); - color: var(--secondary-text-color); - border-radius: 4px; + background-color: #16181e; + color: #f1f2f4; + border: 1px solid rgba(255, 255, 255, 0.08); + border-radius: 12px; overflow: hidden; - transform: scale(0.5); + transform: scale(0.96); transform-origin: top right; opacity: 0; - transition: all 0.15s ease; + transition: opacity 0.15s ease, transform 0.15s ease; pointer-events: none; .divider { @@ -832,7 +899,7 @@ footer { position: absolute; height: 100%; width: 100%; - background-color: rgba(0, 0, 0, 0.5); + background-color: rgba(255, 255, 255, 0.06); top: 0; left: 0; z-index: -1; diff --git a/client/main.view.js b/client/main.view.js index 38257bc..a1a41e8 100644 --- a/client/main.view.js +++ b/client/main.view.js @@ -43,7 +43,7 @@ export default ({ routes }) => ( Acode Acode -

Powerful, extensible, and open-source code editor for Android. Build anything, anywhere.

+

An extensible, powerful and open-source code editor for Android.

@@ -128,7 +128,7 @@ export default ({ routes }) => (

© {new Date().getFullYear()} Foxbiz Software Pvt. Ltd. All rights reserved.

-

Built with passion for developers

+

Open source under the MIT License

diff --git a/client/pages/FAQs/style.scss b/client/pages/FAQs/style.scss index 3f984b1..f31636b 100644 --- a/client/pages/FAQs/style.scss +++ b/client/pages/FAQs/style.scss @@ -1,13 +1,18 @@ #faqs { + max-width: 800px; + padding-top: clamp(2.5rem, 6vw, 4.5rem); + h1 { - margin: 20px; - font-size: 1.8rem; - font-weight: 700; - color: var(--primary-text-color); + margin: 0 20px 24px; + font-size: clamp(2.2rem, 5vw, 3.4rem); + font-weight: 500; + letter-spacing: -0.05em; + line-height: 1.1; + color: #fff; } .faq-search { - margin: 0 20px 20px; + margin: 0 20px 28px; .custom-input { margin-bottom: 8px; @@ -32,14 +37,14 @@ .faq-category { margin-bottom: 12px; - border: 1px solid var(--border-color, rgba(255, 255, 255, 0.08)); - border-radius: 8px; - background: var(--secondary-color, rgba(255, 255, 255, 0.03)); + border: 1px solid var(--page-line, rgba(255, 255, 255, 0.08)); + border-radius: 16px; + background: var(--page-surface, rgba(255, 255, 255, 0.035)); overflow: hidden; &[open] { - border-color: var(--button-color, #4fa3e3); - background: var(--secondary-color, rgba(255, 255, 255, 0.04)); + border-color: rgba(255, 255, 255, 0.14); + background: rgba(255, 255, 255, 0.04); } } @@ -75,8 +80,8 @@ .category-count { font-size: 0.8rem; - color: var(--secondary-text-color); - background: var(--primary-color, #1a1a2e); + color: var(--page-muted, rgba(241, 242, 244, 0.64)); + background: rgba(255, 255, 255, 0.06); padding: 3px 10px; border-radius: 12px; white-space: nowrap; @@ -211,10 +216,10 @@ .category-select { width: 100%; padding: 8px 12px; - border-radius: 6px; - border: 1px solid var(--border-color, rgba(255, 255, 255, 0.1)); - background: var(--primary-color, #1a1a2e); - color: var(--primary-text-color); + border-radius: 10px; + border: 1px solid var(--page-line, rgba(255, 255, 255, 0.08)); + background: rgba(255, 255, 255, 0.05); + color: var(--page-text, #f1f2f4); font-size: 0.9rem; } diff --git a/client/pages/aboutUs/style.scss b/client/pages/aboutUs/style.scss index 94f0bef..32c87d6 100644 --- a/client/pages/aboutUs/style.scss +++ b/client/pages/aboutUs/style.scss @@ -1,5 +1,3 @@ -@import url('https://fonts.googleapis.com/css2?family=Lexend:wght@400;500;600;700;800&display=swap'); - #about-us { max-width: 900px; margin: 0 auto; @@ -10,15 +8,11 @@ margin-bottom: 80px; h1 { - font-family: 'Lexend', sans-serif; - font-size: clamp(2rem, 5vw, 3.2rem); - font-weight: 800; + font-size: clamp(2.2rem, 5vw, 3.4rem); + font-weight: 500; line-height: 1.1; - letter-spacing: -0.02em; - background: linear-gradient(135deg, #00d4ff 0%, #3399ff 50%, #a78bfa 100%); - -webkit-background-clip: text; - -webkit-text-fill-color: transparent; - background-clip: text; + letter-spacing: -0.05em; + color: #fff; margin-bottom: 16px; } @@ -39,19 +33,19 @@ } .section-label { - font-family: 'Lexend', sans-serif; + font-family: inherit; font-size: 0.8rem; font-weight: 600; text-transform: uppercase; letter-spacing: 0.1em; - color: #00d4ff; + color: #3499fe; margin-bottom: 12px; } h2 { - font-family: 'Lexend', sans-serif; + font-family: inherit; font-size: 2rem; - font-weight: 700; + font-weight: 500; color: #ffffff; margin-bottom: 20px; letter-spacing: -0.02em; @@ -91,7 +85,7 @@ inset: 0; border-radius: 16px; background: radial-gradient(circle at top right, - rgba(0, 212, 255, 0.06), + rgba(52, 153, 254, 0.06), transparent 60%); opacity: 0; transition: opacity 0.4s ease; @@ -99,7 +93,7 @@ &:hover { background: rgba(255, 255, 255, 0.06); - border-color: rgba(0, 212, 255, 0.2); + border-color: rgba(52, 153, 254, 0.2); transform: translateY(-4px); box-shadow: 0 12px 32px rgba(0, 0, 0, 0.35); z-index: 2; @@ -110,7 +104,7 @@ .team-avatar { transform: scale(1.05); - box-shadow: 0 0 0 3px rgba(0, 212, 255, 0.3); + box-shadow: 0 0 0 3px rgba(52, 153, 254, 0.3); } } @@ -134,7 +128,7 @@ } .team-name { - font-family: 'Lexend', sans-serif; + font-family: inherit; font-size: 1rem; font-weight: 600; color: #ffffff; @@ -188,9 +182,9 @@ } &:hover { - background: rgba(0, 212, 255, 0.12); - border-color: rgba(0, 212, 255, 0.25); - color: #00d4ff; + background: rgba(52, 153, 254, 0.12); + border-color: rgba(52, 153, 254, 0.25); + color: #3499fe; } } } @@ -260,7 +254,7 @@ font-size: 0.95rem; a { - color: #00d4ff; + color: #3499fe; text-decoration: none; font-weight: 500; @@ -289,4 +283,4 @@ } } } -} \ No newline at end of file +} diff --git a/client/pages/account/style.scss b/client/pages/account/style.scss index cd2a000..1b17cbf 100644 --- a/client/pages/account/style.scss +++ b/client/pages/account/style.scss @@ -7,7 +7,12 @@ min-height: calc(100vh - 50px); width: 100%; max-width: unset !important; - z-index: 0; + z-index: 1; + padding: 48px 16px; + + canvas#background { + display: none; + } .register-card { width: 100%; @@ -42,29 +47,34 @@ .social-link { display: flex; - align-items: center; + align-items: flex-end; + gap: 0; .custom-input { - border-radius: 0 4px 4px 0; + flex: 1; + min-width: 0; + margin-top: 18px; + border-radius: 0 10px 10px 0; } .icon { display: flex; align-items: center; justify-content: center; - height: 40px; - width: 40px; - background-color: white; - font-size: 1.4rem; - color: #39f; - border-radius: 4px 0 0 4px; - - &.x { - color: black; - } + height: 42px; + width: 42px; + margin-bottom: 10px; + background-color: rgba(255, 255, 255, 0.06); + font-size: 1.15rem; + color: #fff; + border-radius: 10px 0 0 10px; + border: 1px solid var(--page-line, rgba(255, 255, 255, 0.08)); + border-right: 0; + flex-shrink: 0; + &.x, &.github { - color: #232925; + color: #fff; } } } diff --git a/client/pages/admin/style.scss b/client/pages/admin/style.scss index 0abbb7e..1092eb8 100644 --- a/client/pages/admin/style.scss +++ b/client/pages/admin/style.scss @@ -5,13 +5,18 @@ h1 { margin: 0; padding: 10px 0; + font-size: clamp(1.8rem, 4vw, 2.6rem); + font-weight: 500; + letter-spacing: -0.04em; + color: #fff; } .admin-tabs { display: flex; gap: 4px; padding: 6px; - background-color: var(--secondary-color); + background-color: var(--page-surface, rgba(255, 255, 255, 0.035)); + border: 1px solid var(--page-line, rgba(255, 255, 255, 0.08)); border-radius: 12px; margin: 12px 0 0; overflow-x: auto; @@ -37,9 +42,9 @@ transition: all 0.2s ease; &.active { - background-color: var(--primary-color); + background-color: rgba(255, 255, 255, 0.08); color: #fff; - box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3); + box-shadow: none; } &:not(.active):hover { @@ -102,9 +107,9 @@ } .chart-card { - background-color: var(--secondary-color); - border: 1px solid rgba(255, 255, 255, 0.06); - border-radius: 14px; + background-color: var(--page-surface, rgba(255, 255, 255, 0.035)); + border: 1px solid var(--page-line, rgba(255, 255, 255, 0.08)); + border-radius: 16px; padding: 20px; display: flex; flex-direction: column; @@ -218,7 +223,7 @@ background-color: rgba(255, 255, 255, 0.04); color: inherit; font-size: 0.9em; - appearance: auto; + appearance: none; &:focus { outline: none; @@ -531,7 +536,7 @@ font-size: 0.95em; line-height: 1.5; height: auto; - appearance: auto; + appearance: none; &:focus { outline: none; @@ -938,7 +943,7 @@ line-height: 1.5; min-width: 150px; cursor: pointer; - appearance: auto; + appearance: none; flex-shrink: 0; height: fit-content; diff --git a/client/pages/changePassword/style.scss b/client/pages/changePassword/style.scss index 0889e05..48154e6 100644 --- a/client/pages/changePassword/style.scss +++ b/client/pages/changePassword/style.scss @@ -7,7 +7,12 @@ min-height: calc(100% - 50px - var(--announcement-height)); width: 100%; max-width: unset !important; - z-index: 0; + z-index: 1; + padding: 48px 16px; + + canvas#background { + display: none; + } .email-otp-group { margin-bottom: 16px; diff --git a/client/pages/contactUs/style.scss b/client/pages/contactUs/style.scss index 0027ca2..6a22e77 100644 --- a/client/pages/contactUs/style.scss +++ b/client/pages/contactUs/style.scss @@ -1,21 +1,15 @@ -@import url('https://fonts.googleapis.com/css2?family=Lexend:wght@400;500;600;700;800&display=swap'); - #contact-us { max-width: 900px; margin: 0 auto; padding: 60px 24px 60px; h1 { - font-family: 'Lexend', sans-serif; - font-size: clamp(2rem, 5vw, 3.2rem); - font-weight: 800; + font-size: clamp(2.2rem, 5vw, 3.4rem); + font-weight: 500; line-height: 1.1; - letter-spacing: -0.02em; + letter-spacing: -0.05em; text-align: center; - background: linear-gradient(135deg, #00d4ff 0%, #3399ff 50%, #a78bfa 100%); - -webkit-background-clip: text; - -webkit-text-fill-color: transparent; - background-clip: text; + color: #fff; margin-bottom: 16px; } @@ -48,7 +42,7 @@ inset: 0; border-radius: 16px; background: radial-gradient(circle at top right, - rgba(0, 212, 255, 0.06), + rgba(52, 153, 254, 0.06), transparent 60%); opacity: 0; transition: opacity 0.4s ease; @@ -56,7 +50,7 @@ &:hover { background: rgba(255, 255, 255, 0.06); - border-color: rgba(0, 212, 255, 0.2); + border-color: rgba(52, 153, 254, 0.2); transform: translateY(-4px); box-shadow: 0 12px 32px rgba(0, 0, 0, 0.35); @@ -67,7 +61,7 @@ .icon.email { font-size: 1.8rem; - color: #00d4ff; + color: #3499fe; flex-shrink: 0; position: relative; z-index: 1; @@ -80,7 +74,7 @@ z-index: 1; h2 { - font-family: 'Lexend', sans-serif; + font-family: inherit; font-size: 0.75rem; font-weight: 500; text-transform: uppercase; @@ -90,7 +84,7 @@ } a { - font-family: 'Lexend', sans-serif; + font-family: inherit; font-size: 1.2rem; font-weight: 600; color: #ffffff; @@ -98,7 +92,7 @@ transition: color 0.2s ease; &:hover { - color: #00d4ff; + color: #3499fe; } } @@ -119,19 +113,19 @@ } .section-label { - font-family: 'Lexend', sans-serif; + font-family: inherit; font-size: 0.8rem; font-weight: 600; text-transform: uppercase; letter-spacing: 0.1em; - color: #00d4ff; + color: #3499fe; margin-bottom: 12px; } h2 { - font-family: 'Lexend', sans-serif; + font-family: inherit; font-size: 2rem; - font-weight: 700; + font-weight: 500; color: #ffffff; margin-bottom: 24px; letter-spacing: -0.02em; @@ -154,7 +148,7 @@ border-radius: 12px; color: rgba(255, 255, 255, 0.6); text-decoration: none; - font-family: 'Lexend', sans-serif; + font-family: inherit; font-size: 0.85rem; font-weight: 500; transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); @@ -167,8 +161,8 @@ &:hover { background: rgba(255, 255, 255, 0.06); - border-color: rgba(0, 212, 255, 0.2); - color: #00d4ff; + border-color: rgba(52, 153, 254, 0.2); + color: #3499fe; transform: translateY(-2px); box-shadow: 0 8px 24px rgba(0, 0, 0, 0.3); diff --git a/client/pages/home/index.js b/client/pages/home/index.js index e4b2624..993855c 100644 --- a/client/pages/home/index.js +++ b/client/pages/home/index.js @@ -2,23 +2,30 @@ import './style.scss'; import Reactive from 'html-tag-js/reactive'; import Ref from 'html-tag-js/ref'; -import background from 'lib/background'; -import { hideLoading, showLoading } from 'lib/helpers'; import { fetchSponsorMix } from 'lib/sponsors'; import { TIER_ORDER } from 'lib/sponsorTiers'; -import phoneImageJpg from 'res/phone.jpg'; -import phoneImageWebp from 'res/phone.webp'; -import tabletImageJpg from 'res/tablet.jpg'; -import tabletImageWebp from 'res/tablet.webp'; -import icons from './icons'; +import shotAgentJpg from 'res/acode-shot-agent.jpg'; +import shotAgentWebp from 'res/acode-shot-agent.webp'; +import shotEditorJpg from 'res/acode-shot-editor.jpg'; +import shotEditorWebp from 'res/acode-shot-editor.webp'; +import shotPanesJpg from 'res/acode-shot-panes.jpg'; +import shotPanesWebp from 'res/acode-shot-panes.webp'; +import shotTerminalJpg from 'res/acode-shot-terminal.jpg'; +import shotTerminalWebp from 'res/acode-shot-terminal.webp'; -export default async function home() { - const canvas = Ref(); - const pluginCount = Reactive('...'); - const stars = Reactive('...'); - const forks = Reactive('...'); +const PLAY_URL = + 'https://play.google.com/store/apps/details?id=com.foxdebug.acodefree&pcampaignid=pcampaignidMKT-Other-global-all-co-prtnr-py-PartBadge-Mar2515-1'; +const FDROID_URL = 'https://f-droid.org/en/packages/com.foxdebug.acode/'; +const GITHUB_URL = 'https://github.com/acode-foundation/acode'; +const CONTRIBUTORS_URL = 'https://api.github.com/repos/acode-foundation/acode/contributors?per_page=30'; - showLoading(); +export default function home() { + const pluginCount = Reactive('250+'); + const stars = Reactive('…'); + const forks = Reactive('…'); + const pluginsMount = Ref(); + const sponsorsMount = Ref(); + const contributorsMount = Ref(); fetch('https://api.github.com/repos/acode-foundation/acode') .then((res) => res.json()) @@ -31,122 +38,324 @@ export default async function home() { forks.value = '700+'; }); - let plugins = []; - try { - const { count } = await (await fetch('/api/plugins/count')).json(); - const pluginIds = await (await fetch('/api/plugins?limit=4&sort=downloads&supported_editor=cm')).json(); + loadPlugins(pluginsMount, pluginCount); + loadSponsors(sponsorsMount); + loadContributors(contributorsMount); - pluginCount.value = count.toLocaleString(); - plugins = await Promise.all(pluginIds.map(async (plugin) => )); - } catch (_error) { - // ignore - } + return ( +
+
- ); +
{sponsors.map(renderSponsorCard)}
+
, + ); + } catch { + // ignore + } +} + +async function loadContributors(mount) { + try { + const contributorList = await (await fetch(CONTRIBUTORS_URL)).json(); + if (!Array.isArray(contributorList)) return; + + const contributors = contributorList.filter((person) => person?.login && !person.login.includes('[bot]')).slice(0, 24); + if (!contributors.length) return; + + attach( + mount, +
+

Built in the open.

+

Acode is MIT-licensed. These are some of the people who ship it.

+
+ {contributors.map((person) => ( + + {person.login} + + ))} +
+ + + View the repo + +
, + ); + } catch { + // ignore + } +} + +function avatarUrl(url) { + if (!url) return ''; + return `${url}${url.includes('?') ? '&' : '?'}s=80`; } -/** - * GitHub button component to display stars, forks, and downloads. - * @param {object} props - * @param {string} props.url - * @param {string} props.title - * @param {string} props.count - * @param {'github'|'fork'|'download'|'star'} [props.icon] - * @returns - */ -async function GhButton({ url, title, count, icon = 'github' }) { +function Shot({ className, webp, jpg, alt, kicker, caption, width, height, priority }) { return ( - -
- {icons[icon] ?? } - {title} +
+
+ + + {alt} +
-
{count}
-
+ {kicker || caption ? ( +
+ {kicker ? {kicker} : null} + {caption ? {caption} : null} +
+ ) : null} +
); } @@ -167,7 +376,6 @@ function renderSponsorCard(sponsor) { const hasImage = ['gold', 'platinum', 'titanium'].includes(tier); const tierLabel = tier.charAt(0).toUpperCase() + tier.slice(1); - const Tag = website ? 'a' : 'div'; return ( @@ -191,14 +399,28 @@ function renderSponsorCard(sponsor) { ); } +function formatDownloads(value) { + const count = Number(value) || 0; + if (count >= 1_000_000) return `${(count / 1_000_000).toFixed(1).replace(/\.0$/, '')}M`; + if (count >= 1000) return `${(count / 1000).toFixed(count >= 10_000 ? 0 : 1).replace(/\.0$/, '')}k`; + return `${count}`; +} + function Plugin({ data }) { - const { name, icon, downloads, id } = data; + const { name, downloads, id, author } = data; return ( -
  • window.open(`./plugin/${id}`)}> - {`${name} -

    {name}

    - {downloads?.toLocaleString()} downloads +
  • + + + + + {name} + ↓ {formatDownloads(downloads)} + + {author ? {author} : null} + +
  • ); } diff --git a/client/pages/home/style.scss b/client/pages/home/style.scss index 8e65264..2d6f4f8 100644 --- a/client/pages/home/style.scss +++ b/client/pages/home/style.scss @@ -1,611 +1,770 @@ -@import url('https://fonts.googleapis.com/css2?family=Lexend:wght@300;400;500;600;700;800&family=JetBrains+Mono:wght@400;500;600&display=swap'); +@import url('https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500&display=swap'); #home { - max-width: none; + --home-text: #f1f2f4; + --home-muted: rgba(241, 242, 244, 0.64); + --home-faint: rgba(241, 242, 244, 0.4); + --home-line: rgba(255, 255, 255, 0.08); + --home-accent: #6ea8ff; + --home-surface: rgba(255, 255, 255, 0.035); + --home-max: 1120px; + --home-display: 'Instrument Sans', 'Montserrat', sans-serif; + --home-mono: 'JetBrains Mono', ui-monospace, monospace; + + position: relative; width: 100%; + max-width: none; + margin: 0; + padding: 0 0 4rem; + min-height: calc(100dvh - 50px); display: flex; - align-items: center; - justify-content: center; flex-direction: column; - text-align: center; - min-height: calc(100vh - 50px); - scrollbar-width: none; // hide scrollbar in Firefox + align-items: center; + text-align: left; + overflow: hidden; + color: var(--home-text); + font-family: var(--home-display); + box-sizing: border-box; + + *, + *::before, + *::after { + box-sizing: border-box; + } - // hide scrollbar - &::-webkit-scrollbar { - display: none; + a { + margin: 0; + padding: 0; + font-size: inherit; + font-family: inherit; + color: inherit; + text-decoration: none; + display: inline-flex; + align-items: center; } - *:not(.chip) { + h1, + h2, + h3, + p, + ul, + figure, + figcaption { margin: 0; padding: 0; - box-sizing: border-box; + } + + img { + max-width: 100%; + min-width: 0; + } + + figure { + min-width: 0; + max-width: 100%; + } + + .home-atmosphere { + pointer-events: none; + position: absolute; + inset: 0; + z-index: 0; + background: + radial-gradient(80% 42% at 50% -8%, rgba(110, 168, 255, 0.16), transparent 58%), + radial-gradient(40% 28% at 80% 18%, rgba(51, 153, 255, 0.06), transparent 70%); + + &::after { + content: ''; + position: absolute; + inset: 0; + opacity: 0.028; + background-image: url("data:image/svg+xml;utf8,"); + } + } + + > *:not(.home-atmosphere) { + position: relative; z-index: 1; } - .download-buttons { - gap: 10px; - display: none; - margin-top: 20px; - align-items: center; - justify-content: center; + .home-brand-word { + display: inline-flex; + align-items: baseline; + white-space: nowrap; + gap: 0.02em; + } - a { - display: inline-flex; - align-items: center; - gap: 8px; - height: 44px; - padding: 0 20px; - text-decoration: none; - background: rgba(255, 255, 255, 0.05); - border: 1px solid rgba(255, 255, 255, 0.15); - border-radius: 12px; - color: rgba(255, 255, 255, 0.9); - font-size: 0.9rem; - font-weight: 500; - transition: all 0.2s ease; + .home-logo-a { + display: inline-block; + height: 0.79em; + width: calc(0.79em * 543 / 409); + height: 1.1cap; + width: calc(1.1cap * 543 / 409); + flex: 0 0 auto; + line-height: 0; + color: #3499fe; + transform: translateY(0.04em); + + svg { + display: block; + width: 100%; + height: 100%; + overflow: visible; + } + } - &:hover { - background: rgba(255, 255, 255, 0.1); - border-color: rgba(255, 255, 255, 0.25); - transform: translateY(-1px); - } + .home-hero { + width: 100%; + max-width: var(--home-max); + padding: clamp(4.5rem, 10vw, 7.5rem) 24px 2.25rem; + text-align: center; + display: flex; + flex-direction: column; + align-items: center; + animation: home-rise 0.7s ease both; - &.play-store { - svg { - color: #00d4ff; - } - } + h1 { + width: 100%; + max-width: 18ch; + font-size: clamp(2.75rem, 8vw, 5.4rem); + font-weight: 500; + letter-spacing: -0.055em; + line-height: 0.95; + text-wrap: balance; + color: #fff; + overflow: visible; + } - &.f-droid { - svg { - color: #33ff99; - } - } + .home-lede { + max-width: 36rem; + margin-top: 1.35rem; + font-size: clamp(1.02rem, 1.6vw, 1.2rem); + line-height: 1.55; + color: var(--home-muted); + font-weight: 400; + text-wrap: pretty; } } - .intro { + .home-actions { display: flex; - justify-content: space-between; - width: 100%; - min-height: 500px; - max-width: 1300px; + flex-wrap: wrap; align-items: center; - margin-bottom: 80px; - padding: 80px 40px 40px; - position: relative; - gap: 40px; + justify-content: center; + gap: 10px; + margin-top: 2rem; + } - .preview-image { - position: relative; - display: flex; - width: 45%; - max-width: 500px; + .home-btn { + height: 46px; + padding: 0 18px; + border-radius: 10px; + font-size: 0.95rem; + font-weight: 600; + letter-spacing: -0.01em; + gap: 8px; + white-space: nowrap; + transition: transform 0.2s ease, background-color 0.2s ease, border-color 0.2s ease; + + .icon { + font-size: 1.05rem; + line-height: 1; + + &::before { + color: currentColor; + } + } - picture { - z-index: 0; + &:hover { + transform: translateY(-1px); + } - &:hover { - img { - transform: scale(1.02); - box-shadow: 0 20px 50px rgba(0, 0, 0, 0.6); - } - } + &:active { + transform: translateY(1px) scale(0.98); + } - img { - width: 100%; - border-radius: 12px; - object-fit: contain; - transition: all 0.3s ease; - border: 1px solid rgba(255, 255, 255, 0.1); - box-shadow: 0 12px 40px rgba(0, 0, 0, 0.5); - } + &:focus-visible { + outline: 2px solid var(--home-accent); + outline-offset: 3px; + } + } - &.phone { - top: 0%; - left: 50%; - z-index: 1; - position: absolute; - transform: translate(-30%, 10%); + .home-btn-primary { + background: #f4f6f8; + color: #111216; - img { - width: 60%; - } - } - } + &:hover { + background: #fff; } + } - .heading { - flex: 1; - padding: 0 20px; - text-align: left; - display: flex; - flex-direction: column; - align-items: flex-start; - - >p { - font-family: 'Lexend', sans-serif; - font-size: clamp(1.8rem, 5vw, 3rem); - line-height: 1.1; - margin-bottom: 24px; - font-weight: 800; - letter-spacing: -0.03em; - color: #ffffff; - max-width: 600px; + .home-btn-ghost { + background: transparent; + color: var(--home-text); + border: 1px solid var(--home-line); + + &:hover { + background: var(--home-surface); + border-color: rgba(255, 255, 255, 0.16); + } + } + + .home-btn-text { + height: 46px; + padding: 0 12px; + gap: 8px; + color: var(--home-muted); + font-size: 0.92rem; + font-weight: 500; + border-radius: 10px; + + .icon { + font-size: 1.05rem; + line-height: 1; + + &::before { + color: currentColor; } + } - .stat-badge { - display: inline-flex; - align-items: center; - gap: 8px; - margin-bottom: 18px; - padding: 8px 16px; - background: rgba(0, 212, 255, 0.1); - border: 1px solid rgba(0, 212, 255, 0.3); - border-radius: 24px; - - .stat-number { - font-family: 'Lexend', sans-serif; - font-size: 1.4rem; - font-weight: 700; - color: #00d4ff; - line-height: 1; - } + &:hover { + color: #fff; + } - .stat-label { - font-size: 0.9rem; - color: rgba(255, 255, 255, 0.7); - font-weight: 500; - text-transform: lowercase; - letter-spacing: 0.02em; - } + &:focus-visible { + outline: 2px solid var(--home-accent); + outline-offset: 3px; + } + } + + .home-shot-frame { + overflow: hidden; + min-width: 0; + + picture, + img { + display: block; + width: 100%; + min-width: 0; + } + } + + .home-gallery { + width: calc(100% - 32px); + max-width: 840px; + margin: 1.5rem auto 0; + animation: home-rise 0.85s ease 0.08s both; + + &__devices { + display: grid; + grid-template-columns: repeat(2, minmax(0, 1fr)); + width: 100%; + padding: clamp(28px, 4vw, 48px) 0 clamp(24px, 3vw, 36px); + border: 1px solid var(--home-line); + border-radius: 18px; + overflow: hidden; + background: + radial-gradient(circle at 25% 12%, rgba(52, 153, 254, 0.08), transparent 30%), + radial-gradient(circle at 75% 12%, rgba(52, 153, 254, 0.08), transparent 30%), + #0c0d11; + box-shadow: + 0 24px 64px rgba(8, 10, 16, 0.45), + inset 0 1px 0 rgba(255, 255, 255, 0.08); + } + + &__phone { + width: 100%; + min-width: 0; + margin: 0; + padding: 0 clamp(24px, 4vw, 56px); + + .home-shot-frame { + width: 100%; + max-width: 300px; + margin: 0 auto; + border-radius: 11px; + background: #090a0d; } - .gh-buttons { - display: flex; - flex-wrap: wrap; - gap: 12px; - align-items: center; - margin-bottom: 20px; - - .gh-button-modern { - display: inline-flex; - align-items: center; - text-decoration: none; - background: rgba(255, 255, 255, 0.03); - border: 1px solid rgba(255, 255, 255, 0.1); - border-radius: 8px; - overflow: hidden; - font-size: 0.75rem; - height: 28px; - transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1); - - &:hover { - border-color: rgba(0, 212, 255, 0.4); - background: rgba(0, 212, 255, 0.05); - transform: translateY(-2px); - box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2); - - .gh-button-main { - background: rgba(255, 255, 255, 0.05); - color: #00d4ff; - } - - .gh-button-count { - color: #fff; - } - } - - .gh-button-main { - display: flex; - align-items: center; - gap: 6px; - padding: 0 10px; - height: 100%; - background: rgba(255, 255, 255, 0.03); - color: rgba(255, 255, 255, 0.8); - font-weight: 600; - border-right: 1px solid rgba(255, 255, 255, 0.1); - transition: all 0.2s ease; - } - - .gh-button-count { - padding: 0 10px; - height: 100%; - display: flex; - align-items: center; - color: rgba(255, 255, 255, 0.6); - font-weight: 500; - transition: all 0.2s ease; - } - } + img { + height: auto; } - .download-buttons { + figcaption { + padding: 16px 4px 0; display: flex; - gap: 12px; + flex-direction: column; align-items: center; - flex-wrap: wrap; - margin-bottom: 32px; - - a { - display: inline-flex; - align-items: center; - gap: 10px; - height: 52px; - padding: 0 24px; - text-decoration: none; - background: rgba(255, 255, 255, 0.05); - border: 1px solid rgba(255, 255, 255, 0.1); - border-radius: 14px; - color: rgba(255, 255, 255, 0.9); - font-size: 1rem; + gap: 4px; + text-align: center; + + strong { + font-size: 0.88rem; font-weight: 600; - transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); - - &:hover { - background: rgba(255, 255, 255, 0.08); - border-color: rgba(255, 255, 255, 0.2); - transform: translateY(-2px); - box-shadow: 0 8px 24px rgba(0, 0, 0, 0.3); - } - - &.play-store { - background: #00d4ff; - color: #000; - border: none; - - svg { - color: #000; - width: 22px; - height: 22px; - } - - &:hover { - background: #00c2eb; - box-shadow: 0 10px 30px rgba(0, 212, 255, 0.35); - } - } - - &.f-droid { - svg { - color: #33ff99; - width: 20px; - height: 20px; - } - } + letter-spacing: -0.03em; + color: #fff; + } + + span { + max-width: 30ch; + font-size: 0.76rem; + line-height: 1.4; + color: var(--home-muted); } } } - @media screen and (max-width: 900px) { - flex-direction: column; - padding: 40px 20px; + .home-gallery__phone + .home-gallery__phone { + border-left: 1px solid var(--home-line); + } + } - .preview-image { - width: 100%; - max-width: 400px; - margin-bottom: 40px; - } + .home-proof { + width: 100%; + max-width: var(--home-max); + margin: 3rem auto 0; + padding: 1.15rem 24px 0; + list-style: none; + display: flex; + flex-wrap: wrap; + justify-content: center; + gap: 10px 0; + color: var(--home-faint); + font-size: 0.88rem; + font-family: var(--home-mono); + border-top: 1px solid var(--home-line); - .heading { - width: 100%; - padding: 0 16px; - align-items: center; - text-align: center; + li { + display: inline-flex; + align-items: center; + } - >p { - font-size: clamp(1.6rem, 8vw, 2.2rem); - } + li + li::before { + content: ''; + width: 3px; + height: 3px; + margin: 0 16px; + border-radius: 50%; + background: rgba(241, 242, 244, 0.28); + } - .downloads-badge { - justify-content: center; - } + span { + color: var(--home-text); + font-variant-numeric: tabular-nums; + margin-right: 0.35em; + } - .gh-buttons { - justify-content: center; - } + a:hover { + color: var(--home-text); - .featured-in { - justify-content: center; - } + span { + color: var(--home-accent); } } + } - @media screen and (max-width: 600px) { - padding: 30px 20px; + .home-agent, + .home-panes { + width: calc(100% - 32px); + max-width: 1200px; + margin-top: clamp(5rem, 12vw, 8rem); + display: flex; + flex-direction: column; + align-items: center; + } - .heading { - padding: 0 10px; + .home-agent__copy, + .home-panes__copy { + width: 100%; + max-width: 38rem; + padding: 0 24px; + text-align: center; + margin-bottom: 2rem; - >p { - font-size: 1.5rem; - } + h2 { + font-size: clamp(1.8rem, 3.4vw, 2.7rem); + font-weight: 500; + letter-spacing: -0.04em; + line-height: 1.12; + text-wrap: balance; + color: #fff; + } - .downloads-badge { - .downloads-number { - font-size: 1.7rem; - } - } + p { + margin-top: 1rem; + margin-left: auto; + margin-right: auto; + font-size: 1.05rem; + line-height: 1.6; + color: var(--home-muted); + max-width: 40ch; + text-wrap: pretty; + } + } - .download-buttons { - a { - height: 40px; - padding: 0 16px; - font-size: 0.85rem; - - svg { - width: 16px; - height: 16px; - } - } - } + .home-agent__shot, + .home-panes__shot { + width: 100%; + margin: 0; + background: #0c0d11; + border: 1px solid var(--home-line); + border-radius: 16px; + overflow: hidden; + box-shadow: 0 24px 64px rgba(8, 10, 16, 0.45); + transition: + transform 0.3s cubic-bezier(0.22, 1, 0.36, 1), + border-color 0.3s ease, + box-shadow 0.3s ease; + + picture, + img { + display: block; + width: 100%; + min-width: 0; + height: auto; + } + + @media (hover: hover) and (pointer: fine) { + &:hover { + transform: translateY(-3px); + border-color: rgba(255, 255, 255, 0.16); + box-shadow: 0 28px 72px rgba(8, 10, 16, 0.52); } } } - @media screen and (max-width: 900px) { - .download-buttons { - display: flex; + .home-panes__shot figcaption { + padding: 11px 14px 13px; + border-top: 1px solid var(--home-line); + background: #0c0d11; + font-family: var(--home-mono); + font-size: 0.72rem; + letter-spacing: 0.01em; + color: var(--home-faint); + text-align: left; + + span { + display: block; } } - .featured-plugins { - margin-top: 80px; + .home-capabilities { width: 100%; - max-width: 1000px; - - .section-header { - display: flex; - justify-content: space-between; - align-items: flex-end; - margin-bottom: 32px; - padding: 0 10px; - - h2 { - font-family: 'Lexend', sans-serif; - font-size: 1.8rem; - font-weight: 700; - color: #ffffff; + max-width: var(--home-max); + margin-top: clamp(5rem, 12vw, 8rem); + padding: 0 24px; + display: grid; + grid-template-columns: 1fr 1fr; + grid-auto-flow: dense; + gap: 0; + + article { + padding: 2rem 1.6rem 2.15rem 0; + border-top: 1px solid var(--home-line); + + &:nth-child(even) { + padding-left: 1.6rem; + padding-right: 0; + border-left: 1px solid var(--home-line); } - .see-all { - color: #00d4ff; - text-decoration: none; - font-size: 0.9rem; + h3 { + font-size: 1.05rem; font-weight: 600; - display: flex; - align-items: center; - gap: 4px; - transition: opacity 0.2s ease; - - &:hover { - opacity: 0.8; - text-decoration: underline; - } - - .icon { - font-size: 0.8rem; - } + letter-spacing: -0.03em; + color: #fff; } - @media screen and (max-width: 600px) { - flex-direction: column; - align-items: center; - gap: 12px; - text-align: center; + p { + margin-top: 0.7rem; + font-size: 0.95rem; + line-height: 1.55; + color: var(--home-muted); + max-width: 36ch; } } + } - &__list { - display: grid; - grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); - gap: 20px; - padding: 10px; - list-style: none; + .home-contributors { + width: 100%; + max-width: 52rem; + margin-top: clamp(5rem, 12vw, 8rem); + padding: 0 24px; + text-align: center; + display: flex; + flex-direction: column; + align-items: center; - li { - background: rgba(255, 255, 255, 0.03); - border: 1px solid rgba(255, 255, 255, 0.08); - border-radius: 20px; - padding: 32px 24px; - display: flex; - flex-direction: column; - align-items: center; - text-align: center; - cursor: pointer; - transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1); + h2 { + font-size: clamp(1.8rem, 3.4vw, 2.7rem); + font-weight: 500; + letter-spacing: -0.04em; + line-height: 1.12; + color: #fff; + } + + > p { + margin-top: 0.9rem; + font-size: 1.05rem; + line-height: 1.6; + color: var(--home-muted); + max-width: 36ch; + text-wrap: pretty; + } + + &__faces { + display: flex; + flex-wrap: wrap; + justify-content: center; + margin-top: 1.75rem; + padding-left: 10px; + max-width: 44rem; + isolation: isolate; + + a { position: relative; + z-index: 0; + width: 40px; + height: 40px; + margin: 0 0 6px -10px; + border-radius: 50%; + border: 2px solid #12141a; overflow: hidden; - - &::before { - content: ''; - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; - background: radial-gradient(circle at top right, - rgba(0, 212, 255, 0.1), - transparent 70%); - opacity: 0; - transition: opacity 0.4s ease; + background: #1a1c22; + transform: translateZ(0); + transition: + transform 0.28s cubic-bezier(0.22, 1, 0.36, 1), + box-shadow 0.28s cubic-bezier(0.22, 1, 0.36, 1), + z-index 0s 0.28s; + + &:hover, + &:focus-visible { + z-index: 2; + transform: scale(1.16) translateY(-3px); + box-shadow: 0 10px 22px rgba(0, 0, 0, 0.45); + transition: + transform 0.28s cubic-bezier(0.22, 1, 0.36, 1), + box-shadow 0.28s cubic-bezier(0.22, 1, 0.36, 1), + z-index 0s; } img { - width: 80px; - height: 80px; - border-radius: 16px; - margin-bottom: 20px; - object-fit: contain; - transition: all 0.4s ease; - filter: drop-shadow(0 8px 16px rgba(0, 0, 0, 0.3)); + width: 100%; + height: 100%; + object-fit: cover; + display: block; } + } + } - h4 { - font-family: 'Lexend', sans-serif; - font-size: 1.1rem; - font-weight: 600; - color: #fff; - margin-bottom: 8px; - } + &__link { + margin-top: 1.35rem; + gap: 8px; + color: var(--home-muted); + font-size: 0.92rem; + font-weight: 500; - small { - font-size: 0.85rem; - color: rgba(255, 255, 255, 0.5); - font-weight: 500; - } + .icon { + font-size: 1.05rem; + line-height: 1; - &:hover { - transform: translateY(-8px); - background: rgba(255, 255, 255, 0.06); - border-color: rgba(0, 212, 255, 0.3); - box-shadow: 0 20px 40px rgba(0, 0, 0, 0.4); - - &::before { - opacity: 1; - } - - img { - transform: scale(1.1) rotate(5deg); - filter: drop-shadow(0 12px 24px rgba(0, 212, 255, 0.3)); - } + &::before { + color: currentColor; } } + + &:hover { + color: #fff; + } } } - .sponsors-section { - margin-top: 60px; - margin-bottom: 60px; + .section-header { + display: flex; + justify-content: space-between; + align-items: baseline; + gap: 16px; + margin-bottom: 1.4rem; + + h2 { + font-size: clamp(1.35rem, 2.4vw, 1.7rem); + font-weight: 500; + letter-spacing: -0.03em; + color: #fff; + } + + .see-all { + color: var(--home-muted); + font-size: 0.88rem; + font-weight: 500; + gap: 4px; + + &:hover { + color: var(--home-accent); + } + + .icon { + font-size: 0.75rem; + } + } + } + + .featured-plugins { width: 100%; - max-width: 1000px; - padding: 0 10px; + max-width: var(--home-max); + margin-top: clamp(4.5rem, 10vw, 7rem); + padding: 0 24px; - .section-header { + &__intro { display: flex; justify-content: space-between; align-items: flex-end; - margin-bottom: 32px; - padding: 0 10px; + gap: 24px; + margin-bottom: 1.75rem; h2 { - font-family: 'Lexend', sans-serif; - font-size: 1.8rem; - font-weight: 700; - color: #ffffff; + font-size: clamp(1.6rem, 3vw, 2.2rem); + font-weight: 500; + letter-spacing: -0.04em; + color: #fff; + } + + p { + margin-top: 0.55rem; + max-width: 38ch; + color: var(--home-muted); + font-size: 0.98rem; + line-height: 1.5; } .see-all { - color: #00d4ff; - text-decoration: none; - font-size: 0.9rem; - font-weight: 600; - display: flex; - align-items: center; - gap: 4px; - transition: opacity 0.2s ease; + flex-shrink: 0; + height: 40px; + padding: 0 14px; + border: 1px solid var(--home-line); + border-radius: 10px; + color: var(--home-text); + font-size: 0.88rem; + font-weight: 500; + white-space: nowrap; &:hover { - opacity: 0.8; - text-decoration: underline; - } - - .icon { - font-size: 0.8rem; + border-color: rgba(255, 255, 255, 0.18); + color: #fff; } } + } - @media screen and (max-width: 600px) { - flex-direction: column; - align-items: center; - gap: 12px; - text-align: center; - } + &__fade { + mask-image: linear-gradient(to bottom, #000 0%, #000 46%, rgba(0, 0, 0, 0.45) 68%, transparent 100%); + -webkit-mask-image: linear-gradient(to bottom, #000 0%, #000 46%, rgba(0, 0, 0, 0.45) 68%, transparent 100%); } - .sponsors-empty { - text-align: center; - color: rgba(255, 255, 255, 0.4); - font-size: 1rem; - padding: 40px 0; + &__list { + list-style: none; + display: grid; + grid-template-columns: repeat(4, minmax(0, 1fr)); + gap: 10px; + min-width: 0; - a { - color: #f59e0b; - text-decoration: none; - font-weight: 600; + li a { + display: flex; + flex-direction: row; + align-items: center; + width: 100%; + min-width: 0; + min-height: 64px; + padding: 10px 12px; + border: 1px solid var(--home-line); + border-radius: 10px; + background: var(--home-surface); + gap: 10px; + text-align: left; + transition: border-color 0.2s ease, background-color 0.2s ease; &:hover { - text-decoration: underline; + background: rgba(255, 255, 255, 0.05); + border-color: rgba(255, 255, 255, 0.16); } - } - } - - .sponsors-tier-empty { - text-align: center; - color: rgba(255, 255, 255, 0.3); - font-size: 0.85rem; - padding: 16px 0; - - a { - color: #f59e0b; - text-decoration: none; - font-weight: 600; - &:hover { - text-decoration: underline; + img { + width: 28px; + height: 28px; + border-radius: 7px; + object-fit: cover; + flex-shrink: 0; } } - } - .sponsor-tier-group { - margin-bottom: 32px; - - &:last-child { - margin-bottom: 0; + .plugin-meta { + display: flex; + flex-direction: column; + gap: 2px; + min-width: 0; + flex: 1; } - } - - .tier-label { - font-family: 'Lexend', sans-serif; - font-size: 0.85rem; - font-weight: 600; - text-transform: uppercase; - letter-spacing: 0.08em; - margin-bottom: 14px; - padding: 0 10px; - &.tier-label-titanium { - color: #f97316; + .plugin-top { + display: flex; + align-items: baseline; + justify-content: space-between; + gap: 8px; + width: 100%; } - &.tier-label-platinum { - color: #a78bfa; + .plugin-name { + font-size: 0.9rem; + font-weight: 600; + letter-spacing: -0.02em; + color: #fff; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; } - &.tier-label-gold { - color: #f59e0b; + .plugin-downloads { + flex-shrink: 0; + font-size: 0.7rem; + color: var(--home-faint); + font-variant-numeric: tabular-nums; } - &.tier-label-silver { - color: #9ca3af; + .plugin-author { + font-size: 0.72rem; + color: var(--home-faint); + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + max-width: 100%; } + } + } - &.tier-label-crystal { - color: #5eead4; - } + .sponsors-section { + width: 100%; + max-width: var(--home-max); + margin-top: clamp(4rem, 9vw, 6rem); + padding: 0 24px; + + .sponsors-empty { + color: var(--home-faint); + font-size: 0.95rem; + + a { + color: var(--home-accent); + display: inline; - &.tier-label-bronze { - color: #d97706; + &:hover { + text-decoration: underline; + } } } .sponsors-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)); - gap: 12px; - padding: 0 10px; + grid-auto-flow: dense; + gap: 10px; } .sponsor-card { @@ -613,13 +772,12 @@ display: flex; align-items: center; gap: 12px; - background: rgba(255, 255, 255, 0.03); - border: 1px solid rgba(255, 255, 255, 0.08); + background: var(--home-surface); + border: 1px solid var(--home-line); border-radius: 12px; padding: 14px 16px; - text-decoration: none; text-align: left; - transition: all 0.3s ease; + transition: border-color 0.2s ease, background-color 0.2s ease, transform 0.2s ease; &.sponsor-card-expired { opacity: 0.48; @@ -632,46 +790,26 @@ } &:hover { - background: rgba(255, 255, 255, 0.06); - border-color: rgba(245, 158, 11, 0.3); + background: rgba(255, 255, 255, 0.05); + border-color: rgba(245, 158, 11, 0.28); transform: translateY(-2px); } - &.sponsor-card-titanium { - grid-column: span 2; - } - + &.sponsor-card-titanium, &.sponsor-card-platinum { grid-column: span 2; - - &:hover { - border-color: rgba(167, 139, 250, 0.3); - } } - &.sponsor-card-crystal { - &:hover { - border-color: rgba(94, 234, 212, 0.3); - } - } - - &.sponsor-card-bronze { - &:hover { - border-color: rgba(217, 119, 6, 0.3); - } + &.sponsor-card-crystal:hover { + border-color: rgba(94, 234, 212, 0.3); } - &.sponsor-card-silver { - &:hover { - border-color: rgba(156, 163, 175, 0.3); - } + &.sponsor-card-bronze:hover { + border-color: rgba(217, 119, 6, 0.3); } - &.sponsor-card-gold, - &.sponsor-card-titanium { - &:hover { - border-color: rgba(245, 158, 11, 0.3); - } + &.sponsor-card-silver:hover { + border-color: rgba(156, 163, 175, 0.3); } .sponsor-tier-badge { @@ -686,37 +824,37 @@ border-radius: 0 12px 0 8px; opacity: 0.85; - &.sponsor-tier-badge-titanium { + &-titanium { background: rgba(249, 115, 22, 0.15); color: #f97316; border: 1px solid rgba(249, 115, 22, 0.25); } - &.sponsor-tier-badge-platinum { + &-platinum { background: rgba(167, 139, 250, 0.15); color: #a78bfa; border: 1px solid rgba(167, 139, 250, 0.25); } - &.sponsor-tier-badge-gold { + &-gold { background: rgba(245, 158, 11, 0.15); color: #f59e0b; border: 1px solid rgba(245, 158, 11, 0.25); } - &.sponsor-tier-badge-silver { + &-silver { background: rgba(156, 163, 175, 0.15); color: #9ca3af; border: 1px solid rgba(156, 163, 175, 0.25); } - &.sponsor-tier-badge-bronze { + &-bronze { background: rgba(217, 119, 6, 0.15); color: #d97706; border: 1px solid rgba(217, 119, 6, 0.25); } - &.sponsor-tier-badge-crystal { + &-crystal { background: rgba(94, 234, 212, 0.15); color: #5eead4; border: 1px solid rgba(94, 234, 212, 0.25); @@ -743,7 +881,7 @@ .avatar-fallback { font-size: 0.85rem; font-weight: 700; - color: rgba(255, 255, 255, 0.5); + color: var(--home-faint); } } @@ -753,48 +891,181 @@ .sponsor-name { font-size: 0.85rem; font-weight: 600; - color: rgba(255, 255, 255, 0.85); + color: rgba(255, 255, 255, 0.88); display: block; word-break: break-word; } .sponsor-tagline { font-size: 0.7rem; - color: rgba(255, 255, 255, 0.4); + color: var(--home-faint); margin-top: 2px; word-break: break-word; } } } + } + + .home-cta { + width: 100%; + max-width: var(--home-max); + margin-top: clamp(5rem, 12vw, 8rem); + padding: 0 24px; + text-align: center; + display: flex; + flex-direction: column; + align-items: center; + + h2 { + font-size: clamp(2.2rem, 5vw, 3.6rem); + font-weight: 500; + letter-spacing: -0.05em; + color: #fff; + } + + p { + margin-top: 0.85rem; + color: var(--home-muted); + font-size: 1.05rem; + } + } + + @media screen and (max-width: 900px) { + .home-agent, + .home-panes { + width: calc(100% - 24px); + } - @media screen and (max-width: 600px) { - .sponsors-grid { - grid-template-columns: repeat(2, 1fr); + .featured-plugins { + &__intro { + flex-direction: column; + align-items: flex-start; } - .sponsor-card.sponsor-card-titanium { - grid-column: span 2; + &__list { + grid-template-columns: 1fr 1fr; } } + } + + @media screen and (max-width: 700px) { + .home-hero { + padding-top: 3.5rem; + } + + .home-gallery { + width: calc(100% - 24px); - @media screen and (max-width: 400px) { - .sponsors-grid { + &__devices { grid-template-columns: 1fr; + padding: 24px; + background: + radial-gradient(circle at 50% 12%, rgba(52, 153, 254, 0.08), transparent 24%), + #0c0d11; + } + + &__phone { + padding: 0; + } + + .home-gallery__phone + .home-gallery__phone { + margin-top: 28px; + padding-top: 28px; + border-top: 1px solid var(--home-line); + border-left: 0; + } + } + + .home-capabilities { + grid-template-columns: 1fr; + + article, + article:nth-child(even) { + padding: 1.6rem 0; + border-left: 0; + } + } + + .home-actions { + width: 100%; + max-width: 22rem; + + .home-btn { + flex: 1 1 calc(50% - 6px); + justify-content: center; + min-width: 0; + padding: 0 14px; } - .sponsor-card.sponsor-card-titanium { - grid-column: span 1; + .home-btn-text { + flex: 1 0 100%; + justify-content: center; } } + + .sponsors-section .sponsor-card.sponsor-card-titanium, + .sponsors-section .sponsor-card.sponsor-card-platinum { + grid-column: span 1; + } } - .article { - font-size: 1.5rem; - text-align: left; + @media screen and (max-width: 520px) { + .home-actions { + flex-direction: column; + align-items: stretch; + max-width: 20rem; + + .home-btn, + .home-btn-text { + flex: none; + width: 100%; + justify-content: center; + } + } + + .featured-plugins__list { + grid-template-columns: 1fr; + } + + .home-proof { + gap: 8px 0; + + li + li::before { + margin: 0 10px; + } + } + + .home-contributors__faces a { + width: 34px; + height: 34px; + margin-left: -8px; + } } - footer { - margin-top: 40px; - padding: 0; + @media (prefers-reduced-motion: reduce) { + .home-hero, + .home-gallery, + .home-agent__shot, + .home-panes__shot, + .home-contributors__faces a { + animation: none; + transition: none; + } + } +} + +main:has(> #home) + footer { + margin-top: 0; +} + +@keyframes home-rise { + from { + opacity: 0; + transform: translateY(14px); + } + + to { + opacity: 1; + transform: translateY(0); } } diff --git a/client/pages/login/style.scss b/client/pages/login/style.scss index 867be3c..46a2577 100644 --- a/client/pages/login/style.scss +++ b/client/pages/login/style.scss @@ -9,6 +9,11 @@ max-width: unset; background-color: transparent; z-index: 1; + padding: 48px 16px; + + canvas#background { + display: none; + } .login-profile { height: 150px; diff --git a/client/pages/plugin/style.scss b/client/pages/plugin/style.scss index 5e5ee46..6840c46 100644 --- a/client/pages/plugin/style.scss +++ b/client/pages/plugin/style.scss @@ -53,26 +53,27 @@ align-items: center; gap: 8px; padding: 10px 20px; - background: linear-gradient(135deg, #6366f1 0%, #4f46e5 100%); - color: white; - border-radius: 8px; + background: #f4f6f8; + color: #111216; + border-radius: 10px; font-weight: 600; text-decoration: none; - transition: all 0.2s ease; - box-shadow: 0 2px 8px rgba(99, 102, 241, 0.3); + transition: transform 0.2s ease, background-color 0.2s ease; + box-shadow: none; &:hover { - transform: translateY(-2px); - box-shadow: 0 4px 12px rgba(99, 102, 241, 0.4); + transform: translateY(-1px); + background: #fff; + box-shadow: none; } } .buy-button { - background: linear-gradient(135deg, #2563eb 0%, #1d4ed8 100%); - color: white; + background: #f4f6f8; + color: #111216; border: none; padding: 10px 20px; - border-radius: 8px; + border-radius: 10px; cursor: pointer; display: inline-flex; align-items: center; diff --git a/client/pages/plugins/index.js b/client/pages/plugins/index.js index 9633c90..5c712e4 100644 --- a/client/pages/plugins/index.js +++ b/client/pages/plugins/index.js @@ -16,10 +16,10 @@ export default async function PluginList({ filter, orderBy }) { plugins.onref = () => renderPlugins(); return ( -
    +

    - Plugins + Plugins

    diff --git a/client/pages/plugins/style.scss b/client/pages/plugins/style.scss index f3c7932..0102882 100644 --- a/client/pages/plugins/style.scss +++ b/client/pages/plugins/style.scss @@ -1,4 +1,8 @@ #plugins { + max-width: 1120px; + width: calc(100% - 48px); + padding-top: clamp(2.5rem, 6vw, 4.5rem); + &::after { content: ''; display: block; @@ -12,13 +16,11 @@ h1 { margin-bottom: 32px; - font-size: 2.5rem; - background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); - -webkit-background-clip: text; - -webkit-text-fill-color: transparent; - background-clip: text; - font-weight: 700; - letter-spacing: -0.5px; + font-size: clamp(2.2rem, 5vw, 3.4rem); + font-weight: 500; + letter-spacing: -0.05em; + color: #fff; + line-height: 1.1; } .controls-wrapper { @@ -73,24 +75,20 @@ font-size: 1rem; font-weight: 500; height: 40px; - border-radius: 4px; + color: var(--page-text, #f1f2f4); cursor: pointer; - transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); - appearance: none; - background-image: url(data:image/svg+xml,%3Csvg%20width%3D%2212%22%20height%3D%228%22%20viewBox%3D%220%200%2012%208%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M1%201L6%206L11%201%22%20stroke%3D%22%23667eea%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%2F%3E%3C%2Fsvg%3E); - background-repeat: no-repeat; - background-position: right 12px center; + transition: border-color 0.2s ease, box-shadow 0.2s ease; padding-right: 40px; &:hover { - border-color: #667eea; - box-shadow: 0 2px 8px rgba(102, 126, 234, 0.2); + border-color: rgba(255, 255, 255, 0.16); + box-shadow: none; } &:focus { outline: none; - border-color: #667eea; - box-shadow: 0 0 0 3px rgba(102, 126, 234, 0.1); + border-color: var(--page-accent); + box-shadow: 0 0 0 3px rgba(52, 153, 254, 0.15); } optgroup { @@ -106,31 +104,11 @@ } .filter-select { - border-color: #10b981; - - &:hover { - border-color: #10b981; - box-shadow: 0 2px 8px rgba(16, 185, 129, 0.2); - } - - &:focus { - border-color: #10b981; - box-shadow: 0 0 0 3px rgba(16, 185, 129, 0.1); - } + border-color: var(--page-line); } .sort-select { - border-color: #8b5cf6; - - &:hover { - border-color: #8b5cf6; - box-shadow: 0 2px 8px rgba(139, 92, 246, 0.2); - } - - &:focus { - border-color: #8b5cf6; - box-shadow: 0 0 0 3px rgba(139, 92, 246, 0.1); - } + border-color: var(--page-line); } } } diff --git a/client/pages/privacyPolicy/style.scss b/client/pages/privacyPolicy/style.scss index d425c80..83776ba 100644 --- a/client/pages/privacyPolicy/style.scss +++ b/client/pages/privacyPolicy/style.scss @@ -1,4 +1,6 @@ #privacy-policy { + padding-top: clamp(2.5rem, 6vw, 4.5rem); + h1, h2, h3 { @@ -6,7 +8,10 @@ } h1 { - font-size: 2.5rem; + font-size: clamp(2.2rem, 5vw, 3.2rem); + font-weight: 500; + letter-spacing: -0.05em; + color: #fff; margin-bottom: 1rem; } } diff --git a/client/pages/pro/style.scss b/client/pages/pro/style.scss index b9f3873..7c615ac 100644 --- a/client/pages/pro/style.scss +++ b/client/pages/pro/style.scss @@ -22,11 +22,12 @@ } h1 { - font-size: clamp(2rem, 5vw, 3rem); - font-weight: 800; + font-size: clamp(2.2rem, 5vw, 3.4rem); + font-weight: 500; line-height: 1.1; margin-bottom: 16px; - letter-spacing: -0.02em; + letter-spacing: -0.05em; + color: #fff; .highlight { background: linear-gradient(135deg, #f59e0b, #f97316); diff --git a/client/pages/publishPlugin/style.scss b/client/pages/publishPlugin/style.scss index 045fa82..37af7ef 100644 --- a/client/pages/publishPlugin/style.scss +++ b/client/pages/publishPlugin/style.scss @@ -1,20 +1,33 @@ #publish-plugin { + table { + td { + padding: 14px 12px; + vertical-align: middle; + } + + th { + padding: 14px 12px; + vertical-align: middle; + white-space: nowrap; + } + + select { + margin: 0; + min-width: 160px; + height: 40px; + } + } + .update-banner { position: relative; margin: 20px auto 30px; padding: 24px 28px; max-width: 800px; - background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); + background: var(--page-surface, rgba(255, 255, 255, 0.035)); + border: 1px solid var(--page-line, rgba(255, 255, 255, 0.08)); border-radius: 16px; - box-shadow: - 0 4px 24px rgba(102, 126, 234, 0.25), - 0 8px 48px rgba(118, 75, 162, 0.2); + box-shadow: none; overflow: hidden; - animation: fadeInScale 0.5s ease-out; - - // Animated background gradient - background-size: 200% 200%; - animation: fadeInScale 0.5s ease-out, gradientShift 8s ease infinite; // Decorative elements &::before { @@ -48,19 +61,17 @@ .icon { font-size: 24px; - color: rgba(255, 255, 255, 0.95); + color: var(--page-text, #f1f2f4); } } p { position: relative; margin: 0 0 16px; - color: #ffffff; + color: var(--page-muted, rgba(241, 242, 244, 0.64)); font-size: 16px; line-height: 1.6; font-weight: 400; - letter-spacing: 0.3px; - text-shadow: 0 2px 8px rgba(0, 0, 0, 0.15); strong { display: inline-flex; @@ -82,7 +93,7 @@ align-items: center; gap: 8px; padding: 12px 24px; - color: #667eea; + color: #3499fe; background: #ffffff; text-decoration: none; font-weight: 600; @@ -120,7 +131,7 @@ margin-left: 12px; padding: 4px 12px; background: rgba(255, 255, 255, 0.95); - color: #764ba2; + color: #6ea8ff; font-size: 12px; font-weight: 600; text-transform: uppercase; diff --git a/client/pages/refundPolicy/style.scss b/client/pages/refundPolicy/style.scss index 97b27f4..fdbc3cf 100644 --- a/client/pages/refundPolicy/style.scss +++ b/client/pages/refundPolicy/style.scss @@ -1,4 +1,5 @@ #refund-policy { + padding-top: clamp(2.5rem, 6vw, 4.5rem); h1, h2, @@ -7,7 +8,10 @@ } h1 { - font-size: 2.5rem; + font-size: clamp(2.2rem, 5vw, 3.2rem); + font-weight: 500; + letter-spacing: -0.05em; + color: #fff; margin-bottom: 1rem; } } \ No newline at end of file diff --git a/client/pages/sponsors/style.scss b/client/pages/sponsors/style.scss index 3477e56..dfd1514 100644 --- a/client/pages/sponsors/style.scss +++ b/client/pages/sponsors/style.scss @@ -4,10 +4,7 @@ padding: 60px 24px 40px; .highlight { - background: linear-gradient(135deg, #f59e0b, #f97316); - -webkit-background-clip: text; - -webkit-text-fill-color: transparent; - background-clip: text; + color: #3499fe; } .section-heading { @@ -38,11 +35,12 @@ margin-bottom: 60px; h1 { - font-size: clamp(2rem, 5vw, 3rem); - font-weight: 800; + font-size: clamp(2.2rem, 5vw, 3.4rem); + font-weight: 500; line-height: 1.1; margin-bottom: 16px; - letter-spacing: -0.02em; + letter-spacing: -0.05em; + color: #fff; } } @@ -50,20 +48,21 @@ display: inline-block; margin-top: 32px; padding: 14px 36px; - background: linear-gradient(135deg, #f59e0b, #f97316); - color: #000; + background: #f4f6f8; + color: #111216; border: none; - border-radius: 12px; - font-size: 1rem; - font-weight: 700; + border-radius: 10px; + font-size: 0.95rem; + font-weight: 600; text-decoration: none; cursor: pointer; - transition: all 0.3s ease; - box-shadow: 0 4px 20px rgba(245, 158, 11, 0.3); + transition: transform 0.2s ease, background-color 0.2s ease; + box-shadow: none; &:hover { - transform: translateY(-2px); - box-shadow: 0 6px 28px rgba(245, 158, 11, 0.4); + transform: translateY(-1px); + background: #fff; + box-shadow: none; } &:active { diff --git a/client/pages/termsOfService/style.scss b/client/pages/termsOfService/style.scss index a92340f..108c975 100644 --- a/client/pages/termsOfService/style.scss +++ b/client/pages/termsOfService/style.scss @@ -1,4 +1,6 @@ #terms-of-service { + padding-top: clamp(2.5rem, 6vw, 4.5rem); + h1, h2, h3 { @@ -6,7 +8,10 @@ } h1 { - font-size: 2.5rem; + font-size: clamp(2.2rem, 5vw, 3.2rem); + font-weight: 500; + letter-spacing: -0.05em; + color: #fff; margin-bottom: 1rem; } } diff --git a/client/pages/updatePluginEditor/style.scss b/client/pages/updatePluginEditor/style.scss index 0812d83..e05a978 100644 --- a/client/pages/updatePluginEditor/style.scss +++ b/client/pages/updatePluginEditor/style.scss @@ -91,12 +91,13 @@ } .info-banner { - background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); + background: #1a2433; color: white; - border-radius: 8px; + border-radius: 16px; padding: 20px 24px; margin-bottom: 30px; - box-shadow: 0 4px 12px rgba(102, 126, 234, 0.3); + border: 1px solid var(--page-line, rgba(255, 255, 255, 0.08)); + box-shadow: none; .icon-wrapper { display: flex; diff --git a/client/pages/user/style.scss b/client/pages/user/style.scss index 89b9b5e..98ed04e 100644 --- a/client/pages/user/style.scss +++ b/client/pages/user/style.scss @@ -8,8 +8,9 @@ .profile { width: 100%; display: flex; - background-color: var(--secondary-color); - border-radius: 4px; + background-color: var(--page-surface, rgba(255, 255, 255, 0.035)); + border: 1px solid var(--page-line, rgba(255, 255, 255, 0.08)); + border-radius: 16px; h1 { text-align: left; @@ -45,8 +46,8 @@ border-radius: 9px; margin-left: 5px; padding: 2.5px 10px; - background-color: #00d4ff; - color: black; + background-color: #3499fe; + color: #fff; text-decoration: none; &.pro-tag { @@ -101,8 +102,8 @@ flex-direction: column; justify-content: center; align-items: center; - background-color: var(--primary-color); - border-bottom: solid 1px #ccc; + background-color: var(--page-surface, rgba(255, 255, 255, 0.035)); + border-bottom: 1px solid var(--page-line, rgba(255, 255, 255, 0.08)); h1 { margin-top: 0; @@ -148,11 +149,12 @@ flex-direction: column; height: calc(100% - 20px); width: 180px; - background-color: var(--primary-color); + background-color: rgba(255, 255, 255, 0.05); color: var(--primary-text-color); padding: 5px; margin: 5px; - border-radius: 4px; + border-radius: 10px; + border: 1px solid var(--page-line, rgba(255, 255, 255, 0.08)); font-size: 0.8rem; user-select: none; -webkit-tap-highlight-color: transparent; @@ -251,14 +253,15 @@ a { height: 30px; width: 30px; - background-color: white; - color: var(--primary-color); + background-color: rgba(255, 255, 255, 0.06); + color: #fff; display: flex; align-items: center; justify-content: center; margin: 5px; text-decoration: none; - border-radius: 4px; + border-radius: 10px; + border: 1px solid var(--page-line, rgba(255, 255, 255, 0.08)); .icon { font-size: 20px; diff --git a/client/res/acode-shot-agent.jpg b/client/res/acode-shot-agent.jpg new file mode 100644 index 0000000..4af944b Binary files /dev/null and b/client/res/acode-shot-agent.jpg differ diff --git a/client/res/acode-shot-agent.webp b/client/res/acode-shot-agent.webp new file mode 100644 index 0000000..2fa54f3 Binary files /dev/null and b/client/res/acode-shot-agent.webp differ diff --git a/client/res/acode-shot-editor.jpg b/client/res/acode-shot-editor.jpg new file mode 100644 index 0000000..962fffc Binary files /dev/null and b/client/res/acode-shot-editor.jpg differ diff --git a/client/res/acode-shot-editor.webp b/client/res/acode-shot-editor.webp new file mode 100644 index 0000000..b92b57b Binary files /dev/null and b/client/res/acode-shot-editor.webp differ diff --git a/client/res/acode-shot-panes.jpg b/client/res/acode-shot-panes.jpg new file mode 100644 index 0000000..874b89b Binary files /dev/null and b/client/res/acode-shot-panes.jpg differ diff --git a/client/res/acode-shot-panes.webp b/client/res/acode-shot-panes.webp new file mode 100644 index 0000000..d0e93da Binary files /dev/null and b/client/res/acode-shot-panes.webp differ diff --git a/client/res/acode-shot-terminal.jpg b/client/res/acode-shot-terminal.jpg new file mode 100644 index 0000000..c861574 Binary files /dev/null and b/client/res/acode-shot-terminal.jpg differ diff --git a/client/res/acode-shot-terminal.webp b/client/res/acode-shot-terminal.webp new file mode 100644 index 0000000..0813edc Binary files /dev/null and b/client/res/acode-shot-terminal.webp differ diff --git a/client/themes/dark.js b/client/themes/dark.js index 19a3b02..8e32dfc 100644 --- a/client/themes/dark.js +++ b/client/themes/dark.js @@ -1,14 +1,14 @@ export default { - buttonColor: '#1d71c5', + buttonColor: '#3499fe', buttonTextColor: '#ffffff', - buttonHoverColor: '#125ba4', - buttonActiveColor: '#2288ee', + buttonHoverColor: '#2b82e0', + buttonActiveColor: '#4aa3ff', buttonActiveTextColor: '#ffffff', - primaryColor: '#35374B', - primaryColorDark: '#27293D', - primaryTextColor: '#ffffff', - secondaryColor: '#344955', - secondaryTextColor: '#ffffff', + primaryColor: '#1a1c22', + primaryColorDark: '#12141a', + primaryTextColor: '#f1f2f4', + secondaryColor: '#1c1f27', + secondaryTextColor: '#f1f2f4', textColor: '#e0e0e0', borderColor: 'rgba(255,255,255,0.08)', errorColor: 'orangered', diff --git a/package-lock.json b/package-lock.json index a3059d8..a10cee9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -67,18 +67,17 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.7.tgz", - "integrity": "sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-8.0.0.tgz", + "integrity": "sha512-dYYg153EyN2Ekbqw2zAsbd6/JR+9N2SEoC7YV2GyyqMM7x9bLDTjBD6XBhSMLH0wtIVyJj03jWNriQhaN+eoCw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-validator-identifier": "^7.29.7", - "js-tokens": "^4.0.0", - "picocolors": "^1.1.1" + "@babel/helper-validator-identifier": "^8.0.0", + "js-tokens": "^10.0.0" }, "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" } }, "node_modules/@babel/compat-data": { @@ -97,7 +96,6 @@ "integrity": "sha512-5FgxM4dLQpMJHSiVATk8foW263dVHQHBVpXYiimNECVWG01f4nFyEbQixeT6Mwvg7TayREJ2gpKl3o2RoMdnqw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/code-frame": "^8.0.0", "@babel/generator": "^8.0.0", @@ -124,37 +122,6 @@ "url": "https://opencollective.com/babel" } }, - "node_modules/@babel/core/node_modules/@babel/code-frame": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-8.0.0.tgz", - "integrity": "sha512-dYYg153EyN2Ekbqw2zAsbd6/JR+9N2SEoC7YV2GyyqMM7x9bLDTjBD6XBhSMLH0wtIVyJj03jWNriQhaN+eoCw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-validator-identifier": "^8.0.0", - "js-tokens": "^10.0.0" - }, - "engines": { - "node": "^22.18.0 || >=24.11.0" - } - }, - "node_modules/@babel/core/node_modules/@babel/helper-validator-identifier": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-8.0.2.tgz", - "integrity": "sha512-9Fr9QeyCAyi1BR1jKZ6uYQ24EIhQUx5ReHfQU7drOE+TPOb+w11/dsqLkMOT2U29OdCT71XajrOT8xDc1C7orA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^22.18.0 || >=24.11.0" - } - }, - "node_modules/@babel/core/node_modules/js-tokens": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-10.0.0.tgz", - "integrity": "sha512-lM/UBzQmfJRo9ABXbPWemivdCW8V2G8FHaHdypQaIy523snUjog0W71ayWXTjiR+ixeMyVHN2XcpnTd/liPg/Q==", - "dev": true, - "license": "MIT" - }, "node_modules/@babel/generator": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-8.0.0.tgz", @@ -317,16 +284,6 @@ "@babel/core": "^8.0.0" } }, - "node_modules/@babel/helper-module-transforms/node_modules/@babel/helper-validator-identifier": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-8.0.2.tgz", - "integrity": "sha512-9Fr9QeyCAyi1BR1jKZ6uYQ24EIhQUx5ReHfQU7drOE+TPOb+w11/dsqLkMOT2U29OdCT71XajrOT8xDc1C7orA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^22.18.0 || >=24.11.0" - } - }, "node_modules/@babel/helper-optimise-call-expression": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-8.0.0.tgz", @@ -414,13 +371,13 @@ } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.29.7.tgz", - "integrity": "sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==", + "version": "8.0.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-8.0.4.tgz", + "integrity": "sha512-4wFaiLd0bVo4cIoTXI3zKI038NIWE/cr3jvBjejOVYVxV/m8Ltav1USiGzG1fmS5J2RhgEOgXNNK46cRPnRsrg==", "dev": true, "license": "MIT", "engines": { - "node": ">=6.9.0" + "node": "^22.18.0 || >=24.11.0" } }, "node_modules/@babel/helper-validator-option": { @@ -463,13 +420,13 @@ } }, "node_modules/@babel/parser": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-8.0.0.tgz", - "integrity": "sha512-aLxAE+imI9bCcyaPrUDjBv3uSkWieifjLe0kuFOZF0zli0L6GCsTmsePnTr55adbIAgYz2zhN1vnFimCBUYcRQ==", + "version": "8.0.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-8.0.4.tgz", + "integrity": "sha512-srpptsAkEbbNIC/q8nT7o+m6CQe8CJUTV/t7MYc9NnWlgYVtHOb7JH6SorxMhN0kuRJjVqXbKClG6xSbPtzz+g==", "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^8.0.0" + "@babel/types": "^8.0.4" }, "bin": { "parser": "bin/babel-parser.js" @@ -1013,16 +970,6 @@ "@babel/core": "^8.0.0" } }, - "node_modules/@babel/plugin-transform-modules-systemjs/node_modules/@babel/helper-validator-identifier": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-8.0.2.tgz", - "integrity": "sha512-9Fr9QeyCAyi1BR1jKZ6uYQ24EIhQUx5ReHfQU7drOE+TPOb+w11/dsqLkMOT2U29OdCT71XajrOT8xDc1C7orA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^22.18.0 || >=24.11.0" - } - }, "node_modules/@babel/plugin-transform-modules-umd": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-8.0.1.tgz", @@ -1573,115 +1520,43 @@ "node": "^22.18.0 || >=24.11.0" } }, - "node_modules/@babel/template/node_modules/@babel/code-frame": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-8.0.0.tgz", - "integrity": "sha512-dYYg153EyN2Ekbqw2zAsbd6/JR+9N2SEoC7YV2GyyqMM7x9bLDTjBD6XBhSMLH0wtIVyJj03jWNriQhaN+eoCw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-validator-identifier": "^8.0.0", - "js-tokens": "^10.0.0" - }, - "engines": { - "node": "^22.18.0 || >=24.11.0" - } - }, - "node_modules/@babel/template/node_modules/@babel/helper-validator-identifier": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-8.0.2.tgz", - "integrity": "sha512-9Fr9QeyCAyi1BR1jKZ6uYQ24EIhQUx5ReHfQU7drOE+TPOb+w11/dsqLkMOT2U29OdCT71XajrOT8xDc1C7orA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^22.18.0 || >=24.11.0" - } - }, - "node_modules/@babel/template/node_modules/js-tokens": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-10.0.0.tgz", - "integrity": "sha512-lM/UBzQmfJRo9ABXbPWemivdCW8V2G8FHaHdypQaIy523snUjog0W71ayWXTjiR+ixeMyVHN2XcpnTd/liPg/Q==", - "dev": true, - "license": "MIT" - }, "node_modules/@babel/traverse": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-8.0.0.tgz", - "integrity": "sha512-bxTj/W2VclGE6CctlfQOpxg8MPDzXArRqkOBePw8EHfebcjF7fETWSS3BriEECo+UiU/Yblq+xUtSImFu7cTbw==", + "version": "8.0.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-8.0.4.tgz", + "integrity": "sha512-bZnmqzGG8UZneG1lLxBoWIH0G6Gr1D846Yu4/3XnY6FhCndMR49u26nTY08u/dAxWmLWF9vGQOuC+84FfIUoeg==", "dev": true, "license": "MIT", "dependencies": { "@babel/code-frame": "^8.0.0", "@babel/generator": "^8.0.0", "@babel/helper-globals": "^8.0.0", - "@babel/parser": "^8.0.0", + "@babel/parser": "^8.0.4", "@babel/template": "^8.0.0", - "@babel/types": "^8.0.0", + "@babel/types": "^8.0.4", "obug": "^2.1.1" }, "engines": { "node": "^22.18.0 || >=24.11.0" } }, - "node_modules/@babel/traverse/node_modules/@babel/code-frame": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-8.0.0.tgz", - "integrity": "sha512-dYYg153EyN2Ekbqw2zAsbd6/JR+9N2SEoC7YV2GyyqMM7x9bLDTjBD6XBhSMLH0wtIVyJj03jWNriQhaN+eoCw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-validator-identifier": "^8.0.0", - "js-tokens": "^10.0.0" - }, - "engines": { - "node": "^22.18.0 || >=24.11.0" - } - }, - "node_modules/@babel/traverse/node_modules/@babel/helper-validator-identifier": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-8.0.2.tgz", - "integrity": "sha512-9Fr9QeyCAyi1BR1jKZ6uYQ24EIhQUx5ReHfQU7drOE+TPOb+w11/dsqLkMOT2U29OdCT71XajrOT8xDc1C7orA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^22.18.0 || >=24.11.0" - } - }, - "node_modules/@babel/traverse/node_modules/js-tokens": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-10.0.0.tgz", - "integrity": "sha512-lM/UBzQmfJRo9ABXbPWemivdCW8V2G8FHaHdypQaIy523snUjog0W71ayWXTjiR+ixeMyVHN2XcpnTd/liPg/Q==", - "dev": true, - "license": "MIT" - }, "node_modules/@babel/types": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-8.0.0.tgz", - "integrity": "sha512-K8ponJDxBwDHigkeFqaqT5wLGl4bTlwMafR8k7b5CPxr6Ww+UG9ls8Yx6Tcpboxu97eeGVEEyKcHmEyOwN1vSw==", + "version": "8.0.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-8.0.4.tgz", + "integrity": "sha512-eY+Yn3dCqTGmyiq2QRU66lA5FL8lqqqvecHt0fF3uHONIa7ToYsaCiWV8lOKqAs0Rb2SjixiKFROngnulPtt2g==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-string-parser": "^8.0.0", - "@babel/helper-validator-identifier": "^8.0.0" + "@babel/helper-validator-identifier": "^8.0.4" }, "engines": { "node": "^22.18.0 || >=24.11.0" } }, - "node_modules/@babel/types/node_modules/@babel/helper-validator-identifier": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-8.0.2.tgz", - "integrity": "sha512-9Fr9QeyCAyi1BR1jKZ6uYQ24EIhQUx5ReHfQU7drOE+TPOb+w11/dsqLkMOT2U29OdCT71XajrOT8xDc1C7orA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^22.18.0 || >=24.11.0" - } - }, "node_modules/@biomejs/biome": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/@biomejs/biome/-/biome-2.5.2.tgz", - "integrity": "sha512-VQ3RCqr7JmDIX+w6stWYl+g/3bYofN3q2wDBHUKKc/c7i5QWrFKFBZYCYPWTE6agsUPMIZZe6/CMmVUfUAhkKA==", + "version": "2.5.10", + "resolved": "https://registry.npmjs.org/@biomejs/biome/-/biome-2.5.10.tgz", + "integrity": "sha512-WRKXARA3kTuiV5sxqTpobJ/I0MVd4vk3pOL6wnp5az4LntFIhWTj1RWZq3DI9PCEN3lXcqy7p5aqUHzvq8AXyQ==", "dev": true, "license": "MIT OR Apache-2.0", "bin": { @@ -1695,20 +1570,20 @@ "url": "https://opencollective.com/biome" }, "optionalDependencies": { - "@biomejs/cli-darwin-arm64": "2.5.2", - "@biomejs/cli-darwin-x64": "2.5.2", - "@biomejs/cli-linux-arm64": "2.5.2", - "@biomejs/cli-linux-arm64-musl": "2.5.2", - "@biomejs/cli-linux-x64": "2.5.2", - "@biomejs/cli-linux-x64-musl": "2.5.2", - "@biomejs/cli-win32-arm64": "2.5.2", - "@biomejs/cli-win32-x64": "2.5.2" + "@biomejs/cli-darwin-arm64": "2.5.10", + "@biomejs/cli-darwin-x64": "2.5.10", + "@biomejs/cli-linux-arm64": "2.5.10", + "@biomejs/cli-linux-arm64-musl": "2.5.10", + "@biomejs/cli-linux-x64": "2.5.10", + "@biomejs/cli-linux-x64-musl": "2.5.10", + "@biomejs/cli-win32-arm64": "2.5.10", + "@biomejs/cli-win32-x64": "2.5.10" } }, "node_modules/@biomejs/cli-darwin-arm64": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/@biomejs/cli-darwin-arm64/-/cli-darwin-arm64-2.5.2.tgz", - "integrity": "sha512-e7P3P7EkwFc/KiX2AHw4YDLIBOMfG9CPCAwy52k5Bp0dfhkozx9hf6wCmIr2QeXy2XeccJ3V/Sg+hDmzYEqxSg==", + "version": "2.5.10", + "resolved": "https://registry.npmjs.org/@biomejs/cli-darwin-arm64/-/cli-darwin-arm64-2.5.10.tgz", + "integrity": "sha512-ItCrxKK6SXVT6flYs0qIuBd4AA3TTTl4d66Re6YI2FuGZnN85NmuYNzkiTJUyYw8qBLv69L5zTUB6uyWd++h3Q==", "cpu": [ "arm64" ], @@ -1723,9 +1598,9 @@ } }, "node_modules/@biomejs/cli-darwin-x64": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/@biomejs/cli-darwin-x64/-/cli-darwin-x64-2.5.2.tgz", - "integrity": "sha512-ymzMvjC1Jg0b9K0D26ZdARqFQXs7MocfLC5FOCGfkC0Ss+ACUJkX5364ZM5nT4NLZanHRZNVrZEy+Ibwcvux/g==", + "version": "2.5.10", + "resolved": "https://registry.npmjs.org/@biomejs/cli-darwin-x64/-/cli-darwin-x64-2.5.10.tgz", + "integrity": "sha512-yLsPU9pAmtChXDu8vhKAzErqe+LeeYuwuUB2FZMkRitsmdodxsYRa9KHrFispsUHzzOu+9HB3nP/TQxyia+Sjw==", "cpu": [ "x64" ], @@ -1740,13 +1615,16 @@ } }, "node_modules/@biomejs/cli-linux-arm64": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-arm64/-/cli-linux-arm64-2.5.2.tgz", - "integrity": "sha512-t7sseOmqND57uUWTwlawU6BYj+J06T/9EkydzBhkrgw/FK3QVhjU2wsJR0frljrKZ0/I8A/rYw7284QgqjQfIQ==", + "version": "2.5.10", + "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-arm64/-/cli-linux-arm64-2.5.10.tgz", + "integrity": "sha512-VG8uQW/86a1roLaIFvtIbEigxIdzdJ190oGyg1tV7VYeQtOS+x10sflk7WbuXgw91EtZX5DlIIIej1YqkNLlcg==", "cpu": [ "arm64" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT OR Apache-2.0", "optional": true, "os": [ @@ -1757,13 +1635,16 @@ } }, "node_modules/@biomejs/cli-linux-arm64-musl": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-arm64-musl/-/cli-linux-arm64-musl-2.5.2.tgz", - "integrity": "sha512-w+ANG0ZvTu9IeEg9QnstoOnk6L0fpwJifW6aHR18+cb5Z39bkANItYjAfMrnvce5tmMK+IQ6nPX7/kQFdam5iw==", + "version": "2.5.10", + "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-arm64-musl/-/cli-linux-arm64-musl-2.5.10.tgz", + "integrity": "sha512-t1QAKZwQJRB4dvgJSgFiQ4BNfNPChg69BNonz854qLVxnjT3UvDzQg9mbkTJRu35ZqU0Rw10A73J8Urgbg2RPw==", "cpu": [ "arm64" ], "dev": true, + "libc": [ + "musl" + ], "license": "MIT OR Apache-2.0", "optional": true, "os": [ @@ -1774,13 +1655,16 @@ } }, "node_modules/@biomejs/cli-linux-x64": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-x64/-/cli-linux-x64-2.5.2.tgz", - "integrity": "sha512-M/lOZrewzTCRDINbjhQ1gYYru37KlD3kJBQwwKCG0ckz5E9IZwIoJ3X0wBwRXA+yBDIwWUuPBHS67HzJY4dTfA==", + "version": "2.5.10", + "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-x64/-/cli-linux-x64-2.5.10.tgz", + "integrity": "sha512-4O6T0eq2heoHZN0a9UX+rWQoxXEBaKf+lRi2hbsGlHneUz9BWXM76nEWMK7Eeq8gzMxR1khQB6BFpAASpeXqGg==", "cpu": [ "x64" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT OR Apache-2.0", "optional": true, "os": [ @@ -1791,13 +1675,16 @@ } }, "node_modules/@biomejs/cli-linux-x64-musl": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-x64-musl/-/cli-linux-x64-musl-2.5.2.tgz", - "integrity": "sha512-VArNLAzND063tF+XY0yPyM+DyahpzOMzOAvb7qs259nhjJWRjvjZdssuA+Rfl+l07+NOesKZ0Xu2yFrXyBMtzw==", + "version": "2.5.10", + "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-x64-musl/-/cli-linux-x64-musl-2.5.10.tgz", + "integrity": "sha512-pgDDqp9JybHm2I0KRgzN6i4+lt8xu4iqxUwLzglUMmOmyRTU1AYBGKzh9sNMOtIjah7xoWvKHlLVetvyifzoiQ==", "cpu": [ "x64" ], "dev": true, + "libc": [ + "musl" + ], "license": "MIT OR Apache-2.0", "optional": true, "os": [ @@ -1808,9 +1695,9 @@ } }, "node_modules/@biomejs/cli-win32-arm64": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/@biomejs/cli-win32-arm64/-/cli-win32-arm64-2.5.2.tgz", - "integrity": "sha512-kbjFFKyZlzYnAuw7sRy5qDoFG6zrP40UK08oPQsWK0ct3NMnGSt+Bs1iviEEyEIP57N5MrykGXdO/wRiaR4lww==", + "version": "2.5.10", + "resolved": "https://registry.npmjs.org/@biomejs/cli-win32-arm64/-/cli-win32-arm64-2.5.10.tgz", + "integrity": "sha512-pxAbxduPO4xq/Cvgaa2lOrs9BB0hEXmmDqfMNP4ZOffGOkUrD1/QGw9UAMpFQpX2P8MqTIIRuQKcmetum4Oa6A==", "cpu": [ "arm64" ], @@ -1825,9 +1712,9 @@ } }, "node_modules/@biomejs/cli-win32-x64": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/@biomejs/cli-win32-x64/-/cli-win32-x64-2.5.2.tgz", - "integrity": "sha512-4InchVpdVmdkkkgjQqKpgvyu+VPnoF/7RPSw5YATgEVpt2j72wcCAeV5TwaE9ZGJUZWZn7v2CwSAj6CrMJEx8A==", + "version": "2.5.10", + "resolved": "https://registry.npmjs.org/@biomejs/cli-win32-x64/-/cli-win32-x64-2.5.10.tgz", + "integrity": "sha512-M+2dgBsl3lXRiTfgPVc2p3anS4Tocojke4rzFLScZ2Y/wmF+36dRb1iHCLiyGqOzQGyTplZH1HnEYviiAqi3nA==", "cpu": [ "x64" ], @@ -1851,11 +1738,10 @@ "node": ">=14.17.0" } }, - "node_modules/@emnapi/wasi-threads": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.3.tgz", - "integrity": "sha512-ELEBe8PsLvvJ6QMr0zLt8ffvOHW/dc1m3CEzNMg7aJUv3bMaoDtw2TXyDAwkYBuroxxuHEwhRTLJSe5sya547g==", - "dev": true, + "node_modules/@emnapi/runtime": { + "version": "1.11.3", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.11.3.tgz", + "integrity": "sha512-Xz4Tpyki7XyrpbUK1jR1AhdAdaXyhhY4lZ3neLodmhpuWfy2PAQN5B46sAiU4liOXGLkHypn/qU+jvfWSCYYLA==", "license": "MIT", "optional": true, "dependencies": { @@ -1894,9 +1780,9 @@ } }, "node_modules/@google-cloud/storage": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@google-cloud/storage/-/storage-7.21.0.tgz", - "integrity": "sha512-l+IFTkd+6Y5LoAuXyYCKNAKtw/Ci+rAMqgdTB1jv4iZiLhw0rtq+0qjIRbBizXkNzEFmXiXUW0H7sZQQvk1ffA==", + "version": "7.22.0", + "resolved": "https://registry.npmjs.org/@google-cloud/storage/-/storage-7.22.0.tgz", + "integrity": "sha512-W98gTQOAntEeEQ7/pZxSQXxfUO5CiQcXJRsxBpUa6UU25n8YN/VtogPBi0H+MAmUrn/6bY/sBhFansoWEsr2/g==", "license": "Apache-2.0", "dependencies": { "@google-cloud/paginator": "^5.0.0", @@ -1915,7 +1801,7 @@ "teeny-request": "^9.0.0" }, "engines": { - "node": ">=14" + "node": ">=18" } }, "node_modules/@img/colour": { @@ -2029,6 +1915,9 @@ "cpu": [ "arm" ], + "libc": [ + "glibc" + ], "license": "LGPL-3.0-or-later", "optional": true, "os": [ @@ -2045,6 +1934,9 @@ "cpu": [ "arm64" ], + "libc": [ + "glibc" + ], "license": "LGPL-3.0-or-later", "optional": true, "os": [ @@ -2061,6 +1953,9 @@ "cpu": [ "ppc64" ], + "libc": [ + "glibc" + ], "license": "LGPL-3.0-or-later", "optional": true, "os": [ @@ -2077,6 +1972,9 @@ "cpu": [ "riscv64" ], + "libc": [ + "glibc" + ], "license": "LGPL-3.0-or-later", "optional": true, "os": [ @@ -2093,6 +1991,9 @@ "cpu": [ "s390x" ], + "libc": [ + "glibc" + ], "license": "LGPL-3.0-or-later", "optional": true, "os": [ @@ -2109,6 +2010,9 @@ "cpu": [ "x64" ], + "libc": [ + "glibc" + ], "license": "LGPL-3.0-or-later", "optional": true, "os": [ @@ -2125,6 +2029,9 @@ "cpu": [ "arm64" ], + "libc": [ + "musl" + ], "license": "LGPL-3.0-or-later", "optional": true, "os": [ @@ -2141,6 +2048,9 @@ "cpu": [ "x64" ], + "libc": [ + "musl" + ], "license": "LGPL-3.0-or-later", "optional": true, "os": [ @@ -2157,6 +2067,9 @@ "cpu": [ "arm" ], + "libc": [ + "glibc" + ], "license": "Apache-2.0", "optional": true, "os": [ @@ -2179,6 +2092,9 @@ "cpu": [ "arm64" ], + "libc": [ + "glibc" + ], "license": "Apache-2.0", "optional": true, "os": [ @@ -2201,6 +2117,9 @@ "cpu": [ "ppc64" ], + "libc": [ + "glibc" + ], "license": "Apache-2.0", "optional": true, "os": [ @@ -2223,6 +2142,9 @@ "cpu": [ "riscv64" ], + "libc": [ + "glibc" + ], "license": "Apache-2.0", "optional": true, "os": [ @@ -2245,6 +2167,9 @@ "cpu": [ "s390x" ], + "libc": [ + "glibc" + ], "license": "Apache-2.0", "optional": true, "os": [ @@ -2267,6 +2192,9 @@ "cpu": [ "x64" ], + "libc": [ + "glibc" + ], "license": "Apache-2.0", "optional": true, "os": [ @@ -2289,6 +2217,9 @@ "cpu": [ "arm64" ], + "libc": [ + "musl" + ], "license": "Apache-2.0", "optional": true, "os": [ @@ -2311,6 +2242,9 @@ "cpu": [ "x64" ], + "libc": [ + "musl" + ], "license": "Apache-2.0", "optional": true, "os": [ @@ -2435,56 +2369,6 @@ "node": ">=12" } }, - "node_modules/@isaacs/cliui/node_modules/ansi-regex": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", - "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/@isaacs/cliui/node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "license": "MIT" - }, - "node_modules/@isaacs/cliui/node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "license": "MIT", - "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@isaacs/cliui/node_modules/strip-ansi": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", - "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.2.2" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, "node_modules/@jridgewell/gen-mapping": { "version": "0.3.13", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", @@ -2541,29 +2425,10 @@ "integrity": "sha512-M5UknZPHRu3DEDWoipU6sE8PdkZ6Z/S+v4dD+Ke8IaNlpdSQah50lz1KtcFBa2vsdOnwbbnxJwVM4wty6udA5w==", "license": "MIT" }, - "node_modules/@napi-rs/wasm-runtime": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.6.tgz", - "integrity": "sha512-ZLv/JdUfkvOy9eCnnBaGfiO+XimbjebAeO+MRQqD/B+FR1tnRN0tpKSJHRbE8sFfS6aqsXZ67TQjfwfsxULVbg==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@tybys/wasm-util": "^0.10.3" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Brooooooklyn" - }, - "peerDependencies": { - "@emnapi/core": "^1.7.1", - "@emnapi/runtime": "^1.7.1" - } - }, "node_modules/@nodable/entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@nodable/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-9uGyhaQavEUMC8AIddIjau4NsnsXhou+j5sBAGojCM1oxmQpVKTWR/9JxABD6UAv12vpIms55fPZKFQEhG6uBg==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@nodable/entities/-/entities-3.0.0.tgz", + "integrity": "sha512-8L9xFeTYKhm49xfIypoe2W5wV1m/3Z58kT+7kR9A8OyFxcPduI4VmxaUMQyKYrRjUoLLSXv6EKKID5Tvj9cUVw==", "funding": [ { "type": "github", @@ -2573,9 +2438,9 @@ "license": "MIT" }, "node_modules/@oxc-project/types": { - "version": "0.138.0", - "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.138.0.tgz", - "integrity": "sha512-1a7ZKmrRTCoN1XMZ4L0PyyqrMnrNlLyPuOkdSX2MZg7IiIGRUyurNhAm73ptDOraoBcIordsIGKNPKUzy3ZmfA==", + "version": "0.146.0", + "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.146.0.tgz", + "integrity": "sha512-XC0QsnnhVe7sLIWmYmdPw7x5P0h4W8vUU3Nv1ySgWXtvCz8NizoAEpGXA0sOYoJQV2Rl13LgURAHQ5cI5ILCSA==", "dev": true, "license": "MIT", "funding": { @@ -2583,9 +2448,9 @@ } }, "node_modules/@parcel/watcher": { - "version": "2.5.6", - "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.5.6.tgz", - "integrity": "sha512-tmmZ3lQxAe/k/+rNnXQRawJ4NjxO2hqiOLTHvWchtGZULp4RyFeh6aU4XdOYBFe2KE1oShQTv4AblOs2iOrNnQ==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.6.0.tgz", + "integrity": "sha512-7FNeNl8NCE7aINx7WXiKQrPYZWC/hvrTsmk6zmxbI7LTXE7hVek/n8AfVgpe2y82zl3w0HvCHN0bVKMBoJcC0w==", "dev": true, "hasInstallScript": true, "license": "MIT", @@ -2594,7 +2459,7 @@ "detect-libc": "^2.0.3", "is-glob": "^4.0.3", "node-addon-api": "^7.0.0", - "picomatch": "^4.0.3" + "picomatch": "^4.0.4" }, "engines": { "node": ">= 10.0.0" @@ -2604,25 +2469,24 @@ "url": "https://opencollective.com/parcel" }, "optionalDependencies": { - "@parcel/watcher-android-arm64": "2.5.6", - "@parcel/watcher-darwin-arm64": "2.5.6", - "@parcel/watcher-darwin-x64": "2.5.6", - "@parcel/watcher-freebsd-x64": "2.5.6", - "@parcel/watcher-linux-arm-glibc": "2.5.6", - "@parcel/watcher-linux-arm-musl": "2.5.6", - "@parcel/watcher-linux-arm64-glibc": "2.5.6", - "@parcel/watcher-linux-arm64-musl": "2.5.6", - "@parcel/watcher-linux-x64-glibc": "2.5.6", - "@parcel/watcher-linux-x64-musl": "2.5.6", - "@parcel/watcher-win32-arm64": "2.5.6", - "@parcel/watcher-win32-ia32": "2.5.6", - "@parcel/watcher-win32-x64": "2.5.6" + "@parcel/watcher-android-arm64": "2.6.0", + "@parcel/watcher-darwin-arm64": "2.6.0", + "@parcel/watcher-darwin-x64": "2.6.0", + "@parcel/watcher-freebsd-x64": "2.6.0", + "@parcel/watcher-linux-arm-glibc": "2.6.0", + "@parcel/watcher-linux-arm-musl": "2.6.0", + "@parcel/watcher-linux-arm64-glibc": "2.6.0", + "@parcel/watcher-linux-arm64-musl": "2.6.0", + "@parcel/watcher-linux-x64-glibc": "2.6.0", + "@parcel/watcher-linux-x64-musl": "2.6.0", + "@parcel/watcher-win32-arm64": "2.6.0", + "@parcel/watcher-win32-x64": "2.6.0" } }, "node_modules/@parcel/watcher-android-arm64": { - "version": "2.5.6", - "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.6.tgz", - "integrity": "sha512-YQxSS34tPF/6ZG7r/Ih9xy+kP/WwediEUsqmtf0cuCV5TPPKw/PQHRhueUo6JdeFJaqV3pyjm0GdYjZotbRt/A==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.6.0.tgz", + "integrity": "sha512-trgpLSCKRC/huFjXX/Smh+0sWe4+YtKfktIToiMl59ghz7z+qkH6kMvNnUbLyRs9N11t8l4svSCs1+5B3rOAhA==", "cpu": [ "arm64" ], @@ -2641,9 +2505,9 @@ } }, "node_modules/@parcel/watcher-darwin-arm64": { - "version": "2.5.6", - "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.6.tgz", - "integrity": "sha512-Z2ZdrnwyXvvvdtRHLmM4knydIdU9adO3D4n/0cVipF3rRiwP+3/sfzpAwA/qKFL6i1ModaabkU7IbpeMBgiVEA==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.6.0.tgz", + "integrity": "sha512-Y3QV0gl7Q1zbfueunkWIERICbEojQFCgpyG7YqOGNFLsckXyI1xu9mAIUpKY9QBYzBtSkN8dBPwd3yiAO9ovMw==", "cpu": [ "arm64" ], @@ -2662,9 +2526,9 @@ } }, "node_modules/@parcel/watcher-darwin-x64": { - "version": "2.5.6", - "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.6.tgz", - "integrity": "sha512-HgvOf3W9dhithcwOWX9uDZyn1lW9R+7tPZ4sug+NGrGIo4Rk1hAXLEbcH1TQSqxts0NYXXlOWqVpvS1SFS4fRg==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.6.0.tgz", + "integrity": "sha512-Ohv6OpzhUfKYD7Beb8kDvG0jbIxORCYY1JRdZnaBtnjjkJxgD7ZVL0nw2sCYd0yTMKTvz3nnTnOF3cDifK+kvw==", "cpu": [ "x64" ], @@ -2683,9 +2547,9 @@ } }, "node_modules/@parcel/watcher-freebsd-x64": { - "version": "2.5.6", - "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.6.tgz", - "integrity": "sha512-vJVi8yd/qzJxEKHkeemh7w3YAn6RJCtYlE4HPMoVnCpIXEzSrxErBW5SJBgKLbXU3WdIpkjBTeUNtyBVn8TRng==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.6.0.tgz", + "integrity": "sha512-5HmXvDgs8VK+74jF9y9/2FE3/OnlcKmc56tjmSrEuZjpSZOGL+fvAu+HKJBdPs9uwoP2hE6TlSUpXZ/C5jUFmQ==", "cpu": [ "x64" ], @@ -2704,13 +2568,16 @@ } }, "node_modules/@parcel/watcher-linux-arm-glibc": { - "version": "2.5.6", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.6.tgz", - "integrity": "sha512-9JiYfB6h6BgV50CCfasfLf/uvOcJskMSwcdH1PHH9rvS1IrNy8zad6IUVPVUfmXr+u+Km9IxcfMLzgdOudz9EQ==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.6.0.tgz", + "integrity": "sha512-Ps/hui3A+vMbjdqlqAowK2ZL8+BO8dBjxeWXj6npTBs3jx4wWmbPpaLuqwrQrSqIVMCnpWo238bJ1U37GhQOYg==", "cpu": [ "arm" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -2725,13 +2592,16 @@ } }, "node_modules/@parcel/watcher-linux-arm-musl": { - "version": "2.5.6", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.6.tgz", - "integrity": "sha512-Ve3gUCG57nuUUSyjBq/MAM0CzArtuIOxsBdQ+ftz6ho8n7s1i9E1Nmk/xmP323r2YL0SONs1EuwqBp2u1k5fxg==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.6.0.tgz", + "integrity": "sha512-9c6AUHgHoG+IY88MRIHupztQiQnrbqHYQjkM2btA+Bf/wQnQMuiD0Wfk1EVv3TlNT3x41uU71rn6E4xh/+zvkw==", "cpu": [ "arm" ], "dev": true, + "libc": [ + "musl" + ], "license": "MIT", "optional": true, "os": [ @@ -2746,13 +2616,16 @@ } }, "node_modules/@parcel/watcher-linux-arm64-glibc": { - "version": "2.5.6", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.6.tgz", - "integrity": "sha512-f2g/DT3NhGPdBmMWYoxixqYr3v/UXcmLOYy16Bx0TM20Tchduwr4EaCbmxh1321TABqPGDpS8D/ggOTaljijOA==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.6.0.tgz", + "integrity": "sha512-yHRqS2owEXe6Hic9z6Mh1ECsCd+ODVOGvZDyciqRd21+v+o+DnXMOrw50DSpIG2sb8GPEaPPmfeCAWKPJdq46g==", "cpu": [ "arm64" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -2767,13 +2640,16 @@ } }, "node_modules/@parcel/watcher-linux-arm64-musl": { - "version": "2.5.6", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.6.tgz", - "integrity": "sha512-qb6naMDGlbCwdhLj6hgoVKJl2odL34z2sqkC7Z6kzir8b5W65WYDpLB6R06KabvZdgoHI/zxke4b3zR0wAbDTA==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.6.0.tgz", + "integrity": "sha512-WhB2e/V7rqdHHWZusBSPuy5Ei8S6lSz6FE5TKKQz5h3a0O+C+mhY7vxU9b/stqvMb8beLnPY82ZrFTLKs+SrKA==", "cpu": [ "arm64" ], "dev": true, + "libc": [ + "musl" + ], "license": "MIT", "optional": true, "os": [ @@ -2788,13 +2664,16 @@ } }, "node_modules/@parcel/watcher-linux-x64-glibc": { - "version": "2.5.6", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.6.tgz", - "integrity": "sha512-kbT5wvNQlx7NaGjzPFu8nVIW1rWqV780O7ZtkjuWaPUgpv2NMFpjYERVi0UYj1msZNyCzGlaCWEtzc+exjMGbQ==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.6.0.tgz", + "integrity": "sha512-ulGE6x6Oz6iAwg75T8YQSoguBWasniIbX+QWpaYPcCnDOpdWX3k+4xbEYPZVLxOuoJI+svJJPD3sEj8G7lrQ3A==", "cpu": [ "x64" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -2809,13 +2688,16 @@ } }, "node_modules/@parcel/watcher-linux-x64-musl": { - "version": "2.5.6", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.6.tgz", - "integrity": "sha512-1JRFeC+h7RdXwldHzTsmdtYR/Ku8SylLgTU/reMuqdVD7CtLwf0VR1FqeprZ0eHQkO0vqsbvFLXUmYm/uNKJBg==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.6.0.tgz", + "integrity": "sha512-tkBYKt7YQrjIJWYDnto2YgO8MRkjlMTSNoRHzsXinBqbLdeOM3L32wPZJvIZxqaLMfSlS/4sUjH/6STVP/XDLw==", "cpu": [ "x64" ], "dev": true, + "libc": [ + "musl" + ], "license": "MIT", "optional": true, "os": [ @@ -2830,9 +2712,9 @@ } }, "node_modules/@parcel/watcher-win32-arm64": { - "version": "2.5.6", - "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.6.tgz", - "integrity": "sha512-3ukyebjc6eGlw9yRt678DxVF7rjXatWiHvTXqphZLvo7aC5NdEgFufVwjFfY51ijYEWpXbqF5jtrK275z52D4Q==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.6.0.tgz", + "integrity": "sha512-gIZAP23jaHjGWasY/TY6yL7NHFClf0Ga7FN+iINvk+KN94rhm94lYZhFsbYFNcA04/onvGD9kKmiJLJB2HbNwQ==", "cpu": [ "arm64" ], @@ -2850,33 +2732,12 @@ "url": "https://opencollective.com/parcel" } }, - "node_modules/@parcel/watcher-win32-ia32": { - "version": "2.5.6", - "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.6.tgz", - "integrity": "sha512-k35yLp1ZMwwee3Ez/pxBi5cf4AoBKYXj00CZ80jUz5h8prpiaQsiRPKQMxoLstNuqe2vR4RNPEAEcjEFzhEz/g==", + "node_modules/@parcel/watcher-win32-x64": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.6.0.tgz", + "integrity": "sha512-cA+/pXV2YkfxlIcXOQ5fSWqAzzPyD78/x5qbK/I0vUkrlYHA8TIz+MXjAbGouguKVSI4bOmkTSJ1/poVSsgt+A==", "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-win32-x64": { - "version": "2.5.6", - "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.6.tgz", - "integrity": "sha512-hbQlYcCq5dlAX9Qx+kFb0FHue6vbjlf0FrNzSKdYK2APUf7tGfGxQCk2ihEREmbR6ZMc0MVAD5RIX/41gpUzTw==", - "cpu": [ - "x64" + "x64" ], "dev": true, "license": "MIT", @@ -2923,10 +2784,27 @@ "dev": true, "license": "MIT" }, + "node_modules/@rolldown/binding-android-arm-eabi": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm-eabi/-/binding-android-arm-eabi-1.2.5.tgz", + "integrity": "sha512-DLe/i+l8ynIBY7XEQ191TeZvCoowIGa18R+dIV30GW7DiOtp74i/xX8hs8GUjW5ARV7VZuie3d6AumSmCwbeRA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, "node_modules/@rolldown/binding-android-arm64": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.1.4.tgz", - "integrity": "sha512-EZLpf/8y7GXkkra90ML47kzik/GMP3EMcE9bPyHmRfxLC6z9+aW5A8poCsoxjrT5GfEcNAAvWwUHjvP1pUQkfw==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.2.5.tgz", + "integrity": "sha512-zXcwKlQApYAOELHd8PwKDFkagYF9Wy4e0RJ+0qnzl9Pjnpj75TEG8ufv40p2J7kCEfwZAsNiuzRIyNNMWT38ig==", "cpu": [ "arm64" ], @@ -2941,9 +2819,9 @@ } }, "node_modules/@rolldown/binding-darwin-arm64": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.1.4.tgz", - "integrity": "sha512-aUi+HBvmYb7j8krl1+qJgkG8C17fO79gk3c+jPw4S8glRFc1DTija9S3EyaTSQUm5GJXYKDAsugBEhFHH2vYiQ==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.2.5.tgz", + "integrity": "sha512-dK4QakI42nzWgJT5sm4y4y/O//D4OxM75/cH28RLV+nzIN9AY+YsbuUVrUTjlLjXR6vpyxFbSsbmNuJ6BP9sww==", "cpu": [ "arm64" ], @@ -2958,9 +2836,9 @@ } }, "node_modules/@rolldown/binding-darwin-x64": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.1.4.tgz", - "integrity": "sha512-F7hHC3gwY11+vByKPRWqwGbeXWVgKmL+pTGCinaEhdihzBV2aQ0fvZOch9cXYUOKuKKq429HeYXOqQLc7wFCEg==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.2.5.tgz", + "integrity": "sha512-fqSALaUu1Wjd1nK2uW2kJDWdLCc8lx1IcY+MTY26Aurfdx19anlzhqXOgCFbBFQnlFDTn4TC1/7Nz4Bl2mLP3A==", "cpu": [ "x64" ], @@ -2975,9 +2853,9 @@ } }, "node_modules/@rolldown/binding-freebsd-x64": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.1.4.tgz", - "integrity": "sha512-sI5yw+7s92SK6odiEhD5lKCBlWcpjHS5qyqpVQbZAJ0fIzEUXrmbl3DH2ybR3PZogulNJF+COLtmA8hUfvkCCQ==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.2.5.tgz", + "integrity": "sha512-/vCnNxlkxs9tKxNDcyWUePpJ/PgTzxIaVhoM5SmG8UV+GR/IcPam4VYxi7GIMo7PSDuNqlJqvprqii9NqqVCMw==", "cpu": [ "x64" ], @@ -2992,9 +2870,9 @@ } }, "node_modules/@rolldown/binding-linux-arm-gnueabihf": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.1.4.tgz", - "integrity": "sha512-mCi0OKgEieFircrtVYmQAFGszRtMnZ6fpZAXrxanXAu7lqZcsK1E1RAaZNG0uKAnxox3B1f4EyQNnoyMfN1vAA==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.2.5.tgz", + "integrity": "sha512-abk0NLA519LxRCszmbE0jYKuQ9YPocOXTiOXOo6Yr+YAT95VH+PtqYAjOJvGKt3viEd/x4qzabAlwd5bHOOARg==", "cpu": [ "arm" ], @@ -3009,13 +2887,16 @@ } }, "node_modules/@rolldown/binding-linux-arm64-gnu": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.1.4.tgz", - "integrity": "sha512-B9Ial3Kv5sh0SHnB1g/QWcUQCEvCF6QKGAl4zXypYj65mVI+B4AhFBwPtSN7pDrJeIx8Z7zdy4ntx+wQABom7w==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.2.5.tgz", + "integrity": "sha512-Y7eALiJ8lr0M2HH103Js+g7V34wf6snlpZLAsHI90uLhr3PVlNsbFVAXJC9d/V6BnPyKtpSwI+NcB/RLxsQxuA==", "cpu": [ "arm64" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -3026,13 +2907,16 @@ } }, "node_modules/@rolldown/binding-linux-arm64-musl": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.1.4.tgz", - "integrity": "sha512-lZVym0PuHE1KZ22gmFTC15lAkrg9iTszR617oYRB/iPY1A56ywoJzVKOJBKaot5RiikCObmur6pogpse3gRcng==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.2.5.tgz", + "integrity": "sha512-xMvZgnbZg4YVnR/AX2b3oOPDTFYJvUVaJg5FedA/LuvexAtXibZQej4cnTkw3rjsJ/ggUROB64TdtETiim+FYA==", "cpu": [ "arm64" ], "dev": true, + "libc": [ + "musl" + ], "license": "MIT", "optional": true, "os": [ @@ -3043,13 +2927,16 @@ } }, "node_modules/@rolldown/binding-linux-ppc64-gnu": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.1.4.tgz", - "integrity": "sha512-t2DNiLJWNTbnEHyUzTumldML6ET4/g16467LZoDDJ3tSxGvguL5/NyC2lCsNKuyRycg9XeDQF5SSv+TNOhQEXg==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.2.5.tgz", + "integrity": "sha512-GRjeqTUDHTo5GwntsLaAMcBahG3nlpjftXWZLN73HiYQlhwEowvarFgQnRnQZtIp4keXX7quXFbG38uPZBa2EA==", "cpu": [ "ppc64" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -3060,13 +2947,16 @@ } }, "node_modules/@rolldown/binding-linux-s390x-gnu": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.1.4.tgz", - "integrity": "sha512-0WIRnL1Uw4BvTZRLQt+PVgo6ZKTJadlC2btP+/EOXv2f/DWbY0rEgl+y834mIVwP1FkTlWVTrGGJXf12lru7EQ==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.2.5.tgz", + "integrity": "sha512-vLNTR45F2Uwc8AufkNXPmB4VliaXs+FvcheEogIzOXzO4l+LzieXF5A/TWxLy5HtqpsRCHUfd0lPVrrdgXdLHQ==", "cpu": [ "s390x" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -3077,13 +2967,16 @@ } }, "node_modules/@rolldown/binding-linux-x64-gnu": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.1.4.tgz", - "integrity": "sha512-JWtGshGfX+oENAKonoNkqEJX+7hC8yfhi9GUyPX1VX4mdh1y5r+ZiJLR5XzAB0aoP6s/PcILsGjKq8O0mm24bw==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.2.5.tgz", + "integrity": "sha512-Mgj59/HTuYeK9Gz2MA+mBWKnHsAgkBSec15ZMb1st3oIfFbX7gCjOae7GydHhzcyQi9Z/7M1QuN9bR3oFqF0jQ==", "cpu": [ "x64" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -3094,13 +2987,16 @@ } }, "node_modules/@rolldown/binding-linux-x64-musl": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.1.4.tgz", - "integrity": "sha512-rT6yQcxUuXs4CnbofqwHRRV0iem349rLMYpTjkgQGLjrY4ado/eDzwPZPTCgTOlF6Nkp8NEv70yLMTn6qkWxsQ==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.2.5.tgz", + "integrity": "sha512-mY8AP0/ichsbhAxGnLa3d3+MwV0EfgrPND2bplI3Ym8T6R2pJ0N87bvrKVwNXmdy3jnr6eQBecdqx/HMknBmpA==", "cpu": [ "x64" ], "dev": true, + "libc": [ + "musl" + ], "license": "MIT", "optional": true, "os": [ @@ -3111,9 +3007,9 @@ } }, "node_modules/@rolldown/binding-openharmony-arm64": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.1.4.tgz", - "integrity": "sha512-KXMGoboq5cyaCQjDA4GLuRiOwBQ0EyFnJoVViLeZ45/3rFItRODEr+NdsBcVpll40hhNArlm/speWGRvj08LzA==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.2.5.tgz", + "integrity": "sha512-8SLssA2oweAxyRgDp789ACfRb/3P+zNRJpzZxSizxF9m8NUDQ4+3xjo8ttjhVGGw6Qxb70oZiEtIjaKikCO7Yw==", "cpu": [ "arm64" ], @@ -3127,63 +3023,10 @@ "node": "^20.19.0 || >=22.12.0" } }, - "node_modules/@rolldown/binding-wasm32-wasi": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/@rolldown/binding-wasm32-wasi/-/binding-wasm32-wasi-1.1.4.tgz", - "integrity": "sha512-5K83rb36oJiY7BCyE9zLZtGcPV4g5wvq+xwdO0XPIwDVZI8cyB/AUjkNXGb92/rnmezEkjMOpgY61rtwjQtFwg==", - "cpu": [ - "wasm32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@emnapi/core": "1.11.1", - "@emnapi/runtime": "1.11.1", - "@napi-rs/wasm-runtime": "^1.1.6" - }, - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@rolldown/binding-wasm32-wasi/node_modules/@emnapi/core": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.11.1.tgz", - "integrity": "sha512-RSvbQmHzdKzNsLYa/wHrbc3KN4sYLKAdPZxqiM2HATqv/SBk2/ENSHpvXGaLOMcsAyz0poEGqkmmKYG3OWiJEQ==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@emnapi/wasi-threads": "1.2.2", - "tslib": "^2.4.0" - } - }, - "node_modules/@rolldown/binding-wasm32-wasi/node_modules/@emnapi/runtime": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.11.1.tgz", - "integrity": "sha512-vgj7R3y3Wgx24IQaGPA/R6YFXLHVMOZ0uVEyIQPaWs+rd1AzfEMXlAC22FYwO1XkKR6NPsq7mUandH8oIRdZFw==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@rolldown/binding-wasm32-wasi/node_modules/@emnapi/wasi-threads": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.2.tgz", - "integrity": "sha512-c95qOXkHdydNKhscBTebqEC1CVAZpyqOfVfBzQ1qgzyl3gfeldUjIggDbIZgDKsHLgnsM+igH7TJ/eAasaVuMA==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, "node_modules/@rolldown/binding-win32-arm64-msvc": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.1.4.tgz", - "integrity": "sha512-PnWBtw3TV5KOg69HQQDR0mnQuyCmSGR2pAB4DC1rPF808fgKeTUMj2EOEyKATpgiuxuR5APQmiDO7PDgEjTFSA==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.2.5.tgz", + "integrity": "sha512-vGbruD5zquhoc8D9SViXgN2FBJtNdTyQ4DtG+SWiEGlJiAzoKcZ2xp+xuXCffhubVdt0NJlTZqkeRuERy7g8Cw==", "cpu": [ "arm64" ], @@ -3198,9 +3041,9 @@ } }, "node_modules/@rolldown/binding-win32-x64-msvc": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.1.4.tgz", - "integrity": "sha512-M1lpniBePobTfsa7Ks9a199e1akxsXn+GYBUKsEzv3YFzOm1HJAMNwKI3qr0Zq+mxwx9gOZoTdP1yXRYsZUocQ==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.2.5.tgz", + "integrity": "sha512-e/SXpgISz+IoqVcSSI0rx/d/he8zqLex+/rCWpnHpmVfmPIUjag9H6P7zotf0gJHwPUhQxZ/mF8tr6acebT9yw==", "cpu": [ "x64" ], @@ -3237,17 +3080,6 @@ "node": ">= 10" } }, - "node_modules/@tybys/wasm-util": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.3.tgz", - "integrity": "sha512-F3fo1MYrRJYL3zER0OUOmkutjr1Vp23m7OsSgp7nq4SP6OqX6C/56XFIPAl5bt3zaBRjmW7SGz3u/6LwFpYcOg==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, "node_modules/@types/caseless": { "version": "0.12.5", "resolved": "https://registry.npmjs.org/@types/caseless/-/caseless-0.12.5.tgz", @@ -3301,15 +3133,15 @@ "license": "MIT" }, "node_modules/@types/luxon": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/@types/luxon/-/luxon-3.7.2.tgz", - "integrity": "sha512-gW+Oib+vUtGJBtNC8V9Reww0oIpusw+4m81uncg9REGZAJfqOQHfo/nkabnc7w0QReXyPqjrbWMJk6NuAkiX3Q==", + "version": "3.7.5", + "resolved": "https://registry.npmjs.org/@types/luxon/-/luxon-3.7.5.tgz", + "integrity": "sha512-jJ41Q4z6ZVO260MNDdHfW7+7a5iMiX8Mr6ZJHcmgrvhZha6dz5704o/lF2kKl6URjH6ivEL97w9xS/MgpJEphg==", "license": "MIT" }, "node_modules/@types/node": { - "version": "26.1.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-26.1.0.tgz", - "integrity": "sha512-O0A1G3xPGy4w7AgQdAQYUlQ+BKk2Oovw8eRpofyp5KdBZULnbe+WqaOVNrm705SHphCiG4XHsACrSmPu1f+Kgw==", + "version": "26.2.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-26.2.0.tgz", + "integrity": "sha512-5IviulTZeRNp2vAJ514cc/HUlY5nZ9fCbq9DMyC52BrhFZACo3nI0R7qBxhQmo/d27NFe96ur/b7Wwxklda+kg==", "license": "MIT", "dependencies": { "undici-types": "~8.3.0" @@ -3372,16 +3204,16 @@ "license": "MIT" }, "node_modules/@vitest/expect": { - "version": "4.1.10", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-4.1.10.tgz", - "integrity": "sha512-YsCn+qAk1GWjQOWFEsEcL2gNQ0zmVmQu3T03qP6UyjhtmdtwtbuI+DASn/7iQB3HGTXkdBwGddzxPlmiql5vlA==", + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-4.1.11.tgz", + "integrity": "sha512-VX2x5vNJXET47KAFzwERI+KRMtTTCSWTfSMKsW7JsUsXV4psq++e3DvZpuTDOpHcxytiDs6p2nhVb2tVDiiUYw==", "dev": true, "license": "MIT", "dependencies": { "@standard-schema/spec": "^1.1.0", "@types/chai": "^5.2.2", - "@vitest/spy": "4.1.10", - "@vitest/utils": "4.1.10", + "@vitest/spy": "4.1.11", + "@vitest/utils": "4.1.11", "chai": "^6.2.2", "tinyrainbow": "^3.1.0" }, @@ -3390,13 +3222,13 @@ } }, "node_modules/@vitest/mocker": { - "version": "4.1.10", - "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-4.1.10.tgz", - "integrity": "sha512-v0xaezt+DKEmKfaxg133ldzADrwLGd7Ze1MfQQTYfvs8OqZIwbxyxaYURivwV7sWy5fqn3rH5uOrSp07bp44Ow==", + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-4.1.11.tgz", + "integrity": "sha512-2XJVD55d1o5AZous5CCGKS74g/riOj9odEt2bQpCVZeblHyHdnMeFl4jl0XjU21stf4mbjUkew2eXQZt65g5CQ==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/spy": "4.1.10", + "@vitest/spy": "4.1.11", "estree-walker": "^3.0.3", "magic-string": "^0.30.21" }, @@ -3417,9 +3249,9 @@ } }, "node_modules/@vitest/pretty-format": { - "version": "4.1.10", - "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.1.10.tgz", - "integrity": "sha512-W1HsjSH4MXQ9YfmmhLAoIYf1HRfekQCGngeIgcei6MP5QQGWUe0gkopdZQaVCFO+JDJMrAJGwa5pRpNpvy4P8Q==", + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.1.11.tgz", + "integrity": "sha512-yiZzPbGTS9Sr/JpFl8zHrcIkAofNbFV6k21vIgQN/cY/oxZeXhJv5sc/MBJ5jFKWmWs+oJHw0UXLZjmf931+Vw==", "dev": true, "license": "MIT", "dependencies": { @@ -3430,13 +3262,13 @@ } }, "node_modules/@vitest/runner": { - "version": "4.1.10", - "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-4.1.10.tgz", - "integrity": "sha512-IKI6kpIH+LmpROplyLwBBaCfMgOZOMsygVa6BARD6ahA04VRuJSa6OaVG7kRvSEMD870Vd91rSSw0eegtWyLGg==", + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-4.1.11.tgz", + "integrity": "sha512-LztvUgdwMNJMIkj3hQnnxiC2Xy1zNxq928W/xhjCLaNCzqTZOudjwbQf6v9IntZGPw132i2Lq2rgTRZHD3JHNw==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/utils": "4.1.10", + "@vitest/utils": "4.1.11", "pathe": "^2.0.3" }, "funding": { @@ -3444,14 +3276,14 @@ } }, "node_modules/@vitest/snapshot": { - "version": "4.1.10", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-4.1.10.tgz", - "integrity": "sha512-xRkfOT1qpTAi/Ti4Y1LtfRc3kEuqxGw59eN2jN9pRWMtS/XDevekhcFSqvQqjUNGksfjMJu3Y+oJ+4Ypn2OaJw==", + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-4.1.11.tgz", + "integrity": "sha512-pN7ikn1ON7h8ee4gIAp4AzyK+zBtJPzVbqOgu5LCEh4VaJVbPQcgYQYJIMGQPXVeJJq1fnfazis7a5pFNPahog==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/pretty-format": "4.1.10", - "@vitest/utils": "4.1.10", + "@vitest/pretty-format": "4.1.11", + "@vitest/utils": "4.1.11", "magic-string": "^0.30.21", "pathe": "^2.0.3" }, @@ -3460,9 +3292,9 @@ } }, "node_modules/@vitest/spy": { - "version": "4.1.10", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-4.1.10.tgz", - "integrity": "sha512-PLf/Ugvoq5wO/b4rwYCR1h2PSIdXz7wnkQFMiUpLdtM7l6pqVFcQIBEHyT1+l+cj7mNwAfZHzqXqDyjvOuwbDw==", + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-4.1.11.tgz", + "integrity": "sha512-apNa/prQy2qCeywhnixOHPRCgGNhvg7T4Dapfl1GahLp/R+uhBm5cPyFoNVyqsNd2h1nJxL6BqqdIjiABL60YA==", "dev": true, "license": "MIT", "funding": { @@ -3470,13 +3302,13 @@ } }, "node_modules/@vitest/utils": { - "version": "4.1.10", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-4.1.10.tgz", - "integrity": "sha512-fy9am/HWxbaGt/Sawrp90vt6Y6jQwf1RX77cz3uwoJwJVMli/e1IEwRPnMNJ7vKfPTwo0diXifkpPvwH9v7nGA==", + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-4.1.11.tgz", + "integrity": "sha512-zTCVGpyFsGWBhllOyKlTw/vnr6D9qxsfSDyfbyZmTyjHw5N/VuvzHpHoQjm2ZJzn4RJgx5w4r7V0er69CmLgPQ==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/pretty-format": "4.1.10", + "@vitest/pretty-format": "4.1.11", "convert-source-map": "^2.0.0", "tinyrainbow": "^3.1.0" }, @@ -3685,12 +3517,11 @@ } }, "node_modules/acorn": { - "version": "8.17.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.17.0.tgz", - "integrity": "sha512-xRQbDb9BnwDafYNn6Vwl839DYVjqXYb1XVGtWAZ1kcDc6iwAL4hg3B1dZlRiuENFeO2H53gFG3in621AdERVAg==", + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.18.0.tgz", + "integrity": "sha512-lGq+9yr1/GuAWaVYIHRjvvySG5/4VfKIvC8EWxStPdcDh/Ka7FG3twP6v4d5BkravUilhIAsG4Qj83t02LWUPQ==", "dev": true, "license": "MIT", - "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -3698,19 +3529,6 @@ "node": ">=0.4.0" } }, - "node_modules/acorn-import-phases": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/acorn-import-phases/-/acorn-import-phases-1.0.4.tgz", - "integrity": "sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10.13.0" - }, - "peerDependencies": { - "acorn": "^8.14.0" - } - }, "node_modules/acorn-walk": { "version": "8.3.5", "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.5.tgz", @@ -3739,7 +3557,6 @@ "integrity": "sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -3803,6 +3620,33 @@ "ajv": "^6.9.1" } }, + "node_modules/ansi-regex": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.3.0.tgz", + "integrity": "sha512-WpDfL7NO6j7tH88IDBNVdUJxDh9nmCteAVW9dsep846XdwF4naCBK+/tGLX3KJgcpgMRXCFlTM2hKGoK9FsdrQ==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, "node_modules/anymatch": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", @@ -3871,9 +3715,9 @@ "license": "MIT" }, "node_modules/autoprefixer": { - "version": "10.5.2", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.5.2.tgz", - "integrity": "sha512-rD5t5DwOjJdmSORcTq64j8MawTC+tbQ+HHqjR4NDumamy/ambn1UJrlKL+KdwujWxMkFjPM3pPHOEA9tl4767Q==", + "version": "10.5.4", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.5.4.tgz", + "integrity": "sha512-MaU0U/za7N3r6brxD4YB/l4NSrFzLPlANv6wEuQVaIPlD3L4W9rFcQPbL/EilY9BHhHvhfcz3gInDLrEtWT4EA==", "dev": true, "funding": [ { @@ -3891,8 +3735,8 @@ ], "license": "MIT", "dependencies": { - "browserslist": "^4.28.4", - "caniuse-lite": "^1.0.30001799", + "browserslist": "^4.28.6", + "caniuse-lite": "^1.0.30001806", "fraction.js": "^5.3.4", "picocolors": "^1.1.1", "postcss-value-parser": "^4.2.0" @@ -3914,13 +3758,13 @@ "license": "MIT" }, "node_modules/axios": { - "version": "1.18.1", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.18.1.tgz", - "integrity": "sha512-3nTvFlvpn9Zu/RkHUqtc7/+al4UpRW5az71ap5zccp6e8RAYEzhMTecX8Dz1wWDYrPpUoB1HAQEGEAEvUr7S9g==", + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.19.0.tgz", + "integrity": "sha512-ht/iuYZXEjFxLH/Hkezgd7m6JKlHHXEUSneaDz8uZe1Gj5QZtCnpyDsckvAiEnT89OEbCLmnte4R4sn7P0EKFw==", "license": "MIT", "dependencies": { "follow-redirects": "^1.16.0", - "form-data": "^4.0.5", + "form-data": "^4.0.6", "https-proxy-agent": "^5.0.1", "proxy-from-env": "^2.1.0" } @@ -4024,9 +3868,9 @@ "license": "MIT" }, "node_modules/baseline-browser-mapping": { - "version": "2.10.42", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.42.tgz", - "integrity": "sha512-c/jurFrDLyui7o1J86yLkRu4LMsTYcBohveus7/I2Hzdn9KIP2bdJPTue/lR1KH46enoPbD77GKeSYNdyPoD3Q==", + "version": "2.11.18", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.11.18.tgz", + "integrity": "sha512-1iEmLEYSiE1SeBoAfPo/Mnx3PzfzHUkDK61ASkCpuk3YXugYLH5DYK1SzqV55F8FMI6s0F+/tCP7Polz1QRjxw==", "dev": true, "license": "Apache-2.0", "bin": { @@ -4127,9 +3971,9 @@ } }, "node_modules/body-parser/node_modules/content-type": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-2.0.0.tgz", - "integrity": "sha512-j/O/d7GcZCyNl7/hwZAb606rzqkyvaDctLmckbxLzHvFBzTJHuGEdodATcP3yIRoDrLHkIATJuvzbFlp/ki2cQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-2.1.0.tgz", + "integrity": "sha512-mj7UPXE0jaqaOsukNZRUEfEi2AcL7C/vwmwcHV0O97eO1E1pxBZuyjlZrx5seTaNBg1U6+o35wpa35Qfcc+7ag==", "license": "MIT", "engines": { "node": ">=18" @@ -4140,16 +3984,16 @@ } }, "node_modules/brace-expansion": { - "version": "5.0.7", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.7.tgz", - "integrity": "sha512-7oFy703dxfY3/NLxC1fh2SUCQ0H9rmAY+5EpDVfXjUTTs+HEwR2nYaqLv+GWcTsumwxPfiz6CzCNkwXwBUwqCA==", + "version": "5.0.9", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.9.tgz", + "integrity": "sha512-ScQ4IuvIEF1TMlP7Zt+vjJ//9zlPb2SDcxWxM3bk8s6t6GGdJ7KO1dCcTidOPJKePW30LE/2cT7wCyPho9/Wxg==", "dev": true, "license": "MIT", "dependencies": { "balanced-match": "^4.0.2" }, "engines": { - "node": "18 || 20 || >=22" + "node": "20 || >=22" } }, "node_modules/braces": { @@ -4166,9 +4010,9 @@ } }, "node_modules/browserslist": { - "version": "4.28.5", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.5.tgz", - "integrity": "sha512-Cu2E6QejHWzuDMTkuwgpABFgDfZrXLQq5V13YOACZx4mFAG4IwGTbTfHPMr4WtxlHoXSM8FIuRwYYCz5XiabaQ==", + "version": "4.28.8", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.8.tgz", + "integrity": "sha512-V2NpofLblG64mfOtSgDhOJESZEGogzDMBv/q+W6oc4LXWP/q75eOXoOaaOu1EOadB9U4Bwx/e0yzbvwKH8zalA==", "dev": true, "funding": [ { @@ -4185,13 +4029,12 @@ } ], "license": "MIT", - "peer": true, "dependencies": { - "baseline-browser-mapping": "^2.10.42", - "caniuse-lite": "^1.0.30001800", - "electron-to-chromium": "^1.5.387", - "node-releases": "^2.0.50", - "update-browserslist-db": "^1.2.3" + "baseline-browser-mapping": "^2.11.12", + "caniuse-lite": "^1.0.30001809", + "electron-to-chromium": "^1.5.402", + "node-releases": "^2.0.53", + "update-browserslist-db": "^1.3.0" }, "bin": { "browserslist": "cli.js" @@ -4297,9 +4140,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001802", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001802.tgz", - "integrity": "sha512-vmv8ub2xwTNmljSKf82mtCk5JH7hC+YgzLj3P5zotvA0tPQ9016tdNNOG8WRca1IxOnhSsivB+J0z5FeE5LOUw==", + "version": "1.0.30001809", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001809.tgz", + "integrity": "sha512-xxWVywk6a6Arlk+hymeycyn/VgqEfLDxupvhH/xiY5SJ/18kmi9o6MiO320DCUzypORHLtvh0I4i04tUhCNHNQ==", "dev": true, "funding": [ { @@ -4327,6 +4170,22 @@ "node": ">=18" } }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "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/chart.js": { "version": "4.5.1", "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-4.5.1.tgz", @@ -4490,24 +4349,30 @@ "license": "MIT" }, "node_modules/core-js": { - "version": "3.49.0", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.49.0.tgz", - "integrity": "sha512-es1U2+YTtzpwkxVLwAFdSpaIMyQaq0PBgm3YD1W3Qpsn1NAmO3KSgZfu+oGSWVu6NvLHoHCV/aYcsE5wiB7ALg==", + "version": "3.50.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.50.0.tgz", + "integrity": "sha512-BRWgOLKkFeCgRudR6zrs8p9XJZcE14grzKMMssoYrk6krtuEZ7MTKPIY5RzOnqsEKIR9kst7wNzphttraT+Yqw==", "hasInstallScript": true, "license": "MIT", + "engines": { + "node": "*" + }, "funding": { "type": "opencollective", "url": "https://opencollective.com/core-js" } }, "node_modules/core-js-compat": { - "version": "3.49.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.49.0.tgz", - "integrity": "sha512-VQXt1jr9cBz03b331DFDCCP90b3fanciLkgiOoy8SBHy06gNf+vQ1A3WFLqG7I8TipYIKeYK9wxd0tUrvHcOZA==", + "version": "3.50.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.50.0.tgz", + "integrity": "sha512-XGpFGbMLHwSt74YLTKho7Ib242qi6O8MSX+sRokV4oz7iKXvQWGYZthjIhjRGMxjzVkAubBO512dKGYcefmX3Q==", "dev": true, "license": "MIT", "dependencies": { - "browserslist": "^4.28.1" + "browserslist": "^4.28.7" + }, + "engines": { + "node": ">=6.4.0" }, "funding": { "type": "opencollective", @@ -4515,9 +4380,9 @@ } }, "node_modules/core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", "license": "MIT" }, "node_modules/cosmiconfig": { @@ -4785,16 +4650,16 @@ "license": "MIT" }, "node_modules/electron-to-chromium": { - "version": "1.5.387", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.387.tgz", - "integrity": "sha512-TaxwufTFDufvPEoXdhwVrA3UdFWBeWGkYoJ1K8ldF1xe6gKfth6iRNS5lTQ5JPNOHdGQm8PT1QYKUqFLCiUefQ==", + "version": "1.5.412", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.412.tgz", + "integrity": "sha512-z4rMe3esBzlzovKHj4gxJnsCGZRK5l4baUvm+gCGJBPE+gsyUMKsuU9tnEUtI1dOebXz1ytAPGjvXhmQ7rIPwA==", "dev": true, "license": "ISC" }, "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", "license": "MIT" }, "node_modules/emojis-list": { @@ -4836,9 +4701,9 @@ } }, "node_modules/enhanced-resolve": { - "version": "5.24.2", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.24.2.tgz", - "integrity": "sha512-rpsZEGT1jFuve6QlpyRp9ckQ+kN61hvF9BzCPyMdaKTm8UJce96KBn3sorXOFXlzjPrs3Vc4T1NsSroZ3PxlFw==", + "version": "5.24.5", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.24.5.tgz", + "integrity": "sha512-L1l8TNvomm6UVW5B253AGxQagSQr+vGwhMlrrfRS2qmhx46AMpMVJKQYLvWYbysTMY8VoicOvzHzoHMbyzB+4A==", "dev": true, "license": "MIT", "dependencies": { @@ -4901,9 +4766,9 @@ } }, "node_modules/es-module-lexer": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.3.0.tgz", - "integrity": "sha512-KLdwQm2NvGLDkQDCGvmiQrhkd0JbMzXthwQAUgWjQuQdBLFa3eiBP5arXZyA+f8x+x7OXgud6bq2rxjGtHV2tw==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.3.2.tgz", + "integrity": "sha512-poHGpORABojJJucnV9KbOavETW8lBVnphkW77ER5/BQ5Fz7oXSoCNek7IH3vR5nRjdsEz926ibFYX8KtLQmdyw==", "dev": true, "license": "MIT" }, @@ -4950,6 +4815,19 @@ "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", "license": "MIT" }, + "node_modules/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/eslint-scope": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", @@ -5149,9 +5027,9 @@ "license": "MIT" }, "node_modules/fast-uri": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.3.tgz", - "integrity": "sha512-i70LwGWUduXqzicKXWshooq+sWL1K3WUU5rKZNG/0i3a1OSoX3HqhH5WbWwTmqWfor4urUakGPiRQcleRZTwOg==", + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.6.tgz", + "integrity": "sha512-7Ical1vFEMr0onbVzEDIreM22I4khW+fzyQPwvAFWBp1iwdshSZRsL4jjRvPG9JP1uiqMHRto+YU6R2/CzDz5Q==", "dev": true, "funding": [ { @@ -5166,9 +5044,9 @@ "license": "BSD-3-Clause" }, "node_modules/fast-xml-builder": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/fast-xml-builder/-/fast-xml-builder-1.2.1.tgz", - "integrity": "sha512-tPb5TTWfgfVx5BNSi2xV0eLr89POeXXn0dXIsCJ9m1narrWxeIyx6je9d7Rce/3NyXLbvuQmLkxq+RuxMWejvw==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/fast-xml-builder/-/fast-xml-builder-1.3.1.tgz", + "integrity": "sha512-pIM/1n3ntFXKYrUZwW7QCK0gAW7XY+wzj1YMIV3tLDvPj/V+zTGJK5e3/4WJfwj0qWw2ElNXiTixda/R+3YSug==", "funding": [ { "type": "github", @@ -5177,14 +5055,14 @@ ], "license": "MIT", "dependencies": { - "path-expression-matcher": "^1.5.0", - "xml-naming": "^0.1.0" + "path-expression-matcher": "^1.6.2", + "xml-naming": "^0.3.0" } }, "node_modules/fast-xml-parser": { - "version": "5.9.3", - "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.9.3.tgz", - "integrity": "sha512-brCNCeScma/kqa54J4PIDriSSSLssRkuYaUCpvHJulGc3HGI/xxKUCTDcYkAdqJsyb//ydpbxecjC3hB9+tb/g==", + "version": "5.11.0", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.11.0.tgz", + "integrity": "sha512-9IGxMqvqLOnqP+Egi1nqDHKv5k8aZ7r9n558enxcucmyVGEBNPAU+MOg/8jPIS7rO7sSq4gFm1/nHtiaubMruw==", "funding": [ { "type": "github", @@ -5193,12 +5071,12 @@ ], "license": "MIT", "dependencies": { - "@nodable/entities": "^2.2.0", + "@nodable/entities": "^3.0.0", "fast-xml-builder": "^1.2.0", - "is-unsafe": "^1.0.1", - "path-expression-matcher": "^1.5.0", - "strnum": "^2.4.1", - "xml-naming": "^0.1.0" + "is-unsafe": "^2.0.0", + "path-expression-matcher": "^1.6.2", + "strnum": "^2.4.2", + "xml-naming": "^0.3.0" }, "bin": { "fxparser": "src/cli/cli.js" @@ -5233,7 +5111,6 @@ "integrity": "sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "loader-utils": "^2.0.0", "schema-utils": "^3.0.0" @@ -5519,37 +5396,6 @@ "node": ">=24.0.0" } }, - "node_modules/geoip-lite/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==", - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/geoip-lite/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "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/geoip-lite/node_modules/iconv-lite": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", @@ -5562,18 +5408,6 @@ "node": ">=0.10.0" } }, - "node_modules/geoip-lite/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==", - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/get-intrinsic": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", @@ -5619,9 +5453,9 @@ "license": "MIT" }, "node_modules/github-buttons": { - "version": "2.32.0", - "resolved": "https://registry.npmjs.org/github-buttons/-/github-buttons-2.32.0.tgz", - "integrity": "sha512-DbKam2n7JGbccpbAoQ7UHhxH2XYlumCakTM4Ln7v8A9TzMaaEgKV6S7A+Suyx3EVBE1DPEqA6QSgyCoGJamymg==", + "version": "2.33.0", + "resolved": "https://registry.npmjs.org/github-buttons/-/github-buttons-2.33.0.tgz", + "integrity": "sha512-+WQ+r3nSM2/NGBo17LaQ2evPOEjXUmSLzFuZzpz9rCzwa7HrmIDQCaMx6uTsfL1aW7/bmBd5slREkCp3XKpuFw==", "license": "BSD-2-Clause" }, "node_modules/github-from-package": { @@ -5630,6 +5464,27 @@ "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==", "license": "MIT" }, + "node_modules/glob": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", + "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/glob-parent": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", @@ -5643,6 +5498,36 @@ "node": ">= 6" } }, + "node_modules/glob/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "license": "MIT" + }, + "node_modules/glob/node_modules/brace-expansion": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.4.tgz", + "integrity": "sha512-hGfVzPxthbf3+2yjg/RBs60cB0FhqBS/zvdV/4wn4/BmN0bNMMHPc4V/BbFieqf1TKAGGAHnY4eSjajCl0f2Xg==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/glob/node_modules/minimatch": { + "version": "9.0.9", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", + "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.2" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/google-auth-library": { "version": "9.15.1", "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-9.15.1.tgz", @@ -5683,9 +5568,9 @@ } }, "node_modules/googleapis-common": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/googleapis-common/-/googleapis-common-8.0.2.tgz", - "integrity": "sha512-5MXeQzIZaqCH7B+HJWqhQm946VARpZep6acbWSr/fcgF2cQANq7allgX+i/G0EqF0WyUxB277gtWMzRYHMl9tg==", + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/googleapis-common/-/googleapis-common-8.0.3.tgz", + "integrity": "sha512-7g1yzQKx0mmNTjiK0H9dJ8eqKqDBveES9vLHeg5neb3BMQy/d1oQefIMhIpOVT8a+f+LOcixMEdRbFIW/cQUJw==", "license": "Apache-2.0", "dependencies": { "extend": "^3.0.2", @@ -5696,22 +5581,7 @@ "url-template": "^2.0.8" }, "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/googleapis-common/node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "license": "MIT" - }, - "node_modules/googleapis-common/node_modules/brace-expansion": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.1.tgz", - "integrity": "sha512-WR1cURNjuvBLMZBMbqM0UoE+WAfdUcEV1ccD8PVBVOI+Z3ND4+SZbN8RsfT2bMuG1qwz5RFvPukSZm5fF2D5eA==", - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" + "node": ">=18" } }, "node_modules/googleapis-common/node_modules/gaxios": { @@ -5730,9 +5600,9 @@ } }, "node_modules/googleapis-common/node_modules/gcp-metadata": { - "version": "8.1.3", - "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-8.1.3.tgz", - "integrity": "sha512-ziTrzUhhpL9Zk5k0HHzgP/KIpWDJT0VMBC/ynt/QIBvTW+UUcSivQRl6VlwTf/EilDxtSWklHoRsKy1c4k+59w==", + "version": "8.1.4", + "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-8.1.4.tgz", + "integrity": "sha512-iJ9KMsiu+xKtNRX0PmGLSaIU3bUBAyzWTyqKemKPzNPsmmsBCQYmlNg+brEbES7IHSXtdVwzBPzx1vz3FAaipw==", "license": "Apache-2.0", "dependencies": { "gaxios": "7.1.3", @@ -5743,27 +5613,6 @@ "node": ">=18" } }, - "node_modules/googleapis-common/node_modules/glob": { - "version": "10.5.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", - "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", - "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", - "license": "ISC", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/googleapis-common/node_modules/google-auth-library": { "version": "10.5.0", "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-10.5.0.tgz", @@ -5804,21 +5653,6 @@ "node": ">=18" } }, - "node_modules/googleapis-common/node_modules/minimatch": { - "version": "9.0.9", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", - "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.2" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/googleapis-common/node_modules/node-fetch": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", @@ -5829,33 +5663,18 @@ "fetch-blob": "^3.1.4", "formdata-polyfill": "^4.0.10" }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/node-fetch" - } - }, - "node_modules/googleapis-common/node_modules/rimraf": { - "version": "5.0.10", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.10.tgz", - "integrity": "sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==", - "license": "ISC", - "dependencies": { - "glob": "^10.3.7" - }, - "bin": { - "rimraf": "dist/esm/bin.mjs" + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "type": "opencollective", + "url": "https://opencollective.com/node-fetch" } }, "node_modules/googleapis/node_modules/gaxios": { - "version": "7.1.5", - "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-7.1.5.tgz", - "integrity": "sha512-5FZy72Rh8LhtjmvDrKkI+lVhrsQrVKVsItxMoDm5mNQE+xR0WVIIs+jzPSJgBvKVsLi24fZhXJIsNI0bihDzFg==", + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-7.3.1.tgz", + "integrity": "sha512-kB3rzJV7d9juLZh8/56QTXCwQfxyhdOMdyYk1HdQKFtF8TJTDTZQJtixWIwXdE9Jji91mC41DUNpjleo4L4eAQ==", "license": "Apache-2.0", "dependencies": { "extend": "^3.0.2", @@ -5881,9 +5700,9 @@ } }, "node_modules/googleapis/node_modules/google-auth-library": { - "version": "10.9.0", - "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-10.9.0.tgz", - "integrity": "sha512-xtvUqvINPhTaBm7nXqlYPcrMHJPm1lCNdSovxnKKhTm+4JsvQ+KGVYJViLoH9Yxu8w+T0Qv5HubzYT9BLrppJg==", + "version": "10.9.1", + "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-10.9.1.tgz", + "integrity": "sha512-i1ydyHrqcIxXkWh/uBmVkzCvIuq5yiK2ATndIe5XxKholrG/MTYP9xGYka4sQhrbIAgGjL2B6NOE7rFaiF3fXw==", "license": "Apache-2.0", "dependencies": { "base64-js": "^1.3.0", @@ -6026,9 +5845,9 @@ } }, "node_modules/highlight.js": { - "version": "11.11.1", - "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-11.11.1.tgz", - "integrity": "sha512-Xwwo44whKBVCYoliBQwaPvtd/2tYFkRQtXDWj1nackaV2JPXx3L0+Jvd8/qCJ2p+ML0/XVkJ2q+Mr+UVdpJK5w==", + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-11.12.0.tgz", + "integrity": "sha512-nbfWpyRMcMrPMmDwJB+dhX/eiaPKtc2RB+0QZskqJ3WjRA/FDS0e9hZrx8EC/lbEv8gXy98FcDbNa/dspAaJMg==", "license": "BSD-3-Clause", "engines": { "node": ">=12.0.0" @@ -6278,9 +6097,9 @@ } }, "node_modules/ip-address": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.2.0.tgz", - "integrity": "sha512-/+S6j4E9AHvW9SWMSEY9Xfy66O5PWvVEJ08O0y5JGyEKQpojb0K0GKpz/v5HJ/G0vi3D2sjGK78119oXZeE0qA==", + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.5.0.tgz", + "integrity": "sha512-R5SnVLJmgYYvf2F2ZgwSBnelz5G4q5AxIC277GDfUaNbrZKNANcBC7RHqYYePlszf4kBolVkJauG0ZjHHFh55g==", "license": "MIT", "engines": { "node": ">= 12" @@ -6341,6 +6160,15 @@ "node": ">=0.10.0" } }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", @@ -6396,9 +6224,9 @@ } }, "node_modules/is-unsafe": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-unsafe/-/is-unsafe-1.0.1.tgz", - "integrity": "sha512-CLK2+VdgERgD96EYm5lUQssZYlRg2tkZnbsxZoacmSiRxiFJ4Nk4SzjCl+Ur+v3kXIY9dTIdb3IH22y1mZ56LA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-unsafe/-/is-unsafe-2.0.2.tgz", + "integrity": "sha512-HgbIHPBH0KHHCcjLfGsCvhtPTVxjaAZlXjwdz7/GQC40SjSe4sfQsar8J5VFo8JOSbarkpV0OLG95bbaNd9aAQ==", "funding": [ { "type": "github", @@ -6486,16 +6314,16 @@ } }, "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-10.0.0.tgz", + "integrity": "sha512-lM/UBzQmfJRo9ABXbPWemivdCW8V2G8FHaHdypQaIy523snUjog0W71ayWXTjiR+ixeMyVHN2XcpnTd/liPg/Q==", "dev": true, "license": "MIT" }, "node_modules/js-yaml": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.3.0.tgz", - "integrity": "sha512-1td788aAnnZ5qs7V2QIRl1owjtYpbKt749Y3xauqQgwIIGF/xXWz1wMTEBx5O3LK3lXLVuqXPdPxj2BoFHaW9Q==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.3.1.tgz", + "integrity": "sha512-CY6crGq313MX8GkwvB7tzgp99vjQxY1++5y10/BKN/GUfHqWaOGQMNZkBvqSzsZKWk/ijwHlWzzkLulsGHhjWQ==", "dev": true, "funding": [ { @@ -6670,9 +6498,9 @@ } }, "node_modules/lightningcss": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.32.0.tgz", - "integrity": "sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.33.0.tgz", + "integrity": "sha512-WkUDrojuJs0xkgGf2udWxa3yGBRxPtxUkB79i6aCZLRgc7PM8fZe9TosfPDcvEpQZbuFASnHYmRLBLUbmLOIIA==", "dev": true, "license": "MPL-2.0", "dependencies": { @@ -6686,23 +6514,23 @@ "url": "https://opencollective.com/parcel" }, "optionalDependencies": { - "lightningcss-android-arm64": "1.32.0", - "lightningcss-darwin-arm64": "1.32.0", - "lightningcss-darwin-x64": "1.32.0", - "lightningcss-freebsd-x64": "1.32.0", - "lightningcss-linux-arm-gnueabihf": "1.32.0", - "lightningcss-linux-arm64-gnu": "1.32.0", - "lightningcss-linux-arm64-musl": "1.32.0", - "lightningcss-linux-x64-gnu": "1.32.0", - "lightningcss-linux-x64-musl": "1.32.0", - "lightningcss-win32-arm64-msvc": "1.32.0", - "lightningcss-win32-x64-msvc": "1.32.0" + "lightningcss-android-arm64": "1.33.0", + "lightningcss-darwin-arm64": "1.33.0", + "lightningcss-darwin-x64": "1.33.0", + "lightningcss-freebsd-x64": "1.33.0", + "lightningcss-linux-arm-gnueabihf": "1.33.0", + "lightningcss-linux-arm64-gnu": "1.33.0", + "lightningcss-linux-arm64-musl": "1.33.0", + "lightningcss-linux-x64-gnu": "1.33.0", + "lightningcss-linux-x64-musl": "1.33.0", + "lightningcss-win32-arm64-msvc": "1.33.0", + "lightningcss-win32-x64-msvc": "1.33.0" } }, "node_modules/lightningcss-android-arm64": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.32.0.tgz", - "integrity": "sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.33.0.tgz", + "integrity": "sha512-gEpRTalKdosp4Bb8qWtc2iOgE5SeIHlpS1up9bFq2wAyYhl1UdTObYiHe98zEM9SQvSoqQZ1IQD0JNpg3Ml5pg==", "cpu": [ "arm64" ], @@ -6721,9 +6549,9 @@ } }, "node_modules/lightningcss-darwin-arm64": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.32.0.tgz", - "integrity": "sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.33.0.tgz", + "integrity": "sha512-Sciaz8eenNTKn9b3t7+xr0ipTp9YxKQY4npwQ3mrRuL0BAVHBLyZxofhaKBAVtzmtRZ/zTyo0/to4B1uWG/Djg==", "cpu": [ "arm64" ], @@ -6742,9 +6570,9 @@ } }, "node_modules/lightningcss-darwin-x64": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.32.0.tgz", - "integrity": "sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.33.0.tgz", + "integrity": "sha512-Z5UPAxzrjlWNNyGy6i65cJzzvgJ5D3T6wMvs+gWpY9d7qRhANrxqAp6LhxIgZhWEw18RfJTGcRxjuLIBr+m8XQ==", "cpu": [ "x64" ], @@ -6763,9 +6591,9 @@ } }, "node_modules/lightningcss-freebsd-x64": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.32.0.tgz", - "integrity": "sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.33.0.tgz", + "integrity": "sha512-QQM/Ti/hQajJwCY+RiWuCZ9sdtI/XQk7nDK5vC8kkdwixezOlDgvDx7+RT+QjK6FcFT4MpsuoBnHIo/O3StRRg==", "cpu": [ "x64" ], @@ -6784,9 +6612,9 @@ } }, "node_modules/lightningcss-linux-arm-gnueabihf": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.32.0.tgz", - "integrity": "sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.33.0.tgz", + "integrity": "sha512-N7FVBe6iS24MlM6R/4RBTxGhQheZGs7tiQ9U32UtF75NzP5Q7xWPRqLBCKxlRQRk3rY1jCIPLzx7WzOhuUIRLQ==", "cpu": [ "arm" ], @@ -6805,13 +6633,16 @@ } }, "node_modules/lightningcss-linux-arm64-gnu": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.32.0.tgz", - "integrity": "sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.33.0.tgz", + "integrity": "sha512-j2v/itmy4HlNxlc6voKXYgBqNi0Ng2LShg4z7GufpEgs05P+2suBVyi9I6YHq5uoVFx9ETin3eCEhLVyXGQnKg==", "cpu": [ "arm64" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MPL-2.0", "optional": true, "os": [ @@ -6826,13 +6657,16 @@ } }, "node_modules/lightningcss-linux-arm64-musl": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.32.0.tgz", - "integrity": "sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.33.0.tgz", + "integrity": "sha512-yiO5ROMuYQgXbC60yjZU5CYSFZGKXL0HFATXt9mHJn1+zW55oCtMI9NfcVhYLMFDL7gV7oBPon/EmMMGg2OvtQ==", "cpu": [ "arm64" ], "dev": true, + "libc": [ + "musl" + ], "license": "MPL-2.0", "optional": true, "os": [ @@ -6847,13 +6681,16 @@ } }, "node_modules/lightningcss-linux-x64-gnu": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.32.0.tgz", - "integrity": "sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.33.0.tgz", + "integrity": "sha512-ar+Ju7LmcN0Jo4FpL4hpFybwNG9/3A/Br5KW2n2jyODg3MEZXaDYADdemoNS+BDNfMgKvylJLj4S5tyRActuAg==", "cpu": [ "x64" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MPL-2.0", "optional": true, "os": [ @@ -6868,13 +6705,16 @@ } }, "node_modules/lightningcss-linux-x64-musl": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.32.0.tgz", - "integrity": "sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.33.0.tgz", + "integrity": "sha512-RYiYbkokw0trfKqqzfF55lginwEPrD3OJDfTuJzFs1MK6iFnDenaz1fqLLtX4ITG3OktJQXOeTaw1awrBAlZPw==", "cpu": [ "x64" ], "dev": true, + "libc": [ + "musl" + ], "license": "MPL-2.0", "optional": true, "os": [ @@ -6889,9 +6729,9 @@ } }, "node_modules/lightningcss-win32-arm64-msvc": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.32.0.tgz", - "integrity": "sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.33.0.tgz", + "integrity": "sha512-1K+MPfLSFVpphzpdbfkhlWk6wBrTObBzS2T6db10PNOZgR9GoVsAWzwNyuhUYYbTp23j+4RrncfujZ4uAzXvwA==", "cpu": [ "arm64" ], @@ -6910,9 +6750,9 @@ } }, "node_modules/lightningcss-win32-x64-msvc": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.32.0.tgz", - "integrity": "sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.33.0.tgz", + "integrity": "sha512-OlEICDx/Xl0FqSp4bry8zFnCvGpig3Gl4gCquvYwHuqJKEC1+n9NgDniFvqHGmMv1ZkqDJrDqKKSykTDX+ehuA==", "cpu": [ "x64" ], @@ -6937,20 +6777,6 @@ "dev": true, "license": "MIT" }, - "node_modules/loader-runner": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.2.tgz", - "integrity": "sha512-DFEqQ3ihfS9blba08cLfYf1NRAIEm+dDjic073DRDc3/JspI/8wYmtDsHwd3+4hwvdxSK7PGaElfTmm0awWJ4w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.11.5" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, "node_modules/loader-utils": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", @@ -7008,9 +6834,9 @@ "license": "MIT" }, "node_modules/lru-cache": { - "version": "11.5.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.1.tgz", - "integrity": "sha512-RPimw/7aMdv2oqRrxKwvZXcPfwBrn/JZ2xYcY9Hus/6LaS3VOAKVWKWgNLCFSiOm1ESXinjsDlidVU7JlnCN2A==", + "version": "11.5.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.2.tgz", + "integrity": "sha512-4pfM1Ff0x50o0tQwb5ucw/RzNyD0/YJME6IVcStalZuMWxdt3sR3huStTtxz4PUmvZfRguvDejasvQ2kifR11g==", "dev": true, "license": "BlueOak-1.0.0", "engines": { @@ -7060,9 +6886,9 @@ } }, "node_modules/marked": { - "version": "18.0.5", - "resolved": "https://registry.npmjs.org/marked/-/marked-18.0.5.tgz", - "integrity": "sha512-S6GcvALHg6K4ohtu4E7x0a1AqhAjp6cV8KhLSyN9qVapnzJkusVBxZRcIU9AeYsbe6P1hKDusSbEOzGyyuce6w==", + "version": "18.0.10", + "resolved": "https://registry.npmjs.org/marked/-/marked-18.0.10.tgz", + "integrity": "sha512-FJeH4bRpYoXiggcgriCGItKCSv3xkngJc4QCZ/rkQCogU3VYaLxYJoZl8Nw/b4+x7iij/pd+09mZ6A1dXzpL0A==", "license": "MIT", "bin": { "marked": "bin/marked.js" @@ -7081,12 +6907,16 @@ } }, "node_modules/media-typer": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz", - "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.1.tgz", + "integrity": "sha512-yz3xRaG20c6/BOzvYoDaGtPmGscs7YivItZEEqe6GbwNfHuxu9YNmvnEkMzKldAGY4/80pRcQRZSEnhquk9XuQ==", "license": "MIT", "engines": { "node": ">= 0.8" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, "node_modules/merge-descriptors": { @@ -7184,7 +7014,6 @@ "integrity": "sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", @@ -7237,13 +7066,13 @@ } }, "node_modules/minimatch": { - "version": "10.2.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", - "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", + "version": "10.2.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.6.tgz", + "integrity": "sha512-vpLQEs+VLCr1nU0BXS07maYoFwlDAH0gngQuuttxIwutDFEMHq2blX+8vpgxDdK3J1PwjCJiep77OitTZ4Ll1A==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { - "brace-expansion": "^5.0.5" + "brace-expansion": "^5.0.8" }, "engines": { "node": "18 || 20 || >=22" @@ -7328,7 +7157,6 @@ "integrity": "sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", @@ -7421,9 +7249,9 @@ "license": "MIT" }, "node_modules/nanoid": { - "version": "3.3.15", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.15.tgz", - "integrity": "sha512-y7Wygv/7mEOvxTuEQDB8StXdMRBWf1kR/tlhAzBRUFkB2jfcLOAxO/SHmOO2zgz1pVgK29/kyupn059/bCHdjA==", + "version": "3.3.18", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.18.tgz", + "integrity": "sha512-DTg4MJbGMWkfi6VZFdNt2/caMbQy4Ou+Op/hJQvGEWcnVfoA1QA+xzRKAzw9jD6+GVOOeYr/mIcuDSdug6F6+w==", "dev": true, "funding": [ { @@ -7446,12 +7274,32 @@ "license": "MIT" }, "node_modules/negotiator": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", - "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.1.0.tgz", + "integrity": "sha512-NMPBRMJgiQHjbd8phG3Vebdx4kZ1H121rbl5IkMqeOsahptB9BKo/d7oJ3zTXqTgagn2bWlNSXkh0QUGM31RYg==", "license": "MIT", + "dependencies": { + "content-type": "^2.1.0" + }, "engines": { - "node": ">= 0.6" + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/negotiator/node_modules/content-type": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-2.1.0.tgz", + "integrity": "sha512-mj7UPXE0jaqaOsukNZRUEfEi2AcL7C/vwmwcHV0O97eO1E1pxBZuyjlZrx5seTaNBg1U6+o35wpa35Qfcc+7ag==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, "node_modules/neo-async": { @@ -7521,9 +7369,9 @@ } }, "node_modules/node-releases": { - "version": "2.0.50", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.50.tgz", - "integrity": "sha512-J6l92tKHX6w8Jy5nO1Vuc01NoIiRGi/d6qBKVxh+IQ8Cr3b6HbVNfKiF8ZpFKufTwpwxMmce2W3iQZ861ZRyTg==", + "version": "2.0.53", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.53.tgz", + "integrity": "sha512-D9UOmYG3UH1V+ENW56t5QXBwJw1YEY18ruVeus89Rw+SyIgjPkCO84bRzO3uNIYosJbNwiabWVn48o3uJLjxFQ==", "dev": true, "license": "MIT", "engines": { @@ -7531,9 +7379,9 @@ } }, "node_modules/nodemailer": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-9.0.3.tgz", - "integrity": "sha512-n+YP+NKwR5zRWa60k3GiQ6Q3B4KXCoAw40dAKeCtYn020iNN74aWK2liXIC3ZEATeGql7we3tE3t8QwhY0eskw==", + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-9.0.5.tgz", + "integrity": "sha512-wvjiKvjczmsN7U/8006JOdXubgBk2XFAbioDMbT+sM7cPs0QrhJTa6KBRX7P5REGGkDcLUz/EarWidb8G8C1jQ==", "license": "MIT-0", "engines": { "node": ">=6.0.0" @@ -7614,9 +7462,9 @@ } }, "node_modules/obug": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/obug/-/obug-2.1.3.tgz", - "integrity": "sha512-9miFgM2OFba7hB+pRgvtV84pYTBaoTHohvmIgiRt6dRIzbwEOIaNaP+dIlGs2fNFoB0SeISs0Jz5WFVRid6Xyg==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/obug/-/obug-2.1.4.tgz", + "integrity": "sha512-4a+OsYv9UktOJKE+l1A4OufDgdRF9PifWj+tJnHURo/P+WOxpG4GzUFL9qCalmWauao6ogiG+QvnCovwPoyAWA==", "dev": true, "funding": [ "https://github.com/sponsors/sxzz", @@ -7743,6 +7591,38 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/parse-json/node_modules/@babel/code-frame": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.7.tgz", + "integrity": "sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.29.7", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/parse-json/node_modules/@babel/helper-validator-identifier": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.29.7.tgz", + "integrity": "sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/parse-json/node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true, + "license": "MIT" + }, "node_modules/parseurl": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", @@ -7763,9 +7643,9 @@ } }, "node_modules/path-expression-matcher": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/path-expression-matcher/-/path-expression-matcher-1.6.1.tgz", - "integrity": "sha512-h7bxdzhHk8Knyc4Tj+jMaa7fEEoUJy7p1qtbVgkYg1Uhpe5Np5VuGXCRZnkZvU+Q42M1vStt0ifa3ueykRJPmQ==", + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/path-expression-matcher/-/path-expression-matcher-1.6.2.tgz", + "integrity": "sha512-enSlaiat05iasnzmgNxRj8reFdj3puY2QpNgP1aPIaVfT6nn9ICuPoFlKHk8EN22HcwewshO+mN2DGbkCEOtqQ==", "funding": [ { "type": "github", @@ -7928,9 +7808,9 @@ } }, "node_modules/postcss": { - "version": "8.5.16", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.16.tgz", - "integrity": "sha512-vuwillviilfKZsg0VGj5R/YwwcHx4SLsIOI/7K6mQkWx+l5cUHTjj5g0AasTBcyXsbfTgrwsUNmVUb5xVwyPwg==", + "version": "8.5.26", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.26.tgz", + "integrity": "sha512-u82N74LFzG8ca+dD8puPnplTXoGH4fTPpVGuIbt36G3qvNlkvfD0lEAZSxaly3KX8TS/L1A1gsCEmvKmBcVbkQ==", "dev": true, "funding": [ { @@ -7947,9 +7827,8 @@ } ], "license": "MIT", - "peer": true, "dependencies": { - "nanoid": "^3.3.12", + "nanoid": "^3.3.17", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" }, @@ -8053,9 +7932,9 @@ } }, "node_modules/postcss-selector-parser": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.4.tgz", - "integrity": "sha512-HeP7D2wyhkR+XaK6v4W8oRF62Dsz4flyuczALJp61GckGm42u1saSSJ/0auvcBqxs3jMRFEcPK34At/0JBKdOg==", + "version": "7.1.5", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.5.tgz", + "integrity": "sha512-KvvtD7SrlBP7dlgkBghEE3r84CABm5SmV2aNcG4oCA+qDnJ/tvKonFVvwWAyyWUEwxuNawdfEAZKP9zM3oZ2Uw==", "dev": true, "license": "MIT", "dependencies": { @@ -8221,12 +8100,12 @@ } }, "node_modules/razorpay": { - "version": "2.9.6", - "resolved": "https://registry.npmjs.org/razorpay/-/razorpay-2.9.6.tgz", - "integrity": "sha512-zsHAQzd6e1Cc6BNoCNZQaf65ElL6O6yw0wulxmoG5VQDr363fZC90Mp1V5EktVzG45yPyNomNXWlf4cQ3622gQ==", + "version": "2.9.8", + "resolved": "https://registry.npmjs.org/razorpay/-/razorpay-2.9.8.tgz", + "integrity": "sha512-Uqv3KV7JAfpLlabGdg8Cw7e7ieGkK/DighFq6iGkNnz0Y+it6+/lFmPCTfkcptc2EagL2Og25VWUxc+Fgp/+nA==", "license": "MIT", "dependencies": { - "axios": "^1.6.8" + "axios": "^1.18.1" } }, "node_modules/rc": { @@ -8430,14 +8309,29 @@ "node": ">=14" } }, + "node_modules/rimraf": { + "version": "5.0.10", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.10.tgz", + "integrity": "sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==", + "license": "ISC", + "dependencies": { + "glob": "^10.3.7" + }, + "bin": { + "rimraf": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/rolldown": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.1.4.tgz", - "integrity": "sha512-IjZYiLxZwpnhwhdBH2ugdTGVSdhCQUmLxLoqyjiL0JxYjyRst+5a0P3xfrTxJ5F638j4Mvvw5FAX5XE6eHpXbA==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.2.5.tgz", + "integrity": "sha512-VD2IE5PUG4Oj8zz2VGykiYd5wbnjdIiSsNQb8Qu5B+noEp+A78mu2iVvpp27g8es14Tk9rofNs5Tku9iQCS4fA==", "dev": true, "license": "MIT", "dependencies": { - "@oxc-project/types": "=0.138.0", + "@oxc-project/types": "=0.146.0", "@rolldown/pluginutils": "^1.0.0" }, "bin": { @@ -8447,21 +8341,21 @@ "node": "^20.19.0 || >=22.12.0" }, "optionalDependencies": { - "@rolldown/binding-android-arm64": "1.1.4", - "@rolldown/binding-darwin-arm64": "1.1.4", - "@rolldown/binding-darwin-x64": "1.1.4", - "@rolldown/binding-freebsd-x64": "1.1.4", - "@rolldown/binding-linux-arm-gnueabihf": "1.1.4", - "@rolldown/binding-linux-arm64-gnu": "1.1.4", - "@rolldown/binding-linux-arm64-musl": "1.1.4", - "@rolldown/binding-linux-ppc64-gnu": "1.1.4", - "@rolldown/binding-linux-s390x-gnu": "1.1.4", - "@rolldown/binding-linux-x64-gnu": "1.1.4", - "@rolldown/binding-linux-x64-musl": "1.1.4", - "@rolldown/binding-openharmony-arm64": "1.1.4", - "@rolldown/binding-wasm32-wasi": "1.1.4", - "@rolldown/binding-win32-arm64-msvc": "1.1.4", - "@rolldown/binding-win32-x64-msvc": "1.1.4" + "@rolldown/binding-android-arm-eabi": "1.2.5", + "@rolldown/binding-android-arm64": "1.2.5", + "@rolldown/binding-darwin-arm64": "1.2.5", + "@rolldown/binding-darwin-x64": "1.2.5", + "@rolldown/binding-freebsd-x64": "1.2.5", + "@rolldown/binding-linux-arm-gnueabihf": "1.2.5", + "@rolldown/binding-linux-arm64-gnu": "1.2.5", + "@rolldown/binding-linux-arm64-musl": "1.2.5", + "@rolldown/binding-linux-ppc64-gnu": "1.2.5", + "@rolldown/binding-linux-s390x-gnu": "1.2.5", + "@rolldown/binding-linux-x64-gnu": "1.2.5", + "@rolldown/binding-linux-x64-musl": "1.2.5", + "@rolldown/binding-openharmony-arm64": "1.2.5", + "@rolldown/binding-win32-arm64-msvc": "1.2.5", + "@rolldown/binding-win32-x64-msvc": "1.2.5" } }, "node_modules/router": { @@ -8507,12 +8401,11 @@ "license": "MIT" }, "node_modules/sass": { - "version": "1.101.0", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.101.0.tgz", - "integrity": "sha512-OL3GoQyoUdDt843DpVmDO6y2k1sc5IhUDSpu8XucEI+35neq5QivZ1iuegnpraEVTJXlQGK1gl27zKcTLEPbQw==", + "version": "1.103.1", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.103.1.tgz", + "integrity": "sha512-9icZURbP51S6S0QGoyaeqk9uB06GNWxsFYWfH5RgpFgqK5FA8tJcM3AdVxrZEVJ7dz+L87nG95gBKf4VuaMHGw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "chokidar": "^5.0.0", "immutable": "^5.1.5", @@ -8579,9 +8472,9 @@ } }, "node_modules/sass/node_modules/readdirp": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-5.0.0.tgz", - "integrity": "sha512-9u/XQ1pvrQtYyMpZe7DXKv2p5CNvyVwzUB6uhLAnQwHMSgKMBR62lc7AHljaeteeHXn11XTAaLLUVZYVZyuRBQ==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-5.1.1.tgz", + "integrity": "sha512-Kko+Y5XQ6fM+Ce3dq3m9YGxnacYZYl9cA1wZjaF3Vbry2L3i1qVg8+CAgNPsXRArPMUMCaOR7oa9Nqntc43JKA==", "dev": true, "license": "MIT", "engines": { @@ -8981,9 +8874,9 @@ } }, "node_modules/std-env": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/std-env/-/std-env-4.1.0.tgz", - "integrity": "sha512-Rq7ybcX2RuC55r9oaPVEW7/xu3tj8u4GeBYHBWCychFtzMIr86A7e3PPEBPT37sHStKX3+TiX/Fr/ACmJLVlLQ==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-4.2.0.tgz", + "integrity": "sha512-oCUKSupKTHX53EyjDtuZQ64pjLJ6yYCtpmEw0goYxtjG9KpbRe8KAsl2tBUGU9DyMcJ0RwJ8GqJAFzMXcXW1Rw==", "dev": true, "license": "MIT" }, @@ -9019,6 +8912,23 @@ "safe-buffer": "~5.2.0" } }, + "node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/string-width-cjs": { "name": "string-width", "version": "4.2.3", @@ -9043,14 +8953,11 @@ "node": ">=8" } }, - "node_modules/string-width-cjs/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "license": "MIT", - "engines": { - "node": ">=8" - } + "node_modules/string-width-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" }, "node_modules/string-width-cjs/node_modules/strip-ansi": { "version": "6.0.1", @@ -9064,6 +8971,21 @@ "node": ">=8" } }, + "node_modules/strip-ansi": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", + "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.2.2" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, "node_modules/strip-ansi-cjs": { "name": "strip-ansi", "version": "6.0.1", @@ -9096,9 +9018,9 @@ } }, "node_modules/strnum": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/strnum/-/strnum-2.4.1.tgz", - "integrity": "sha512-M9eUSMT2dCB2cTNPG7UYj6KuK7RJR2SN2+yCV/fTW3xzTCS6EaGZ5pSMgDIjB7r8zSfTGk+dvvn9rTjpVS9Mwg==", + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/strnum/-/strnum-2.4.2.tgz", + "integrity": "sha512-rDG3Ah4TV0k1hWvLSzkZtMmLN9+eS+h3knq4MP6A42Y3Yh5qGNnOUs1jJkoSr8FG5dsL28c7KgkIBzSEykqtuw==", "funding": [ { "type": "github", @@ -9133,6 +9055,18 @@ "webpack": "^5.27.0" } }, + "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==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/supports-preserve-symlinks-flag": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", @@ -9230,9 +9164,9 @@ } }, "node_modules/terser": { - "version": "5.48.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.48.0.tgz", - "integrity": "sha512-J/9An6vs9Us6wKRriSFXBWdRZapREHqFzdNUKk0pmu804EMR6dr6winwo7e5JDxN4xahxQsuysyYFwlwj4XN/Q==", + "version": "5.50.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.50.0.tgz", + "integrity": "sha512-CN9BVxWhgS/hRxtUMjtC2uRWSTcSfQFHMDWma6sKKfIivCD91sM+FOPfvwoaRMqCSrUpe1nv3jDamd9eEQ4y+w==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -9315,7 +9249,6 @@ "integrity": "sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", @@ -9375,9 +9308,9 @@ "license": "MIT" }, "node_modules/tinyexec": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.2.4.tgz", - "integrity": "sha512-SHf/r48b7vOrjve9PxJo3MN5v5yuyjHvdUcrQffT3WXMUfnGmHDVbC4k3sHJaJTgZCwpUplIaAo5ANtMyp3YHg==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.3.0.tgz", + "integrity": "sha512-QKAl9m8gWWGHV8jZcPeym6j+XULi6tOf1mT83WYJ4Lk2ytW/uwAWkrP0uFsdoYMdueVJ0qs26wZ+23xeB4ibNQ==", "dev": true, "license": "MIT", "engines": { @@ -9425,7 +9358,6 @@ "integrity": "sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=12" }, @@ -9434,9 +9366,9 @@ } }, "node_modules/tinyrainbow": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-3.1.0.tgz", - "integrity": "sha512-Bf+ILmBgretUrdJxzXM0SgXLZ3XfiaUuOj/IKQHuTXip+05Xn+uyEYdVg0kYDipTBcLrCVyUzAPz7QmArb0mmw==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-3.1.1.tgz", + "integrity": "sha512-yau8yJdTt989Mm0Bd/236QnzEiPf2xLLTqUZRUJOo/3CB078LSwzei343DgtJVmfJKJE3TMINY1u42SQsP6mXw==", "dev": true, "license": "MIT", "engines": { @@ -9529,9 +9461,9 @@ } }, "node_modules/type-is/node_modules/content-type": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-2.0.0.tgz", - "integrity": "sha512-j/O/d7GcZCyNl7/hwZAb606rzqkyvaDctLmckbxLzHvFBzTJHuGEdodATcP3yIRoDrLHkIATJuvzbFlp/ki2cQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-2.1.0.tgz", + "integrity": "sha512-mj7UPXE0jaqaOsukNZRUEfEi2AcL7C/vwmwcHV0O97eO1E1pxBZuyjlZrx5seTaNBg1U6+o35wpa35Qfcc+7ag==", "license": "MIT", "engines": { "node": ">=18" @@ -9621,9 +9553,9 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", - "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.3.1.tgz", + "integrity": "sha512-ZZ61DsRsOnakl74HAmp3oSN4aXUmEWXf+i/yv0h7tIBfICc3VdrFErQKUUKPgu3AMsTUMbcongALEN4l6GSUrQ==", "dev": true, "funding": [ { @@ -9748,17 +9680,16 @@ } }, "node_modules/vite": { - "version": "8.1.3", - "resolved": "https://registry.npmjs.org/vite/-/vite-8.1.3.tgz", - "integrity": "sha512-Ds+gBRbj0lwRO2Y5hwnUBdxSwlAve9LeRyU4sNnAr0ewW0gWF0n5bgXgUzbgZ49MV9BVUAQUFYVcDUcilUExMA==", + "version": "8.2.2", + "resolved": "https://registry.npmjs.org/vite/-/vite-8.2.2.tgz", + "integrity": "sha512-cFKLV/PRgAUlIRm5WjMjJ86jrftzpqcgH+Us+DS8mI3CDNiH30Whrz8uHL3+MOLPAgqbMBAqWdAHAphOAM+z/Q==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { - "lightningcss": "^1.32.0", - "picomatch": "^4.0.4", - "postcss": "^8.5.16", - "rolldown": "~1.1.3", + "lightningcss": "^1.33.0", + "picomatch": "^4.0.5", + "postcss": "^8.5.26", + "rolldown": "~1.2.4", "tinyglobby": "^0.2.17" }, "bin": { @@ -9775,7 +9706,7 @@ }, "peerDependencies": { "@types/node": "^20.19.0 || >=22.12.0", - "@vitejs/devtools": "^0.3.0", + "@vitejs/devtools": "^0.4.0 || ^0.5.0", "esbuild": "^0.27.0 || ^0.28.0", "jiti": ">=1.21.0", "less": "^4.0.0", @@ -9840,19 +9771,19 @@ } }, "node_modules/vitest": { - "version": "4.1.10", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-4.1.10.tgz", - "integrity": "sha512-R9jUTe5S4Qb0HCd4TNqpC7oGcrMssMRGXLW80ubjWsW9VH5GF8y1Y0SFLY9AbqSk6nt0PnOx4H4WNJYZ13GUPw==", + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-4.1.11.tgz", + "integrity": "sha512-fhACrNXUidIbGSBr5FlbuBkO7VWC1ZyLl0DO4CU2DrQoAPxX84Ysxs+HeGQpii5lZWV1Q4gBZTTu49mF+A6Edw==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/expect": "4.1.10", - "@vitest/mocker": "4.1.10", - "@vitest/pretty-format": "4.1.10", - "@vitest/runner": "4.1.10", - "@vitest/snapshot": "4.1.10", - "@vitest/spy": "4.1.10", - "@vitest/utils": "4.1.10", + "@vitest/expect": "4.1.11", + "@vitest/mocker": "4.1.11", + "@vitest/pretty-format": "4.1.11", + "@vitest/runner": "4.1.11", + "@vitest/snapshot": "4.1.11", + "@vitest/spy": "4.1.11", + "@vitest/utils": "4.1.11", "es-module-lexer": "^2.0.0", "expect-type": "^1.3.0", "magic-string": "^0.30.21", @@ -9880,12 +9811,12 @@ "@edge-runtime/vm": "*", "@opentelemetry/api": "^1.9.0", "@types/node": "^20.0.0 || ^22.0.0 || >=24.0.0", - "@vitest/browser-playwright": "4.1.10", - "@vitest/browser-preview": "4.1.10", - "@vitest/browser-webdriverio": "4.1.10", - "@vitest/coverage-istanbul": "4.1.10", - "@vitest/coverage-v8": "4.1.10", - "@vitest/ui": "4.1.10", + "@vitest/browser-playwright": "4.1.11", + "@vitest/browser-preview": "4.1.11", + "@vitest/browser-webdriverio": "4.1.11", + "@vitest/coverage-istanbul": "4.1.11", + "@vitest/coverage-v8": "4.1.11", + "@vitest/ui": "4.1.11", "happy-dom": "*", "jsdom": "*", "vite": "^6.0.0 || ^7.0.0 || ^8.0.0" @@ -9971,12 +9902,11 @@ "license": "BSD-2-Clause" }, "node_modules/webpack": { - "version": "5.108.4", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.108.4.tgz", - "integrity": "sha512-yur8LyJoeiWh47dErD+Ok7vlbmDsJ3UbbRPAoxbGJ54WpE2y5yVo5G/inUzujnYgw3tPmBRdn+G7PoxXaYC33w==", + "version": "5.109.2", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.109.2.tgz", + "integrity": "sha512-U9/cvLzxObKNEZ9+TtdqrHM5/9z3lgl2c+c4BzbqGxFQvQvBAq87yql5A8pQ+rrMbS496MZJeF5enVBndIy2hw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@types/estree": "^1.0.8", "@types/json-schema": "^7.0.15", @@ -9984,22 +9914,20 @@ "@webassemblyjs/wasm-edit": "^1.14.1", "@webassemblyjs/wasm-parser": "^1.14.1", "acorn": "^8.16.0", - "acorn-import-phases": "^1.0.3", "browserslist": "^4.28.1", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.22.2", + "enhanced-resolve": "^5.24.4", "es-module-lexer": "^2.1.0", "eslint-scope": "5.1.1", "events": "^3.2.0", "graceful-fs": "^4.2.11", - "loader-runner": "^4.3.2", "mime-db": "^1.54.0", "minimizer-webpack-plugin": "^5.6.1", "neo-async": "^2.6.2", "schema-utils": "^4.3.3", "tapable": "^2.3.0", "watchpack": "^2.5.2", - "webpack-sources": "^3.5.0" + "webpack-sources": "^3.5.1" }, "bin": { "webpack": "bin/webpack.js" @@ -10018,9 +9946,9 @@ } }, "node_modules/webpack-bundle-analyzer": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-5.3.0.tgz", - "integrity": "sha512-PEhAoqiJ+47d0uLMx/+zo5XOvaU+Vk6N2ZLht7H3n09QLy/fhyvqGNwjdRUHJDgMN8crBR2ZwVHkIswT3Xuawg==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-5.3.1.tgz", + "integrity": "sha512-wP2EusncRGL1tZyMHC/umLkjPdYMkTL9nPEKh8G8dkYCJ9TyF6xnXFqjhdqmv5J900irN/g0P5jMvLT22krEXQ==", "dev": true, "license": "MIT", "dependencies": { @@ -10052,23 +9980,10 @@ "node": ">=20" } }, - "node_modules/webpack-bundle-analyzer/node_modules/escape-string-regexp": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", - "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/webpack-cli": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-7.2.1.tgz", - "integrity": "sha512-YwSGbcZdfz12DM8JIseVPr3oBb09IgVCVc4vY3oDvZnI/mALTGPAP1QiqOi4/bBLSJrRHaqDIXeHcNA0+G38aw==", + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-7.2.2.tgz", + "integrity": "sha512-lD0pALneslq8FfV+rwvm1BMW0AFAJrHHhNupAGN4asYjMvqrtRsenU4iKpiBo09gS4ntMxKGUxl9jhTEzVt0oA==", "dev": true, "license": "MIT", "dependencies": { @@ -10168,7 +10083,6 @@ "integrity": "sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", @@ -10319,29 +10233,11 @@ "node": ">=8" } }, - "node_modules/wrap-ansi-cjs/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==", - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "license": "MIT", - "engines": { - "node": ">=8" - } + "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" }, "node_modules/wrap-ansi-cjs/node_modules/string-width": { "version": "4.2.3", @@ -10369,18 +10265,6 @@ "node": ">=8" } }, - "node_modules/wrap-ansi/node_modules/ansi-regex": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", - "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, "node_modules/wrap-ansi/node_modules/ansi-styles": { "version": "6.2.3", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", @@ -10393,44 +10277,6 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/wrap-ansi/node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "license": "MIT" - }, - "node_modules/wrap-ansi/node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "license": "MIT", - "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/wrap-ansi/node_modules/strip-ansi": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", - "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.2.2" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", @@ -10438,9 +10284,9 @@ "license": "ISC" }, "node_modules/ws": { - "version": "8.21.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.21.0.tgz", - "integrity": "sha512-Vsp28b7DRcimFQvrqu2Wek3z1iYxDCWqHYB8Qsnk/S4RfaCQzPGPyBNuVjJV3cd6UiKtUtp6sNM77gWvzcCH+g==", + "version": "8.21.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.21.3.tgz", + "integrity": "sha512-201TZ/kPWxoPr/OKWjquZR1SWKXcvxdH+e1xrx89b3YbmzLMFCLfnaG1HFIgWzJOEWZ7MvpK++odZufgYR50Rw==", "dev": true, "license": "MIT", "engines": { @@ -10460,9 +10306,9 @@ } }, "node_modules/xml-naming": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/xml-naming/-/xml-naming-0.1.0.tgz", - "integrity": "sha512-k8KO9hrMyNk6tUWqUfkTEZbezRRpONVOzUTnc97VnCvyj6Tf9lyUR9EDAIeiVLv56jsMcoXEwjW8Kv5yPY52lw==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/xml-naming/-/xml-naming-0.3.0.tgz", + "integrity": "sha512-ghig2TBE/H11aOVgmahA3MhimvkBr6JIYknH/Dhdk10nXwdbIqBJsbfMxpvFPG8bAw77gN29aQWvKpmVoPlvPQ==", "funding": [ { "type": "github", diff --git a/tests/unit/admin-exchange-rate.test.js b/tests/unit/admin-exchange-rate.test.js index 7e2e348..9067100 100644 --- a/tests/unit/admin-exchange-rate.test.js +++ b/tests/unit/admin-exchange-rate.test.js @@ -26,14 +26,13 @@ describe('admin USD exchange rate', () => { }); }); - it.each([ - async () => null, - async () => ({ rates: {} }), - async () => Promise.reject(new Error('offline')), - ])('returns 503 when no current or stale rate is available', async (getRatesFn) => { - await expect(getAdminExchangeRateResponse('USD', getRatesFn)).resolves.toEqual({ - status: 503, - body: { error: 'USD exchange rate is unavailable' }, - }); - }); + it.each([async () => null, async () => ({ rates: {} }), async () => Promise.reject(new Error('offline'))])( + 'returns 503 when no current or stale rate is available', + async (getRatesFn) => { + await expect(getAdminExchangeRateResponse('USD', getRatesFn)).resolves.toEqual({ + status: 503, + body: { error: 'USD exchange rate is unavailable' }, + }); + }, + ); });