Compare commits

...

28 commits

Author SHA1 Message Date
a3debba954
Fixed accidental checkbox behaviour change in messages. 2025-06-18 00:47:43 +00:00
a2cdedb03c
Fixed some detections. 2025-06-18 00:37:21 +00:00
9a28ec0a77
Cleaned up the code for the remaining macros. 2025-06-18 00:32:34 +00:00
c681e2699e
Switched to correct auth data fetcher. 2025-06-17 16:12:54 +00:00
c0a838773d
why was this using a macro????? 2025-06-17 15:18:20 +00:00
ce9272b935
Replaced all forum macros with includes. 2025-06-17 15:15:08 +00:00
0babeb9390
First batch of Twig macro reduction, forum ones will probably take as long as these combined. 2025-06-17 01:20:14 +00:00
8ef46fe475
Minor spacing fixes. 2025-06-16 20:59:05 +00:00
c8db915142
Increased base font size and switched to Inter, Victor Mono and Zen Kaku Gothic New.
You'll likely run into some jank with this update, and this is also the first in a series of visual overhauls to come.

I've been wanting to increase the base font size from 12px to 16px for a while now but never actually got around to it until getting really tired of the limits imposed on me by Verdana.
It will require some getting used to, even for me, though!
The only thing that really stands out is that big walls of text like news and forum posts are a bit bigger and actually have a non-claustrophobic amount of spacing inbetween them.

My efforts to avoid shoving too much spacing into things have severely backfired into making me afraid to introduce any in the first place.
Personally, I think this reads a lot nicer!

Verdana won't be gone for good though.
Once enough of the API is ready it will be featured on the Flashii Fundamentals for Legacy PCs subsite!!
2025-06-16 20:52:25 +00:00
a0e719c2d1
Updated libraries. 2025-06-12 20:17:54 +00:00
d8dbfaa7ab
Added leeway to the device code token polling process. 2025-05-18 15:55:06 +00:00
4e66852db1
Fixed tag script, potentially. 2025-05-13 17:28:26 +00:00
40a96029ff
Switched to the railgun/jwt library. 2025-05-13 17:27:04 +00:00
dd8ec7c8dd
Cleaned up forum templates. 2025-04-24 19:17:38 +00:00
5ec7dddd0e
Fixed categories without topics not being browseable. 2025-04-24 18:40:41 +00:00
af476491b2
Made OAuth2 IDs snowflakes and also removed the client_id field. 2025-04-24 00:17:35 +00:00
c91fa69362
Altered default token lifetimes and also made them configurable. 2025-04-23 21:56:33 +00:00
093266eb1e
Allow access and refresh tokens to not be associated with an app. 2025-04-23 21:24:02 +00:00
d9cf9674f3
Check for empty array. 2025-04-22 22:20:13 +00:00
e1155158d9
Should probably also bump the version. 2025-04-22 21:58:24 +00:00
86578c9ff4
Forgot to update the migration, oops. 2025-04-22 21:58:07 +00:00
3bd556fba9
Added chat server selection endpoints. 2025-04-22 21:55:51 +00:00
52632b42eb
Fixed oversights. 2025-04-22 21:10:47 +00:00
ca2c192330
Added new token/login endpoints for chat. 2025-04-22 20:16:55 +00:00
85c71f604a
Use URI instead of URL in the API.
URL equivalent of a field can still be requested using the fields parameter for the existing routes.
2025-04-22 18:33:47 +00:00
1d57fc3b45
Added kaomoji list to the database. 2025-04-21 01:25:02 +00:00
45635ddc5b
Updated libraries. 2025-04-21 00:52:00 +00:00
d675f1410f
Ported removeChild util. 2025-04-13 00:46:51 +00:00
242 changed files with 3717 additions and 3361 deletions

View file

@ -1 +1 @@
20250412.1
20250617.1

View file

@ -17,8 +17,16 @@ html, body {
}
:root {
--font-regular: Verdana, Geneva, 'Dejavu Sans', Arial, Helvetica, sans-serif;
--font-monospace: Consolas, 'Liberation Mono', Menlo, Courier, monospace;
--font-regular: Inter, 'Zen Kaku Gothic New', sans-serif;
--font-monospace: 'Victor Mono', monospace;
font-feature-settings: 'calt' 1, 'dlig' 1, 'ss01' 1;
font-optical-sizing: auto;
}
@supports (font-variation-settings: normal) {
:root {
--font-regular: InterVariable, 'Zen Kaku Gothic New', sans-serif;
}
}
@include loading.css;

View file

@ -19,7 +19,8 @@
.msz-perf {
background-color: #111d;
color: #fff;
font-family: monospace;
font-family: var(--font-monospace);
font-feature-settings: 'ss07' 1;
font-size: 12px;
line-height: 20px;
padding: 4px 8px;

View file

@ -43,6 +43,24 @@ const $appendChildren = function(element, ...children) {
$appendChild(element, child);
};
const $removeChild = function(element, child) {
switch(typeof child) {
case 'function':
$removeChild(element, child());
break;
case 'object':
if(child === null)
break;
if(child instanceof Node)
element.removeChild(child);
else if(child?.element instanceof Node)
element.removeChild(child.element);
break;
}
};
const $removeChildren = function(element) {
while(element.lastChild)
element.removeChild(element.lastChild);

View file

@ -20,7 +20,9 @@ body {
color: #fff;
font-size: 16px;
line-height: 25px;
font-family: Verdana, Geneva, 'Dejavu Sans', Arial, Helvetica, sans-serif;
font-family: Inter, 'Zen Kaku Gothic New', sans-serif;
font-feature-settings: 'calt' 1, 'dlig' 1, 'ss01' 1;
font-optical-sizing: auto;
background-color: #8559a5;
background-color: var(--error-colour, #8559a5);
background-image: url('/images/clouds.png');
@ -30,6 +32,12 @@ body {
flex-direction: column;
}
@supports (font-variation-settings: normal) {
body {
--font-regular: InterVariable, 'Zen Kaku Gothic New', sans-serif;
}
}
.error {
display: flex;
flex-direction: column;
@ -93,8 +101,8 @@ body {
}
.error-home {
font-size: 1.5em;
line-height: 1.4em;
font-size: 1.5rem;
line-height: 1.375rem;
}
.error-nav {
@ -112,21 +120,24 @@ body {
justify-content: center;
}
.error-title {
line-height: 3rem;
}
.error-icon {
font-size: 4em;
line-height: 1.4em;
font-size: 4rem;
line-height: 1.5rem;
}
.error-blerb {
margin: 10px auto;
font-size: .9em;
line-height: 1.4em;
font-size: .875rem;
line-height: 1rem;
}
.error-footer {
text-align: center;
font-size: 12px;
line-height: 1.4em;
font-size: .75rem;
line-height: 1.375em;
color: #888;
border-top: 1px solid #444;
padding-top: 4px;

View file

@ -1,9 +1,7 @@
.input__button {
background-color: var(--background-colour);
font-family: var(--font-regular);
font-size: 1.2em;
line-height: 1.4em;
padding: 5px 10px;
padding: 4px 12px;
min-width: 80px;
text-align: center;
cursor: pointer;
@ -15,6 +13,8 @@
align-items: center;
justify-content: center;
text-decoration: none;
font-size: inherit;
line-height: inherit;
}
.input__button:hover, .input__button:active,
.input__button:focus, .input__button:checked,

View file

@ -49,6 +49,8 @@
.input__checkbox__text {
display: inline-block;
margin-left: 4px;
font-size: .875em;
line-height: 1.375em;
}
.input__checkbox--disabled {
opacity: .5;

View file

@ -4,10 +4,12 @@
background: #222;
color: #fff;
min-width: 150px;
font-size: 1.2em;
border-radius: 2px;
box-shadow: inset 0 0 4px #111;
transition: border-color .2s;
font-family: inherit;
font-size: 1em;
line-height: 1.25em;
}
.input__select:focus {
border-color: var(--accent-colour);

View file

@ -1,5 +1,4 @@
.input__text {
font-size: 1.2em;
border: 1px solid #222;
padding: 5px 10px;
background: #222;
@ -7,8 +6,11 @@
border-radius: 2px;
box-shadow: inset 0 0 4px #111;
transition: border-color .2s;
font-family: inherit;
font-size: 1em;
line-height: 1.25em;
}
.input__text:focus { border-color: var(--accent-colour); }
.input__text--readonly { color: #888; }
.input__text--monospace { font-family: var(--font-monospace); }
.input__text--monospace { font-family: var(--font-monospace); font-feature-settings: 'ss07' 1; }
.input__text--centre { text-align: center; }

View file

@ -1,11 +1,11 @@
.input__textarea {
font-size: 1.2em;
border: 1px solid #222;
padding: 5px 10px;
padding: 4px 12px;
vertical-align: bottom;
background: #222;
color: #fff;
font-family: var(--font-monospace);
font-feature-settings: 'ss07' 1;
border-radius: 2px;
box-shadow: inset 0 0 4px #111;
transition: border-color .2s;

View file

@ -10,9 +10,8 @@
}
.input__upload__selection {
text-align: center;
font-size: 1.2em;
border: 1px solid #222;
padding: 5px 10px;
padding: 4px 12px;
background: #222;
color: #fff;
border-radius: 2px;

View file

@ -43,7 +43,7 @@
.changelog__change__username {
color: inherit;
font-size: 1.4em;
font-size: 1.375em;
line-height: 1.5em;
text-decoration: none;
}
@ -52,7 +52,7 @@
}
.changelog__change__userrole {
font-size: .9em;
font-size: .875em;
line-height: 1.5em;
color: inherit;
text-decoration: none;
@ -64,15 +64,13 @@
.changelog__change__date {
color: inherit;
text-decoration: none;
font-size: 1.1em;
line-height: 1.5em;
}
.changelog__change__date:hover {
text-decoration: underline;
}
.changelog__change__text {
line-height: 1.2em;
line-height: 1.25em;
flex: 1 1 auto;
word-wrap: break-word;
overflow: hidden;

View file

@ -1,6 +1,8 @@
.changelog__entry {
display: flex;
margin: 5px;
font-size: .875em;
line-height: 1.5em;
}
.changelog__entry__info { display: flex; }
@ -68,7 +70,7 @@
.changelog__entry__tags {
display: flex;
flex-wrap: wrap;
font-size: .9em;
font-size: .75em;
line-height: 1.5em;
}

View file

@ -6,8 +6,6 @@
text-decoration: none;
padding: 1px 3px;
color: var(--accent-colour);
font-size: 1.2em;
line-height: 1.5em;
}
.changelog__listing__date:hover {
text-decoration: underline;

View file

@ -21,8 +21,8 @@
}
.changelog__log__text {
padding: 8px 12px;
font-size: 1.5em;
line-height: 1.3em;
font-size: 1.375em;
line-height: 1.25em;
align-self: center;
flex: 1 1 auto;
overflow: hidden;

View file

@ -19,7 +19,7 @@
}
.comments-form-wrap {
display: grid;
grid-template-rows: 1fr 32px;
grid-template-rows: 1fr 35px;
gap: 2px;
margin: 3px;
margin-left: 0;
@ -49,8 +49,6 @@
.comments-form-status {
flex: 1 1 auto;
font-size: 1.2em;
line-height: 1.4em;
padding: 0 6px;
overflow: hidden;
transition: color .2s;
@ -66,8 +64,8 @@
.comments-form-pin {
flex: 0 0 auto;
font-size: 1.2em;
line-height: 1.4em;
font-size: 1.25em;
line-height: 1.375em;
}
.comments-form-post {

View file

@ -3,8 +3,8 @@
justify-content: center;
align-items: center;
flex-wrap: wrap;
font-size: 1.4em;
line-height: 1.5em;
font-size: 1.25em;
line-height: 1.375em;
gap: 6px;
padding: 12px;
margin: 2px;

View file

@ -13,10 +13,12 @@
overflow: hidden;
}
.container__title__text {
font-size: 1.5em;
font-size: 1.125rem;
line-height: 1.5em;
padding: 8px 10px;
word-wrap: break-word;
font-weight: 500;
min-height: 44px;
}
.container__title__link {
color: inherit;

View file

@ -21,7 +21,7 @@
visibility: hidden;
}
.eeprom-widget-form-text {
font-size: 1.4em;
font-size: 1.325em;
line-height: 1.5em;
}
.eeprom-widget-form:focus,
@ -70,8 +70,8 @@
text-decoration: underline;
}
.eeprom-widget-file-progress {
font-size: .9em;
line-height: 1.4em;
font-size: .875em;
line-height: 1.325em;
text-align: right;
padding: 0 2px;
white-space: nowrap;

View file

@ -88,30 +88,26 @@
margin-left: 5px;
}
.embedph-info-title {
font-size: 2em !important;
font-weight: 400 !important;
line-height: 1.2em !important;
margin-bottom: 5px;
font-size: 1.5rem !important;
font-weight: 500 !important;
line-height: 1.5rem !important;
margin: 5px 0;
word-break: break-word;
margin: 0 !important;
padding: 0 !important;
border-width: 0 !important;
}
.embedph-info-desc {
line-height: 1.4em;
margin: .5em 0;
font-size: .875rem;
line-height: 1.5rem;
margin: .25rem 0;
word-break: break-word;
}
.embedph-info-site {
font-size: .9em;
line-height: 1.2em;
font-size: .75rem;
}
@media (max-width: 640px) {
.embedph-info-title {
font-size: 1.5em;
line-height: 1.2em;
}
.embedph-info-desc {
display: none;
}
@ -135,9 +131,7 @@
margin-bottom: 20px;
}
.embedph-play-external {
padding: 5px 10px;
font-size: 1.2em;
line-height: 1.5em;
padding: 4px 8px;
text-decoration: none !important;
color: var(--text-colour) !important;
background-color: var(--background-colour-translucent-6);
@ -225,6 +219,7 @@
height: 70px;
border-radius: 5px;
margin: 5px;
font-size: .75rem;
}
.aembedph:hover .aembedph-play,
.aembedph:active .aembedph-play,
@ -293,9 +288,9 @@
padding: 0 5px;
}
.aembedph-info-title {
font-size: 1.4em !important;
font-weight: 400 !important;
line-height: 1.2em !important;
font-size: 1.25em !important;
font-weight: 500 !important;
line-height: 1.25em !important;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
@ -309,10 +304,10 @@
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
font-weight: 700;
font-weight: 600;
}
.aembedph-info-album {
line-height: 1.4em;
line-height: 1.5em;
word-break: break-word;
white-space: nowrap;
overflow: hidden;
@ -321,7 +316,7 @@
}
.aembedph-info-site {
font-size: .9em;
line-height: 1.2em;
line-height: 1.25em;
}
.aembedph-play {

View file

@ -13,8 +13,8 @@
max-width: var(--site-max-width);
margin: 0 auto;
text-align: center;
font-size: .9em;
line-height: 1.5em;
font-size: .875rem;
line-height: 1.5rem;
padding: 1em 0;
}
.footer__background {

View file

@ -4,8 +4,6 @@
overflow: auto;
}
.forum__categories__empty {
font-size: 1.2em;
line-height: 1.5em;
text-align: center;
padding: 10px;
}
@ -63,8 +61,8 @@
background-size: 80px 80px;
background-image: radial-gradient(ellipse at center, rgba(255, 255, 255, .2) 0%, rgba(0, 0, 0, .4) 100%);
box-shadow: 0 1px 4px #111;
font-size: 2em;
line-height: 1.5em;
font-size: 1.5em;
line-height: 1.25em;
color: #fff;
display: flex;
justify-content: center;
@ -82,22 +80,25 @@
justify-content: center;
flex-direction: column;
line-height: 1.5em;
gap: 2px;
}
.forum__category__title {
font-size: 1.3em;
font-size: 1.125em;
line-height: 1.25em;
}
.forum__category__description,
.forum__category__subforums {
font-size: .9em;
font-size: .875em;
line-height: 1.25em;
}
.forum__category__subforums {
display: flex;
gap: 6px;
}
.forum__category__subforum {
padding: 2px;
pointer-events: initial;
color: var(--accent-colour);
text-decoration: none;
@ -125,21 +126,23 @@
}
.forum__category__stat {
font-size: .9em;
line-height: 1.3em;
font-size: .875em;
line-height: 1.25em;
opacity: .7;
pointer-events: auto;
font-feature-settings: 'ss01' 1, 'tnum' 1;
}
.forum__category__stat:first-child {
font-size: 1.5em;
font-size: 1.25em;
opacity: 1;
}
.forum__category__activity {
text-align: right;
min-width: 270px;
line-height: 1.4em;
min-width: 300px;
font-size: .875em;
line-height: 1.375em;
}
.forum__category__activity__none,
.forum__category__activity__details {
@ -160,7 +163,7 @@
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
max-width: 200px;
max-width: 230px;
}
.forum__category__activity__post:hover,
.forum__category__activity__post:focus {
@ -194,7 +197,7 @@
flex-wrap: wrap;
}
.forum__category__details {
flex-basis: calc(100% - 100px);
flex-basis: calc(100% - 8em); /* god knows what this does */
}
.forum__category__stats {
min-width: initial;

View file

@ -7,8 +7,8 @@
}
.forum__header__title {
font-size: 2em;
line-height: 1.5em;
font-size: 1.5em;
line-height: 1.25em;
color: inherit;
text-decoration: none;
padding: 0 5px;
@ -28,19 +28,18 @@
margin: 0;
box-shadow: initial;
font-size: 1em;
font-family: inherit;
font-family: var(--font-regular);
}
.forum__header__breadcrumbs {
display: flex;
font-size: 1.1em;
line-height: 1.5em;
align-items: center;
}
.forum__header__breadcrumb {
color: var(--accent-colour);
text-decoration: none;
padding: 2px 5px;
padding: 2px 6px;
}
.forum__header__breadcrumb:hover {
text-decoration: underline;
@ -48,7 +47,7 @@
.forum__header__breadcrumb__separator {
color: var(--accent-colour);
margin: 0 4px;
font-size: .9em;
font-size: .875em;
}
.forum__header__actions {

View file

@ -36,14 +36,13 @@
.forum__leaderboard__user {
margin: 2px 0;
font-size: 1.2em;
}
.forum__leaderboard__user--rank-1 {
font-size: 1.6em;
font-size: 1.5em;
}
.forum__leaderboard__user--rank-2,
.forum__leaderboard__user--rank-3 {
font-size: 1.4em;
font-size: 1.25em;
}
.forum__leaderboard__user__background {
@ -69,6 +68,7 @@
justify-content: center;
font-weight: 700;
flex: 0 0 auto;
font-feature-settings: 'ss01' 1, 'tnum' 1;
}
.forum__leaderboard__user__rank:before {
content: "#";

View file

@ -22,8 +22,8 @@
}
.forum__post__details {
font-size: .9em;
line-height: 1.7em;
font-size: .875em;
line-height: 1.75em;
padding: 0 2px;
display: flex;
justify-content: space-between;
@ -36,6 +36,9 @@
color: inherit;
text-decoration: none;
}
.forum__post__id {
font-feature-settings: 'ss01' 1, 'tnum' 1;
}
.forum__post__datetime:hover,
.forum__post__datetime:focus,
.forum__post__id:hover,
@ -47,7 +50,7 @@
.forum__post__text {
padding: 2px;
line-height: 1.4em;
line-height: 1.5em;
flex: 1 1 auto;
}
.forum__post__text--edit {
@ -97,14 +100,14 @@
}
.forum__post__posts-count {
font-size: .9em;
margin-left: 4px;
font-size: .75em;
margin-left: 8px;
}
.forum__post__joined {
flex: 1 1 auto;
max-width: 170px;
font-size: .9em;
font-size: .75em;
justify-self: flex-end;
}
@ -117,7 +120,7 @@
.forum__post__username {
color: inherit;
font-size: 1.4em;
font-size: 1.25em;
line-height: 2em;
text-decoration: none;
}
@ -127,8 +130,8 @@
}
.forum__post__usertitle {
font-size: .9em;
line-height: 1.5em;
font-size: .75em;
line-height: 1.25em;
margin-bottom: 4px;
}
@ -187,12 +190,13 @@
.forum__post__badge {
background-color: var(--accent-colour);
border-radius: 12px;
border-radius: 24px;
width: 100%;
padding: 2px;
box-shadow: 0 2px 3px #000A;
margin: 4px;
overflow: hidden;
font-size: .875em;
}
.forum__post__badge__desktop {
display: block;
@ -207,13 +211,11 @@
}
.forum__post__text {
margin: 4px;
font-size: 1.2em;
line-height: 1.3em;
}
.forum__post__info {
flex-direction: row;
margin: 0;
padding: 5px;
padding: 4px;
}
.forum__post__info__content {
width: 100%;
@ -252,8 +254,8 @@
padding: 2px 10px;
margin: 0;
align-self: flex-start;
margin-left: 5px;
font-size: .9em;
margin-left: 10px;
font-size: .875em;
}
.forum__post__badge__desktop {
display: none;

View file

@ -12,7 +12,7 @@
display: flex;
justify-content: center;
align-items: center;
font-size: 2em;
font-size: 1.5em;
padding-bottom: 1px;
}
.forum__status__icon__background {

View file

@ -4,8 +4,6 @@
overflow: auto;
}
.forum__topics__empty {
font-size: 1.2em;
line-height: 1.5em;
text-align: center;
padding: 10px;
}
@ -76,7 +74,7 @@
background-size: 60px 60px;
background-image: radial-gradient(ellipse at center, rgba(255, 255, 255, .2) 0%, rgba(0, 0, 0, .4) 100%);
box-shadow: 0 1px 4px #111;
font-size: 1.5em;
font-size: 1.125em;
line-height: 1.5em;
color: #fff;
display: flex;
@ -114,14 +112,15 @@
}
.forum__topic__title {
font-size: 1.3em;
font-size: 1.125em;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.forum__topic__info {
font-size: .9em;
font-size: .875em;
line-height: 1.25em;
}
.forum__topic__stats,
@ -137,14 +136,15 @@
}
.forum__topic__stat {
font-size: .9em;
line-height: 1.3em;
font-size: .875em;
line-height: 1.25em;
opacity: .7;
pointer-events: auto;
cursor: default;
font-feature-settings: 'ss01' 1, 'tnum' 1;
}
.forum__topic__stat:first-child {
font-size: 1.4em;
font-size: 1.25em;
opacity: 1;
}
@ -153,7 +153,7 @@
align-items: center;
text-align: right;
min-width: 200px;
line-height: 1.5em;
line-height: 1.25em;
}
.forum__topic__activity__details {
display: flex;
@ -198,8 +198,9 @@
.forum__topic__pagination {
display: flex;
align-items: center;
font-size: .9em;
line-height: 1.2em;
font-size: .875em;
line-height: 1.25em;
font-feature-settings: 'ss01' 1, 'tnum' 1;
}
.forum__topic__pagination__separator {
margin: 0 8px;
@ -209,7 +210,7 @@
text-decoration: none;
pointer-events: initial;
margin: 0 1px;
padding: 2px 4px;
padding: 3px;
border-radius: 2px;
min-width: 25px;
height: 25px;
@ -262,8 +263,8 @@
.forum__topic__pagination__item {
min-width: 30px;
height: 30px;
line-height: 26px;
font-size: 1.2em;
line-height: 1.375em;
font-size: 1.25em;
}
}

View file

@ -69,8 +69,7 @@
}
.header__desktop__menu__link {
margin: var(--header-link-margin) 0;
font-size: 1.2em;
padding: 6px 10px;
padding: 4px 10px;
text-align: center;
}
@ -86,6 +85,8 @@
}
.header__desktop__submenu__link {
margin: 5px;
font-size: .875em;
line-height: 1.5em;
}
.header__desktop__submenu__background {
background: var(--header-accent-colour);
@ -128,8 +129,8 @@
margin: 2px;
color: inherit;
text-decoration: none;
font-size: 1.5em;
line-height: 32px;
font-size: 1.125rem;
line-height: 2rem;
width: 32px;
height: 32px;
transition: background-color .2s;
@ -149,8 +150,8 @@
top: -5px;
right: -3px;
z-index: 1;
font-size: .5em;
line-height: 1.4em;
font-size: .625rem;
line-height: 1.375rem;
text-align: right;
padding: 2px 2px 0;
border-radius: 4px;
@ -158,7 +159,8 @@
opacity: .9;
border-radius: 4px;
line-height: 12px;
padding: 2px 4px;
padding: 2px 3px;
font-feature-settings: 'ss01' 1, 'tnum' 1;
}
/** MOBILE HEADER **/
@ -186,18 +188,12 @@
.header__mobile__icon {
flex: 0 0 auto;
cursor: pointer;
font-size: 32px;
font-size: 1.5rem;
width: var(--header-icon-px);
height: var(--header-icon-px);
display: flex;
justify-content: center;
align-items: center;
-webkit-touch-callout: none !important;
-webkit-user-select: none !important;
-khtml-user-select: none !important;
-moz-user-select: none !important;
-ms-user-select: none !important;
user-select: none !important;
}
@ -227,7 +223,7 @@
background: var(--background-pattern);
background-color: var(--header-accent-colour);
background-blend-mode: multiply;
transition: max-height .2s;
transition: max-height .3s;
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);
max-height: 0;
overflow: hidden;
@ -237,7 +233,7 @@
}
.header__mobile__toggle:checked ~ .header__mobile__menu {
max-height: 600px;
max-height: 100vh;
}
.header__mobile__user {
@ -255,24 +251,23 @@
color: inherit;
text-decoration: none;
display: block;
padding: 8px;
padding-left: 20px;
padding: 6px;
padding-left: 24px;
cursor: pointer;
border-radius: 2px;
transition: background-color .2s, margin .1s, opacity .1s;
font-size: 1.2em;
}
.header__mobile__link:not(:last-child) {
margin-bottom: 2px;
}
.header__mobile__link--primary {
font-size: 1.5em;
padding: 10px;
font-size: 1.25rem;
padding: 8px;
}
.header__mobile__link--user {
margin: 2px;
font-size: 1.5em;
padding: 10px;
font-size: 1.25rem;
padding: 8px;
}
.header__mobile__link:hover,
.header__mobile__link:focus {

View file

@ -2,8 +2,8 @@ pre code.hljs {
display: block;
overflow-x: auto;
padding: 1em;
font-size: 1.2em;
font-family: var(--font-monospace);
font-feature-settings: 'ss07' 1;
}
code.hljs {

View file

@ -46,8 +46,8 @@
.landingv2-footer-copyright {
text-align: right;
line-height: 1.8em;
font-size: .9em;
line-height: 1.5em;
font-size: .875em;
align-self: flex-end;
}

View file

@ -52,8 +52,8 @@
display: flex;
align-items: center;
min-height: 70px;
font-size: 1.4em;
padding: 10px 16px;
font-size: 1.5em;
padding: 8px 16px;
grid-column: 1;
}
.landingv2-header-menu-link:hover,

View file

@ -13,7 +13,6 @@
display: flex;
align-items: center;
margin: 10px;
text-shadow: 0 1px 4px #000;
}
.landingv2-stat-icon {
font-size: 4em;
@ -25,6 +24,7 @@
}
.landingv2-stat-value-num {
font-weight: 700;
font-feature-settings: 'ss01' 1, 'tnum' 1;
}
.landingv2-forum {
@ -37,7 +37,6 @@
.landingv2-forum-topics {
background-color: var(--container-colour);
box-shadow: 0 1px 2px #0009;
text-shadow: 0 1px 4px #000;
overflow: hidden;
word-wrap: break-word;
}
@ -95,7 +94,7 @@
background-size: 60px 60px;
background-image: radial-gradient(ellipse at center, rgba(255, 255, 255, .2) 0%, rgba(0, 0, 0, .4) 100%);
box-shadow: 0 1px 4px #111;
font-size: 1.5em;
font-size: 1.25em;
line-height: 1.5em;
color: #fff;
display: flex;
@ -110,34 +109,35 @@
display: flex;
justify-content: center;
flex-direction: column;
line-height: 1.6em;
line-height: 1.625em;
overflow: hidden;
}
.landingv2-forum-topic-info-details-title {
font-size: 1.3em;
font-size: 1.25em;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.landingv2-forum-topic-info-stats {
font-size: .9em;
font-size: .875em;
display: flex;
flex: 0 0 auto;
text-align: center;
min-width: 60px;
flex-direction: column;
font-feature-settings: 'ss01' 1, 'tnum' 1;
}
.landingv2-forum-topic-info-stats-posts,
.landingv2-forum-topic-info-stats-views {
font-size: .9em;
line-height: 1.3em;
font-size: .875em;
line-height: 1.25em;
opacity: .7;
pointer-events: auto;
cursor: default;
}
.landingv2-forum-topic-info-stats-posts {
font-size: 1.4em;
font-size: 1.25em;
opacity: 1;
}
@ -150,7 +150,6 @@
.landingv2-news-post {
background-color: var(--container-colour);
box-shadow: 0 1px 2px #0009;
text-shadow: 0 1px 4px #000;
overflow: hidden;
word-wrap: break-word;
padding: 0 10px 10px 10px;
@ -167,7 +166,6 @@
.landingv2-online {
background-color: var(--container-colour);
box-shadow: 0 1px 2px #0009;
text-shadow: 0 1px 4px #000;
margin: 4px 0;
}
.landingv2-online-users {

View file

@ -37,7 +37,6 @@
height: 30px;
line-height: 29px;
text-align: center;
font-size: 1.5em;
background-color: #222d;
display: block;
color: var(--text-colour);

View file

@ -57,13 +57,10 @@
width: 45%;
padding: 4px 0;
}
.landing__statistic__name {
font-size: 1.3em;
line-height: 2em;
}
.landing__statistic__value {
font-size: 1.5em;
line-height: 1.5em;
font-size: 1.25em;
line-height: 1.625em;
font-feature-settings: 'ss01' 1, 'tnum' 1;
}
.landing__latest {
@ -91,13 +88,13 @@
padding-left: 8px;
}
.landing__latest__username {
font-size: 1.5em;
line-height: 1.4em;
font-size: 1.25em;
line-height: 1.375em;
color: var(--user-colour);
}
.landing__latest__joined {
font-size: .9em;
line-height: 1.2em;
font-size: .875em;
line-height: 1.25em;
}
@media (max-width: 800px) {

View file

@ -1,6 +1,6 @@
:root {
--font-size: 12px;
--line-height: 20px;
--font-size: 16px;
--line-height: 25px;
--site-max-width: 1200px;
--site-mobile-width: 800px;

View file

@ -9,10 +9,10 @@
flex: 1 1 auto;
}
.manage__description {
font-size: .9em;
font-size: .875em;
margin: 1px 2px;
border-bottom: 1px solid var(--accent-colour);
padding: 2px 5px;
padding: 2px 4px;
}
@media (max-width: 800px) {

View file

@ -4,13 +4,13 @@
}
.manage__ban__title {
font-size: 1.4em;
font-size: 1.25em;
line-height: 1.5em;
padding: 0 4px;
}
.manage__ban__desc {
font-size: .9em;
font-size: .875em;
line-height: 1.5em;
font-style: italic;
border-bottom: 1px solid var(--accent-colour);

View file

@ -107,7 +107,7 @@
border-top: 1px solid var(--accent-colour);
}
.manage__bans__item__reason__title {
font-size: .9em;
font-size: .875em;
line-height: 1.5em;
font-style: italic;
}
@ -117,6 +117,6 @@
}
.manage__bans__item__noreason {
font-size: .9em;
font-size: .875em;
font-style: italic;
}

View file

@ -13,7 +13,8 @@
.manage__blacklist__textarea {
margin: 0;
padding: 5px 10px;
font-family: monospace;
font-family: var(--font-monospace);
font-feature-settings: 'ss07' 1;
width: 100%;
min-width: 100%;
max-width: 100%;

View file

@ -4,13 +4,11 @@
.manage__navigation__links {
display: flex;
flex-direction: column;
font-size: 1.2em;
}
.manage__navigation__link {
color: inherit;
text-decoration: none;
padding: 2px 5px;
margin-bottom: 2px;
padding: 2px 8px;
}
.manage__navigation__link:hover {
text-decoration: underline;

View file

@ -17,11 +17,11 @@
.manage__note__title {
flex-grow: 1;
flex-shrink: 1;
font-size: 1.4em;
line-height: 1.3em;
font-size: 1.375em;
line-height: 1.25em;
}
.manage__note__title__text {
padding: 2px 5px;
padding: 2px 6px;
}
.manage__note__title input {
width: 100%;
@ -73,7 +73,7 @@
.manage__note__nobody {
text-align: center;
font-size: .9em;
font-size: .875em;
font-style: italic;
}

View file

@ -24,9 +24,9 @@
.manage__notes__item__title {
flex-grow: 1;
flex-shrink: 1;
font-size: 1.4em;
line-height: 1.3em;
padding: 2px 5px;
font-size: 1.25em;
line-height: 1.25em;
padding: 2px 6px;
}
.manage__notes__item__title a {
color: inherit;
@ -96,7 +96,7 @@
.manage__notes__item__nobody {
text-align: center;
font-size: .9em;
font-size: .875em;
font-style: italic;
}

View file

@ -49,7 +49,7 @@
justify-content: center;
width: 100%;
height: 100%;
font-size: 1.5em;
font-size: 1.25em;
transition: background-color .2s;
}
.manage__role-item__icon__background {
@ -73,14 +73,9 @@
flex: 1 1 auto;
}
.manage__role-item__name {
font-size: 1.4em;
line-height: 1.4em;
}
.manage__role-item__details {
font-size: .9em;
line-height: 1.3em;
font-size: .875em;
line-height: 1.25em;
display: inline-flex;
align-items: center;
padding: 1px 0;
@ -90,11 +85,11 @@
border-radius: 10px;
background-color: var(--accent-colour);
box-shadow: 0 1px 4px #111;
padding: 2px 5px;
padding: 2px 6px;
}
.manage__role-item__title {
padding: 2px 5px;
padding: 2px 6px;
}
.manage__role-item__actions {

View file

@ -27,6 +27,7 @@
}
.manage-list-setting-key-text {
font-family: var(--font-monospace);
font-feature-settings: 'ss07' 1;
}
.manage-list-setting-type {
@ -53,7 +54,7 @@
border-radius: 5px;
font-weight: 700;
padding: 0 5px;
font-size: .9em;
font-size: .75em;
display: inline-block;
}
@ -63,6 +64,7 @@
}
.manage-list-setting-value-text {
font-family: var(--font-monospace);
font-feature-settings: 'ss07' 1;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;

View file

@ -1,20 +1,21 @@
.manage__statistic {
border: 1px solid var(--accent-colour);
border-radius: 2px;
padding: 2px 5px;
padding: 2px 6px;
}
.manage__statistic__name {
font-size: 1.1em;
font-size: 1.125em;
line-height: 1.5em;
}
.manage__statistic__value {
text-align: right;
font-size: 1.4em;
font-size: 1.375em;
line-height: 1.5em;
font-feature-settings: 'ss01' 1, 'tnum' 1;
}
.manage__statistic__updated {
text-align: right;
font-size: .9em;
font-size: .75em;
font-style: italic;
line-height: 1.5em;
}

View file

@ -57,25 +57,26 @@
}
.manage__user-item__name {
font-size: 1.4em;
line-height: 1.4em;
font-size: 1.125em;
line-height: 1.5em;
max-width: 600px; /* whatever */
}
.manage__user-item__details {
font-size: .9em;
line-height: 1.3em;
font-size: .875em;
line-height: 1.25em;
display: inline-flex;
align-items: center;
}
.manage__user-item__detail {
border-radius: 10px;
border-radius: 16px;
background-color: var(--accent-colour);
box-shadow: 0 1px 4px #111;
padding: 3px 8px;
padding: 2px 8px;
pointer-events: initial;
margin: 2px;
font-feature-settings: 'ss01' 1, 'tnum' 1;
}
.manage__user-item__actions {
@ -88,7 +89,7 @@
width: 32px;
height: 32px;
line-height: 32px;
font-size: 1.5em;
font-size: 1.25em;
border-radius: 2px;
margin: 5px;
margin-right: 0;

View file

@ -4,13 +4,13 @@
}
.manage__warning__title {
font-size: 1.4em;
font-size: 1.25em;
line-height: 1.5em;
padding: 0 4px;
}
.manage__warning__desc {
font-size: .9em;
font-size: .875em;
line-height: 1.5em;
font-style: italic;
border-bottom: 1px solid var(--accent-colour);

View file

@ -1,5 +1,5 @@
.markdown {
line-height: 1.7em;
line-height: 1.5em;
}
.markdown a {
@ -78,8 +78,7 @@
.markdown h1, .markdown h2,
.markdown h3, .markdown h4,
.markdown h5, .markdown h6 {
margin-top: calc(var(--font-size) * 1.2);
margin-bottom: var(--font-size);
margin: calc(var(--font-size) * 0.875) 0;
font-weight: 700;
line-height: 1em;
}

View file

@ -3,8 +3,6 @@
align-items: center;
height: 30px;
margin: 1px;
font-size: 1.3em;
line-height: 1.4em;
color: #fff;
text-decoration: none;
transition: background-color .1s;
@ -12,6 +10,7 @@
border: 0;
background-color: inherit;
text-align: left;
font-size: 1rem;
}
.messages-actions-item:hover,
.messages-actions-item:focus {

View file

@ -10,8 +10,6 @@
}
.messages-entry-header {
display: flex;
font-size: 1.1em;
line-height: 1.6em;
border-bottom: 2px solid #9999;
gap: 2px;
}
@ -60,12 +58,12 @@
align-self: flex-end;
}
.messages-entry-subject {
line-height: 1.4em;
line-height: 1.5em;
color: #fff;
overflow: hidden;
}
.messages-entry-preview {
line-height: 1.4em;
line-height: 1.5em;
color: #888;
overflow: hidden;
}

View file

@ -25,7 +25,7 @@
margin: 10px;
}
.messages-folder-notice-text {
font-size: 1.4em;
font-size: 1.375em;
line-height: 1.5em;
}
.messages-folder .pagination {

View file

@ -6,7 +6,7 @@
}
.messages-message-snippet {
cursor: pointer;
font-size: .9em;
font-size: .875em;
line-height: 1.5em;
color: #888;
gap: 5px;
@ -117,7 +117,7 @@
}
.messages-message-body {
line-height: 1.4em;
line-height: 1.5em;
}
.messages-message-body p:first-child {
margin-top: 0 !important;
@ -131,5 +131,5 @@
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
overflow: hidden;
line-height: 1.4em;
line-height: 1.5em;
}

View file

@ -9,7 +9,7 @@
display: flex;
color: inherit;
text-decoration: none;
font-size: 1.5em;
font-size: 1.25em;
line-height: 32px;
height: 32px;
transition: background-color .2s;

View file

@ -44,7 +44,7 @@
.news__post__username {
color: inherit;
font-size: 1.4em;
font-size: 1.25em;
line-height: 1.5em;
text-decoration: none;
}
@ -53,14 +53,14 @@
}
.news__post__date {
font-size: 1.1em;
font-size: .875em;
line-height: 1.5em;
}
.news__post__category {
color: inherit;
text-decoration: none;
font-size: 1.1em;
font-size: 1.125em;
line-height: 1.5em;
margin: 6px 0;
}
@ -69,7 +69,6 @@
}
.news__post__text {
line-height: 1.2em;
flex: 1 1 auto;
word-wrap: break-word;
overflow: hidden;
@ -101,4 +100,4 @@
width: 50px;
height: 50px;
}
}
}

View file

@ -23,8 +23,8 @@
}
.news__preview__title h1 {
font-size: 2em;
line-height: 1.5em;
font-weight: 700;
line-height: 1.375em;
}
.news__preview__attrs {
@ -32,7 +32,7 @@
flex-shrink: 0;
display: flex;
gap: 4px;
font-size: .9em;
font-size: .875em;
}
.news__preview__attr {
@ -62,7 +62,7 @@
}
.news__preview__content {
line-height: 1.4em;
line-height: 1.5em;
word-wrap: break-word;
overflow: hidden;
}
@ -73,5 +73,5 @@
}
.news__preview__link {
font-size: .9em;
font-size: .875em;
}

View file

@ -23,9 +23,7 @@
.pagination__link {
display: flex;
min-width: 40px;
font-size: 1.2em;
line-height: 1.5em;
padding: 3px 10px 4px;
min-height: 36px;
text-align: center;
text-decoration: none;
background-color: var(--background-colour);
@ -37,13 +35,17 @@
align-items: center;
justify-content: center;
flex: 1 0 auto;
font-feature-settings: 'ss01' 1, 'tnum' 1;
}
.pagination__link:not(:last-child) { margin-right: 1px; }
.pagination__link--disabled { --accent-colour: #555; }
.pagination__link--first, .pagination__link--last,
.pagination__link--next, .pagination__link--prev {
padding-top: 5px;
.pagination__link:not(:last-child) {
margin-right: 1px;
}
.pagination__link--disabled {
--accent-colour: #555;
}
.pagination__link--current,
.pagination__link:not(.pagination__link--disabled):hover,
.pagination__link:not(.pagination__link--disabled):active,
@ -53,5 +55,7 @@
}
@media (max-width: 800px) {
.pagination__section--pages { display: none; }
.pagination__section--pages {
display: none;
}
}

View file

@ -6,12 +6,12 @@
.permissions__line {
display: flex;
font-size: .9em;
line-height: 1.7em;
font-size: .8rem;
line-height: 1.5rem;
}
.permissions__line--header {
font-size: 1.2em;
line-height: 1.4em;
font-size: 1rem;
line-height: 1.25rem;
border-bottom: 1px solid rgba(255, 255, 255, .1);
padding-bottom: 1px;
font-weight: 700;

View file

@ -1,30 +1,26 @@
.profile__accounts__content {
display: flex;
flex-direction: column;
padding: 2px 5px;
padding: 2px 6px;
}
.profile__accounts__item {
padding-bottom: 5px;
padding-bottom: 4px;
}
.profile__accounts__item:not(:last-child) {
border-bottom: 1px solid #222;
}
.profile__accounts__notice {
font-size: 1.2em;
line-height: 1.5em;
text-align: center;
padding: 10px;
}
.profile__accounts__title {
font-size: .9em;
line-height: 1.8em;
font-size: .875em;
line-height: 1.5em;
}
.profile__accounts__value {
font-size: 1.2em;
line-height: 1.2em;
color: inherit;
text-decoration: none;
}

View file

@ -1,5 +1,5 @@
.profile__birthdate__content {
padding: 2px 5px;
padding: 2px 6px;
}
.profile__birthdate__select {
min-width: auto;
@ -8,6 +8,6 @@
display: inline-block;
}
.profile__birthdate__title {
font-size: .9em;
line-height: 1.8em;
font-size: .875em;
line-height: 1.75em;
}

View file

@ -7,14 +7,14 @@
}
.profile__forum-activity__leader {
font-size: .9em;
margin: 0 5px;
font-size: .875em;
margin: 0 4px;
}
.profile__forum-activity .forum__category__icon {
width: 30px;
height: 30px;
font-size: 1.5em;
font-size: 1.25em;
line-height: 1.5em;
flex: 0 0 30px;
}

View file

@ -14,20 +14,18 @@
padding: 1px;
}
.profile__guidelines__line--header {
font-size: 1.2em;
line-height: 1.5em;
font-weight: 700;
font-weight: 600;
margin-bottom: 2px;
border-bottom: 1px solid var(--accent-colour);
padding-bottom: 2px;
}
.profile__guidelines__line:not(.profile__guidelines__line--header) {
margin-left: 1.3em;
margin-left: 1.25em;
list-style: square;
}
.profile__guidelines__emphasis {
font-weight: 700;
font-weight: 600;
}
.profile__guidelines__link {

View file

@ -101,12 +101,11 @@
min-width: 130px;
}
.profile__header__stat__name {
font-size: .9em;
font-variant: small-caps;
font-size: .875em;
cursor: inherit;
}
.profile__header__stat__value {
font-size: 1.3em;
font-size: 1.125em;
text-align: right;
cursor: inherit;
display: block;
@ -114,6 +113,9 @@
.profile__header__stat--date .profile__header__stat__value {
text-align: left;
}
.profile__header__stat:not(.profile__header__stat--date) .profile__header__stat__value {
font-feature-settings: 'ss01' 1, 'tnum' 1;
}
.profile__header__stat--link {
cursor: pointer;
}
@ -122,17 +124,18 @@
.profile__header__stat--link:focus,
.profile__header__stat--link:active,
.profile__header__stat--active {
padding-bottom: 8px;
border-bottom: 2px solid var(--accent-colour);
}
.profile__header__username {
font-size: 2em;
line-height: 1.5em;
font-size: 1.75em;
line-height: 1.125em;
}
.profile__header__title {
font-size: .9em;
line-height: 1.2em;
font-size: .875em;
line-height: 1.25em;
}
.profile__header__country {
@ -140,9 +143,9 @@
align-items: center;
}
.profile__header__country__name {
font-size: .9em;
font-size: .875em;
margin-left: 4px;
line-height: 1.2em;
line-height: 1.25em;
}
@media (max-width: 800px) {

View file

@ -12,15 +12,15 @@
}
.profile__warnings__datetime {
font-size: .9em;
font-size: .875em;
line-height: 1.5em;
font-style: italic;
padding-top: 2px;
}
.profile__warnings__body {
padding: 0 5px;
padding: 0 6px;
}
.profile__warnings__body p {
line-height: 1.4em;
line-height: 1.375em;
}

View file

@ -11,7 +11,6 @@
overflow: hidden;
border: 1px solid transparent;
border-radius: 5px;
font-size: 1.1em;
margin: 1px 1px 1px 0;
}
@ -33,5 +32,5 @@
}
.search__category__content {
padding: 2px 5px;
padding: 2px 6px;
}

View file

@ -4,7 +4,8 @@
overflow: hidden;
border: 1px solid transparent;
border-radius: 5px;
font-size: 1.5em;
font-family: var(--font-regular);
font-size: 1.125em;
}
.search__input__background {
background-color: var(--background-colour-translucent-9);
@ -24,7 +25,7 @@
border: 0;
background-color: transparent;
color: #fff;
padding: 5px 10px;
padding: 4px 12px;
font-size: inherit;
}

View file

@ -6,7 +6,7 @@
height: 60px;
line-height: 60px;
text-align: center;
font-size: 3em;
font-size: 2.5em;
flex: 0 0 auto;
}
.search__none__content {
@ -16,6 +16,6 @@
flex: 1 1 auto;
}
.search__none__title {
font-size: 1.5em;
line-height: 1.5em;
font-size: 1.25em;
line-height: 1.25em;
}

View file

@ -22,7 +22,7 @@
.settings__account-log__important {
display: flex;
align-items: center;
font-size: 1.4em;
font-size: 1.25em;
z-index: 2;
}

View file

@ -18,8 +18,8 @@
}
.settings__account__title {
font-size: .9em;
line-height: 1.8em;
font-size: .875em;
line-height: 1.75em;
}
.settings__account__input {
@ -43,4 +43,4 @@
.settings__account__section {
grid-column: 1 / 1;
}
}
}

View file

@ -2,7 +2,7 @@
margin: 4px;
}
.settings__login-attempts__none {
padding: 2px 5px;
padding: 2px 6px;
text-align: center;
}
@ -31,7 +31,7 @@
.settings__login-attempt__important {
display: flex;
align-items: center;
font-size: 1.4em;
font-size: 1.25em;
z-index: 2;
}

View file

@ -22,8 +22,7 @@
}
.settings__role__name {
font-size: 1.2em;
line-height: 1.7em;
line-height: 1.5em;
padding: 0 5px;
margin: 2px 0;
min-width: 160px;
@ -40,8 +39,8 @@
}
.settings__role__description {
font-size: .9em;
line-height: 1.8em;
font-size: .875em;
line-height: 1.75em;
padding: 0 2px;
margin: 0 2px;
flex: 1 1 auto;
@ -50,7 +49,7 @@
.settings__role__options {
flex: 0 0 auto;
display: flex;
font-size: 1.5em;
font-size: 1.25em;
justify-content: space-evenly;
}

View file

@ -29,7 +29,7 @@
.settings__session__important {
display: flex;
align-items: center;
font-size: 1.4em;
font-size: 1.25em;
z-index: 2;
}

View file

@ -6,10 +6,13 @@
}
.settings__description {
font-size: .9em;
padding: 2px 5px;
font-size: .875rem;
line-height: 1.25rem;
border-bottom: 1px solid var(--accent-colour);
margin: 1px 1px 2px;
padding: 2px 6px;
}
.settings__description p {
margin: .25rem 0;
}
.settings__pagination {
@ -39,7 +42,7 @@
display: block;
padding: 4px;
margin: 2px;
font-size: 1.5em;
font-size: 1.25em;
line-height: 1.5em;
border-radius: 2px;
transition: background-color .2s;
@ -62,4 +65,4 @@
display: inline-block;
padding: 4px 10px;
}
}
}

View file

@ -17,9 +17,9 @@
.settings__two-factor__code__text {
color: #000;
flex: 0 0 auto;
font-size: 1.2em;
line-height: 1.5em;
padding: 2px 6px;
font-family: var(--font-monospace);
font-feature-settings: 'ss07' 1;
}
.settings__two-factor__settings {
@ -30,7 +30,7 @@
flex: 1 1 auto;
}
.settings__two-factor__settings__status {
font-size: 1.5em;
font-size: 1.25em;
line-height: 2em;
}

View file

@ -51,16 +51,16 @@
}
.usercard__details__username {
font-size: 1.4em;
line-height: 1.4em;
font-size: 1.125em;
line-height: 1.5em;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.usercard__details__title {
font-size: .9em;
line-height: 1.2em;
font-size: .75em;
line-height: 1em;
}
.usercard__details__country {
@ -68,9 +68,9 @@
align-items: center;
}
.usercard__details__country__name {
font-size: .9em;
font-size: .75em;
margin-left: 4px;
line-height: 1.2em;
line-height: 1em;
}
.usercard__stats {
@ -111,17 +111,19 @@
}
.usercard__stat__name {
display: block;
font-size: .9em;
font-size: .875em;
line-height: 1.5em;
font-variant: small-caps;
cursor: inherit;
}
.usercard__stat__value {
display: block;
font-size: 1.2em;
line-height: 1.5em;
font-size: 1.125em;
line-height: 1.25em;
cursor: inherit;
}
.usercard__stat:not(.usercard__stat--wide) .usercard__stat__value {
font-feature-settings: 'ss01' 1, 'tnum' 1;
}
@media (max-width: 800px) {
.usercard {
@ -153,8 +155,8 @@
.usercard__stat__name,
.usercard__stat__value {
display: inline-block;
font-size: .9em;
line-height: 1.2em;
font-size: .875em;
line-height: 1.25em;
font-variant: initial;
}
}

View file

@ -8,8 +8,8 @@
}
.userlist__empty {
text-align: center;
font-size: 2em;
line-height: 1.5em;
font-size: 1.5em;
line-height: 1.25em;
margin: 1em;
}
.userlist__container {

View file

@ -14,7 +14,7 @@
--end-colour: #f00;
}
.warning--bigger {
font-size: 1.4em;
font-size: 1.375em;
line-height: 1.5em;
}
.warning__content {

View file

@ -102,7 +102,8 @@ const MsgMessagesEntry = function(entry) {
entry.dataset.msgRead = state ? 'sent' : 'draft';
};
const checkbox = entry.querySelector('.js-entry-checkbox');
const checkboxWrapper = entry.querySelector('.js-entry-checkbox-wrapper');
const checkbox = checkboxWrapper.querySelector('.js-entry-checkbox');
const getSelected = () => checkbox.checked;
const setSelected = state => checkbox.checked = state;
const toggleSelected = () => checkbox.checked = !checkbox.checked;
@ -113,6 +114,7 @@ const MsgMessagesEntry = function(entry) {
watchers.define(['select']);
checkbox.addEventListener('click', ev => ev.stopPropagation());
checkboxWrapper.addEventListener('click', ev => ev.stopPropagation());
checkbox.addEventListener('keydown', ev => ev.stopPropagation());
checkbox.addEventListener('change', () => {

View file

@ -3,6 +3,7 @@
.oauth2-appinfo-name {
font-size: 2em;
line-height: 1.5em;
font-weight: 500;
}
.oauth2-appinfo-links {
@ -30,13 +31,13 @@
mask: url('/images/globe-solid.svg') no-repeat center;
}
.oauth2-appinfo-link-text {
font-size: .8em;
line-height: 1.4em;
font-size: .75em;
line-height: 1.25em;
}
.oauth2-appinfo-summary {
font-size: .9em;
line-height: 1.4em;
font-size: .875em;
line-height: 1.375em;
}
.oauth2-appinfo-summary p {
margin: .5em 0;

View file

@ -20,7 +20,7 @@
.oauth2-approval-header {
text-align: center;
font-size: 1.2em;
font-size: 1.5em;
line-height: 1.5em;
}
@ -30,6 +30,6 @@
.oauth2-approval-text p {
margin: .5em 0;
font-size: .8em;
font-size: .875em;
line-height: 1.5em;
}

View file

@ -1,6 +1,6 @@
.oauth2-authorise-requesting {
font-size: .8em;
line-height: 1.4em;
font-size: .875em;
line-height: 1.5em;
border-bottom: 1px solid #333;
}
.oauth2-authorise-requesting p {
@ -8,8 +8,8 @@
}
.oauth2-authorise-device {
font-size: .8em;
line-height: 1.4em;
font-size: .875em;
line-height: 1.375em;
}
.oauth2-authorise-device p {
margin: .5em 0;

View file

@ -6,8 +6,6 @@
}
.oauth2-banner-text {
font-size: .9em;
line-height: 1.4em;
flex: 1 1 auto;
}
.oauth2-banner-logo {

View file

@ -5,7 +5,7 @@
}
.oauth2-device-code {
font-size: 1.4em;
font-size: 1.25em;
border: 1px solid #222;
padding: 5px 10px;
background: #222;
@ -15,6 +15,7 @@
transition: border-color .2s;
text-align: center;
font-family: var(--font-monospace);
font-feature-settings: 'ss07' 1;
min-width: 0;
max-width: 200px;
width: 100%;

View file

@ -12,6 +12,7 @@ body {
pre, code {
font-family: var(--font-monospace);
font-feature-settings: 'ss07' 1;
}
a {

View file

@ -33,6 +33,6 @@
background-color: #c80;
}
.oauth2-scope-perm-text {
font-size: .8em;
line-height: 1.4em;
font-size: .875em;
line-height: 1.375em;
}

View file

@ -25,6 +25,6 @@
}
.oauth2-simplehead-text {
font-size: 1.8em;
line-height: 1.4em;
font-size: 1.75em;
line-height: 1.375em;
}

View file

@ -25,8 +25,8 @@
border: 0;
}
.oauth2-userhead-main-name {
font-size: 1.8em;
line-height: 1.4em;
font-size: 1.75em;
line-height: 1.375em;
}
.oauth2-userhead-main-name a {
color: inherit;
@ -54,8 +54,8 @@
border: 0;
}
.oauth2-userhead-guise-text {
font-size: .8em;
line-height: 1.5em;
font-size: .75em;
line-height: 1.375em;
overflow: hidden;
padding: 2px 0;
}

View file

@ -24,8 +24,8 @@
}
.redir-landing-footer {
font-size: .8em;
line-height: 1.4em;
font-size: .75em;
line-height: 1.375em;
text-align: center;
margin: 10px;
}

View file

@ -17,6 +17,7 @@ body {
pre, code {
font-family: var(--font-monospace);
font-feature-settings: 'ss07' 1;
}
a {

View file

@ -22,5 +22,5 @@
}
.redir-social-body p {
margin: .5em;
line-height: 1.4em;
line-height: 1.5em;
}

View file

@ -3,6 +3,7 @@
"php": ">=8.4",
"ext-mbstring": "*",
"flashwave/index": "^0.2504",
"railgun/jwt": "^0.3",
"erusev/parsedown": "~1.7",
"chillerlan/php-qrcode": "~5.0",
"symfony/mailer": "~7.2",

324
composer.lock generated
View file

@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
"content-hash": "600e14fc77ff00755761d6e9b6add998",
"content-hash": "f8bb09ccbe8e19d3a29c44feac42d9c9",
"packages": [
{
"name": "carbonphp/carbon-doctrine-types",
@ -430,16 +430,16 @@
},
{
"name": "filp/whoops",
"version": "2.18.0",
"version": "2.18.2",
"source": {
"type": "git",
"url": "https://github.com/filp/whoops.git",
"reference": "a7de6c3c6c3c022f5cfc337f8ede6a14460cf77e"
"reference": "89dabca1490bc77dbcab41c2b20968c7e44bf7c3"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/filp/whoops/zipball/a7de6c3c6c3c022f5cfc337f8ede6a14460cf77e",
"reference": "a7de6c3c6c3c022f5cfc337f8ede6a14460cf77e",
"url": "https://api.github.com/repos/filp/whoops/zipball/89dabca1490bc77dbcab41c2b20968c7e44bf7c3",
"reference": "89dabca1490bc77dbcab41c2b20968c7e44bf7c3",
"shasum": ""
},
"require": {
@ -489,7 +489,7 @@
],
"support": {
"issues": "https://github.com/filp/whoops/issues",
"source": "https://github.com/filp/whoops/tree/2.18.0"
"source": "https://github.com/filp/whoops/tree/2.18.2"
},
"funding": [
{
@ -497,7 +497,7 @@
"type": "github"
}
],
"time": "2025-03-15T12:00:00+00:00"
"time": "2025-06-11T20:42:19+00:00"
},
{
"name": "flashwave/index",
@ -1005,16 +1005,16 @@
},
{
"name": "matomo/device-detector",
"version": "6.4.5",
"version": "6.4.6",
"source": {
"type": "git",
"url": "https://github.com/matomo-org/device-detector.git",
"reference": "270bbc41f80994e80805ac377b67324eba53c412"
"reference": "6f07f615199851548db47a900815d2ea2cdcde08"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/matomo-org/device-detector/zipball/270bbc41f80994e80805ac377b67324eba53c412",
"reference": "270bbc41f80994e80805ac377b67324eba53c412",
"url": "https://api.github.com/repos/matomo-org/device-detector/zipball/6f07f615199851548db47a900815d2ea2cdcde08",
"reference": "6f07f615199851548db47a900815d2ea2cdcde08",
"shasum": ""
},
"require": {
@ -1071,7 +1071,7 @@
"source": "https://github.com/matomo-org/matomo",
"wiki": "https://dev.matomo.org/"
},
"time": "2025-02-26T17:37:32+00:00"
"time": "2025-06-10T10:00:59+00:00"
},
{
"name": "mustangostang/spyc",
@ -1129,16 +1129,16 @@
},
{
"name": "nesbot/carbon",
"version": "3.9.0",
"version": "3.10.0",
"source": {
"type": "git",
"url": "https://github.com/CarbonPHP/carbon.git",
"reference": "6d16a8a015166fe54e22c042e0805c5363aef50d"
"reference": "c1397390dd0a7e0f11660f0ae20f753d88c1f3d9"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/CarbonPHP/carbon/zipball/6d16a8a015166fe54e22c042e0805c5363aef50d",
"reference": "6d16a8a015166fe54e22c042e0805c5363aef50d",
"url": "https://api.github.com/repos/CarbonPHP/carbon/zipball/c1397390dd0a7e0f11660f0ae20f753d88c1f3d9",
"reference": "c1397390dd0a7e0f11660f0ae20f753d88c1f3d9",
"shasum": ""
},
"require": {
@ -1146,9 +1146,9 @@
"ext-json": "*",
"php": "^8.1",
"psr/clock": "^1.0",
"symfony/clock": "^6.3 || ^7.0",
"symfony/clock": "^6.3.12 || ^7.0",
"symfony/polyfill-mbstring": "^1.0",
"symfony/translation": "^4.4.18 || ^5.2.1|| ^6.0 || ^7.0"
"symfony/translation": "^4.4.18 || ^5.2.1 || ^6.0 || ^7.0"
},
"provide": {
"psr/clock-implementation": "1.0"
@ -1156,14 +1156,13 @@
"require-dev": {
"doctrine/dbal": "^3.6.3 || ^4.0",
"doctrine/orm": "^2.15.2 || ^3.0",
"friendsofphp/php-cs-fixer": "^3.57.2",
"friendsofphp/php-cs-fixer": "^3.75.0",
"kylekatarnls/multi-tester": "^2.5.3",
"ondrejmirtes/better-reflection": "^6.25.0.4",
"phpmd/phpmd": "^2.15.0",
"phpstan/extension-installer": "^1.3.1",
"phpstan/phpstan": "^1.11.2",
"phpunit/phpunit": "^10.5.20",
"squizlabs/php_codesniffer": "^3.9.0"
"phpstan/extension-installer": "^1.4.3",
"phpstan/phpstan": "^2.1.17",
"phpunit/phpunit": "^10.5.46",
"squizlabs/php_codesniffer": "^3.13.0"
},
"bin": [
"bin/carbon"
@ -1231,7 +1230,7 @@
"type": "tidelift"
}
],
"time": "2025-03-27T12:57:33+00:00"
"time": "2025-06-12T10:24:28+00:00"
},
{
"name": "paragonie/constant_time_encoding",
@ -1952,6 +1951,51 @@
},
"time": "2024-09-11T13:17:53+00:00"
},
{
"name": "railgun/jwt",
"version": "v0.3.3",
"source": {
"type": "git",
"url": "https://patchii.net/railgun/jwt.git",
"reference": "46ec5b9d884620430bae9a512b85f02be8ad0b17"
},
"require": {
"guzzlehttp/guzzle": "~7.9",
"guzzlehttp/psr7": "~2.7",
"php": "^7.2.5 || ^8.0",
"phpseclib/phpseclib": "~3.0",
"psr/http-client": "~1.0",
"psr/http-factory": "~1.1",
"psr/http-message": "~2.0"
},
"require-dev": {
"phpunit/phpunit": "~8.5"
},
"type": "library",
"autoload": {
"files": [
"polyfill.php"
],
"psr-4": {
"Railgun\\Jwt\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"bsd-3-clause-clear"
],
"authors": [
{
"name": "flashwave",
"email": "packagist@flash.moe",
"homepage": "https://flash.moe",
"role": "mom"
}
],
"description": "A modular JWT library.",
"homepage": "https://railgun.sh/libs/jwt",
"time": "2025-05-14T21:43:00+00:00"
},
{
"name": "ralouphie/getallheaders",
"version": "3.0.3",
@ -2053,16 +2097,16 @@
},
{
"name": "sentry/sentry",
"version": "4.10.0",
"version": "4.13.0",
"source": {
"type": "git",
"url": "https://github.com/getsentry/sentry-php.git",
"reference": "2af937d47d8aadb8dab0b1d7b9557e495dd12856"
"reference": "b54a0eaedfc27fc2da587e64455a66cd29cd3c4d"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/getsentry/sentry-php/zipball/2af937d47d8aadb8dab0b1d7b9557e495dd12856",
"reference": "2af937d47d8aadb8dab0b1d7b9557e495dd12856",
"url": "https://api.github.com/repos/getsentry/sentry-php/zipball/b54a0eaedfc27fc2da587e64455a66cd29cd3c4d",
"reference": "b54a0eaedfc27fc2da587e64455a66cd29cd3c4d",
"shasum": ""
},
"require": {
@ -2126,7 +2170,7 @@
],
"support": {
"issues": "https://github.com/getsentry/sentry-php/issues",
"source": "https://github.com/getsentry/sentry-php/tree/4.10.0"
"source": "https://github.com/getsentry/sentry-php/tree/4.13.0"
},
"funding": [
{
@ -2138,11 +2182,11 @@
"type": "custom"
}
],
"time": "2024-11-06T07:44:19+00:00"
"time": "2025-06-10T15:39:27+00:00"
},
{
"name": "symfony/clock",
"version": "v7.2.0",
"version": "v7.3.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/clock.git",
@ -2196,7 +2240,7 @@
"time"
],
"support": {
"source": "https://github.com/symfony/clock/tree/v7.2.0"
"source": "https://github.com/symfony/clock/tree/v7.3.0"
},
"funding": [
{
@ -2216,16 +2260,16 @@
},
{
"name": "symfony/deprecation-contracts",
"version": "v3.5.1",
"version": "v3.6.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/deprecation-contracts.git",
"reference": "74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6"
"reference": "63afe740e99a13ba87ec199bb07bbdee937a5b62"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6",
"reference": "74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6",
"url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/63afe740e99a13ba87ec199bb07bbdee937a5b62",
"reference": "63afe740e99a13ba87ec199bb07bbdee937a5b62",
"shasum": ""
},
"require": {
@ -2238,7 +2282,7 @@
"name": "symfony/contracts"
},
"branch-alias": {
"dev-main": "3.5-dev"
"dev-main": "3.6-dev"
}
},
"autoload": {
@ -2263,7 +2307,7 @@
"description": "A generic function and convention to trigger deprecation notices",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/deprecation-contracts/tree/v3.5.1"
"source": "https://github.com/symfony/deprecation-contracts/tree/v3.6.0"
},
"funding": [
{
@ -2279,20 +2323,20 @@
"type": "tidelift"
}
],
"time": "2024-09-25T14:20:29+00:00"
"time": "2024-09-25T14:21:43+00:00"
},
{
"name": "symfony/event-dispatcher",
"version": "v7.2.0",
"version": "v7.3.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/event-dispatcher.git",
"reference": "910c5db85a5356d0fea57680defec4e99eb9c8c1"
"reference": "497f73ac996a598c92409b44ac43b6690c4f666d"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/910c5db85a5356d0fea57680defec4e99eb9c8c1",
"reference": "910c5db85a5356d0fea57680defec4e99eb9c8c1",
"url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/497f73ac996a598c92409b44ac43b6690c4f666d",
"reference": "497f73ac996a598c92409b44ac43b6690c4f666d",
"shasum": ""
},
"require": {
@ -2343,7 +2387,7 @@
"description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/event-dispatcher/tree/v7.2.0"
"source": "https://github.com/symfony/event-dispatcher/tree/v7.3.0"
},
"funding": [
{
@ -2359,20 +2403,20 @@
"type": "tidelift"
}
],
"time": "2024-09-25T14:21:43+00:00"
"time": "2025-04-22T09:11:45+00:00"
},
{
"name": "symfony/event-dispatcher-contracts",
"version": "v3.5.1",
"version": "v3.6.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/event-dispatcher-contracts.git",
"reference": "7642f5e970b672283b7823222ae8ef8bbc160b9f"
"reference": "59eb412e93815df44f05f342958efa9f46b1e586"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/7642f5e970b672283b7823222ae8ef8bbc160b9f",
"reference": "7642f5e970b672283b7823222ae8ef8bbc160b9f",
"url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/59eb412e93815df44f05f342958efa9f46b1e586",
"reference": "59eb412e93815df44f05f342958efa9f46b1e586",
"shasum": ""
},
"require": {
@ -2386,7 +2430,7 @@
"name": "symfony/contracts"
},
"branch-alias": {
"dev-main": "3.5-dev"
"dev-main": "3.6-dev"
}
},
"autoload": {
@ -2419,7 +2463,7 @@
"standards"
],
"support": {
"source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.5.1"
"source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.6.0"
},
"funding": [
{
@ -2435,20 +2479,20 @@
"type": "tidelift"
}
],
"time": "2024-09-25T14:20:29+00:00"
"time": "2024-09-25T14:21:43+00:00"
},
{
"name": "symfony/mailer",
"version": "v7.2.3",
"version": "v7.3.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/mailer.git",
"reference": "f3871b182c44997cf039f3b462af4a48fb85f9d3"
"reference": "0f375bbbde96ae8c78e4aa3e63aabd486e33364c"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/mailer/zipball/f3871b182c44997cf039f3b462af4a48fb85f9d3",
"reference": "f3871b182c44997cf039f3b462af4a48fb85f9d3",
"url": "https://api.github.com/repos/symfony/mailer/zipball/0f375bbbde96ae8c78e4aa3e63aabd486e33364c",
"reference": "0f375bbbde96ae8c78e4aa3e63aabd486e33364c",
"shasum": ""
},
"require": {
@ -2499,7 +2543,7 @@
"description": "Helps sending emails",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/mailer/tree/v7.2.3"
"source": "https://github.com/symfony/mailer/tree/v7.3.0"
},
"funding": [
{
@ -2515,20 +2559,20 @@
"type": "tidelift"
}
],
"time": "2025-01-27T11:08:17+00:00"
"time": "2025-04-04T09:51:09+00:00"
},
{
"name": "symfony/mime",
"version": "v7.2.4",
"version": "v7.3.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/mime.git",
"reference": "87ca22046b78c3feaff04b337f33b38510fd686b"
"reference": "0e7b19b2f399c31df0cdbe5d8cbf53f02f6cfcd9"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/mime/zipball/87ca22046b78c3feaff04b337f33b38510fd686b",
"reference": "87ca22046b78c3feaff04b337f33b38510fd686b",
"url": "https://api.github.com/repos/symfony/mime/zipball/0e7b19b2f399c31df0cdbe5d8cbf53f02f6cfcd9",
"reference": "0e7b19b2f399c31df0cdbe5d8cbf53f02f6cfcd9",
"shasum": ""
},
"require": {
@ -2583,7 +2627,7 @@
"mime-type"
],
"support": {
"source": "https://github.com/symfony/mime/tree/v7.2.4"
"source": "https://github.com/symfony/mime/tree/v7.3.0"
},
"funding": [
{
@ -2599,20 +2643,20 @@
"type": "tidelift"
}
],
"time": "2025-02-19T08:51:20+00:00"
"time": "2025-02-19T08:51:26+00:00"
},
{
"name": "symfony/options-resolver",
"version": "v7.2.0",
"version": "v7.3.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/options-resolver.git",
"reference": "7da8fbac9dcfef75ffc212235d76b2754ce0cf50"
"reference": "afb9a8038025e5dbc657378bfab9198d75f10fca"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/options-resolver/zipball/7da8fbac9dcfef75ffc212235d76b2754ce0cf50",
"reference": "7da8fbac9dcfef75ffc212235d76b2754ce0cf50",
"url": "https://api.github.com/repos/symfony/options-resolver/zipball/afb9a8038025e5dbc657378bfab9198d75f10fca",
"reference": "afb9a8038025e5dbc657378bfab9198d75f10fca",
"shasum": ""
},
"require": {
@ -2650,7 +2694,7 @@
"options"
],
"support": {
"source": "https://github.com/symfony/options-resolver/tree/v7.2.0"
"source": "https://github.com/symfony/options-resolver/tree/v7.3.0"
},
"funding": [
{
@ -2666,11 +2710,11 @@
"type": "tidelift"
}
],
"time": "2024-11-20T11:17:29+00:00"
"time": "2025-04-04T13:12:05+00:00"
},
{
"name": "symfony/polyfill-ctype",
"version": "v1.31.0",
"version": "v1.32.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-ctype.git",
@ -2729,7 +2773,7 @@
"portable"
],
"support": {
"source": "https://github.com/symfony/polyfill-ctype/tree/v1.31.0"
"source": "https://github.com/symfony/polyfill-ctype/tree/v1.32.0"
},
"funding": [
{
@ -2749,16 +2793,16 @@
},
{
"name": "symfony/polyfill-intl-idn",
"version": "v1.31.0",
"version": "v1.32.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-intl-idn.git",
"reference": "c36586dcf89a12315939e00ec9b4474adcb1d773"
"reference": "9614ac4d8061dc257ecc64cba1b140873dce8ad3"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/c36586dcf89a12315939e00ec9b4474adcb1d773",
"reference": "c36586dcf89a12315939e00ec9b4474adcb1d773",
"url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/9614ac4d8061dc257ecc64cba1b140873dce8ad3",
"reference": "9614ac4d8061dc257ecc64cba1b140873dce8ad3",
"shasum": ""
},
"require": {
@ -2812,7 +2856,7 @@
"shim"
],
"support": {
"source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.31.0"
"source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.32.0"
},
"funding": [
{
@ -2828,11 +2872,11 @@
"type": "tidelift"
}
],
"time": "2024-09-09T11:45:10+00:00"
"time": "2024-09-10T14:38:51+00:00"
},
{
"name": "symfony/polyfill-intl-normalizer",
"version": "v1.31.0",
"version": "v1.32.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-intl-normalizer.git",
@ -2893,7 +2937,7 @@
"shim"
],
"support": {
"source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.31.0"
"source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.32.0"
},
"funding": [
{
@ -2913,19 +2957,20 @@
},
{
"name": "symfony/polyfill-mbstring",
"version": "v1.31.0",
"version": "v1.32.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-mbstring.git",
"reference": "85181ba99b2345b0ef10ce42ecac37612d9fd341"
"reference": "6d857f4d76bd4b343eac26d6b539585d2bc56493"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/85181ba99b2345b0ef10ce42ecac37612d9fd341",
"reference": "85181ba99b2345b0ef10ce42ecac37612d9fd341",
"url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/6d857f4d76bd4b343eac26d6b539585d2bc56493",
"reference": "6d857f4d76bd4b343eac26d6b539585d2bc56493",
"shasum": ""
},
"require": {
"ext-iconv": "*",
"php": ">=7.2"
},
"provide": {
@ -2973,7 +3018,7 @@
"shim"
],
"support": {
"source": "https://github.com/symfony/polyfill-mbstring/tree/v1.31.0"
"source": "https://github.com/symfony/polyfill-mbstring/tree/v1.32.0"
},
"funding": [
{
@ -2989,20 +3034,20 @@
"type": "tidelift"
}
],
"time": "2024-09-09T11:45:10+00:00"
"time": "2024-12-23T08:48:59+00:00"
},
{
"name": "symfony/polyfill-php80",
"version": "v1.31.0",
"version": "v1.32.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php80.git",
"reference": "60328e362d4c2c802a54fcbf04f9d3fb892b4cf8"
"reference": "0cc9dd0f17f61d8131e7df6b84bd344899fe2608"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/60328e362d4c2c802a54fcbf04f9d3fb892b4cf8",
"reference": "60328e362d4c2c802a54fcbf04f9d3fb892b4cf8",
"url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/0cc9dd0f17f61d8131e7df6b84bd344899fe2608",
"reference": "0cc9dd0f17f61d8131e7df6b84bd344899fe2608",
"shasum": ""
},
"require": {
@ -3053,7 +3098,7 @@
"shim"
],
"support": {
"source": "https://github.com/symfony/polyfill-php80/tree/v1.31.0"
"source": "https://github.com/symfony/polyfill-php80/tree/v1.32.0"
},
"funding": [
{
@ -3069,11 +3114,11 @@
"type": "tidelift"
}
],
"time": "2024-09-09T11:45:10+00:00"
"time": "2025-01-02T08:10:11+00:00"
},
{
"name": "symfony/polyfill-php83",
"version": "v1.31.0",
"version": "v1.32.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php83.git",
@ -3129,7 +3174,7 @@
"shim"
],
"support": {
"source": "https://github.com/symfony/polyfill-php83/tree/v1.31.0"
"source": "https://github.com/symfony/polyfill-php83/tree/v1.32.0"
},
"funding": [
{
@ -3149,16 +3194,16 @@
},
{
"name": "symfony/service-contracts",
"version": "v3.5.1",
"version": "v3.6.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/service-contracts.git",
"reference": "e53260aabf78fb3d63f8d79d69ece59f80d5eda0"
"reference": "f021b05a130d35510bd6b25fe9053c2a8a15d5d4"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/service-contracts/zipball/e53260aabf78fb3d63f8d79d69ece59f80d5eda0",
"reference": "e53260aabf78fb3d63f8d79d69ece59f80d5eda0",
"url": "https://api.github.com/repos/symfony/service-contracts/zipball/f021b05a130d35510bd6b25fe9053c2a8a15d5d4",
"reference": "f021b05a130d35510bd6b25fe9053c2a8a15d5d4",
"shasum": ""
},
"require": {
@ -3176,7 +3221,7 @@
"name": "symfony/contracts"
},
"branch-alias": {
"dev-main": "3.5-dev"
"dev-main": "3.6-dev"
}
},
"autoload": {
@ -3212,7 +3257,7 @@
"standards"
],
"support": {
"source": "https://github.com/symfony/service-contracts/tree/v3.5.1"
"source": "https://github.com/symfony/service-contracts/tree/v3.6.0"
},
"funding": [
{
@ -3228,20 +3273,20 @@
"type": "tidelift"
}
],
"time": "2024-09-25T14:20:29+00:00"
"time": "2025-04-25T09:37:31+00:00"
},
{
"name": "symfony/translation",
"version": "v7.2.4",
"version": "v7.3.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/translation.git",
"reference": "283856e6981286cc0d800b53bd5703e8e363f05a"
"reference": "4aba29076a29a3aa667e09b791e5f868973a8667"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/translation/zipball/283856e6981286cc0d800b53bd5703e8e363f05a",
"reference": "283856e6981286cc0d800b53bd5703e8e363f05a",
"url": "https://api.github.com/repos/symfony/translation/zipball/4aba29076a29a3aa667e09b791e5f868973a8667",
"reference": "4aba29076a29a3aa667e09b791e5f868973a8667",
"shasum": ""
},
"require": {
@ -3251,6 +3296,7 @@
"symfony/translation-contracts": "^2.5|^3.0"
},
"conflict": {
"nikic/php-parser": "<5.0",
"symfony/config": "<6.4",
"symfony/console": "<6.4",
"symfony/dependency-injection": "<6.4",
@ -3264,7 +3310,7 @@
"symfony/translation-implementation": "2.3|3.0"
},
"require-dev": {
"nikic/php-parser": "^4.18|^5.0",
"nikic/php-parser": "^5.0",
"psr/log": "^1|^2|^3",
"symfony/config": "^6.4|^7.0",
"symfony/console": "^6.4|^7.0",
@ -3307,7 +3353,7 @@
"description": "Provides tools to internationalize your application",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/translation/tree/v7.2.4"
"source": "https://github.com/symfony/translation/tree/v7.3.0"
},
"funding": [
{
@ -3323,20 +3369,20 @@
"type": "tidelift"
}
],
"time": "2025-02-13T10:27:23+00:00"
"time": "2025-05-29T07:19:49+00:00"
},
{
"name": "symfony/translation-contracts",
"version": "v3.5.1",
"version": "v3.6.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/translation-contracts.git",
"reference": "4667ff3bd513750603a09c8dedbea942487fb07c"
"reference": "df210c7a2573f1913b2d17cc95f90f53a73d8f7d"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/translation-contracts/zipball/4667ff3bd513750603a09c8dedbea942487fb07c",
"reference": "4667ff3bd513750603a09c8dedbea942487fb07c",
"url": "https://api.github.com/repos/symfony/translation-contracts/zipball/df210c7a2573f1913b2d17cc95f90f53a73d8f7d",
"reference": "df210c7a2573f1913b2d17cc95f90f53a73d8f7d",
"shasum": ""
},
"require": {
@ -3349,7 +3395,7 @@
"name": "symfony/contracts"
},
"branch-alias": {
"dev-main": "3.5-dev"
"dev-main": "3.6-dev"
}
},
"autoload": {
@ -3385,7 +3431,7 @@
"standards"
],
"support": {
"source": "https://github.com/symfony/translation-contracts/tree/v3.5.1"
"source": "https://github.com/symfony/translation-contracts/tree/v3.6.0"
},
"funding": [
{
@ -3401,20 +3447,20 @@
"type": "tidelift"
}
],
"time": "2024-09-25T14:20:29+00:00"
"time": "2024-09-27T08:32:26+00:00"
},
{
"name": "twig/html-extra",
"version": "v3.20.0",
"version": "v3.21.0",
"source": {
"type": "git",
"url": "https://github.com/twigphp/html-extra.git",
"reference": "f7d54d4de1b64182af745cfb66777f699b599734"
"reference": "5442dd707601c83b8cd4233e37bb10ab8489a90f"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/twigphp/html-extra/zipball/f7d54d4de1b64182af745cfb66777f699b599734",
"reference": "f7d54d4de1b64182af745cfb66777f699b599734",
"url": "https://api.github.com/repos/twigphp/html-extra/zipball/5442dd707601c83b8cd4233e37bb10ab8489a90f",
"reference": "5442dd707601c83b8cd4233e37bb10ab8489a90f",
"shasum": ""
},
"require": {
@ -3457,7 +3503,7 @@
"twig"
],
"support": {
"source": "https://github.com/twigphp/html-extra/tree/v3.20.0"
"source": "https://github.com/twigphp/html-extra/tree/v3.21.0"
},
"funding": [
{
@ -3469,20 +3515,20 @@
"type": "tidelift"
}
],
"time": "2025-01-31T20:45:36+00:00"
"time": "2025-02-19T14:29:33+00:00"
},
{
"name": "twig/twig",
"version": "v3.20.0",
"version": "v3.21.1",
"source": {
"type": "git",
"url": "https://github.com/twigphp/Twig.git",
"reference": "3468920399451a384bef53cf7996965f7cd40183"
"reference": "285123877d4dd97dd7c11842ac5fb7e86e60d81d"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/twigphp/Twig/zipball/3468920399451a384bef53cf7996965f7cd40183",
"reference": "3468920399451a384bef53cf7996965f7cd40183",
"url": "https://api.github.com/repos/twigphp/Twig/zipball/285123877d4dd97dd7c11842ac5fb7e86e60d81d",
"reference": "285123877d4dd97dd7c11842ac5fb7e86e60d81d",
"shasum": ""
},
"require": {
@ -3536,7 +3582,7 @@
],
"support": {
"issues": "https://github.com/twigphp/Twig/issues",
"source": "https://github.com/twigphp/Twig/tree/v3.20.0"
"source": "https://github.com/twigphp/Twig/tree/v3.21.1"
},
"funding": [
{
@ -3548,20 +3594,20 @@
"type": "tidelift"
}
],
"time": "2025-02-13T08:34:43+00:00"
"time": "2025-05-03T07:21:55+00:00"
},
{
"name": "vlucas/phpdotenv",
"version": "v5.6.1",
"version": "v5.6.2",
"source": {
"type": "git",
"url": "https://github.com/vlucas/phpdotenv.git",
"reference": "a59a13791077fe3d44f90e7133eb68e7d22eaff2"
"reference": "24ac4c74f91ee2c193fa1aaa5c249cb0822809af"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/a59a13791077fe3d44f90e7133eb68e7d22eaff2",
"reference": "a59a13791077fe3d44f90e7133eb68e7d22eaff2",
"url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/24ac4c74f91ee2c193fa1aaa5c249cb0822809af",
"reference": "24ac4c74f91ee2c193fa1aaa5c249cb0822809af",
"shasum": ""
},
"require": {
@ -3620,7 +3666,7 @@
],
"support": {
"issues": "https://github.com/vlucas/phpdotenv/issues",
"source": "https://github.com/vlucas/phpdotenv/tree/v5.6.1"
"source": "https://github.com/vlucas/phpdotenv/tree/v5.6.2"
},
"funding": [
{
@ -3632,22 +3678,22 @@
"type": "tidelift"
}
],
"time": "2024-07-20T21:52:34+00:00"
"time": "2025-04-30T23:37:27+00:00"
}
],
"packages-dev": [
{
"name": "phpstan/phpstan",
"version": "2.1.11",
"version": "2.1.17",
"source": {
"type": "git",
"url": "https://github.com/phpstan/phpstan.git",
"reference": "8ca5f79a8f63c49b2359065832a654e1ec70ac30"
"reference": "89b5ef665716fa2a52ecd2633f21007a6a349053"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/phpstan/phpstan/zipball/8ca5f79a8f63c49b2359065832a654e1ec70ac30",
"reference": "8ca5f79a8f63c49b2359065832a654e1ec70ac30",
"url": "https://api.github.com/repos/phpstan/phpstan/zipball/89b5ef665716fa2a52ecd2633f21007a6a349053",
"reference": "89b5ef665716fa2a52ecd2633f21007a6a349053",
"shasum": ""
},
"require": {
@ -3692,7 +3738,7 @@
"type": "github"
}
],
"time": "2025-03-24T13:45:00+00:00"
"time": "2025-05-21T20:55:28+00:00"
}
],
"aliases": [],

View file

@ -0,0 +1,15 @@
<?php
use Index\Db\DbConnection;
use Index\Db\Migration\DbMigration;
final class KaomojiTable_20250421_005231 implements DbMigration {
public function migrate(DbConnection $conn): void {
$conn->execute(<<<SQL
CREATE TABLE msz_kaomoji (
kao_id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
kao_string VARCHAR(255) NOT NULL COLLATE 'utf8mb4_bin',
PRIMARY KEY (kao_id)
) COLLATE='utf8mb4_bin' ENGINE=InnoDB
SQL);
}
}

View file

@ -0,0 +1,23 @@
<?php
use Index\Db\DbConnection;
use Index\Db\Migration\DbMigration;
final class CreateChatServersTable_20250422_203044 implements DbMigration {
public function migrate(DbConnection $conn): void {
$conn->execute(<<<SQL
CREATE TABLE msz_chat_servers (
server_id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
server_order INT(11) NOT NULL DEFAULT '0',
server_proto VARCHAR(255) NOT NULL COLLATE 'ascii_general_ci',
server_secure TINYINT(3) UNSIGNED NOT NULL,
server_uri VARCHAR(255) NOT NULL COLLATE 'ascii_bin',
server_created TIMESTAMP NOT NULL DEFAULT current_timestamp(),
PRIMARY KEY (server_id),
KEY msz_chat_servers_order_index (server_order),
KEY msz_chat_servers_proto_index (server_proto),
KEY msz_chat_servers_secure_index (server_secure),
KEY msz_chat_servers_created_index (server_created)
) COLLATE='utf8mb4_bin' ENGINE=InnoDB
SQL);
}
}

View file

@ -0,0 +1,16 @@
<?php
use Index\Db\DbConnection;
use Index\Db\Migration\DbMigration;
final class AllowTokensToHaveNullApp_20250423_204653 implements DbMigration {
public function migrate(DbConnection $conn): void {
$conn->execute(<<<SQL
ALTER TABLE msz_oauth2_access
CHANGE COLUMN app_id app_id INT(10) UNSIGNED NULL DEFAULT NULL AFTER acc_id;
SQL);
$conn->execute(<<<SQL
ALTER TABLE msz_oauth2_refresh
CHANGE COLUMN app_id app_id INT(10) UNSIGNED NULL DEFAULT NULL AFTER ref_id;
SQL);
}
}

View file

@ -0,0 +1,169 @@
<?php
use Index\Db\DbConnection;
use Index\Db\Migration\DbMigration;
final class MakeOauthStuffBigint_20250423_224653 implements DbMigration {
public function migrate(DbConnection $conn): void {
$conn->execute(<<<SQL
ALTER TABLE msz_apps_scopes
DROP FOREIGN KEY apps_scopes_app_foreign;
SQL);
$conn->execute(<<<SQL
ALTER TABLE msz_apps_scopes
CHANGE COLUMN app_id app_id BIGINT UNSIGNED NOT NULL FIRST;
SQL);
$conn->execute(<<<SQL
ALTER TABLE msz_apps_uris
DROP FOREIGN KEY apps_uris_app_foreign;
SQL);
$conn->execute(<<<SQL
ALTER TABLE msz_apps_uris
CHANGE COLUMN app_id app_id BIGINT UNSIGNED NOT NULL AFTER uri_id;
SQL);
$conn->execute(<<<SQL
ALTER TABLE msz_oauth2_access
DROP FOREIGN KEY oauth2_access_app_foreign;
SQL);
$conn->execute(<<<SQL
ALTER TABLE msz_oauth2_access
CHANGE COLUMN app_id app_id BIGINT UNSIGNED NULL DEFAULT NULL AFTER acc_id;
SQL);
$conn->execute(<<<SQL
ALTER TABLE msz_oauth2_authorise
DROP FOREIGN KEY oauth2_authorise_app_foreign;
SQL);
$conn->execute(<<<SQL
ALTER TABLE msz_oauth2_authorise
DROP FOREIGN KEY oauth2_authorise_uri_foreign;
SQL);
$conn->execute(<<<SQL
ALTER TABLE msz_oauth2_authorise
CHANGE COLUMN app_id app_id BIGINT UNSIGNED NOT NULL AFTER auth_id,
CHANGE COLUMN uri_id uri_id BIGINT UNSIGNED NOT NULL AFTER user_id;
SQL);
$conn->execute(<<<SQL
ALTER TABLE msz_oauth2_device
DROP FOREIGN KEY oauth2_device_app_foreign;
SQL);
$conn->execute(<<<SQL
ALTER TABLE msz_oauth2_device
CHANGE COLUMN app_id app_id BIGINT UNSIGNED NOT NULL AFTER dev_id;
SQL);
$conn->execute(<<<SQL
ALTER TABLE msz_oauth2_refresh
DROP FOREIGN KEY oauth2_refresh_app_foreign;
SQL);
$conn->execute(<<<SQL
ALTER TABLE msz_oauth2_refresh
DROP FOREIGN KEY oauth2_refresh_access_foreign;
SQL);
$conn->execute(<<<SQL
ALTER TABLE msz_oauth2_refresh
CHANGE COLUMN app_id app_id BIGINT UNSIGNED NULL DEFAULT NULL AFTER ref_id,
CHANGE COLUMN acc_id acc_id BIGINT UNSIGNED NULL DEFAULT NULL AFTER user_id;
SQL);
$conn->execute(<<<SQL
ALTER TABLE msz_apps
CHANGE COLUMN app_id app_id BIGINT UNSIGNED NOT NULL FIRST,
DROP COLUMN app_client_id,
DROP INDEX apps_client_id_unique;
SQL);
$conn->execute(<<<SQL
ALTER TABLE msz_apps_uris
CHANGE COLUMN uri_id uri_id BIGINT UNSIGNED NOT NULL FIRST;
SQL);
$conn->execute(<<<SQL
ALTER TABLE msz_oauth2_access
CHANGE COLUMN acc_id acc_id BIGINT UNSIGNED NOT NULL FIRST;
SQL);
$conn->execute(<<<SQL
ALTER TABLE msz_oauth2_authorise
CHANGE COLUMN auth_id auth_id BIGINT UNSIGNED NOT NULL FIRST;
SQL);
$conn->execute(<<<SQL
ALTER TABLE msz_oauth2_device
CHANGE COLUMN dev_id dev_id BIGINT UNSIGNED NOT NULL FIRST;
SQL);
$conn->execute(<<<SQL
ALTER TABLE msz_oauth2_refresh
CHANGE COLUMN ref_id ref_id BIGINT UNSIGNED NOT NULL FIRST;
SQL);
$conn->execute(<<<SQL
ALTER TABLE msz_apps_scopes
ADD CONSTRAINT apps_scopes_app_foreign
FOREIGN KEY (app_id)
REFERENCES msz_apps (app_id)
ON UPDATE CASCADE
ON DELETE CASCADE;
SQL);
$conn->execute(<<<SQL
ALTER TABLE msz_apps_uris
ADD CONSTRAINT apps_uris_app_foreign
FOREIGN KEY (app_id)
REFERENCES msz_apps (app_id)
ON UPDATE CASCADE
ON DELETE CASCADE;
SQL);
$conn->execute(<<<SQL
ALTER TABLE msz_oauth2_access
ADD CONSTRAINT oauth2_access_app_foreign
FOREIGN KEY (app_id)
REFERENCES msz_apps (app_id)
ON UPDATE CASCADE
ON DELETE CASCADE;
SQL);
$conn->execute(<<<SQL
ALTER TABLE msz_oauth2_authorise
ADD CONSTRAINT oauth2_authorise_app_foreign
FOREIGN KEY (app_id)
REFERENCES msz_apps (app_id)
ON UPDATE CASCADE
ON DELETE CASCADE;
SQL);
$conn->execute(<<<SQL
ALTER TABLE msz_oauth2_authorise
ADD CONSTRAINT oauth2_authorise_uri_foreign
FOREIGN KEY (uri_id)
REFERENCES msz_apps_uris (uri_id)
ON UPDATE CASCADE
ON DELETE CASCADE;
SQL);
$conn->execute(<<<SQL
ALTER TABLE msz_oauth2_device
ADD CONSTRAINT oauth2_device_app_foreign
FOREIGN KEY (app_id)
REFERENCES msz_apps (app_id)
ON UPDATE CASCADE
ON DELETE CASCADE;
SQL);
$conn->execute(<<<SQL
ALTER TABLE msz_oauth2_refresh
ADD CONSTRAINT oauth2_refresh_app_foreign
FOREIGN KEY (app_id)
REFERENCES msz_apps (app_id)
ON UPDATE CASCADE
ON DELETE CASCADE;
SQL);
$snowflake = new \Index\Snowflake\RandomSnowflake;
$stmt = $conn->prepare('UPDATE msz_apps SET app_id = ? WHERE app_id = ?');
$result = $conn->query('SELECT app_id, UNIX_TIMESTAMP(app_created) FROM msz_apps');
while($result->next()) {
$stmt->addParameter(1, (string)$snowflake->next(at: $result->getInteger(1) * 1000));
$stmt->addParameter(2, $result->getString(0));
$stmt->execute();
}
}
}

541
package-lock.json generated
View file

@ -80,14 +80,14 @@
}
},
"node_modules/@swc/core": {
"version": "1.11.20",
"resolved": "https://registry.npmjs.org/@swc/core/-/core-1.11.20.tgz",
"integrity": "sha512-2F0+bQs7+pwbudsxRffLdfpGCQX4Ih5k88f7LqTfj2oC7aTrv7FssduOvcAvfVY/InZmyYEblKl1rqg8bvzrZQ==",
"version": "1.12.0",
"resolved": "https://registry.npmjs.org/@swc/core/-/core-1.12.0.tgz",
"integrity": "sha512-/C0kiMHPY/HnLfqXYGMGxGck3A5Y3mqwxfv+EwHTPHGjAVRfHpWAEEBTSTF5C88vVY6CvwBEkhR2TX7t8Mahcw==",
"hasInstallScript": true,
"license": "Apache-2.0",
"dependencies": {
"@swc/counter": "^0.1.3",
"@swc/types": "^0.1.21"
"@swc/types": "^0.1.22"
},
"engines": {
"node": ">=10"
@ -97,16 +97,16 @@
"url": "https://opencollective.com/swc"
},
"optionalDependencies": {
"@swc/core-darwin-arm64": "1.11.20",
"@swc/core-darwin-x64": "1.11.20",
"@swc/core-linux-arm-gnueabihf": "1.11.20",
"@swc/core-linux-arm64-gnu": "1.11.20",
"@swc/core-linux-arm64-musl": "1.11.20",
"@swc/core-linux-x64-gnu": "1.11.20",
"@swc/core-linux-x64-musl": "1.11.20",
"@swc/core-win32-arm64-msvc": "1.11.20",
"@swc/core-win32-ia32-msvc": "1.11.20",
"@swc/core-win32-x64-msvc": "1.11.20"
"@swc/core-darwin-arm64": "1.12.0",
"@swc/core-darwin-x64": "1.12.0",
"@swc/core-linux-arm-gnueabihf": "1.12.0",
"@swc/core-linux-arm64-gnu": "1.12.0",
"@swc/core-linux-arm64-musl": "1.12.0",
"@swc/core-linux-x64-gnu": "1.12.0",
"@swc/core-linux-x64-musl": "1.12.0",
"@swc/core-win32-arm64-msvc": "1.12.0",
"@swc/core-win32-ia32-msvc": "1.12.0",
"@swc/core-win32-x64-msvc": "1.12.0"
},
"peerDependencies": {
"@swc/helpers": ">=0.5.17"
@ -118,9 +118,9 @@
}
},
"node_modules/@swc/core-darwin-arm64": {
"version": "1.11.20",
"resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.11.20.tgz",
"integrity": "sha512-Sc06h6pwMhQagU7vz92b7wwQTIibTiqRE4y/XjkvurSbjSarrtSZR4OKkrdNwUkSy1HlQE4NhKQf7tmLeQ7PhQ==",
"version": "1.12.0",
"resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.12.0.tgz",
"integrity": "sha512-usLr8kC80GDv3pwH2zoEaS279kxtWY0MY3blbMFw7zA8fAjqxa8IDxm3WcgyNLNWckWn4asFfguEwz/Weem3nA==",
"cpu": [
"arm64"
],
@ -134,9 +134,9 @@
}
},
"node_modules/@swc/core-darwin-x64": {
"version": "1.11.20",
"resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.11.20.tgz",
"integrity": "sha512-kHANJrgbqaGzUyTectNfLyhnHAeDGGVSRXYyPVAx6x0nuLOnRhKbuSyZY42UEN1IgHauaADCzcd+HiiMv/rgRw==",
"version": "1.12.0",
"resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.12.0.tgz",
"integrity": "sha512-Cvv4sqDcTY7QF2Dh1vn2Xbt/1ENYQcpmrGHzITJrXzxA2aBopsz/n4yQDiyRxTR0t802m4xu0CzMoZIHvVruWQ==",
"cpu": [
"x64"
],
@ -150,9 +150,9 @@
}
},
"node_modules/@swc/core-linux-arm-gnueabihf": {
"version": "1.11.20",
"resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.11.20.tgz",
"integrity": "sha512-FXllEBeAwU6FNIZzo+u1LmHGaHzwAKzz7tWRkUOqBKjKr20Ot4KGS3xlz2qgV2NESFHAisdHja2P2rcQWqtZRg==",
"version": "1.12.0",
"resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.12.0.tgz",
"integrity": "sha512-seM4/XMJMOupkzfLfHl8sRa3NdhsVZp+XgwA/vVeYZYJE4wuWUxVzhCYzwmNftVY32eF2IiRaWnhG6ho6jusnQ==",
"cpu": [
"arm"
],
@ -166,9 +166,9 @@
}
},
"node_modules/@swc/core-linux-arm64-gnu": {
"version": "1.11.20",
"resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.11.20.tgz",
"integrity": "sha512-OsYMFyJzUM0K8a97tu6KxZaCob3vr+UknVqHO09QwechX+rdX4euWm7Lte4d1B+7SBfokhw7ghLZsNTQfRw9pA==",
"version": "1.12.0",
"resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.12.0.tgz",
"integrity": "sha512-Al0x33gUVxNY5tutEYpSyv7mze6qQS1ONa0HEwoRxcK9WXsX0NHLTiOSGZoCUS1SsXM37ONlbA6/Bsp1MQyP+g==",
"cpu": [
"arm64"
],
@ -182,9 +182,9 @@
}
},
"node_modules/@swc/core-linux-arm64-musl": {
"version": "1.11.20",
"resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.11.20.tgz",
"integrity": "sha512-fbSWOQ5ZZ7sWodoC6GnzV9RhbImdxoH8b14K1tnHCWJXolzTH40/4JKf/koJ3r24nm1PtsqX9OUxRsOXYAy5dg==",
"version": "1.12.0",
"resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.12.0.tgz",
"integrity": "sha512-OeFHz/5Hl9v75J9TYA5jQxNIYAZMqaiPpd9dYSTK2Xyqa/ZGgTtNyPhIwVfxx+9mHBf6+9c1mTlXUtACMtHmaQ==",
"cpu": [
"arm64"
],
@ -198,9 +198,9 @@
}
},
"node_modules/@swc/core-linux-x64-gnu": {
"version": "1.11.20",
"resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.11.20.tgz",
"integrity": "sha512-OFU53idbY8KA1RkNzZBi0FpoRPSn/anv4N7ZzGZGk664UoFwMbSL+XHGocJzhV9G/VNGH7bMBmgoVWk72nn5hw==",
"version": "1.12.0",
"resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.12.0.tgz",
"integrity": "sha512-ltIvqNi7H0c5pRawyqjeYSKEIfZP4vv/datT3mwT6BW7muJtd1+KIDCPFLMIQ4wm/h76YQwPocsin3fzmnFdNA==",
"cpu": [
"x64"
],
@ -214,9 +214,9 @@
}
},
"node_modules/@swc/core-linux-x64-musl": {
"version": "1.11.20",
"resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.11.20.tgz",
"integrity": "sha512-GZbqXEc09nIarkGMXc2P4Hf2ONb1vre22X7Se9CCeU/QtWYRU/H1a2TFnYgBKzNVOH65Dd/XYXcuy+tM1aw1iw==",
"version": "1.12.0",
"resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.12.0.tgz",
"integrity": "sha512-Z/DhpjehaTK0uf+MhNB7mV9SuewpGs3P/q9/8+UsJeYoFr7yuOoPbAvrD6AqZkf6Bh7MRZ5OtG+KQgG5L+goiA==",
"cpu": [
"x64"
],
@ -230,9 +230,9 @@
}
},
"node_modules/@swc/core-win32-arm64-msvc": {
"version": "1.11.20",
"resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.11.20.tgz",
"integrity": "sha512-i0H2MeK8krEd/YeiGz0GHtNL9wSGfAPXiouh8aRNV/u+w4vPaaRqnXwv/yzAW+D2vPpKJBhOwmNFFzdgTJ5mWw==",
"version": "1.12.0",
"resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.12.0.tgz",
"integrity": "sha512-wHnvbfHIh2gfSbvuFT7qP97YCMUDh+fuiso+pcC6ug8IsMxuViNapHET4o0ZdFNWHhXJ7/s0e6w7mkOalsqQiQ==",
"cpu": [
"arm64"
],
@ -246,9 +246,9 @@
}
},
"node_modules/@swc/core-win32-ia32-msvc": {
"version": "1.11.20",
"resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.11.20.tgz",
"integrity": "sha512-/7e3X7EGO8uOvAUP+YKJTdoR2JR5vdiewDOnDS9FFXj8yr9x6/oDFLd92Sp9NglF+aXuqAo33IfH2OTz1MR+Ww==",
"version": "1.12.0",
"resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.12.0.tgz",
"integrity": "sha512-88umlXwK+7J2p4DjfWHXQpmlZgCf1ayt6Ssj+PYlAfMCR0aBiJoAMwHWrvDXEozyOrsyP1j2X6WxbmA861vL5Q==",
"cpu": [
"ia32"
],
@ -262,9 +262,9 @@
}
},
"node_modules/@swc/core-win32-x64-msvc": {
"version": "1.11.20",
"resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.11.20.tgz",
"integrity": "sha512-rcZpt5uiVNTs/Se+CYBoaDphafFJcsqXo3DNmfkJZoDZUb4PZqxu61p4Qa+lvFDQlRragrlLRpGQM9qnLNd4iQ==",
"version": "1.12.0",
"resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.12.0.tgz",
"integrity": "sha512-KR9TSRp+FEVOhbgTU6c94p/AYpsyBk7dIvlKQiDp8oKScUoyHG5yjmMBFN/BqUyTq4kj6zlgsY2rFE4R8/yqWg==",
"cpu": [
"x64"
],
@ -284,9 +284,9 @@
"license": "Apache-2.0"
},
"node_modules/@swc/types": {
"version": "0.1.21",
"resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.21.tgz",
"integrity": "sha512-2YEtj5HJVbKivud9N4bpPBAyZhj4S2Ipe5LkUG94alTpr7in/GU/EARgPAd3BwU+YOmFVJC2+kjqhGRi3r0ZpQ==",
"version": "0.1.23",
"resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.23.tgz",
"integrity": "sha512-u1iIVZV9Q0jxY+yM2vw/hZGDNudsN85bBpTqzAQ9rzkxW9D+e3aEM4Han+ow518gSewkXgjmEK0BD79ZcNVgPw==",
"license": "Apache-2.0",
"dependencies": {
"@swc/counter": "^0.1.3"
@ -302,9 +302,9 @@
}
},
"node_modules/acorn": {
"version": "8.14.1",
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz",
"integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==",
"version": "8.15.0",
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz",
"integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==",
"license": "MIT",
"bin": {
"acorn": "bin/acorn"
@ -357,9 +357,9 @@
"license": "ISC"
},
"node_modules/browserslist": {
"version": "4.24.4",
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz",
"integrity": "sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==",
"version": "4.25.0",
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.25.0.tgz",
"integrity": "sha512-PJ8gYKeS5e/whHBh8xrwYK+dAvEj7JXtz6uTucnMRB8OiGTsKccFekoRrjajPBHV8oOY+2tI4uxeceSimKwMFA==",
"funding": [
{
"type": "opencollective",
@ -376,10 +376,10 @@
],
"license": "MIT",
"dependencies": {
"caniuse-lite": "^1.0.30001688",
"electron-to-chromium": "^1.5.73",
"caniuse-lite": "^1.0.30001718",
"electron-to-chromium": "^1.5.160",
"node-releases": "^2.0.19",
"update-browserslist-db": "^1.1.1"
"update-browserslist-db": "^1.1.3"
},
"bin": {
"browserslist": "cli.js"
@ -417,9 +417,9 @@
}
},
"node_modules/caniuse-lite": {
"version": "1.0.30001713",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001713.tgz",
"integrity": "sha512-wCIWIg+A4Xr7NfhTuHdX+/FKh3+Op3LBbSp2N5Pfx6T/LhdQy3GTyoTg48BReaW/MyMNZAkTadsBtai3ldWK0Q==",
"version": "1.0.30001722",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001722.tgz",
"integrity": "sha512-DCQHBBZtiK6JVkAGw7drvAMK0Q0POD/xZvEmDp6baiMMP6QXXk9HpD6mNYBZWhOPG6LvIDb82ITqtWjhDckHCA==",
"funding": [
{
"type": "opencollective",
@ -529,13 +529,13 @@
}
},
"node_modules/cssnano": {
"version": "7.0.6",
"resolved": "https://registry.npmjs.org/cssnano/-/cssnano-7.0.6.tgz",
"integrity": "sha512-54woqx8SCbp8HwvNZYn68ZFAepuouZW4lTwiMVnBErM3VkO7/Sd4oTOt3Zz3bPx3kxQ36aISppyXj2Md4lg8bw==",
"version": "7.0.7",
"resolved": "https://registry.npmjs.org/cssnano/-/cssnano-7.0.7.tgz",
"integrity": "sha512-evKu7yiDIF7oS+EIpwFlMF730ijRyLFaM2o5cTxRGJR9OKHKkc+qP443ZEVR9kZG0syaAJJCPJyfv5pbrxlSng==",
"license": "MIT",
"dependencies": {
"cssnano-preset-default": "^7.0.6",
"lilconfig": "^3.1.2"
"cssnano-preset-default": "^7.0.7",
"lilconfig": "^3.1.3"
},
"engines": {
"node": "^18.12.0 || ^20.9.0 || >=22.0"
@ -545,63 +545,63 @@
"url": "https://opencollective.com/cssnano"
},
"peerDependencies": {
"postcss": "^8.4.31"
"postcss": "^8.4.32"
}
},
"node_modules/cssnano-preset-default": {
"version": "7.0.6",
"resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-7.0.6.tgz",
"integrity": "sha512-ZzrgYupYxEvdGGuqL+JKOY70s7+saoNlHSCK/OGn1vB2pQK8KSET8jvenzItcY+kA7NoWvfbb/YhlzuzNKjOhQ==",
"version": "7.0.7",
"resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-7.0.7.tgz",
"integrity": "sha512-jW6CG/7PNB6MufOrlovs1TvBTEVmhY45yz+bd0h6nw3h6d+1e+/TX+0fflZ+LzvZombbT5f+KC063w9VoHeHow==",
"license": "MIT",
"dependencies": {
"browserslist": "^4.23.3",
"browserslist": "^4.24.5",
"css-declaration-sorter": "^7.2.0",
"cssnano-utils": "^5.0.0",
"postcss-calc": "^10.0.2",
"postcss-colormin": "^7.0.2",
"postcss-convert-values": "^7.0.4",
"postcss-discard-comments": "^7.0.3",
"postcss-discard-duplicates": "^7.0.1",
"postcss-discard-empty": "^7.0.0",
"postcss-discard-overridden": "^7.0.0",
"postcss-merge-longhand": "^7.0.4",
"postcss-merge-rules": "^7.0.4",
"postcss-minify-font-values": "^7.0.0",
"postcss-minify-gradients": "^7.0.0",
"postcss-minify-params": "^7.0.2",
"postcss-minify-selectors": "^7.0.4",
"postcss-normalize-charset": "^7.0.0",
"postcss-normalize-display-values": "^7.0.0",
"postcss-normalize-positions": "^7.0.0",
"postcss-normalize-repeat-style": "^7.0.0",
"postcss-normalize-string": "^7.0.0",
"postcss-normalize-timing-functions": "^7.0.0",
"postcss-normalize-unicode": "^7.0.2",
"postcss-normalize-url": "^7.0.0",
"postcss-normalize-whitespace": "^7.0.0",
"postcss-ordered-values": "^7.0.1",
"postcss-reduce-initial": "^7.0.2",
"postcss-reduce-transforms": "^7.0.0",
"postcss-svgo": "^7.0.1",
"postcss-unique-selectors": "^7.0.3"
"cssnano-utils": "^5.0.1",
"postcss-calc": "^10.1.1",
"postcss-colormin": "^7.0.3",
"postcss-convert-values": "^7.0.5",
"postcss-discard-comments": "^7.0.4",
"postcss-discard-duplicates": "^7.0.2",
"postcss-discard-empty": "^7.0.1",
"postcss-discard-overridden": "^7.0.1",
"postcss-merge-longhand": "^7.0.5",
"postcss-merge-rules": "^7.0.5",
"postcss-minify-font-values": "^7.0.1",
"postcss-minify-gradients": "^7.0.1",
"postcss-minify-params": "^7.0.3",
"postcss-minify-selectors": "^7.0.5",
"postcss-normalize-charset": "^7.0.1",
"postcss-normalize-display-values": "^7.0.1",
"postcss-normalize-positions": "^7.0.1",
"postcss-normalize-repeat-style": "^7.0.1",
"postcss-normalize-string": "^7.0.1",
"postcss-normalize-timing-functions": "^7.0.1",
"postcss-normalize-unicode": "^7.0.3",
"postcss-normalize-url": "^7.0.1",
"postcss-normalize-whitespace": "^7.0.1",
"postcss-ordered-values": "^7.0.2",
"postcss-reduce-initial": "^7.0.3",
"postcss-reduce-transforms": "^7.0.1",
"postcss-svgo": "^7.0.2",
"postcss-unique-selectors": "^7.0.4"
},
"engines": {
"node": "^18.12.0 || ^20.9.0 || >=22.0"
},
"peerDependencies": {
"postcss": "^8.4.31"
"postcss": "^8.4.32"
}
},
"node_modules/cssnano-utils": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-5.0.0.tgz",
"integrity": "sha512-Uij0Xdxc24L6SirFr25MlwC2rCFX6scyUmuKpzI+JQ7cyqDEwD42fJ0xfB3yLfOnRDU5LKGgjQ9FA6LYh76GWQ==",
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-5.0.1.tgz",
"integrity": "sha512-ZIP71eQgG9JwjVZsTPSqhc6GHgEr53uJ7tK5///VfyWj6Xp2DBmixWHqJgPno+PqATzn48pL42ww9x5SSGmhZg==",
"license": "MIT",
"engines": {
"node": "^18.12.0 || ^20.9.0 || >=22.0"
},
"peerDependencies": {
"postcss": "^8.4.31"
"postcss": "^8.4.32"
}
},
"node_modules/csso": {
@ -703,9 +703,9 @@
}
},
"node_modules/electron-to-chromium": {
"version": "1.5.136",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.136.tgz",
"integrity": "sha512-kL4+wUTD7RSA5FHx5YwWtjDnEEkIIikFgWHR4P6fqjw1PPLlqYkxeOb++wAauAssat0YClCy8Y3C5SxgSkjibQ==",
"version": "1.5.167",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.167.tgz",
"integrity": "sha512-LxcRvnYO5ez2bMOFpbuuVuAI5QNeY1ncVytE/KXaL6ZNfzX1yPlAO0nSOyIHx2fVAuUprMqPs/TdVhUFZy7SIQ==",
"license": "ISC"
},
"node_modules/entities": {
@ -884,9 +884,9 @@
"license": "ISC"
},
"node_modules/postcss": {
"version": "8.5.3",
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz",
"integrity": "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==",
"version": "8.5.5",
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.5.tgz",
"integrity": "sha512-d/jtm+rdNT8tpXuHY5MMtcbJFBkhXE6593XVR9UoGCH8jSFGci7jGvMGH5RYd5PBJW+00NZQt6gf7CbagJCrhg==",
"funding": [
{
"type": "opencollective",
@ -903,7 +903,7 @@
],
"license": "MIT",
"dependencies": {
"nanoid": "^3.3.8",
"nanoid": "^3.3.11",
"picocolors": "^1.1.1",
"source-map-js": "^1.2.1"
},
@ -928,12 +928,12 @@
}
},
"node_modules/postcss-colormin": {
"version": "7.0.2",
"resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-7.0.2.tgz",
"integrity": "sha512-YntRXNngcvEvDbEjTdRWGU606eZvB5prmHG4BF0yLmVpamXbpsRJzevyy6MZVyuecgzI2AWAlvFi8DAeCqwpvA==",
"version": "7.0.3",
"resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-7.0.3.tgz",
"integrity": "sha512-xZxQcSyIVZbSsl1vjoqZAcMYYdnJsIyG8OvqShuuqf12S88qQboxxEy0ohNCOLwVPXTU+hFHvJPACRL2B5ohTA==",
"license": "MIT",
"dependencies": {
"browserslist": "^4.23.3",
"browserslist": "^4.24.5",
"caniuse-api": "^3.0.0",
"colord": "^2.9.3",
"postcss-value-parser": "^4.2.0"
@ -942,140 +942,114 @@
"node": "^18.12.0 || ^20.9.0 || >=22.0"
},
"peerDependencies": {
"postcss": "^8.4.31"
"postcss": "^8.4.32"
}
},
"node_modules/postcss-convert-values": {
"version": "7.0.4",
"resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-7.0.4.tgz",
"integrity": "sha512-e2LSXPqEHVW6aoGbjV9RsSSNDO3A0rZLCBxN24zvxF25WknMPpX8Dm9UxxThyEbaytzggRuZxaGXqaOhxQ514Q==",
"version": "7.0.5",
"resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-7.0.5.tgz",
"integrity": "sha512-0VFhH8nElpIs3uXKnVtotDJJNX0OGYSZmdt4XfSfvOMrFw1jKfpwpZxfC4iN73CTM/MWakDEmsHQXkISYj4BXw==",
"license": "MIT",
"dependencies": {
"browserslist": "^4.23.3",
"browserslist": "^4.24.5",
"postcss-value-parser": "^4.2.0"
},
"engines": {
"node": "^18.12.0 || ^20.9.0 || >=22.0"
},
"peerDependencies": {
"postcss": "^8.4.31"
"postcss": "^8.4.32"
}
},
"node_modules/postcss-discard-comments": {
"version": "7.0.3",
"resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-7.0.3.tgz",
"integrity": "sha512-q6fjd4WU4afNhWOA2WltHgCbkRhZPgQe7cXF74fuVB/ge4QbM9HEaOIzGSiMvM+g/cOsNAUGdf2JDzqA2F8iLA==",
"version": "7.0.4",
"resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-7.0.4.tgz",
"integrity": "sha512-6tCUoql/ipWwKtVP/xYiFf1U9QgJ0PUvxN7pTcsQ8Ns3Fnwq1pU5D5s1MhT/XySeLq6GXNvn37U46Ded0TckWg==",
"license": "MIT",
"dependencies": {
"postcss-selector-parser": "^6.1.2"
"postcss-selector-parser": "^7.1.0"
},
"engines": {
"node": "^18.12.0 || ^20.9.0 || >=22.0"
},
"peerDependencies": {
"postcss": "^8.4.31"
}
},
"node_modules/postcss-discard-comments/node_modules/postcss-selector-parser": {
"version": "6.1.2",
"resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz",
"integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==",
"license": "MIT",
"dependencies": {
"cssesc": "^3.0.0",
"util-deprecate": "^1.0.2"
},
"engines": {
"node": ">=4"
"postcss": "^8.4.32"
}
},
"node_modules/postcss-discard-duplicates": {
"version": "7.0.1",
"resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-7.0.1.tgz",
"integrity": "sha512-oZA+v8Jkpu1ct/xbbrntHRsfLGuzoP+cpt0nJe5ED2FQF8n8bJtn7Bo28jSmBYwqgqnqkuSXJfSUEE7if4nClQ==",
"version": "7.0.2",
"resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-7.0.2.tgz",
"integrity": "sha512-eTonaQvPZ/3i1ASDHOKkYwAybiM45zFIc7KXils4mQmHLqIswXD9XNOKEVxtTFnsmwYzF66u4LMgSr0abDlh5w==",
"license": "MIT",
"engines": {
"node": "^18.12.0 || ^20.9.0 || >=22.0"
},
"peerDependencies": {
"postcss": "^8.4.31"
"postcss": "^8.4.32"
}
},
"node_modules/postcss-discard-empty": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-7.0.0.tgz",
"integrity": "sha512-e+QzoReTZ8IAwhnSdp/++7gBZ/F+nBq9y6PomfwORfP7q9nBpK5AMP64kOt0bA+lShBFbBDcgpJ3X4etHg4lzA==",
"version": "7.0.1",
"resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-7.0.1.tgz",
"integrity": "sha512-cFrJKZvcg/uxB6Ijr4l6qmn3pXQBna9zyrPC+sK0zjbkDUZew+6xDltSF7OeB7rAtzaaMVYSdbod+sZOCWnMOg==",
"license": "MIT",
"engines": {
"node": "^18.12.0 || ^20.9.0 || >=22.0"
},
"peerDependencies": {
"postcss": "^8.4.31"
"postcss": "^8.4.32"
}
},
"node_modules/postcss-discard-overridden": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-7.0.0.tgz",
"integrity": "sha512-GmNAzx88u3k2+sBTZrJSDauR0ccpE24omTQCVmaTTZFz1du6AasspjaUPMJ2ud4RslZpoFKyf+6MSPETLojc6w==",
"version": "7.0.1",
"resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-7.0.1.tgz",
"integrity": "sha512-7c3MMjjSZ/qYrx3uc1940GSOzN1Iqjtlqe8uoSg+qdVPYyRb0TILSqqmtlSFuE4mTDECwsm397Ya7iXGzfF7lg==",
"license": "MIT",
"engines": {
"node": "^18.12.0 || ^20.9.0 || >=22.0"
},
"peerDependencies": {
"postcss": "^8.4.31"
"postcss": "^8.4.32"
}
},
"node_modules/postcss-merge-longhand": {
"version": "7.0.4",
"resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-7.0.4.tgz",
"integrity": "sha512-zer1KoZA54Q8RVHKOY5vMke0cCdNxMP3KBfDerjH/BYHh4nCIh+1Yy0t1pAEQF18ac/4z3OFclO+ZVH8azjR4A==",
"version": "7.0.5",
"resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-7.0.5.tgz",
"integrity": "sha512-Kpu5v4Ys6QI59FxmxtNB/iHUVDn9Y9sYw66D6+SZoIk4QTz1prC4aYkhIESu+ieG1iylod1f8MILMs1Em3mmIw==",
"license": "MIT",
"dependencies": {
"postcss-value-parser": "^4.2.0",
"stylehacks": "^7.0.4"
"stylehacks": "^7.0.5"
},
"engines": {
"node": "^18.12.0 || ^20.9.0 || >=22.0"
},
"peerDependencies": {
"postcss": "^8.4.31"
"postcss": "^8.4.32"
}
},
"node_modules/postcss-merge-rules": {
"version": "7.0.4",
"resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-7.0.4.tgz",
"integrity": "sha512-ZsaamiMVu7uBYsIdGtKJ64PkcQt6Pcpep/uO90EpLS3dxJi6OXamIobTYcImyXGoW0Wpugh7DSD3XzxZS9JCPg==",
"version": "7.0.5",
"resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-7.0.5.tgz",
"integrity": "sha512-ZonhuSwEaWA3+xYbOdJoEReKIBs5eDiBVLAGpYZpNFPzXZcEE5VKR7/qBEQvTZpiwjqhhqEQ+ax5O3VShBj9Wg==",
"license": "MIT",
"dependencies": {
"browserslist": "^4.23.3",
"browserslist": "^4.24.5",
"caniuse-api": "^3.0.0",
"cssnano-utils": "^5.0.0",
"postcss-selector-parser": "^6.1.2"
"cssnano-utils": "^5.0.1",
"postcss-selector-parser": "^7.1.0"
},
"engines": {
"node": "^18.12.0 || ^20.9.0 || >=22.0"
},
"peerDependencies": {
"postcss": "^8.4.31"
}
},
"node_modules/postcss-merge-rules/node_modules/postcss-selector-parser": {
"version": "6.1.2",
"resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz",
"integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==",
"license": "MIT",
"dependencies": {
"cssesc": "^3.0.0",
"util-deprecate": "^1.0.2"
},
"engines": {
"node": ">=4"
"postcss": "^8.4.32"
}
},
"node_modules/postcss-minify-font-values": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-7.0.0.tgz",
"integrity": "sha512-2ckkZtgT0zG8SMc5aoNwtm5234eUx1GGFJKf2b1bSp8UflqaeFzR50lid4PfqVI9NtGqJ2J4Y7fwvnP/u1cQog==",
"version": "7.0.1",
"resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-7.0.1.tgz",
"integrity": "sha512-2m1uiuJeTplll+tq4ENOQSzB8LRnSUChBv7oSyFLsJRtUgAAJGP6LLz0/8lkinTgxrmJSPOEhgY1bMXOQ4ZXhQ==",
"license": "MIT",
"dependencies": {
"postcss-value-parser": "^4.2.0"
@ -1084,88 +1058,75 @@
"node": "^18.12.0 || ^20.9.0 || >=22.0"
},
"peerDependencies": {
"postcss": "^8.4.31"
"postcss": "^8.4.32"
}
},
"node_modules/postcss-minify-gradients": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-7.0.0.tgz",
"integrity": "sha512-pdUIIdj/C93ryCHew0UgBnL2DtUS3hfFa5XtERrs4x+hmpMYGhbzo6l/Ir5de41O0GaKVpK1ZbDNXSY6GkXvtg==",
"version": "7.0.1",
"resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-7.0.1.tgz",
"integrity": "sha512-X9JjaysZJwlqNkJbUDgOclyG3jZEpAMOfof6PUZjPnPrePnPG62pS17CjdM32uT1Uq1jFvNSff9l7kNbmMSL2A==",
"license": "MIT",
"dependencies": {
"colord": "^2.9.3",
"cssnano-utils": "^5.0.0",
"cssnano-utils": "^5.0.1",
"postcss-value-parser": "^4.2.0"
},
"engines": {
"node": "^18.12.0 || ^20.9.0 || >=22.0"
},
"peerDependencies": {
"postcss": "^8.4.31"
"postcss": "^8.4.32"
}
},
"node_modules/postcss-minify-params": {
"version": "7.0.2",
"resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-7.0.2.tgz",
"integrity": "sha512-nyqVLu4MFl9df32zTsdcLqCFfE/z2+f8GE1KHPxWOAmegSo6lpV2GNy5XQvrzwbLmiU7d+fYay4cwto1oNdAaQ==",
"version": "7.0.3",
"resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-7.0.3.tgz",
"integrity": "sha512-vUKV2+f5mtjewYieanLX0xemxIp1t0W0H/D11u+kQV/MWdygOO7xPMkbK+r9P6Lhms8MgzKARF/g5OPXhb8tgg==",
"license": "MIT",
"dependencies": {
"browserslist": "^4.23.3",
"cssnano-utils": "^5.0.0",
"browserslist": "^4.24.5",
"cssnano-utils": "^5.0.1",
"postcss-value-parser": "^4.2.0"
},
"engines": {
"node": "^18.12.0 || ^20.9.0 || >=22.0"
},
"peerDependencies": {
"postcss": "^8.4.31"
"postcss": "^8.4.32"
}
},
"node_modules/postcss-minify-selectors": {
"version": "7.0.4",
"resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-7.0.4.tgz",
"integrity": "sha512-JG55VADcNb4xFCf75hXkzc1rNeURhlo7ugf6JjiiKRfMsKlDzN9CXHZDyiG6x/zGchpjQS+UAgb1d4nqXqOpmA==",
"version": "7.0.5",
"resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-7.0.5.tgz",
"integrity": "sha512-x2/IvofHcdIrAm9Q+p06ZD1h6FPcQ32WtCRVodJLDR+WMn8EVHI1kvLxZuGKz/9EY5nAmI6lIQIrpo4tBy5+ug==",
"license": "MIT",
"dependencies": {
"cssesc": "^3.0.0",
"postcss-selector-parser": "^6.1.2"
"postcss-selector-parser": "^7.1.0"
},
"engines": {
"node": "^18.12.0 || ^20.9.0 || >=22.0"
},
"peerDependencies": {
"postcss": "^8.4.31"
}
},
"node_modules/postcss-minify-selectors/node_modules/postcss-selector-parser": {
"version": "6.1.2",
"resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz",
"integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==",
"license": "MIT",
"dependencies": {
"cssesc": "^3.0.0",
"util-deprecate": "^1.0.2"
},
"engines": {
"node": ">=4"
"postcss": "^8.4.32"
}
},
"node_modules/postcss-normalize-charset": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-7.0.0.tgz",
"integrity": "sha512-ABisNUXMeZeDNzCQxPxBCkXexvBrUHV+p7/BXOY+ulxkcjUZO0cp8ekGBwvIh2LbCwnWbyMPNJVtBSdyhM2zYQ==",
"version": "7.0.1",
"resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-7.0.1.tgz",
"integrity": "sha512-sn413ofhSQHlZFae//m9FTOfkmiZ+YQXsbosqOWRiVQncU2BA3daX3n0VF3cG6rGLSFVc5Di/yns0dFfh8NFgQ==",
"license": "MIT",
"engines": {
"node": "^18.12.0 || ^20.9.0 || >=22.0"
},
"peerDependencies": {
"postcss": "^8.4.31"
"postcss": "^8.4.32"
}
},
"node_modules/postcss-normalize-display-values": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-7.0.0.tgz",
"integrity": "sha512-lnFZzNPeDf5uGMPYgGOw7v0BfB45+irSRz9gHQStdkkhiM0gTfvWkWB5BMxpn0OqgOQuZG/mRlZyJxp0EImr2Q==",
"version": "7.0.1",
"resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-7.0.1.tgz",
"integrity": "sha512-E5nnB26XjSYz/mGITm6JgiDpAbVuAkzXwLzRZtts19jHDUBFxZ0BkXAehy0uimrOjYJbocby4FVswA/5noOxrQ==",
"license": "MIT",
"dependencies": {
"postcss-value-parser": "^4.2.0"
@ -1174,13 +1135,13 @@
"node": "^18.12.0 || ^20.9.0 || >=22.0"
},
"peerDependencies": {
"postcss": "^8.4.31"
"postcss": "^8.4.32"
}
},
"node_modules/postcss-normalize-positions": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-7.0.0.tgz",
"integrity": "sha512-I0yt8wX529UKIGs2y/9Ybs2CelSvItfmvg/DBIjTnoUSrPxSV7Z0yZ8ShSVtKNaV/wAY+m7bgtyVQLhB00A1NQ==",
"version": "7.0.1",
"resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-7.0.1.tgz",
"integrity": "sha512-pB/SzrIP2l50ZIYu+yQZyMNmnAcwyYb9R1fVWPRxm4zcUFCY2ign7rcntGFuMXDdd9L2pPNUgoODDk91PzRZuQ==",
"license": "MIT",
"dependencies": {
"postcss-value-parser": "^4.2.0"
@ -1189,13 +1150,13 @@
"node": "^18.12.0 || ^20.9.0 || >=22.0"
},
"peerDependencies": {
"postcss": "^8.4.31"
"postcss": "^8.4.32"
}
},
"node_modules/postcss-normalize-repeat-style": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-7.0.0.tgz",
"integrity": "sha512-o3uSGYH+2q30ieM3ppu9GTjSXIzOrRdCUn8UOMGNw7Af61bmurHTWI87hRybrP6xDHvOe5WlAj3XzN6vEO8jLw==",
"version": "7.0.1",
"resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-7.0.1.tgz",
"integrity": "sha512-NsSQJ8zj8TIDiF0ig44Byo3Jk9e4gNt9x2VIlJudnQQ5DhWAHJPF4Tr1ITwyHio2BUi/I6Iv0HRO7beHYOloYQ==",
"license": "MIT",
"dependencies": {
"postcss-value-parser": "^4.2.0"
@ -1204,13 +1165,13 @@
"node": "^18.12.0 || ^20.9.0 || >=22.0"
},
"peerDependencies": {
"postcss": "^8.4.31"
"postcss": "^8.4.32"
}
},
"node_modules/postcss-normalize-string": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-7.0.0.tgz",
"integrity": "sha512-w/qzL212DFVOpMy3UGyxrND+Kb0fvCiBBujiaONIihq7VvtC7bswjWgKQU/w4VcRyDD8gpfqUiBQ4DUOwEJ6Qg==",
"version": "7.0.1",
"resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-7.0.1.tgz",
"integrity": "sha512-QByrI7hAhsoze992kpbMlJSbZ8FuCEc1OT9EFbZ6HldXNpsdpZr+YXC5di3UEv0+jeZlHbZcoCADgb7a+lPmmQ==",
"license": "MIT",
"dependencies": {
"postcss-value-parser": "^4.2.0"
@ -1219,13 +1180,13 @@
"node": "^18.12.0 || ^20.9.0 || >=22.0"
},
"peerDependencies": {
"postcss": "^8.4.31"
"postcss": "^8.4.32"
}
},
"node_modules/postcss-normalize-timing-functions": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-7.0.0.tgz",
"integrity": "sha512-tNgw3YV0LYoRwg43N3lTe3AEWZ66W7Dh7lVEpJbHoKOuHc1sLrzMLMFjP8SNULHaykzsonUEDbKedv8C+7ej6g==",
"version": "7.0.1",
"resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-7.0.1.tgz",
"integrity": "sha512-bHifyuuSNdKKsnNJ0s8fmfLMlvsQwYVxIoUBnowIVl2ZAdrkYQNGVB4RxjfpvkMjipqvbz0u7feBZybkl/6NJg==",
"license": "MIT",
"dependencies": {
"postcss-value-parser": "^4.2.0"
@ -1234,29 +1195,29 @@
"node": "^18.12.0 || ^20.9.0 || >=22.0"
},
"peerDependencies": {
"postcss": "^8.4.31"
"postcss": "^8.4.32"
}
},
"node_modules/postcss-normalize-unicode": {
"version": "7.0.2",
"resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-7.0.2.tgz",
"integrity": "sha512-ztisabK5C/+ZWBdYC+Y9JCkp3M9qBv/XFvDtSw0d/XwfT3UaKeW/YTm/MD/QrPNxuecia46vkfEhewjwcYFjkg==",
"version": "7.0.3",
"resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-7.0.3.tgz",
"integrity": "sha512-EcoA29LvG3F+EpOh03iqu+tJY3uYYKzArqKJHxDhUYLa2u58aqGq16K6/AOsXD9yqLN8O6y9mmePKN5cx6krOw==",
"license": "MIT",
"dependencies": {
"browserslist": "^4.23.3",
"browserslist": "^4.24.5",
"postcss-value-parser": "^4.2.0"
},
"engines": {
"node": "^18.12.0 || ^20.9.0 || >=22.0"
},
"peerDependencies": {
"postcss": "^8.4.31"
"postcss": "^8.4.32"
}
},
"node_modules/postcss-normalize-url": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-7.0.0.tgz",
"integrity": "sha512-+d7+PpE+jyPX1hDQZYG+NaFD+Nd2ris6r8fPTBAjE8z/U41n/bib3vze8x7rKs5H1uEw5ppe9IojewouHk0klQ==",
"version": "7.0.1",
"resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-7.0.1.tgz",
"integrity": "sha512-sUcD2cWtyK1AOL/82Fwy1aIVm/wwj5SdZkgZ3QiUzSzQQofrbq15jWJ3BA7Z+yVRwamCjJgZJN0I9IS7c6tgeQ==",
"license": "MIT",
"dependencies": {
"postcss-value-parser": "^4.2.0"
@ -1265,13 +1226,13 @@
"node": "^18.12.0 || ^20.9.0 || >=22.0"
},
"peerDependencies": {
"postcss": "^8.4.31"
"postcss": "^8.4.32"
}
},
"node_modules/postcss-normalize-whitespace": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-7.0.0.tgz",
"integrity": "sha512-37/toN4wwZErqohedXYqWgvcHUGlT8O/m2jVkAfAe9Bd4MzRqlBmXrJRePH0e9Wgnz2X7KymTgTOaaFizQe3AQ==",
"version": "7.0.1",
"resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-7.0.1.tgz",
"integrity": "sha512-vsbgFHMFQrJBJKrUFJNZ2pgBeBkC2IvvoHjz1to0/0Xk7sII24T0qFOiJzG6Fu3zJoq/0yI4rKWi7WhApW+EFA==",
"license": "MIT",
"dependencies": {
"postcss-value-parser": "^4.2.0"
@ -1280,45 +1241,45 @@
"node": "^18.12.0 || ^20.9.0 || >=22.0"
},
"peerDependencies": {
"postcss": "^8.4.31"
"postcss": "^8.4.32"
}
},
"node_modules/postcss-ordered-values": {
"version": "7.0.1",
"resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-7.0.1.tgz",
"integrity": "sha512-irWScWRL6nRzYmBOXReIKch75RRhNS86UPUAxXdmW/l0FcAsg0lvAXQCby/1lymxn/o0gVa6Rv/0f03eJOwHxw==",
"version": "7.0.2",
"resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-7.0.2.tgz",
"integrity": "sha512-AMJjt1ECBffF7CEON/Y0rekRLS6KsePU6PRP08UqYW4UGFRnTXNrByUzYK1h8AC7UWTZdQ9O3Oq9kFIhm0SFEw==",
"license": "MIT",
"dependencies": {
"cssnano-utils": "^5.0.0",
"cssnano-utils": "^5.0.1",
"postcss-value-parser": "^4.2.0"
},
"engines": {
"node": "^18.12.0 || ^20.9.0 || >=22.0"
},
"peerDependencies": {
"postcss": "^8.4.31"
"postcss": "^8.4.32"
}
},
"node_modules/postcss-reduce-initial": {
"version": "7.0.2",
"resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-7.0.2.tgz",
"integrity": "sha512-pOnu9zqQww7dEKf62Nuju6JgsW2V0KRNBHxeKohU+JkHd/GAH5uvoObqFLqkeB2n20mr6yrlWDvo5UBU5GnkfA==",
"version": "7.0.3",
"resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-7.0.3.tgz",
"integrity": "sha512-RFvkZaqiWtGMlVjlUHpaxGqEL27lgt+Q2Ixjf83CRAzqdo+TsDyGPtJUbPx2MuYIJ+sCQc2TrOvRnhcXQfgIVA==",
"license": "MIT",
"dependencies": {
"browserslist": "^4.23.3",
"browserslist": "^4.24.5",
"caniuse-api": "^3.0.0"
},
"engines": {
"node": "^18.12.0 || ^20.9.0 || >=22.0"
},
"peerDependencies": {
"postcss": "^8.4.31"
"postcss": "^8.4.32"
}
},
"node_modules/postcss-reduce-transforms": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-7.0.0.tgz",
"integrity": "sha512-pnt1HKKZ07/idH8cpATX/ujMbtOGhUfE+m8gbqwJE05aTaNw8gbo34a2e3if0xc0dlu75sUOiqvwCGY3fzOHew==",
"version": "7.0.1",
"resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-7.0.1.tgz",
"integrity": "sha512-MhyEbfrm+Mlp/36hvZ9mT9DaO7dbncU0CvWI8V93LRkY6IYlu38OPg3FObnuKTUxJ4qA8HpurdQOo5CyqqO76g==",
"license": "MIT",
"dependencies": {
"postcss-value-parser": "^4.2.0"
@ -1327,7 +1288,7 @@
"node": "^18.12.0 || ^20.9.0 || >=22.0"
},
"peerDependencies": {
"postcss": "^8.4.31"
"postcss": "^8.4.32"
}
},
"node_modules/postcss-selector-parser": {
@ -1344,9 +1305,9 @@
}
},
"node_modules/postcss-svgo": {
"version": "7.0.1",
"resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-7.0.1.tgz",
"integrity": "sha512-0WBUlSL4lhD9rA5k1e5D8EN5wCEyZD6HJk0jIvRxl+FDVOMlJ7DePHYWGGVc5QRqrJ3/06FTXM0bxjmJpmTPSA==",
"version": "7.0.2",
"resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-7.0.2.tgz",
"integrity": "sha512-5Dzy66JlnRM6pkdOTF8+cGsB1fnERTE8Nc+Eed++fOWo1hdsBptCsbG8UuJkgtZt75bRtMJIrPeZmtfANixdFA==",
"license": "MIT",
"dependencies": {
"postcss-value-parser": "^4.2.0",
@ -1356,35 +1317,22 @@
"node": "^18.12.0 || ^20.9.0 || >= 18"
},
"peerDependencies": {
"postcss": "^8.4.31"
"postcss": "^8.4.32"
}
},
"node_modules/postcss-unique-selectors": {
"version": "7.0.3",
"resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-7.0.3.tgz",
"integrity": "sha512-J+58u5Ic5T1QjP/LDV9g3Cx4CNOgB5vz+kM6+OxHHhFACdcDeKhBXjQmB7fnIZM12YSTvsL0Opwco83DmacW2g==",
"version": "7.0.4",
"resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-7.0.4.tgz",
"integrity": "sha512-pmlZjsmEAG7cHd7uK3ZiNSW6otSZ13RHuZ/4cDN/bVglS5EpF2r2oxY99SuOHa8m7AWoBCelTS3JPpzsIs8skQ==",
"license": "MIT",
"dependencies": {
"postcss-selector-parser": "^6.1.2"
"postcss-selector-parser": "^7.1.0"
},
"engines": {
"node": "^18.12.0 || ^20.9.0 || >=22.0"
},
"peerDependencies": {
"postcss": "^8.4.31"
}
},
"node_modules/postcss-unique-selectors/node_modules/postcss-selector-parser": {
"version": "6.1.2",
"resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz",
"integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==",
"license": "MIT",
"dependencies": {
"cssesc": "^3.0.0",
"util-deprecate": "^1.0.2"
},
"engines": {
"node": ">=4"
"postcss": "^8.4.32"
}
},
"node_modules/postcss-value-parser": {
@ -1431,32 +1379,19 @@
}
},
"node_modules/stylehacks": {
"version": "7.0.4",
"resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-7.0.4.tgz",
"integrity": "sha512-i4zfNrGMt9SB4xRK9L83rlsFCgdGANfeDAYacO1pkqcE7cRHPdWHwnKZVz7WY17Veq/FvyYsRAU++Ga+qDFIww==",
"version": "7.0.5",
"resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-7.0.5.tgz",
"integrity": "sha512-5kNb7V37BNf0Q3w+1pxfa+oiNPS++/b4Jil9e/kPDgrk1zjEd6uR7SZeJiYaLYH6RRSC1XX2/37OTeU/4FvuIA==",
"license": "MIT",
"dependencies": {
"browserslist": "^4.23.3",
"postcss-selector-parser": "^6.1.2"
"browserslist": "^4.24.5",
"postcss-selector-parser": "^7.1.0"
},
"engines": {
"node": "^18.12.0 || ^20.9.0 || >=22.0"
},
"peerDependencies": {
"postcss": "^8.4.31"
}
},
"node_modules/stylehacks/node_modules/postcss-selector-parser": {
"version": "6.1.2",
"resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz",
"integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==",
"license": "MIT",
"dependencies": {
"cssesc": "^3.0.0",
"util-deprecate": "^1.0.2"
},
"engines": {
"node": ">=4"
"postcss": "^8.4.32"
}
},
"node_modules/svgo": {
@ -1494,13 +1429,13 @@
}
},
"node_modules/terser": {
"version": "5.39.0",
"resolved": "https://registry.npmjs.org/terser/-/terser-5.39.0.tgz",
"integrity": "sha512-LBAhFyLho16harJoWMg/nZsQYgTrg5jXOn2nCYjRUcZZEdE3qa2zb8QEDRUGVZBW4rlazf2fxkg8tztybTaqWw==",
"version": "5.42.0",
"resolved": "https://registry.npmjs.org/terser/-/terser-5.42.0.tgz",
"integrity": "sha512-UYCvU9YQW2f/Vwl+P0GfhxJxbUGLwd+5QrrGgLajzWAtC/23AX0vcise32kkP7Eu0Wu9VlzzHAXkLObgjQfFlQ==",
"license": "BSD-2-Clause",
"dependencies": {
"@jridgewell/source-map": "^0.3.3",
"acorn": "^8.8.2",
"acorn": "^8.14.0",
"commander": "^2.20.0",
"source-map-support": "~0.5.20"
},

View file

@ -87,48 +87,54 @@ if(!empty($searchQuery)) {
$forumTopicInfos = $msz->forumCtx->topics->getTopics(categoryInfo: $forumCategoryIds, deleted: false, searchQuery: $searchQueryEvaluated);
$ftopics = [];
foreach($forumTopicInfos as $topicInfo) {
$ftopics[] = $topic = new stdClass;
$topic->info = $topicInfo;
$topic->unread = $msz->forumCtx->topics->checkTopicUnread($topicInfo, $currentUser);
$topic->participated = $msz->forumCtx->topics->checkTopicParticipated($topicInfo, $currentUser);
$topic->lastPost = new stdClass;
foreach($forumTopicInfos as $topic) {
$info = [
'topic' => $topic,
'unread' => $msz->forumCtx->topics->checkTopicUnread($topic, $currentUser),
'participated' => $msz->forumCtx->topics->checkTopicParticipated($topic, $currentUser),
];
if($topicInfo->userId !== null) {
$topic->user = $msz->usersCtx->getUserInfo($topicInfo->userId, 'id');
$topic->colour = $msz->usersCtx->getUserColour($topic->user);
if($topic->userId === null) {
$info['user'] = $info['colour'] = null;
} else {
$info['user'] = $msz->usersCtx->getUserInfo($topic->userId, 'id');
$info['colour'] = $msz->usersCtx->getUserColour($info['user']);
}
try {
$topic->lastPost->info = $lastPostInfo = $msz->forumCtx->posts->getPost(
topicInfo: $topicInfo,
$postInfo = $msz->forumCtx->posts->getPost(
topicInfo: $topic,
getLast: true,
deleted: $topicInfo->deleted ? null : false,
deleted: $topic->deleted ? null : false,
);
$info['activity'] = ['post' => $postInfo];
if($lastPostInfo->userId !== null) {
$topic->lastPost->user = $msz->usersCtx->getUserInfo($lastPostInfo->userId, 'id');
$topic->lastPost->colour = $msz->usersCtx->getUserColour($topic->lastPost->user);
if($postInfo->userId === null) {
$info['activity']['user'] = $info['activity']['colour'] = null;
} else {
$info['activity']['user'] = $msz->usersCtx->getUserInfo($postInfo->userId, 'id');
$info['activity']['colour'] = $msz->usersCtx->getUserColour($info['activity']['user']);
}
} catch(RuntimeException $ex) {}
} catch(RuntimeException $ex) {
$info['activity'] = null;
}
$ftopics[] = $info;
}
$forumPostInfos = $msz->forumCtx->posts->getPosts(categoryInfo: $forumCategoryIds, searchQuery: $searchQueryEvaluated);
$fposts = [];
foreach($forumPostInfos as $postInfo) {
$fposts[] = $post = new stdClass;
$post->info = $postInfo;
foreach($forumPostInfos as $post) {
$info = ['post' => $post];
if($postInfo->userId !== null) {
$post->user = $msz->usersCtx->getUserInfo($postInfo->userId, 'id');
$post->colour = $msz->usersCtx->getUserColour($post->user);
$post->postsCount = $msz->forumCtx->countTotalUserPosts($post->user);
if($post->userId !== null) {
$info['user'] = $msz->usersCtx->getUserInfo($post->userId, 'id');
$info['colour'] = $msz->usersCtx->getUserColour($info['user']);
$info['posts_count'] = $msz->forumCtx->countTotalUserPosts($info['user']);
}
// can't be bothered sorry
$post->isOriginalPost = false;
$post->isOriginalPoster = false;
$fposts[] = $info;
}
}

View file

@ -128,7 +128,7 @@ if(isset($_POST['action']) && is_string($_POST['action'])) {
$tmpFiles = [];
try {
$tmpFiles[] = db_to_zip($archive, $userInfo, 'apps', ['app_id:s', 'user_id:s:n', 'app_name:s', 'app_summary:s', 'app_website:s', 'app_type:s', 'app_access_lifetime:i:n', 'app_refresh_lifetime:i:n', 'app_client_id:s', 'app_client_secret:n', 'app_created:t', 'app_updated:t', 'app_deleted:t:n']);
$tmpFiles[] = db_to_zip($archive, $userInfo, 'apps', ['app_id:s', 'user_id:s:n', 'app_name:s', 'app_summary:s', 'app_website:s', 'app_type:s', 'app_access_lifetime:i:n', 'app_refresh_lifetime:i:n', 'app_client_secret:n', 'app_created:t', 'app_updated:t', 'app_deleted:t:n']);
$tmpFiles[] = db_to_zip($archive, $userInfo, 'audit_log', ['log_id:i', 'user_id:s:n', 'log_action:s', 'log_params:j', 'log_created:t', 'log_remote_addr:a:n', 'log_country:s']);
$tmpFiles[] = db_to_zip($archive, $userInfo, 'auth_tfa', ['user_id:s', 'tfa_token:n', 'tfa_created:t']);
$tmpFiles[] = db_to_zip($archive, $userInfo, 'changelog_changes', ['change_id:s', 'user_id:s:n', 'change_action:s:n', 'change_created:t', 'change_log:s', 'change_text:s:n']);

View file

@ -14,7 +14,6 @@ class AppInfo {
public private(set) AppType $type,
public private(set) ?int $accessTokenLifetime,
public private(set) ?int $refreshTokenLifetime,
public private(set) string $clientId,
#[\SensitiveParameter] private string $clientSecret,
public private(set) int $createdTime,
public private(set) int $updatedTime,
@ -31,11 +30,10 @@ class AppInfo {
type: AppType::tryFrom($result->getString(5)) ?? AppType::Public,
accessTokenLifetime: $result->getIntegerOrNull(6),
refreshTokenLifetime: $result->getIntegerOrNull(7),
clientId: $result->getString(8),
clientSecret: $result->getString(9),
createdTime: $result->getInteger(10),
updatedTime: $result->getInteger(11),
deletedTime: $result->getIntegerOrNull(12),
clientSecret: $result->getString(8),
createdTime: $result->getInteger(9),
updatedTime: $result->getInteger(10),
deletedTime: $result->getIntegerOrNull(11),
);
}
@ -57,10 +55,6 @@ class AppInfo {
get => $this->type === AppType::Trusted;
}
public bool $issueRefreshToken {
get => $this->refreshTokenLifetime === null ? $this->confidential : $this->refreshTokenLifetime > 0;
}
public function verifyClientSecret(#[\SensitiveParameter] string $input): bool {
return $this->confidential && password_verify($input, $this->clientSecret);
}

View file

@ -3,13 +3,17 @@ namespace Misuzu\Apps;
use RuntimeException;
use Index\Db\DbConnection;
use Index\Snowflake\RandomSnowflake;
class AppsContext {
public private(set) AppsData $apps;
public private(set) ScopesData $scopes;
public function __construct(DbConnection $dbConn) {
$this->apps = new AppsData($dbConn);
public function __construct(
DbConnection $dbConn,
RandomSnowflake $snowflake,
) {
$this->apps = new AppsData($dbConn, $snowflake);
$this->scopes = new ScopesData($dbConn);
}
@ -38,7 +42,7 @@ class AppsContext {
bool $breakOnFail = true
): array {
if(is_string($appInfo))
$appInfo = $this->apps->getAppInfo(appId: $appInfo, deleted: false);
$appInfo = $this->apps->getAppInfo($appInfo, deleted: false);
$infos = [];

Some files were not shown because too many files have changed in this diff Show more