diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 080258416d..f026a351c2 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -26,11 +26,11 @@ jobs: node-version: 20 - name: Install Node.js dependencies - run: npm install + run: npm ci - - name: Run tests + - name: Run Lint shell: bash - run: npm test + run: npm run lint - name: Jekyll Build run: bundle exec jekyll build diff --git a/.gitignore b/.gitignore index 8323fd83be..499bb80378 100644 --- a/.gitignore +++ b/.gitignore @@ -10,3 +10,5 @@ _site .jekyll-metadata vendor .bundle + +.stylelintcache \ No newline at end of file diff --git a/.stylelintignore b/.stylelintignore new file mode 100644 index 0000000000..9695bfc293 --- /dev/null +++ b/.stylelintignore @@ -0,0 +1,4 @@ +css/font-awesome.min.css + +_site +vendor \ No newline at end of file diff --git a/.stylelintrc.mjs b/.stylelintrc.mjs new file mode 100644 index 0000000000..90bcc75011 --- /dev/null +++ b/.stylelintrc.mjs @@ -0,0 +1,12 @@ + +export default { + extends: ['stylelint-config-standard'], + plugins: ['stylelint-order'], + rules: { + // Enforces the order of the CSS properties to be in alphabetical order + 'order/properties-alphabetical-order': true, + 'no-descending-specificity': null, + // Disables the Level-4 Media Queries; Since they're more exotic and less known + 'media-feature-range-notation': 'prefix', + }, +}; \ No newline at end of file diff --git a/css/langs/th.css b/css/langs/th.css index 98db49b0af..44b6d7f6cd 100644 --- a/css/langs/th.css +++ b/css/langs/th.css @@ -4,16 +4,16 @@ } #description .description { - position: relative; - top: -5px; - font: 100 4.1em "TH SarabunNew", "Helvetica Neue", "Open Sans", sans-serif; color: #aeaeae; + font: 100 4.1em "TH SarabunNew", "Helvetica Neue", "Open Sans", sans-serif; line-height: .87; margin: unset; + position: relative; + top: -5px; } /* Non-English pages use pre and code tags for code blocks */ .non-en-doc .page pre[class*="language-"] { - padding-top: 10px !important; padding-bottom: 10px !important; + padding-top: 10px !important; } \ No newline at end of file diff --git a/css/search.css b/css/search.css index cb60915c73..4547b6bbe8 100644 --- a/css/search.css +++ b/css/search.css @@ -6,8 +6,8 @@ } .algolia-autocomplete { - min-width: 12em; max-width: 12em; + min-width: 12em; top: -0.2em; } diff --git a/css/sintax.css b/css/sintax.css index e33e6fbee9..8f760e0917 100644 --- a/css/sintax.css +++ b/css/sintax.css @@ -24,8 +24,8 @@ .highlight table pre { margin: 0; } .highlight, .highlight .w { - color: #24292f; background-color: var(--code-bg); + color: #24292f; } .highlight .k, .highlight .kd, .highlight .kn, .highlight .kp, .highlight .kr, .highlight .kt, .highlight .kv { @@ -37,8 +37,8 @@ } .highlight .gd { - color: var(--red-darker); background-color: #ffebe9; + color: var(--red-darker); } .highlight .nb, @@ -57,8 +57,8 @@ } .highlight .ges { - font-weight: bold; font-style: italic; + font-weight: bold; } .highlight .l, @@ -95,20 +95,24 @@ .highlight .gh { font-weight: bold; } + .highlight .gu { font-weight: bold; } + .highlight .s, .highlight .sa, .highlight .sc, .highlight .sd, .highlight .se, .highlight .sh, .highlight .sx, .highlight .ss { color: var(--blue-darker); } + .highlight .nd, .highlight .nf, .highlight .fm { color: var(--pupple); } .highlight .err { - color: #f6f8fa; background-color: #82071e; + color: #f6f8fa; } + .highlight .c, .highlight .gl .highlight .ch, diff --git a/css/style.css b/css/style.css index 857a252dba..b4dd1d36b7 100644 --- a/css/style.css +++ b/css/style.css @@ -4,11 +4,11 @@ } body { - font: 400 14px/1.6 "Open Sans", sans-serif; background: var(--bg); + color: var(--fg); + font: 400 14px/1.6 "Open Sans", sans-serif; margin: 0; padding: 0; - color: var(--fg); } body.no-scroll{ @@ -25,9 +25,9 @@ h1 { } h1, h2, h3 { - margin: 5px 0; color: var(--card-fg); -webkit-font-smoothing: antialiased; + margin: 5px 0; } @@ -40,13 +40,13 @@ h1, h2, h3 { } p em { - font-weight: bold; color: var(--card-fg); + font-weight: bold; } p { - margin: 10px 0; line-height: 1.35em; + margin: 10px 0; } strong, th { @@ -54,20 +54,20 @@ strong, th { } #overlay { - position: fixed; + background-color: var(--bg); + display: none; + height: 100%; left: 0; - top: 0; opacity: 0.6; + position: fixed; + top: 0; width: 100%; - height: 100%; - display: none; z-index: 1; - background-color: var(--bg); } main.home { - max-width: 75rem; margin: 40px auto 2%; + max-width: 75rem; padding-inline: 5%; } @@ -88,29 +88,30 @@ main.home { } #homepage-leftpane { - min-width: 500px; - margin-right: 30px; font-size: 90%; + margin-right: 30px; + min-width: 500px; padding-top: 13px; } #homepage-rightpane { min-width: 500px; - padding: 25px 30px 0px 0px; + padding: 25px 30px 0 0; } #homepage-rightpane iframe { - min-width: 100%; min-height: 273px; + min-width: 100%; } #announcements { - margin-top: 40px; - padding: 0 16px; background: var(--notice-bg); border: 1px solid var(--notice-accent); border-radius: 3px; font-size: 0.9em; + margin-top: 40px; + padding: 0 16px; + & a { color: var(--notice-accent); text-decoration: underline; @@ -136,31 +137,31 @@ main.home { } .announcement-title { - font-weight: bold; - margin-bottom: 11px; - display: flex; align-items: center; - column-gap: 8px + column-gap: 8px; + display: flex; + font-weight: bold; + margin-bottom: 11px } #install-command { - font-family: Consolas, Monaco, "Andale Mono", monospace; - padding: 5px 10px; border: 1px solid var(--border); border-radius: 3px; + font-family: Consolas, Monaco, "Andale Mono", monospace; max-width: 375px; + padding: 5px 10px; } .content { - margin: 153px 0 7%; display: flex; flex-direction: row-reverse; + margin: 153px 0 7%; } .content main { - padding-inline: 16px; - max-width: 900px; margin-inline: auto; + max-width: 900px; + padding-inline: 16px; } .flex-row-content { @@ -181,24 +182,24 @@ span.block-section { } #api-doc > h3 { - padding-top: 10px; - padding-bottom: 5px; - font-weight: bold; + color: var(--menu-grey); font-size: 24px; - color: var(--menu-grey) + font-weight: bold; + padding-bottom: 5px; + padding-top: 10px } #api-doc h2 { - font-weight: bold; font-size: 29px; + font-weight: bold; margin: 40px 0 20px; } #api-doc section h3 { - padding-top: 10px; - padding-bottom: 5px; - font-weight: bold; font-size: 18px; + font-weight: bold; + padding-bottom: 5px; + padding-top: 10px; } #api-doc h4 { @@ -207,9 +208,9 @@ span.block-section { } #api-doc h5 { + color: var(--menu-grey); font-size: 14px; - font-weight: bold; - color: var(--menu-grey) + font-weight: bold } /* scroll */ @@ -220,10 +221,10 @@ span.block-section { } *::-webkit-scrollbar-thumb { - border-radius: 8px; - border: 4px solid transparent; background-clip: content-box; background-color: var(--menu-grey); + border: 4px solid transparent; + border-radius: 8px; } *::-webkit-scrollbar-thumb:hover { @@ -264,10 +265,10 @@ a { } #logo .express { + color: var(--card-fg); display: block; font: 25px "Helvetica Neue", "Open Sans", sans-serif; font-weight: 100; - color: var(--card-fg); } #description .express { @@ -283,25 +284,25 @@ a { } #description .express a#express-version { - font-size: 0.2em; - margin-left: 0.5em; color: var(--link); + font-size: 0.2em; font-weight: 400; + margin-left: 0.5em; text-decoration: underline; } #description { - margin-bottom: 43px; -webkit-font-smoothing: antialiased; + margin-bottom: 43px; } #description .description { - position: relative; - top: -5px; - font: 100 4.1em "Helvetica Neue", "Open Sans", sans-serif; color: var(--menu-grey); + font: 100 4.1em "Helvetica Neue", "Open Sans", sans-serif; line-height: .87; - margin: unset + margin: unset; + position: relative; + top: -5px } #description .description a { @@ -310,8 +311,8 @@ a { } #doc-langs { - text-align: center; font-size: 12px; + text-align: center; } #doc-langs p { @@ -319,24 +320,24 @@ a { } .header-right { - display: flex; align-items: center; + display: flex; gap: 20px; } header { - position: fixed; - top: 0; - left: 0; + align-items: center; background: var(--card-bg); - width: 100%; - height: 57px; + border-bottom: 1px solid var(--hover-fg); display: flex; - align-items: center; + height: 57px; justify-content: space-between; + left: 0; padding-inline: 25px; + position: fixed; + top: 0; + width: 100%; z-index: 100; - border-bottom: 1px solid var(--hover-fg); } .scroll header { @@ -347,18 +348,18 @@ header { code { background-color: var(--code-bg); + border-radius: 6px; color: var(--card-fg); - margin-block: -.125rem; font-size: 13px; + margin-block: -.125rem; padding: .125rem .375rem; - border-radius: 6px; } pre { - padding: 16px; - border-radius: 3px; - border: 1px solid #ddd; background-color: var(--code-bg); + border: 1px solid #ddd; + border-radius: 3px; + padding: 16px; } pre code { @@ -368,39 +369,39 @@ pre code { /* top button */ .scroll #top { - opacity: .5; - display: initial + display: initial; + opacity: .5 } .scroll #top:hover { opacity: 1; } -#top { - line-height: 0; +#top { + background-color: var(--card-bg); + border: 1px solid var(--border); border-radius: 2px; - position: fixed; bottom: 15px; - right: 15px; + color: var(--card-fg); + display: none; + line-height: 0; + opacity: 0; padding: 8px; + position: fixed; + right: 15px; text-decoration: none; - opacity: 0; transition: opacity 300ms; - border: 1px solid var(--border); - background-color: var(--card-bg); - color: var(--card-fg); - display: none; } /* clearfix */ -.clearfix:after { +.clearfix::after { + clear: both; content: "."; display: block; - clear: both; - visibility: hidden; - line-height: 0; height: 0; + line-height: 0; + visibility: hidden; } .clearfix { @@ -419,23 +420,22 @@ html[xmlns] .clearfix { #boxes { display: grid; + gap: 20px 50px; grid-template-columns: repeat(4, 1fr); - row-gap: 20px; - column-gap: 50px; margin-top: 30px; } #boxes h2 { - line-height: 1.25em; - color: var(--card-fg); background: none; + color: var(--card-fg); + line-height: 1.25em; margin-top: 0; padding-top: 0; } #boxes h2 a { - text-decoration: none; color: var(--card-fg); + text-decoration: none; } #boxes div { @@ -445,17 +445,17 @@ html[xmlns] .clearfix { /* doc specific */ .doctable, table { - margin: 1em 1em 1em 0; border: 1px solid var(--border); border-collapse: collapse; + margin: 1em 1em 1em 0; width: 100%; } .doctable td, .doctable th, table td, table th { - padding: 7px; + border: 1px solid var(--border); line-height: 120%; + padding: 7px; vertical-align: top; - border: 1px solid var(--border); } .doctable tr th, table tr th { @@ -478,14 +478,14 @@ html[xmlns] .clearfix { /* doc boxes */ .doc-box { - padding: 16px; - color: var(--box-fg); border-radius: 0 6px 6px 0; + color: var(--box-fg); margin-bottom: 1rem; + padding: 16px; } .doc-box p { - margin: 0 0 8px 0; + margin: 0 0 8px; } .doc-box p:last-child { @@ -524,22 +524,26 @@ html[xmlns] .clearfix { border-left: 3px solid var(--warn-accent); } +.doc-warn-title { + color: var(--warn-accent); +} + .doc-warn a { color: var(--warn-accent); text-decoration: underline; } #i18n-notice-box { - margin: 100px 3% 20px 3%; + margin: 100px 3% 20px; position: relative; } #close-i18n-notice-box { - position: absolute; - top: 3px; - right: 4px; color: var(--notice-accent); cursor: pointer; + position: absolute; + right: 4px; + top: 3px; } /* general */ @@ -549,28 +553,28 @@ html[xmlns] .clearfix { } .button { - display: block; - padding: 3px 5px; border-radius: 3px; - cursor: pointer; color: var(--box-fg); + cursor: pointer; + display: block; + padding: 3px 5px; } a.edit-github-btn{ + align-items: center; + border-radius: 0.3rem; display: flex; gap: 0.5rem; - align-items: center; - width: fit-content; padding: 0.5rem; - border-radius: 0.3rem; + width: fit-content; span { height: 20px; } &:is(:hover, :active, :focus) { - color: var(--fg); background-color: var(--hover-bg); + color: var(--fg); outline: 1px solid var(--card-fg); } } @@ -585,25 +589,25 @@ pre, code { } footer { - font-size: 12px; - margin: 60px 5% 30px; display: flex; - gap: 24px; flex-direction: column; + font-size: 12px; + gap: 24px; + margin: 60px 5% 30px; } #footer-content { - width: 100%; - justify-content: space-between; - gap: 32px; display: flex; + gap: 32px; + justify-content: space-between; + width: 100%; } #footer-copyright { display: flex; flex-direction: column; - justify-content: center; gap: 20px; + justify-content: center; } #footer-copyright a { @@ -617,10 +621,9 @@ footer { #footer-policy{ display: flex; flex-wrap: wrap; - column-gap: 20px; - row-gap: 8px; - justify-content: center; font-size: 15px; + gap: 8px 20px; + justify-content: center; } #footer-links{ @@ -630,8 +633,8 @@ footer { .footer-social { display: flex; - gap: 20px; font-size: 20px; + gap: 20px; } /* navigation */ @@ -640,9 +643,67 @@ footer { } #navbar { - line-height: 30px; - display: flex; align-items: center; + display: flex; + line-height: 30px; + + .ds-dropdown-menu .ds-dataset-1 { + background-color: var(--bg); + + .ds-suggestions { + /* background-color: var(--bg); */ + color: var(--fg); + } + + .ds-suggestion a { + background-color: var(--bg); + color: var(--fg); + } + + /* stylelint-disable-next-line selector-class-pattern */ + .algolia-docsearch-suggestion--category-header { + color: var(--fg); + } + + /* stylelint-disable-next-line selector-class-pattern */ + .algolia-docsearch-suggestion--wrapper { + background-color: var(--bg); + + /* stylelint-disable-next-line selector-class-pattern */ + .algolia-docsearch-suggestion--subcategory-column { + color: var(--menu-grey); + } + + /* stylelint-disable-next-line selector-class-pattern */ + .algolia-docsearch-suggestion--title, + /* stylelint-disable-next-line selector-class-pattern */ + .algolia-docsearch-suggestion--text { + color: var(--fg); + } + + /* stylelint-disable-next-line selector-class-pattern */ + .algolia-docsearch-suggestion--highlight { + background-color: initial; + color: var(--link); + } + } + + .algolia-docsearch-suggestion { + background-color: initial; + } + + /* stylelint-disable-next-line selector-class-pattern */ + .algolia-docsearch-suggestion--content .algolia-docsearch-suggestion--no-results{ + background-color: initial; + } + } + + /* stylelint-disable-next-line selector-class-pattern */ + .ds-suggestion.ds-cursor .algolia-docsearch-suggestion--title, + /* stylelint-disable-next-line selector-class-pattern */ + .ds-suggestion.ds-cursor .algolia-docsearch-suggestion--content { + background-color: var(--hover-bg); + } } #navbar a { @@ -661,37 +722,35 @@ footer { #navmenu { display: flex; gap: 20px; -} - -/* content doc */ - -#blog-doc { - padding: 0.5rem; - width: fit-content; + margin: 0; + margin-right: 15px; + padding: 0; + right: 0; + z-index: 1000; } /* dropdown menu */ .submenu { - position: relative; list-style: none; + position: relative; } .submenu-content { - position: absolute; - top: 100%; + background-color: var(--bg); + border: 1px solid var(--border); + border-radius: 12px; + box-shadow: 1px 2px var(--hover-fg); + display: none; left: 50%; - transform: translate(-50%); margin: auto; - box-shadow: 1px 2px var(--hover-fg); - z-index: 1000; min-width: max-content; - width: fit-content; - border: 1px solid var(--border); - border-radius: 12px; - background-color: var(--bg); padding: 0; - display: none; + position: absolute; + top: 100%; + transform: translate(-50%); + width: fit-content; + z-index: 1000; } .submenu-content li:first-child a { @@ -699,24 +758,16 @@ footer { } .submenu-content li:last-child a { - border-radius: 0px 0px 12px 12px; + border-radius: 0 0 12px 12px; } .submenu.open .submenu-content { display: initial; } -#navmenu { - padding: 0; - margin: 0; - right: 0px; - z-index: 1000; - margin-right: 15px; -} - .submenu-content li a { display: block; - padding: 2px 20px 2px 20px; + padding: 2px 20px; } #navbar .submenu-content a:hover { @@ -737,24 +788,24 @@ footer { } #menu { - min-width: 13rem; - padding-inline: 0.5rem; font-size: 1rem; - overflow-y: auto; + margin-block: 0; max-height: 65vh; + min-width: 13rem; + overflow-y: auto; padding-block-end: 0.5rem; - margin-block: 0; + padding-inline: 0.5rem; } #menu.blog-side-menu { - max-width: 20rem; max-height: fit-content; + max-width: 20rem; } #menu ul a, #menu > li > a { - display: block; color: var(--menu-grey); + display: block; padding-inline: 0.5rem; text-decoration: none; @@ -772,9 +823,9 @@ footer { } #menu em { - font-weight: bold; color: var(--menu-em); font-size: 1rem; + font-weight: bold; } #menu li { @@ -786,27 +837,27 @@ footer { #menu ul, ul#side-menu { display: none; - opacity: 0; height: 0; + opacity: 0; overflow: hidden; } #menu ul.active, ul#side-menu.active { - height: auto; - padding-inline: 0.5rem; display: block; + height: auto; opacity: 1; padding-block: 0.5rem; + padding-inline: 0.5rem; } #menu > li > a { - font-weight: bold; font-size: 1rem; + font-weight: bold; padding-inline-start: 1rem; } -/* can't find this in proj*/ +/* can't find this in proj */ h2 a { color: var(--card-fg) !important; } @@ -822,20 +873,24 @@ h2 a { .algolia-autocomplete { max-width: 9em; + > input { - color: var(--fg); background-color: var(--bg); + color: var(--fg); } + > input::placeholder { color: var(--fg); } + #q { - display: initial; - border-radius: 8px; border: 1px solid var(--border); - transition: color .3s ease; - padding-inline: 12px; + border-radius: 8px; + display: initial; outline: none; + padding-inline: 12px; + transition: color .3s ease; + &:focus-visible, &:focus { border-color: var(--hover-border); @@ -844,61 +899,13 @@ h2 a { } } - #navbar { - .ds-dropdown-menu .ds-dataset-1 { - background-color: var(--bg); - .ds-suggestions { - /* background-color: var(--bg); */ - color: var(--fg); - } - .ds-suggestion a { - background-color: var(--bg); - color: var(--fg); - } - .ds-suggestion a { - background-color: var(--bg); - color: var(--fg); - } - .algolia-docsearch-suggestion--category-header { - color: var(--fg); - } - .algolia-docsearch-suggestion--wrapper { - background-color: var(--bg); - .algolia-docsearch-suggestion--subcategory-column { - color: var(--menu-grey); - - } - .algolia-docsearch-suggestion--title, - .algolia-docsearch-suggestion--text { - color: var(--fg); - } - .algolia-docsearch-suggestion--highlight { - color: var(--link); - background-color: initial; - } - } - .algolia-docsearch-suggestion { - background-color: initial; - } - .algolia-docsearch-suggestion--content .algolia-docsearch-suggestion--no-results{ - background-color: initial; - } - - } - .ds-suggestion.ds-cursor .algolia-docsearch-suggestion--title, - .ds-suggestion.ds-cursor .algolia-docsearch-suggestion--content { - background-color: var(--hover-bg); - } - } - - .content-404 { + display: flex; + flex-direction: column; height: 70vh; + justify-content: center; padding: 153px 32px 7%; text-align: center; - display: flex; - justify-content: center; - flex-direction: column; } .content-404 p { @@ -915,13 +922,14 @@ h2 a { /* toc title */ .toc-heading { - display: block; cursor: default; + display: block; padding-inline-start: 1rem; + & > em { - font-weight: bold; color: var(--menu-em); font-size: 1rem; + font-weight: bold; } } @@ -929,16 +937,16 @@ h2 a { /* TOC btn */ #menu-toggle { + background-color: #fff; + border: 1px solid #000; + border-radius: 0.3rem; + color: #000; cursor: pointer; display: none; font-size: 1rem; - padding: 0.5rem; opacity: 0; + padding: 0.5rem; width: fit-content; - border: 1px solid #000; - border-radius: 0.3rem; - color: #000; - background-color: #fff; &:is(:hover, :active, :focus) { background-color: #ebf2f5; @@ -960,29 +968,33 @@ h2 a { #home-content { flex-direction: column; + margin: 60px 0 0 5%; + padding-right: 5%; } #install-command { display: none; + margin-right: 5%; + width: 100%; } #home-content .pane { - min-width: auto; font-size: 74%; + min-width: auto; } #homepage-leftpane { - padding-top: 0px; + padding-top: 0; } #homepage-rightpane { - padding-top: 0; padding-right: 0; + padding-top: 0; } .table-scroller { - width: 100%; overflow: scroll; + width: 100%; } code { @@ -1011,13 +1023,8 @@ h2 a { h4 { font-size: 16px; - line-height: 18px; font-weight: normal; - } - - #home-content { - margin: 60px 0 0 5%; - padding-right: 5%; + line-height: 18px; } #description { @@ -1030,19 +1037,14 @@ h2 a { #description .description { font-size: 3em; - line-height: .9em; font-weight: 200; - } - - #install-command { - width: 100%; - margin-right: 5%; + line-height: .9em; } #logo { + margin-left: 60px; position: static; width: 100%; - margin-left: 60px; } #logo a { @@ -1052,8 +1054,8 @@ h2 a { } #logo .express { - margin-top: 0px; font-weight: bold; + margin-top: 0; } #home-menu { @@ -1076,9 +1078,9 @@ h2 a { } #footer-copyright > a { - width: 100%; display: flex; justify-content: center; + width: 100%; } #doc-langs { @@ -1086,8 +1088,8 @@ h2 a { } .header-right { - display: flex; align-items: center; + display: flex; gap: 8px; margin-right: -10px; } @@ -1106,8 +1108,8 @@ h2 a { #language-picker-menu { display: block; position: absolute; - top: 0; right: 0; + top: 0; width: 100%; z-index: 1000; } @@ -1116,9 +1118,9 @@ h2 a { /* TOC responsive */ @media all and (max-width: 800px) { .content { - margin-inline: 0.5rem; - margin-block-start: 100px; flex-direction: column; + margin-block-start: 100px; + margin-inline: 0.5rem; } #api-doc, @@ -1133,29 +1135,27 @@ h2 a { flex-direction: column; gap: 0; padding: 1rem; + width: 100%; + } #menu { + background-color: var(--card-bg); display: none; - opacity: 0; max-height: 0; - background-color: var(--card-bg); min-width: 100%; + opacity: 0; } #menu.open { + border-bottom-right-radius: 0.5rem; + border-left: 2px solid var(--border); + border-top-right-radius: 0.5rem; display: block; - opacity: 1; + margin-top: 0.3rem; max-height: 35vh; + opacity: 1; padding-inline: 1rem; - border-left: 2px solid var(--border); - margin-top: 0.3rem; - border-bottom-right-radius: 0.5rem; - border-top-right-radius: 0.5rem; - } - - .toc-container { - width: 100%; } #menu-toggle.show { @@ -1166,17 +1166,18 @@ h2 a { #menu > li > a, #menu ul a { padding: 0.5rem; + &:is(:hover,:active,:focus) { background: var(--hover-bg); } } #menu li ul li > em { - font-size: 0.8rem; - padding-inline: 1rem; - padding-block: 0.3rem; background-color: var(--hover-bg); border-radius: 0.3rem; + font-size: 0.8rem; + padding-block: 0.3rem; + padding-inline: 1rem; } .toc-heading{ @@ -1203,7 +1204,6 @@ h2 a { @media print { - header { position: absolute; } @@ -1218,117 +1218,138 @@ h2 a { .callout {position: relative;} #mw-fig { + border: 0; border-collapse: separate; + margin-bottom: 20px; padding: 0; - border: 0; - width: 960px; - margin-bottom: 20px;} + width: 960px;} + #mw-fig-imgcell { - margin: 0; - padding: 0px; border: 0; + margin: 0; + padding: 0; width: 410px; } + #mw-fig-img { - margin: 0px; - padding: 0px; - width: 410px; height: 308px; + margin: 0; + padding: 0; + width: 410px; } .mw-fig-callouts { + border: 0; margin: 0; padding: 0 0 0 5px; - border: 0; width: 550px; } -/* Blog page styles*/ +/* Blog page styles */ #blog-doc { margin: 0 1rem; + padding: 0.5rem; + width: fit-content; + @media all and (max-width: 800px) { margin: 0; } } + #blog-doc:has(> h1#express-blog), #blog-doc:has(> h1#write-a-blog-post) { min-height: 300px; } + #blog-doc .blog-details ~ p > img { - width: 200px; float: right; margin: 0.5rem; + width: 200px; } + #blog-doc p { font-size: 1.1em; } + .blog-posts { display: flex; flex-direction: column; row-gap: 10px; } + .blog-post { - width: 100%; background-color: var(--card-bg); + border: 1px solid var(--border); + border-radius: 5px; + box-shadow: 2px 3px var(--hover-fg); display: flex; - padding: 10px; flex-direction: column; justify-content: space-between; - border-radius: 5px; - border: 1px solid var(--border); - box-shadow: 2px 3px var(--hover-fg); + padding: 10px; transition: 0.3s; + width: 100%; } + .blog-post:hover { background-color: var(--hover-bg); border: 1px solid var(--hover-border); box-shadow: 2px 3px var(--menu-grey); } + .blog-post img { - max-width: 100%; max-height: 100%; + max-width: 100%; object-fit: cover; } + .blog-post .blog-details { display: flex; flex-direction: column; } + .blog-details div:first-child { margin-bottom: 5px; } + .blog-tag { font-size: 12px; } + .blog-title { font-size: 1.3rem; - line-height: 1.5rem; font-weight: 500; + line-height: 1.5rem; padding-right: .2em; } + .blog-title a { color: var(--card-fg) } + .blog-excerpt { font-size: .75rem; } + .blog-img { - max-width: 100%; margin: auto; + max-width: 100%; } + .blog-author { font-style: italic; } + .blog-date { - font-weight: bold; font-size: 85%; + font-weight: bold; } + /* mobile-only */ @media (max-width: 500px) { #blog-doc { - display: flex; - flex-wrap: wrap; - flex-direction: column; align-items: center; + display: flex; + flex-flow: column wrap; margin-right: 0; padding-right: 10px; } @@ -1342,37 +1363,43 @@ h2 a { -/* blog tablet and up*/ +/* blog tablet and up */ @media (min-width: 768px) { .blog-post { margin: auto; } + .blog-tags { margin-bottom: 20px; } + .blog-title { font-size: 1.3rem; - margin-bottom: 20px; line-height: 1.5rem; + margin-bottom: 20px; } + .blog-post .blog-details { display: flex; flex-direction: row; - margin-left: 1rem; font-size: 90%; + margin-left: 1rem; } + .blog-post .blog-details div:first-child { margin-right: 20px; } + .blog-details { font-size: 1rem; } + .blog-excerpt { - line-height: initial; font-size: .85rem; font-weight: 300; - margin-top: auto; + line-height: initial; margin-bottom: 10px; + margin-top: auto; max-width: 80%; } } @@ -1380,6 +1407,7 @@ h2 a { strong.supported { color: var(--supported-fg) ; } + strong.eol { color: var(--eol-fg) ; } @@ -1387,8 +1415,7 @@ strong.eol { .logo-table { display: flex; flex-wrap: wrap; - row-gap: 8px; - column-gap: 48px; + gap: 8px 48px; } .logo-table h3{ @@ -1404,11 +1431,11 @@ strong.eol { } blockquote { - margin-left: 0; - font-weight: 600; + border-left: .25rem solid var(--border); font-style: italic; + font-weight: 600; + margin-left: 0; padding-left: 1.2em; - border-left: .25rem solid var(--border); } @media all and (max-width: 1110px) { @@ -1427,8 +1454,8 @@ blockquote { #navbar { padding: 0; - top: 1px; position: static; + top: 1px; } #navmenu>li:first-child { @@ -1436,32 +1463,34 @@ blockquote { } #navmenu>li { - border-bottom: 1px solid var(--border); - margin: 0; - min-height: 47px; + align-items: center; background: var(--card-bg); + border-bottom: 1px solid var(--border); cursor: pointer; display: flex; - align-items: center; + margin: 0; + min-height: 47px; } #navmenu>li.open:hover { background: var(--card-bg); } + #navmenu>li:hover { background: var(--hover-bg); + & ul { background-color: var(--card-bg); } } #navmenu { + display: none; left: 0; padding: 0; + position: absolute; top: 57px; width: 100%; - position: absolute; - display: none; } #navmenu.opens { @@ -1470,42 +1499,42 @@ blockquote { #navbar a { font-size: 19px; - margin: 0; - width: 100%; height: 100%; + margin: 0; padding-left: 5%; + width: 100%; } #navbar .submenu.open { - flex-direction: column; align-items: initial; + flex-direction: column; + > a { border-bottom: 1px solid var(--border); } } .submenu.open > a { - display: flex; align-items: center; + display: flex; min-height: 47px; } .submenu-content { - width: 100%; - position: static; - display: none; - margin-top: 7px; background-color: var(--card-bg); - padding: 0; - margin: 0; border: none; border-radius: 0; box-shadow: none; + cursor: pointer; + display: none; + margin: 0; + margin-top: 7px; max-height: 190px; - overflow-y: auto; - overflow-x: hidden; + overflow: hidden auto; + padding: 0; + position: static; transform: none; - cursor: pointer; + width: 100%; } .submenu-content li > a { diff --git a/css/themes/dark-theme.css b/css/themes/dark-theme.css index 931e68c013..4d758788af 100644 --- a/css/themes/dark-theme.css +++ b/css/themes/dark-theme.css @@ -1,11 +1,10 @@ html.dark-mode { - .sun-icon { - background-image: url(/images/sun-icon.png); - background-size: 100%; + background-image: url("/images/sun-icon.png"); background-repeat: no-repeat; - width: 27px; + background-size: 100%; height: 27px; + width: 27px; } .hidden-light { @@ -17,8 +16,8 @@ html.dark-mode { } .submenu-content { - box-shadow: 1px 2px var(--hover-bg); background-color: var(--card-bg); + box-shadow: 1px 2px var(--hover-bg); } #navmenu>li:hover { diff --git a/css/variables.css b/css/variables.css index 5680810934..78486da33b 100644 --- a/css/variables.css +++ b/css/variables.css @@ -1,9 +1,10 @@ :root.light-mode { --grey-fg: #aeaeae; - --bg: #ffffff; + --bg: #fff; --fg: #383838; --card-bg: #f0f1f3; --card-fg: #383838; + /* text (api side menus h3...) */ --menu-grey: #888; --hover-border: #484848; @@ -11,6 +12,7 @@ --hover-fg: #fafafa; --border: #d9e1e4; --link: #0e78ce; + /* docs related */ --box-fg: #181818; --info-bg: #cfd4fc; @@ -20,10 +22,12 @@ --warn-bg: #fad1df; --warn-accent: #8a0f3a; --code-bg: #f0f1f3; + /* support page related */ --supported-fg: #009000; - --eol-fg: #ff0000; + --eol-fg: #f00; } + :root.dark-mode { --bg: #0c0c0c; --fg: #fafafa; @@ -33,12 +37,14 @@ --hover-fg: #f2f2f2; --hover-border: #fafafa; --border: #d9e1e4; + /* text (api side menus h3...) */ --menu-grey: silver; --link: #259dff; --menu-em: #a2a0a0eb; + /* docs related */ - --box-fg: #ffffff; + --box-fg: #fff; --info-bg: #171d4f; --info-accent: #bdc3ff; --notice-bg: #4e4022; @@ -46,6 +52,7 @@ --warn-bg: #4e2232; --warn-accent: #f9c3d6; --code-bg: #2b2b2b; + /* support page related */ --supported-fg:#299009; --eol-fg: #ff1a1a; diff --git a/fonts/ko/pretendard.css b/fonts/ko/pretendard.css index 962feab7b2..5e2de88df9 100644 --- a/fonts/ko/pretendard.css +++ b/fonts/ko/pretendard.css @@ -8,64 +8,64 @@ http://scripts.sil.org/OFL */ @font-face { - font-family: 'Pretendard'; - font-weight: 900; font-display: swap; - src: local('Pretendard Black'), url(./woff2/Pretendard-Black.woff2) format('woff2'), url(./woff/Pretendard-Black.woff) format('woff'); + font-family: Pretendard; + font-weight: 900; + src: local('Pretendard Black'), url("./woff2/Pretendard-Black.woff2") format('woff2'), url("./woff/Pretendard-Black.woff") format('woff'); } @font-face { - font-family: 'Pretendard'; - font-weight: 800; font-display: swap; - src: local('Pretendard ExtraBold'), url(./woff2/Pretendard-ExtraBold.woff2) format('woff2'), url(./woff/Pretendard-ExtraBold.woff) format('woff'); + font-family: Pretendard; + font-weight: 800; + src: local('Pretendard ExtraBold'), url("./woff2/Pretendard-ExtraBold.woff2") format('woff2'), url("./woff/Pretendard-ExtraBold.woff") format('woff'); } @font-face { - font-family: 'Pretendard'; - font-weight: 700; font-display: swap; - src: local('Pretendard Bold'), url(./woff2/Pretendard-Bold.woff2) format('woff2'), url(./woff/Pretendard-Bold.woff) format('woff'); + font-family: Pretendard; + font-weight: 700; + src: local('Pretendard Bold'), url("./woff2/Pretendard-Bold.woff2") format('woff2'), url("./woff/Pretendard-Bold.woff") format('woff'); } @font-face { - font-family: 'Pretendard'; - font-weight: 600; font-display: swap; - src: local('Pretendard SemiBold'), url(./woff2/Pretendard-SemiBold.woff2) format('woff2'), url(./woff/Pretendard-SemiBold.woff) format('woff'); + font-family: Pretendard; + font-weight: 600; + src: local('Pretendard SemiBold'), url("./woff2/Pretendard-SemiBold.woff2") format('woff2'), url("./woff/Pretendard-SemiBold.woff") format('woff'); } @font-face { - font-family: 'Pretendard'; - font-weight: 500; font-display: swap; - src: local('Pretendard Medium'), url(./woff2/Pretendard-Medium.woff2) format('woff2'), url(./woff/Pretendard-Medium.woff) format('woff'); + font-family: Pretendard; + font-weight: 500; + src: local('Pretendard Medium'), url("./woff2/Pretendard-Medium.woff2") format('woff2'), url("./woff/Pretendard-Medium.woff") format('woff'); } @font-face { - font-family: 'Pretendard'; - font-weight: 400; font-display: swap; - src: local('Pretendard Regular'), url(./woff2/Pretendard-Regular.woff2) format('woff2'), url(./woff/Pretendard-Regular.woff) format('woff'); + font-family: Pretendard; + font-weight: 400; + src: local('Pretendard Regular'), url("./woff2/Pretendard-Regular.woff2") format('woff2'), url("./woff/Pretendard-Regular.woff") format('woff'); } @font-face { - font-family: 'Pretendard'; - font-weight: 300; font-display: swap; - src: local('Pretendard Light'), url(./woff2/Pretendard-Light.woff2) format('woff2'), url(./woff/Pretendard-Light.woff) format('woff'); + font-family: Pretendard; + font-weight: 300; + src: local('Pretendard Light'), url("./woff2/Pretendard-Light.woff2") format('woff2'), url("./woff/Pretendard-Light.woff") format('woff'); } @font-face { - font-family: 'Pretendard'; - font-weight: 200; font-display: swap; - src: local('Pretendard ExtraLight'), url(./woff2/Pretendard-ExtraLight.woff2) format('woff2'), url(./woff/Pretendard-ExtraLight.woff) format('woff'); + font-family: Pretendard; + font-weight: 200; + src: local('Pretendard ExtraLight'), url("./woff2/Pretendard-ExtraLight.woff2") format('woff2'), url("./woff/Pretendard-ExtraLight.woff") format('woff'); } @font-face { - font-family: 'Pretendard'; - font-weight: 100; font-display: swap; - src: local('Pretendard Thin'), url(./woff2/Pretendard-Thin.woff2) format('woff2'), url(./woff/Pretendard-Thin.woff) format('woff'); + font-family: Pretendard; + font-weight: 100; + src: local('Pretendard Thin'), url("./woff2/Pretendard-Thin.woff2") format('woff2'), url("./woff/Pretendard-Thin.woff") format('woff'); } diff --git a/package-lock.json b/package-lock.json index ce7af6e62f..ff14c35703 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,7 +13,136 @@ "eslint-plugin-import": "^2.29.0", "eslint-plugin-markdown": "^2.2.1", "eslint-plugin-n": "^15.0.0", - "eslint-plugin-promise": "^6.0.0" + "eslint-plugin-promise": "^6.0.0", + "stylelint": "16.15.0", + "stylelint-config-standard": "37.0.0", + "stylelint-order": "6.0.4" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.26.2", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", + "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.25.9", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", + "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@csstools/css-parser-algorithms": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.4.tgz", + "integrity": "sha512-Up7rBoV77rv29d3uKHUIVubz1BTcgyUK72IvCQAbfbMv584xHcGKCKbWh7i8hPrRJ7qU4Y8IO3IY9m+iTB7P3A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-tokenizer": "^3.0.3" + } + }, + "node_modules/@csstools/css-tokenizer": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.3.tgz", + "integrity": "sha512-UJnjoFsmxfKUdNYdWgOB0mWUypuLvAfQPH1+pyvRJs6euowbFkFC6P13w1l8mJyi3vxYMxc9kld5jZEGRQs6bw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/@csstools/media-query-list-parser": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-4.0.2.tgz", + "integrity": "sha512-EUos465uvVvMJehckATTlNqGj4UJWkTmdWuDMjqvSUkjGpmOyFZBVwb4knxCm/k2GMTXY+c/5RkdndzFYWeX5A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^3.0.4", + "@csstools/css-tokenizer": "^3.0.3" + } + }, + "node_modules/@csstools/selector-specificity": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-5.0.0.tgz", + "integrity": "sha512-PCqQV3c4CoVm3kdPhyeZ07VmBRdH2EpMFA/pd9OASpOEC3aXNGoqPDAZ80D0cLpMBxnmk0+yNhGsEx31hq7Gtw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss-selector-parser": "^7.0.0" + } + }, + "node_modules/@dual-bundle/import-meta-resolve": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@dual-bundle/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz", + "integrity": "sha512-+nxncfwHM5SgAtrVzgpzJOI1ol0PkumhVo469KCf9lUi21IGcY90G98VuHm9VRrUypmAzawAHO9bs6hqeADaVg==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, "node_modules/@eslint-community/eslint-utils": { @@ -114,6 +243,16 @@ "dev": true, "license": "BSD-3-Clause" }, + "node_modules/@keyv/serialize": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@keyv/serialize/-/serialize-1.0.3.tgz", + "integrity": "sha512-qnEovoOp5Np2JDGonIDL6Ayihw0RhnRh6vxPuHo4RDn1UOzwEo4AeIfpL6UGIrsceWrCMiVPgwRjbHu4vYFc3g==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer": "^6.0.3" + } + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -294,6 +433,16 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/array.prototype.findlastindex": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz", @@ -376,6 +525,16 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/available-typed-arrays": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", @@ -399,6 +558,27 @@ "dev": true, "license": "MIT" }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, "node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -410,6 +590,44 @@ "concat-map": "0.0.1" } }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, "node_modules/builtins": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.1.0.tgz", @@ -433,6 +651,27 @@ "node": ">=10" } }, + "node_modules/cacheable": { + "version": "1.8.9", + "resolved": "https://registry.npmjs.org/cacheable/-/cacheable-1.8.9.tgz", + "integrity": "sha512-FicwAUyWnrtnd4QqYAoRlNs44/a1jTL7XDKqm5gJ90wz1DQPlC7U2Rd1Tydpv+E7WAr4sQHuw8Q8M3nZMAyecQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "hookified": "^1.7.1", + "keyv": "^5.3.1" + } + }, + "node_modules/cacheable/node_modules/keyv": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-5.3.1.tgz", + "integrity": "sha512-13hQT2q2VIwOoaJdJa7nY3J8UVbYtMTJFHnwm9LI+SaQRfUiM6Em9KZeOVTCKbMnGcRIL3NSUFpAdjZCq24nLQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@keyv/serialize": "^1.0.3" + } + }, "node_modules/call-bind": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", @@ -533,6 +772,13 @@ "dev": true, "license": "MIT" }, + "node_modules/colord": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", + "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==", + "dev": true, + "license": "MIT" + }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -540,6 +786,33 @@ "dev": true, "license": "MIT" }, + "node_modules/cosmiconfig": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", + "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", + "dev": true, + "license": "MIT", + "dependencies": { + "env-paths": "^2.2.1", + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, "node_modules/cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", @@ -555,6 +828,43 @@ "node": ">= 8" } }, + "node_modules/css-functions-list": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/css-functions-list/-/css-functions-list-3.2.3.tgz", + "integrity": "sha512-IQOkD3hbR5KrN93MtcYuad6YPuTSUhntLHDuLEbFWE+ff2/XSZNdZG+LcbbIW5AXKg/WFIfYItIzVoHngHXZzA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12 || >=16" + } + }, + "node_modules/css-tree": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.1.0.tgz", + "integrity": "sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "mdn-data": "2.12.2", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, + "license": "MIT", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/data-view-buffer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", @@ -610,13 +920,13 @@ } }, "node_modules/debug": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", - "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", "dev": true, "license": "MIT", "dependencies": { - "ms": "2.1.2" + "ms": "^2.1.3" }, "engines": { "node": ">=6.0" @@ -670,6 +980,19 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/doctrine": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", @@ -683,6 +1006,33 @@ "node": ">=6.0.0" } }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, "node_modules/es-abstract": { "version": "1.23.3", "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", @@ -1274,6 +1624,36 @@ "dev": true, "license": "MIT" }, + "node_modules/fast-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.8" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", @@ -1288,6 +1668,33 @@ "dev": true, "license": "MIT" }, + "node_modules/fast-uri": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.6.tgz", + "integrity": "sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/fastest-levenshtein": { + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", + "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4.9.1" + } + }, "node_modules/fastq": { "version": "1.17.1", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", @@ -1311,18 +1718,31 @@ "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, "license": "MIT", "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" + "to-regex-range": "^5.0.1" }, "engines": { - "node": ">=10" + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -1344,9 +1764,9 @@ } }, "node_modules/flatted": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", - "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", + "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", "dev": true, "license": "ISC" }, @@ -1479,6 +1899,47 @@ "node": ">=10.13.0" } }, + "node_modules/global-modules": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", + "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "global-prefix": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/global-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", + "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ini": "^1.3.5", + "kind-of": "^6.0.2", + "which": "^1.3.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/global-prefix/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, "node_modules/globals": { "version": "13.24.0", "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", @@ -1512,6 +1973,34 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globjoin": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/globjoin/-/globjoin-0.1.4.tgz", + "integrity": "sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==", + "dev": true, + "license": "MIT" + }, "node_modules/gopd": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", @@ -1620,6 +2109,47 @@ "node": ">= 0.4" } }, + "node_modules/hookified": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/hookified/-/hookified-1.8.1.tgz", + "integrity": "sha512-GrO2l93P8xCWBSTBX9l2BxI78VU/MAAYag+pG8curS3aBGy0++ZlxrQ7PdUOUVMbn5BwkGb6+eRrnf43ipnFEA==", + "dev": true, + "license": "MIT" + }, + "node_modules/html-tags": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz", + "integrity": "sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" + }, "node_modules/ignore": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", @@ -1676,6 +2206,13 @@ "dev": true, "license": "ISC" }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true, + "license": "ISC" + }, "node_modules/internal-slot": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", @@ -1734,6 +2271,13 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true, + "license": "MIT" + }, "node_modules/is-bigint": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", @@ -1846,6 +2390,16 @@ "node": ">=0.10.0" } }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", @@ -1883,6 +2437,16 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, "node_modules/is-number-object": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", @@ -1909,6 +2473,16 @@ "node": ">=8" } }, + "node_modules/is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/is-regex": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", @@ -2017,6 +2591,13 @@ "dev": true, "license": "ISC" }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true, + "license": "MIT" + }, "node_modules/js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", @@ -2037,6 +2618,13 @@ "dev": true, "license": "MIT" }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true, + "license": "MIT" + }, "node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", @@ -2074,6 +2662,23 @@ "json-buffer": "3.0.1" } }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/known-css-properties": { + "version": "0.35.0", + "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.35.0.tgz", + "integrity": "sha512-a/RAk2BfKk+WFGhhOCAYqSiFLc34k8Mt/6NWRI4joER0EYUzXIcFivjjnoD3+XU1DggLn/tZc3DOAgke7l8a4A==", + "dev": true, + "license": "MIT" + }, "node_modules/levn": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", @@ -2088,6 +2693,13 @@ "node": ">= 0.8.0" } }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true, + "license": "MIT" + }, "node_modules/locate-path": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", @@ -2111,6 +2723,24 @@ "dev": true, "license": "MIT" }, + "node_modules/lodash.truncate": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", + "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", + "dev": true, + "license": "MIT" + }, + "node_modules/mathml-tag-names": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz", + "integrity": "sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/mdast-util-from-markdown": { "version": "0.8.5", "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-0.8.5.tgz", @@ -2140,6 +2770,36 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/mdn-data": { + "version": "2.12.2", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.12.2.tgz", + "integrity": "sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==", + "dev": true, + "license": "CC0-1.0" + }, + "node_modules/meow": { + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-13.2.0.tgz", + "integrity": "sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, "node_modules/micromark": { "version": "2.11.4", "resolved": "https://registry.npmjs.org/micromark/-/micromark-2.11.4.tgz", @@ -2161,6 +2821,20 @@ "parse-entities": "^2.0.0" } }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, "node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", @@ -2185,12 +2859,31 @@ } }, "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true, "license": "MIT" }, + "node_modules/nanoid": { + "version": "3.3.9", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.9.tgz", + "integrity": "sha512-SppoicMGpZvbF1l3z4x7No3OlIjP7QJvC9XR7AhZr1kL133KHnKPztkKDc+Ir4aJ/1VhTySrtKhrsycmrMQfvg==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, "node_modules/natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", @@ -2198,6 +2891,16 @@ "dev": true, "license": "MIT" }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/object-inspect": { "version": "1.13.2", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", @@ -2384,6 +3087,25 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -2421,6 +3143,36 @@ "dev": true, "license": "MIT" }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/possible-typed-array-names": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", @@ -2431,6 +3183,100 @@ "node": ">= 0.4" } }, + "node_modules/postcss": { + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz", + "integrity": "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.8", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-resolve-nested-selector": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.6.tgz", + "integrity": "sha512-0sglIs9Wmkzbr8lQwEyIzlDOOC9bGmfVKcJTaxv3vMmd3uo4o4DerC3En0bnmgceeql9BfC8hRkp7cg0fjdVqw==", + "dev": true, + "license": "MIT" + }, + "node_modules/postcss-safe-parser": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-7.0.1.tgz", + "integrity": "sha512-0AioNCJZ2DPYz5ABT6bddIqlhgwhpHZ/l65YAYo0BCIn0xiDpsnTHz0gnoTGk0OXZW0JRs+cDwL8u/teRdz+8A==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss-safe-parser" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "engines": { + "node": ">=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-selector-parser": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", + "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-sorting": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/postcss-sorting/-/postcss-sorting-8.0.2.tgz", + "integrity": "sha512-M9dkSrmU00t/jK7rF6BZSZauA5MAaBW4i5EnJXspMwt4iqTh/L9j6fgMnbElEOfyRyfLfVbIHj/R52zHzAPe1Q==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "postcss": "^8.4.20" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true, + "license": "MIT" + }, "node_modules/prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", @@ -2504,6 +3350,16 @@ "url": "https://github.com/sponsors/mysticatea" } }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/resolve": { "version": "1.22.8", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", @@ -2707,6 +3563,72 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/string.prototype.trim": { "version": "1.2.9", "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", @@ -2795,6 +3717,181 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/stylelint": { + "version": "16.15.0", + "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-16.15.0.tgz", + "integrity": "sha512-OK6Rs7EPdcdmjqiDycadZY4fw3f5/TC1X6/tGjnF3OosbwCeNs7nG+79MCAtjEg7ckwqTJTsku08e0Rmaz5nUw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/stylelint" + }, + { + "type": "github", + "url": "https://github.com/sponsors/stylelint" + } + ], + "license": "MIT", + "dependencies": { + "@csstools/css-parser-algorithms": "^3.0.4", + "@csstools/css-tokenizer": "^3.0.3", + "@csstools/media-query-list-parser": "^4.0.2", + "@csstools/selector-specificity": "^5.0.0", + "@dual-bundle/import-meta-resolve": "^4.1.0", + "balanced-match": "^2.0.0", + "colord": "^2.9.3", + "cosmiconfig": "^9.0.0", + "css-functions-list": "^3.2.3", + "css-tree": "^3.1.0", + "debug": "^4.3.7", + "fast-glob": "^3.3.3", + "fastest-levenshtein": "^1.0.16", + "file-entry-cache": "^10.0.6", + "global-modules": "^2.0.0", + "globby": "^11.1.0", + "globjoin": "^0.1.4", + "html-tags": "^3.3.1", + "ignore": "^7.0.3", + "imurmurhash": "^0.1.4", + "is-plain-object": "^5.0.0", + "known-css-properties": "^0.35.0", + "mathml-tag-names": "^2.1.3", + "meow": "^13.2.0", + "micromatch": "^4.0.8", + "normalize-path": "^3.0.0", + "picocolors": "^1.1.1", + "postcss": "^8.5.3", + "postcss-resolve-nested-selector": "^0.1.6", + "postcss-safe-parser": "^7.0.1", + "postcss-selector-parser": "^7.1.0", + "postcss-value-parser": "^4.2.0", + "resolve-from": "^5.0.0", + "string-width": "^4.2.3", + "supports-hyperlinks": "^3.2.0", + "svg-tags": "^1.0.0", + "table": "^6.9.0", + "write-file-atomic": "^5.0.1" + }, + "bin": { + "stylelint": "bin/stylelint.mjs" + }, + "engines": { + "node": ">=18.12.0" + } + }, + "node_modules/stylelint-config-recommended": { + "version": "15.0.0", + "resolved": "https://registry.npmjs.org/stylelint-config-recommended/-/stylelint-config-recommended-15.0.0.tgz", + "integrity": "sha512-9LejMFsat7L+NXttdHdTq94byn25TD+82bzGRiV1Pgasl99pWnwipXS5DguTpp3nP1XjvLXVnEJIuYBfsRjRkA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/stylelint" + }, + { + "type": "github", + "url": "https://github.com/sponsors/stylelint" + } + ], + "license": "MIT", + "engines": { + "node": ">=18.12.0" + }, + "peerDependencies": { + "stylelint": "^16.13.0" + } + }, + "node_modules/stylelint-config-standard": { + "version": "37.0.0", + "resolved": "https://registry.npmjs.org/stylelint-config-standard/-/stylelint-config-standard-37.0.0.tgz", + "integrity": "sha512-+6eBlbSTrOn/il2RlV0zYGQwRTkr+WtzuVSs1reaWGObxnxLpbcspCUYajVQHonVfxVw2U+h42azGhrBvcg8OA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/stylelint" + }, + { + "type": "github", + "url": "https://github.com/sponsors/stylelint" + } + ], + "license": "MIT", + "dependencies": { + "stylelint-config-recommended": "^15.0.0" + }, + "engines": { + "node": ">=18.12.0" + }, + "peerDependencies": { + "stylelint": "^16.13.0" + } + }, + "node_modules/stylelint-order": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/stylelint-order/-/stylelint-order-6.0.4.tgz", + "integrity": "sha512-0UuKo4+s1hgQ/uAxlYU4h0o0HS4NiQDud0NAUNI0aa8FJdmYHA5ZZTFHiV5FpmE3071e9pZx5j0QpVJW5zOCUA==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss": "^8.4.32", + "postcss-sorting": "^8.0.2" + }, + "peerDependencies": { + "stylelint": "^14.0.0 || ^15.0.0 || ^16.0.1" + } + }, + "node_modules/stylelint/node_modules/balanced-match": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-2.0.0.tgz", + "integrity": "sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==", + "dev": true, + "license": "MIT" + }, + "node_modules/stylelint/node_modules/file-entry-cache": { + "version": "10.0.7", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-10.0.7.tgz", + "integrity": "sha512-txsf5fu3anp2ff3+gOJJzRImtrtm/oa9tYLN0iTuINZ++EyVR/nRrg2fKYwvG/pXDofcrvvb0scEbX3NyW/COw==", + "dev": true, + "license": "MIT", + "dependencies": { + "flat-cache": "^6.1.7" + } + }, + "node_modules/stylelint/node_modules/flat-cache": { + "version": "6.1.7", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-6.1.7.tgz", + "integrity": "sha512-qwZ4xf1v1m7Rc9XiORly31YaChvKt6oNVHuqqZcoED/7O+ToyNVGobKsIAopY9ODcWpEDKEBAbrSOCBHtNQvew==", + "dev": true, + "license": "MIT", + "dependencies": { + "cacheable": "^1.8.9", + "flatted": "^3.3.3", + "hookified": "^1.7.1" + } + }, + "node_modules/stylelint/node_modules/ignore": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.3.tgz", + "integrity": "sha512-bAH5jbK/F3T3Jls4I0SO1hmPR0dKU0a7+SY6n1yzRtG54FLO8d6w/nxLFX2Nb7dBu6cCWXPaAME6cYqFUMmuCA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/stylelint/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -2808,6 +3905,23 @@ "node": ">=8" } }, + "node_modules/supports-hyperlinks": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-3.2.0.tgz", + "integrity": "sha512-zFObLMyZeEwzAoKCyu1B91U79K2t7ApXuQfo8OuxwXLDgcKxuwM+YvcbIhm6QWqz7mHUH1TVytR1PwVVjEuMig==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">=14.18" + }, + "funding": { + "url": "https://github.com/chalk/supports-hyperlinks?sponsor=1" + } + }, "node_modules/supports-preserve-symlinks-flag": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", @@ -2821,6 +3935,53 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/svg-tags": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz", + "integrity": "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==", + "dev": true + }, + "node_modules/table": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/table/-/table-6.9.0.tgz", + "integrity": "sha512-9kY+CygyYM6j02t5YFHbNz2FN5QmYGv9zAjVp4lCDjlCw7amdckXlEt/bjMhUIfj4ThGRE4gCUH5+yGnNuPo5A==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "ajv": "^8.0.1", + "lodash.truncate": "^4.4.2", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/table/node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/table/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true, + "license": "MIT" + }, "node_modules/text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", @@ -2828,6 +3989,19 @@ "dev": true, "license": "MIT" }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, "node_modules/tsconfig-paths": { "version": "3.15.0", "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", @@ -2984,6 +4158,13 @@ "punycode": "^2.1.0" } }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true, + "license": "MIT" + }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -3054,6 +4235,20 @@ "dev": true, "license": "ISC" }, + "node_modules/write-file-atomic": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz", + "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==", + "dev": true, + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, "node_modules/yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", diff --git a/package.json b/package.json index 65bc52a33f..f0b42db4a6 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,9 @@ "version": "0.0.0", "private": true, "scripts": { - "test": "eslint --ignore-path .gitignore --ignore-pattern _includes/readmes/ \"**/*.md\"" + "lint:md": "eslint --ignore-path .gitignore --ignore-pattern _includes/readmes/ \"**/*.md\"", + "lint:css": "stylelint \"**/*.css\" --allow-empty-input --cache --cache-strategy=content --cache-location=.stylelintcache", + "lint": "npm run lint:md && npm run lint:css" }, "devDependencies": { "eslint": "^8.54.0", @@ -11,7 +13,10 @@ "eslint-plugin-import": "^2.29.0", "eslint-plugin-markdown": "^2.2.1", "eslint-plugin-n": "^15.0.0", - "eslint-plugin-promise": "^6.0.0" + "eslint-plugin-promise": "^6.0.0", + "stylelint": "16.15.0", + "stylelint-config-standard": "37.0.0", + "stylelint-order": "6.0.4" }, "eslintConfig": { "extends": [