From 5c664be9a89e8e37840b692e47fbb686c68c1b29 Mon Sep 17 00:00:00 2001 From: Ben Goldsworthy Date: Sat, 4 Jan 2025 21:19:12 +0100 Subject: [PATCH] initial commit --- .gitignore | 10 + COPYING.txt | 121 + README.md | 1 + archetypes/default.md | 6 + assets/css/abstracts/_fonts.scss | 4 + assets/css/abstracts/_mixins.scss | 12 + assets/css/abstracts/_variables.scss | 24 + assets/css/base/_typography.scss | 328 ++ assets/css/components/_item-tile.scss | 98 + assets/css/components/_log-stats.scss | 18 + assets/css/components/gallery.scss | 159 + assets/css/components/icons.scss | 10 + assets/css/components/table.scss | 30 + assets/css/layout/_footer.scss | 20 + assets/css/layout/_header.scss | 88 + assets/css/layout/_main.scss | 8 + assets/css/main.scss | 70 + assets/css/pages/_collection.scss | 87 + assets/css/pages/_home.scss | 16 + assets/css/pages/_organisations-list.scss | 4 + assets/css/pages/_single-organisation.scss | 124 + assets/css/pages/_single.scss | 381 ++ assets/css/themes/_dark.scss | 32 + config.toml | 5 + data/itemtypes.json | 1363 +++++ go.mod | 3 + layouts/_default/baseof.html | 53 + layouts/_default/list.html | 37 + layouts/_default/section.html | 56 + layouts/_default/single.html | 76 + layouts/index.html | 11 + layouts/partials/books/rows/authors.html | 34 + layouts/partials/books/rows/publish-date.html | 7 + layouts/partials/books/rows/read-dates.html | 9 + layouts/partials/books/rows/title.html | 23 + layouts/partials/books/table-body.html | 112 + layouts/partials/books/table-header.html | 5 + layouts/partials/cite.html | 21 + layouts/partials/copying.html | 12 + layouts/partials/films/table-body.html | 81 + layouts/partials/films/table-header.html | 4 + layouts/partials/games/table-body.html | 78 + layouts/partials/games/table-header.html | 4 + layouts/partials/header/site-header.html | 20 + layouts/partials/series_by_id.html | 22 + layouts/partials/stats.html | 51 + layouts/partials/table.html | 16 + layouts/partials/tv/table-body.html | 46 + layouts/partials/tv/table-header.html | 3 + package-lock.json | 4567 +++++++++++++++++ package.json | 59 + static/css/sanitize.css | 363 ++ static/images/feed-icon.png | Bin 0 -> 14773 bytes static/images/feed-icon.svg | 18 + theme.toml | 15 + 55 files changed, 8825 insertions(+) create mode 100644 .gitignore create mode 100644 COPYING.txt create mode 100644 README.md create mode 100644 archetypes/default.md create mode 100644 assets/css/abstracts/_fonts.scss create mode 100644 assets/css/abstracts/_mixins.scss create mode 100644 assets/css/abstracts/_variables.scss create mode 100644 assets/css/base/_typography.scss create mode 100644 assets/css/components/_item-tile.scss create mode 100644 assets/css/components/_log-stats.scss create mode 100644 assets/css/components/gallery.scss create mode 100644 assets/css/components/icons.scss create mode 100644 assets/css/components/table.scss create mode 100644 assets/css/layout/_footer.scss create mode 100644 assets/css/layout/_header.scss create mode 100644 assets/css/layout/_main.scss create mode 100644 assets/css/main.scss create mode 100644 assets/css/pages/_collection.scss create mode 100644 assets/css/pages/_home.scss create mode 100644 assets/css/pages/_organisations-list.scss create mode 100644 assets/css/pages/_single-organisation.scss create mode 100644 assets/css/pages/_single.scss create mode 100644 assets/css/themes/_dark.scss create mode 100644 config.toml create mode 100644 data/itemtypes.json create mode 100644 go.mod create mode 100644 layouts/_default/baseof.html create mode 100644 layouts/_default/list.html create mode 100644 layouts/_default/section.html create mode 100644 layouts/_default/single.html create mode 100644 layouts/index.html create mode 100644 layouts/partials/books/rows/authors.html create mode 100644 layouts/partials/books/rows/publish-date.html create mode 100644 layouts/partials/books/rows/read-dates.html create mode 100644 layouts/partials/books/rows/title.html create mode 100644 layouts/partials/books/table-body.html create mode 100644 layouts/partials/books/table-header.html create mode 100644 layouts/partials/cite.html create mode 100644 layouts/partials/copying.html create mode 100644 layouts/partials/films/table-body.html create mode 100644 layouts/partials/films/table-header.html create mode 100644 layouts/partials/games/table-body.html create mode 100644 layouts/partials/games/table-header.html create mode 100644 layouts/partials/header/site-header.html create mode 100644 layouts/partials/series_by_id.html create mode 100644 layouts/partials/stats.html create mode 100644 layouts/partials/table.html create mode 100644 layouts/partials/tv/table-body.html create mode 100644 layouts/partials/tv/table-header.html create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 static/css/sanitize.css create mode 100644 static/images/feed-icon.png create mode 100644 static/images/feed-icon.svg create mode 100644 theme.toml diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..5b749b8 --- /dev/null +++ b/.gitignore @@ -0,0 +1,10 @@ +cgi-bin/ +__pycache__/ +.well-known/ +resources/ +node_modules/ +public/ +logs/ +.env +venv/ +scripts/caching/ diff --git a/COPYING.txt b/COPYING.txt new file mode 100644 index 0000000..0e259d4 --- /dev/null +++ b/COPYING.txt @@ -0,0 +1,121 @@ +Creative Commons Legal Code + +CC0 1.0 Universal + + CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE + LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN + ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS + INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES + REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS + PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM + THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED + HEREUNDER. + +Statement of Purpose + +The laws of most jurisdictions throughout the world automatically confer +exclusive Copyright and Related Rights (defined below) upon the creator +and subsequent owner(s) (each and all, an "owner") of an original work of +authorship and/or a database (each, a "Work"). + +Certain owners wish to permanently relinquish those rights to a Work for +the purpose of contributing to a commons of creative, cultural and +scientific works ("Commons") that the public can reliably and without fear +of later claims of infringement build upon, modify, incorporate in other +works, reuse and redistribute as freely as possible in any form whatsoever +and for any purposes, including without limitation commercial purposes. +These owners may contribute to the Commons to promote the ideal of a free +culture and the further production of creative, cultural and scientific +works, or to gain reputation or greater distribution for their Work in +part through the use and efforts of others. + +For these and/or other purposes and motivations, and without any +expectation of additional consideration or compensation, the person +associating CC0 with a Work (the "Affirmer"), to the extent that he or she +is an owner of Copyright and Related Rights in the Work, voluntarily +elects to apply CC0 to the Work and publicly distribute the Work under its +terms, with knowledge of his or her Copyright and Related Rights in the +Work and the meaning and intended legal effect of CC0 on those rights. + +1. Copyright and Related Rights. A Work made available under CC0 may be +protected by copyright and related or neighboring rights ("Copyright and +Related Rights"). Copyright and Related Rights include, but are not +limited to, the following: + + i. the right to reproduce, adapt, distribute, perform, display, + communicate, and translate a Work; + ii. moral rights retained by the original author(s) and/or performer(s); +iii. publicity and privacy rights pertaining to a person's image or + likeness depicted in a Work; + iv. rights protecting against unfair competition in regards to a Work, + subject to the limitations in paragraph 4(a), below; + v. rights protecting the extraction, dissemination, use and reuse of data + in a Work; + vi. database rights (such as those arising under Directive 96/9/EC of the + European Parliament and of the Council of 11 March 1996 on the legal + protection of databases, and under any national implementation + thereof, including any amended or successor version of such + directive); and +vii. other similar, equivalent or corresponding rights throughout the + world based on applicable law or treaty, and any national + implementations thereof. + +2. Waiver. To the greatest extent permitted by, but not in contravention +of, applicable law, Affirmer hereby overtly, fully, permanently, +irrevocably and unconditionally waives, abandons, and surrenders all of +Affirmer's Copyright and Related Rights and associated claims and causes +of action, whether now known or unknown (including existing as well as +future claims and causes of action), in the Work (i) in all territories +worldwide, (ii) for the maximum duration provided by applicable law or +treaty (including future time extensions), (iii) in any current or future +medium and for any number of copies, and (iv) for any purpose whatsoever, +including without limitation commercial, advertising or promotional +purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each +member of the public at large and to the detriment of Affirmer's heirs and +successors, fully intending that such Waiver shall not be subject to +revocation, rescission, cancellation, termination, or any other legal or +equitable action to disrupt the quiet enjoyment of the Work by the public +as contemplated by Affirmer's express Statement of Purpose. + +3. Public License Fallback. Should any part of the Waiver for any reason +be judged legally invalid or ineffective under applicable law, then the +Waiver shall be preserved to the maximum extent permitted taking into +account Affirmer's express Statement of Purpose. In addition, to the +extent the Waiver is so judged Affirmer hereby grants to each affected +person a royalty-free, non transferable, non sublicensable, non exclusive, +irrevocable and unconditional license to exercise Affirmer's Copyright and +Related Rights in the Work (i) in all territories worldwide, (ii) for the +maximum duration provided by applicable law or treaty (including future +time extensions), (iii) in any current or future medium and for any number +of copies, and (iv) for any purpose whatsoever, including without +limitation commercial, advertising or promotional purposes (the +"License"). The License shall be deemed effective as of the date CC0 was +applied by Affirmer to the Work. Should any part of the License for any +reason be judged legally invalid or ineffective under applicable law, such +partial invalidity or ineffectiveness shall not invalidate the remainder +of the License, and in such case Affirmer hereby affirms that he or she +will not (i) exercise any of his or her remaining Copyright and Related +Rights in the Work or (ii) assert any associated claims and causes of +action with respect to the Work, in either case contrary to Affirmer's +express Statement of Purpose. + +4. Limitations and Disclaimers. + + a. No trademark or patent rights held by Affirmer are waived, abandoned, + surrendered, licensed or otherwise affected by this document. + b. Affirmer offers the Work as-is and makes no representations or + warranties of any kind concerning the Work, express, implied, + statutory or otherwise, including without limitation warranties of + title, merchantability, fitness for a particular purpose, non + infringement, or the absence of latent or other defects, accuracy, or + the present or absence of errors, whether or not discoverable, all to + the greatest extent permissible under applicable law. + c. Affirmer disclaims responsibility for clearing rights of other persons + that may apply to the Work or any use thereof, including without + limitation any person's Copyright and Related Rights in the Work. + Further, Affirmer disclaims responsibility for obtaining any necessary + consents, permissions or other rights required for any use of the + Work. + d. Affirmer understands and acknowledges that Creative Commons is not a + party to this document and has no duty or obligation with respect to + this CC0 or use of the Work. diff --git a/README.md b/README.md new file mode 100644 index 0000000..89b369c --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +# Cataloguer diff --git a/archetypes/default.md b/archetypes/default.md new file mode 100644 index 0000000..00e77bd --- /dev/null +++ b/archetypes/default.md @@ -0,0 +1,6 @@ +--- +title: "{{ replace .Name "-" " " | title }}" +date: {{ .Date }} +draft: true +--- + diff --git a/assets/css/abstracts/_fonts.scss b/assets/css/abstracts/_fonts.scss new file mode 100644 index 0000000..3e3cd14 --- /dev/null +++ b/assets/css/abstracts/_fonts.scss @@ -0,0 +1,4 @@ +@font-face { + font-family: "Input Mono"; + src: url(/fonts/InputMono-Regular.ttf); +} diff --git a/assets/css/abstracts/_mixins.scss b/assets/css/abstracts/_mixins.scss new file mode 100644 index 0000000..cb2abf4 --- /dev/null +++ b/assets/css/abstracts/_mixins.scss @@ -0,0 +1,12 @@ +@mixin mq($width, $type: min) { + @if map_has_key($breakpoints, $width) { + $width: map_get($breakpoints, $width); + @if $type == max { + $width: $width - 1px; + } + @media only screen and (#{$type}-width: $width) { + @content; + } + } +} + diff --git a/assets/css/abstracts/_variables.scss b/assets/css/abstracts/_variables.scss new file mode 100644 index 0000000..099ab6a --- /dev/null +++ b/assets/css/abstracts/_variables.scss @@ -0,0 +1,24 @@ +// Colours +$dark: #020202; +$light: #fffff0; + +// Fonts +$defaultFont: "Domitian", "Palatino Linotype", "Book Antiqua", Palatino, serif; +$codeFont: /*"Input Mono", */"Lucida Console", Monaco, monospace; + +// Breakpoints +$breakpoints: ( + "phone": 400px, + "phone-wide": 480px, + "phablet": 560px, + "tablet-small": 640px, + "tablet": 768px, + "tablet-wide": 1024px, + "desktop": 1248px, + "desktop-wide": 1440px +); + +// Old Site Versions +$ohwhatohjeez: #ff8900; +$oldphaloskepsis: #003d52; +$omphaloskepsis: #fffff0; diff --git a/assets/css/base/_typography.scss b/assets/css/base/_typography.scss new file mode 100644 index 0000000..0218992 --- /dev/null +++ b/assets/css/base/_typography.scss @@ -0,0 +1,328 @@ +html { + font-size: 16px; + color: $dark; + background-color: $light; + font-family: $defaultFont; +} + +h1, +h2, +h3, +h4, +h5, +h6 { + font-weight: normal; + margin: 0; +} + +a { + text-decoration-skip-ink: auto; + color: $dark; + text-decoration: underline; + opacity: 0.8; + + &:hover { + text-decoration: none; + opacity: 1; + } +} + +.sic::after { + content: " [sic]"; + font-style: italic; +} + +.latex { + display: inline !important; +} + +pre { + padding-left: 1em; + border-left: 2px outset $dark; + display: inline-block; + max-width: 85%; +} + +pre { + overflow: hidden; +} + +@media only screen and (min-width: 1024px) { + pre { + margin: 1em 2em; + } +} + +q.guillemets { + quotes: "«" "»" "«" "»"; +} + +q, +blockquote { + quotes: "‘" "’" "“" "”"; +} + +q::before { + content: open-quote; +} + +q::after { + content: close-quote; +} + +cite, +cite.book, +cite.film, +cite.tv-show, +cite.comic, +cite.book, +cite.podcast, +cite.album, +cite.report { + font-style: italic; +} + +cite.book--bible { + font-style: inherit; +} + +cite.legislation, +cite.smallcite, +cite.comic-strip, +cite.short-story, +cite.article, +cite.episode, +cite.video, +cite.chapter, +cite.software, +cite.campaign, +cite.song, +cite.speech, +cite.course, +cite.presentation { + font-style: normal; +} + +cite.smallcite::before, +cite.article::before, +cite.comic-strip::before, +cite.short-story::before, +cite.episode::before, +cite.video::before, +cite.chapter::before, +cite.song::before, +cite.poem::before, +cite.campaign::before, +cite.speech::before, +cite.course::before, +cite.presentation::before { + content: "“"; +} + +cite.smallcite::after, +cite.article::after, +cite.comic-strip::after, +cite.short-story::after, +cite.episode::after, +cite.video::after, +cite.chapter::after, +cite.song::after, +cite.poem::after, +cite.campaign::after, +cite.speech::after, +cite.course::after, +cite.presentation::after { + content: "”"; +} + +cite.article--shortcite::before, +cite.article--shortcite::after { + content: none; +} + +// Schema.org citations + +cite, +.cite { + font-style: italic; + + &[itemtype$="Code"], + &[itemtype$="SocialMediaPosting"], + &[itemtype$="SoftwareApplication"], + &[itemtype$="WebSite"], + &[itemtype$="WebContent"], + &[itemtype$="CreativeWorkSeason"], + &[itemtype$="PodcastSeason"], + &[itemtype$="RadioSeason"], + &[itemtype$="TVSeason"], + &[itemtype$="CreativeWorkSeries"], + &[itemtype$="BookSeries"], + &[itemtype$="MovieSeries"], + &[itemtype$="VideoGameSeries"], + &[itemtype$="Legislation"], + &--inherit { + font-style: inherit; + } + + &[itemtype$="Article"], + &[itemtype$="BlogPosting"], + &[itemtype$="NewsArticle"], + &[itemtype$="AnalysisNewsArticle"], + &[itemtype$="ReportageNewsArticle"], + &[itemtype$="OpinionNewsArticle"], + &[itemtype$="ScholarlyArticle"], + &[itemtype$="TechArticle"], + &[itemtype$="Chapter"], + &[itemtype$="Clip"], + &[itemtype$="MovieClip"], + &[itemtype$="RadioClip"], + &[itemtype$="TVClip"], + &[itemtype$="VideoGameClip"], + &[itemtype$="Comment"], + &[itemtype$="Course"], + &[itemtype$="DigitalDocument"], + &[itemtype$="NoteDigitalDocument"], + &[itemtype$="PresentationDigitalDocument"], + &[itemtype$="TextDigitalDocument"], + &[itemtype$="Episode"], + &[itemtype$="PodcastEpisode"], + &[itemtype$="RadioEpisode"], + &[itemtype$="TVEpisode"], + &[itemtype$="MusicRecording"], + &[itemtype$="MusicComposition"], + &[itemtype$="Message"], + &--enquote { + font-style: normal; + + &::before { + content: "“"; + } + + &::after { + content: "”"; + } + } + + &--normal { + font-style: normal !important; + + &::before { + content: none !important; + } + + &::after { + content: none !important; + } + } +} + +table .cite { + font-style: normal; +} + +.episode-number, +.authors--additional, +.comments, +.edition, +.year--original { + font-size: 0.75em; +} + +.comments, +.edition { + margin-block-start: 0.4em; + margin-block-end: 0; +} + +code, +samp, +var, +pre { + font-family: $codeFont; + font-size: 1em; +} + +pre .nocode { + font-family: $defaultFont; + font-size: 1em; + padding: 1px 3px; + border-radius: 6px; + border: dashed 1px black; +} + +code, +samp, +var { + background-color: #d1d1d1; + border-radius: 5px; + padding: 2px; +} + +pre { + max-width: 50vw; + overflow: scroll; +} + +h1 code, +.post-title code, +pre code, +h1 samp, +.post-title samp, +pre samp, +h1 var, +.post-title var, +pre var { + background-color: transparent; + padding: 0; +} + +.heading code, +.subheading code { + background-color: transparent; +} + +pre.prettyprint ol { + padding-left: 3.5em; +} + +pre.prettyprint li { + background: none !important; +} + +samp { + display: block; + width: 80ch; + margin: 1em 4em; + border-left: 2px solid #ccc; + color: #333; +} + +kbd { + padding: 0.1em 0.6em; + border: 1px solid #ccc; + font-size: 11px; + font-family: Arial, Helvetica, sans-serif; + background-color: #f7f7f7; + color: #333; + box-shadow: 0 1px 0 rgba(0, 0, 0, 0.2), 0 0 0 2px white inset; + border-radius: 3px; + display: inline-block; + margin: 0 0.1em; + text-shadow: 0 1px 0 white; + line-height: 1.4; + white-space: nowrap; +} + +/* + * Special Text + */ + + +:where([title]) { + text-decoration: underline; + text-decoration: underline dotted; + + &:not(a *) { + cursor: help; + } +} diff --git a/assets/css/components/_item-tile.scss b/assets/css/components/_item-tile.scss new file mode 100644 index 0000000..4d717ba --- /dev/null +++ b/assets/css/components/_item-tile.scss @@ -0,0 +1,98 @@ +.link--tile { + text-decoration: none; + box-sizing: border-box; + border: 2px solid transparent; + + &:hover { + border-color: $dark; + } +} + +.item-tile { + display: grid; + min-height: 180px; + grid-template-columns: 5% auto 5%; + grid-template-rows: 2.5% auto 2.5%; + grid-template-areas: + ". . ." + ". tile-details ." + ". . ."; + background-size: cover; + background-repeat: no-repeat; + background-position: center; + + &.lazy { + background-image: none !important; + } + + &--heading { + font-size: 3em; + + & .item-tile__header { + opacity: 1; + } + } + + &--ohwhatohjeez { + border: 2px solid $ohwhatohjeez; + } + + &--oldphaloskepsis { + border: 2px solid $oldphaloskepsis; + } + + &--omphaloskepsis { + border: 2px solid $omphaloskepsis; + } + + &__header { + text-align: center; + background-color: $dark; + opacity: 0.8; + display: grid; + grid-area: tile-details; + grid-template-columns: 5px auto 5px; + grid-template-rows: 0 auto auto auto; + grid-template-areas: + ". . ." + ". banner ." + ". tile-title ." + ". tile-subtitle ."; + } + + &__banner { + padding: 0.5em 1em 0; + grid-area: banner; + width: auto; + margin-left: auto; + margin-right: auto; + border-radius: 0 0 10px 10px; + text-align: center; + text-decoration: none !important; + line-height: 0.5em; + background-color: #ebebeb; + } + + &__title, + &__subtitle { + color: $light; + margin: 0; + font-weight: normal; + } + + &__title { + font-size: 1.4em; + grid-area: tile-title; + align-self: center; + + &--long { + font-size: 1em; + } + } + + &__subtitle { + font-size: 0.8em; + grid-area: tile-subtitle; + align-self: start; + } +} diff --git a/assets/css/components/_log-stats.scss b/assets/css/components/_log-stats.scss new file mode 100644 index 0000000..3ac9767 --- /dev/null +++ b/assets/css/components/_log-stats.scss @@ -0,0 +1,18 @@ +.log-stats { + text-align: center; + font-size: 1.4em; + + & summary { + cursor: pointer; + } + + & div { + display: flex; + justify-content: center; + + & p { + float: left; + margin-inline-end: 1.2em; + } + } +} diff --git a/assets/css/components/gallery.scss b/assets/css/components/gallery.scss new file mode 100644 index 0000000..1aad010 --- /dev/null +++ b/assets/css/components/gallery.scss @@ -0,0 +1,159 @@ +/* +Put this file in /static/css/hugo-easy-gallery.css +Documentation and licence at https://github.com/liwenyip/hugo-easy-gallery/ +*/ + + +/* +Grid Layout Styles +*/ +.gallery { + overflow: hidden; +} +.gallery .box { + float: left; + position: relative; + /* Default: 1 tile wide */ + width: 100%; + padding-bottom: 100%; +} +@media only screen and (min-width : 365px) { + /* Tablet view: 2 tiles */ + .gallery .box { + width: 50%; + padding-bottom: 50%; + } +} +@media only screen and (min-width : 480px) { + /* Small desktop / ipad view: 3 tiles */ + .gallery .box { + width: 33.3%; + padding-bottom: 33.3%; /* */ + } +} +@media only screen and (min-width : 9999px) { + /* Medium desktop: 4 tiles */ + .box { + width: 25%; + padding-bottom: 25%; + } +} + +/* +Transition styles +*/ +.gallery.hover-transition figure, +.gallery.hover-effect-zoom .img, +.gallery:not(.caption-effect-appear) figcaption, +.fancy-figure:not(.caption-effect-appear) figcaption { + -webkit-transition: all 0.3s ease-in-out; + -moz-transition: all 0.3s ease-in-out; + -o-transition: all 0.3s ease-in-out; + transition: all 0.3s ease-in-out; +} + +/* +figure styles +*/ +figure { + position:relative; /* purely to allow absolution positioning of figcaption */ + overflow: hidden; +} +.gallery figure { + position: absolute; + left: 5px; + right: 5px; + top: 5px; + bottom: 5px; +} +.gallery.hover-effect-grow figure:hover { + transform: scale(1.05); +} +.gallery.hover-effect-shrink figure:hover { + transform: scale(0.95); +} +.gallery.hover-effect-slidedown figure:hover { + transform: translateY(5px); +} +.gallery.hover-effect-slideup figure:hover { + transform: translateY(-5px); +} + +/* +img / a styles +*/ + +.gallery .img { + position: absolute; + left: 0; + right: 0; + top: 0; + bottom: 0; + background-size: cover; + background-position: 50% 50%; + background-repeat: no-repeat; +} +.gallery.hover-effect-zoom figure:hover .img { + transform: scale(1.05); +} +.gallery img { + display: none !important; /* only show the img if not inside a gallery */ +} +.gallery figure a { + position: absolute; + left: 0; + right: 0; + top: 0; + bottom: 0; +} + +/* +figcaption styles +*/ +.gallery figcaption, +.fancy-figure figcaption { + position: absolute; + bottom: 0; + left: 0; + right: 0; + background: #000; + color: #FFF; + text-align: center; + font-size: 75%; /* change this if you want bigger text */ + background: rgba(0, 0, 0, 0.5); + opacity: 1; + cursor: pointer; +} +.gallery.caption-position-none figcaption, +.fancy-figure.caption-position-none figcaption { + display: none; +} +.gallery.caption-position-center figcaption, +.fancy-figure.caption-position-center figcaption { + top: 0; + padding: 40% 5px; +} +.gallery.caption-position-bottom figcaption, +.fancy-figure.caption-position-bottom figcaption { + padding: 5px; +} +.gallery.caption-effect-fade figure:not(:hover) figcaption, +.gallery.caption-effect-appear figure:not(:hover) figcaption, +.fancy-figure.caption-effect-fade figure:not(:hover) figcaption, +.fancy-figure.caption-effect-appear figure:not(:hover) figcaption { + background: rgba(0, 0, 0, 0); + opacity: 0; +} +.gallery.caption-effect-slide.caption-position-bottom figure:not(:hover) figcaption, +.fancy-figure.caption-effect-slide.caption-position-bottom figure:not(:hover) figcaption { + margin-bottom: -100%; +} +.gallery.caption-effect-slide.caption-position-center figure:not(:hover) figcaption, +.fancy-figure.caption-effect-slide.caption-position-center figure:not(:hover) figcaption { + top: 100%; +} +.gallery figcaption p { + margin: auto; /* override style in theme */ +} + + diff --git a/assets/css/components/icons.scss b/assets/css/components/icons.scss new file mode 100644 index 0000000..2bc4b5d --- /dev/null +++ b/assets/css/components/icons.scss @@ -0,0 +1,10 @@ +.feed-icon { + display: inline-block; + height: 1em; + width: 1em; + margin-bottom: 0.2em; +} + +.site-header__icons a { + text-decoration: none; +} diff --git a/assets/css/components/table.scss b/assets/css/components/table.scss new file mode 100644 index 0000000..ed51377 --- /dev/null +++ b/assets/css/components/table.scss @@ -0,0 +1,30 @@ +/* TODO: Not currently used */ +@media screen and (max-width: 480px) { + .table-scroller { + overflow-x: auto; + width: 320px; + } +} + +table { + margin: auto; + width: 80%; + display: table; + + & thead { + border: 2px solid $dark; + } + + & td { + padding: 0.5em 1em; + border: 1px solid $dark; + } +} + +td[colspan] { + text-align: center; + + & h3 { + font-weight: bold; + } +} diff --git a/assets/css/layout/_footer.scss b/assets/css/layout/_footer.scss new file mode 100644 index 0000000..fb63973 --- /dev/null +++ b/assets/css/layout/_footer.scss @@ -0,0 +1,20 @@ +.site-footer { + grid-area: footer; + display: block; + width: 99%; /* Overflows right of viewport otherwise */ + position: fixed; + bottom: 0; + + & p { + width: fit-content; + margin: auto; + background: $light; + border: 2px solid black; + padding: 0.4em; + border-bottom: none; + font-size: 0.6em; + @include mq('desktop') { + font-size: 1em; + } + } +} diff --git a/assets/css/layout/_header.scss b/assets/css/layout/_header.scss new file mode 100644 index 0000000..d6c0657 --- /dev/null +++ b/assets/css/layout/_header.scss @@ -0,0 +1,88 @@ +.site-header { + display: grid; + grid-area: header; + grid-gap: 0; + grid-template-columns: 1fr; + grid-template-rows: auto auto auto auto; + grid-template-areas: "header-title" "header-tagline" "header-icons" "header-nav"; + position: sticky; + top: 0; + left: 0; + width: 100%; + text-align: center; + z-index: 1; + + &__title, + &__tagline, + &__icons, + &__nav { + background-color: $light; + margin: 0; + } + + &__title, + &__tagline, + &__icons { + padding: 5px 0; + } + + &__title { + font-weight: normal; + grid-area: header-title; + } + + &__tagline { + grid-area: header-tagline; + } + + &__icons { + grid-area: header-icons; + border-bottom: 2px solid $dark; + margin-bottom: 0; + } + + &__nav { + grid-area: header-nav; + margin: auto; + width: 100%; + @include mq('desktop') { + width: 60%; + } + + & ul { + margin-top: 0; + margin-bottom: 0; + } + + & li { + width: calc(100% / 4); + display: block; + float: left; + border-bottom: 2px solid black; + border-left: 1px solid black; + border-right: 1px solid black; + padding: 0.4em; + background-color: inherit; + } + + & a:first-child li { + border-left: 2px solid black; + } + + & a:last-child li { + border-right: 2px solid black; + } + + & li { + &:hover { + background-color: #ffffd0; + } + + & a { + width: 100%; + height: 100%; + display: block; + } + } + } +} diff --git a/assets/css/layout/_main.scss b/assets/css/layout/_main.scss new file mode 100644 index 0000000..8955f6f --- /dev/null +++ b/assets/css/layout/_main.scss @@ -0,0 +1,8 @@ +.site-content { + grid-area: page-container; + margin-left: 1em; + margin-right: 1em; + @include mq('desktop') { + margin: 2em; + } +} diff --git a/assets/css/main.scss b/assets/css/main.scss new file mode 100644 index 0000000..551f189 --- /dev/null +++ b/assets/css/main.scss @@ -0,0 +1,70 @@ +@import "abstracts/fonts"; +@import "abstracts/variables"; +@import "abstracts/mixins"; + +@import "base/typography"; + +.site-container { + display: grid; + grid-template-columns: 2.5% 1fr 2.5%; + grid-template-rows: auto 1fr 2.5%; + grid-template-areas: + "header header header" + "page-container page-container page-container" + "footer footer footer"; + min-height: calc(100vh - 4em); + border-top: 0; + @include mq('desktop') { + margin-bottom: 2em; + grid-template-areas: + "header header header" + ". page-container ." + "footer footer footer"; + border: 2px solid black; + margin-left: 2em; + margin-right: 2em; + } + + &--homepage { + align-items: center; + grid-template-rows: auto 2.5%; + grid-template-areas: + "page-container page-container page-container" + "footer footer footer"; + margin-top: 2em; + margin-bottom: 2em; + @include mq('desktop') { + border: 2px solid black; + margin-left: 2em; + margin-right: 2em; + grid-template-areas: + ". page-container ." + "footer footer footer"; + } + } + + &--list, + &--section { + align-items: center; + } +} + +@import "layout/header"; +@import "layout/footer"; +@import "layout/main"; + +@import "components/gallery"; +@import "components/icons"; +@import "components/item-tile"; +@import "components/table"; +@import "components/log-stats"; + +@import "pages/home"; +@import "pages/collection"; +@import "pages/single"; +@import "pages/organisations-list"; +@import "pages/single-organisation"; + +@media (prefers-color-scheme: dark) { + /*@import "themes/dark";*/ +} diff --git a/assets/css/pages/_collection.scss b/assets/css/pages/_collection.scss new file mode 100644 index 0000000..8f67fee --- /dev/null +++ b/assets/css/pages/_collection.scss @@ -0,0 +1,87 @@ +.site-content--section, +.site-content--list { + display: grid; + grid-gap: 10px; + grid-template-columns: 0.2fr 1fr 0.2fr; + grid-template-rows: auto auto 60px; + justify-items: center; + align-items: center; + grid-template-areas: "list-page-header list-page-header list-page-header" "list-page-grid list-page-grid list-page-grid" "list-page-footer list-page-footer list-page-footer"; + margin-top: 5em; + @include mq('desktop') { + grid-template-areas: ". list-page-header ." "list-page-grid list-page-grid list-page-grid" ". list-page-footer ."; + } + + & .site-content__header { + grid-area: list-page-header; + text-align: center; + + & .page-header__minor-links { + text-align: center; + margin: auto; + overflow: auto; + + & ul { + list-style: none; + + & li { + float: left; + margin: 0 1em; + + & * { + display: inline-block; + } + } + } + + & .minor-links__categories { + width: 100%; + display: block; + font-size: 0.8em !important; + overflow: auto; + @include mq('desktop') { + font-size: 1em !important; + } + } + + & .minor-links__years { + width: 100%; + display: block; + margin: auto; + width: fit-content; + } + } + } + + & .site-content__body { + width: 100%; + display: grid; + justify-items: stretch; + align-items: stretch; + grid-gap: 10px; + grid-area: list-page-grid; + grid-template-columns: 1fr; + grid-template-rows: 1fr; + justify-items: stretch; + align-items: stretch; + + + &--list { + grid-template-columns: 1fr auto 1fr; + grid-template-rows: auto; + grid-template-areas: ". sections-list ."; + } + + &--chart { + grid-template-columns: 1em 100% 1fr; + grid-template-rows: 100%; + grid-template-areas: ". section-chart ."; + } + } + + & .site-content__footer { + grid-area: list-page-footer; + } +} + + diff --git a/assets/css/pages/_home.scss b/assets/css/pages/_home.scss new file mode 100644 index 0000000..4382aa4 --- /dev/null +++ b/assets/css/pages/_home.scss @@ -0,0 +1,16 @@ +.site-content--homepage { + text-align: center; + + & .page-title { + font-size: 2.5em; + margin-bottom: 1em; + @include mq('desktop') { + font-size: 4em; + } + + & span { + display: block !important; + font-size: 0.3em; + } + } +} diff --git a/assets/css/pages/_organisations-list.scss b/assets/css/pages/_organisations-list.scss new file mode 100644 index 0000000..2aefc25 --- /dev/null +++ b/assets/css/pages/_organisations-list.scss @@ -0,0 +1,4 @@ +.organisations-table { + grid-column-start: 1; + grid-column-end: 5; +} diff --git a/assets/css/pages/_single-organisation.scss b/assets/css/pages/_single-organisation.scss new file mode 100644 index 0000000..9d41ba4 --- /dev/null +++ b/assets/css/pages/_single-organisation.scss @@ -0,0 +1,124 @@ +#organisation-body { + & .index { + display: grid; + grid-gap: 6px 5px; + grid-area: items; + grid-template-columns: repeat(4, 1fr); + grid-template-rows: 1fr; + justify-items: stretch; + align-items: stretch; + grid-template-areas: "item1 item2 item3 item4"; + } + + & .index .item:nth-child(1) { + grid-area: item1; + } + + & .index .item:nth-child(2) { + grid-area: item2; + } + + & .index .item:nth-child(3) { + grid-area: item3; + } + + & .index .item:nth-child(4) { + grid-area: item4; + } + + & details { + cursor: pointer; + opacity: 0.7; + border: 2px solid $dark; + + &:hover, + &:focus { + opacity: 1; + } + } + + & summary { + &::marker { + font-size: 2em; + padding-left: 2em; + } + + & .subheading { + display: inline; + width: 95%; + padding-bottom: 2em; + } + + & .index { + border-top: 2px solid $dark; + } + } +} + +#hierarchy ul { + list-style: none; + padding-left: 1em; + + & .hierarchy-item { + &:before { + content: '\21B3'; + margin: 0 0.4em; + } + + &--current { + font-weight: bold; + } + + &--child:before { + content: '\2192'; + } + } +} + +.timeline__legend { + & span { + margin: 0 1em; + + & * { + display: inline-block; + } + + & .colour-square { + width: 1em; + height: 1em; + border-radius: 2.5px; + border: 1px solid $dark; + + &--current { + background-color: #bbbbb0; + } + + &--past { + background-color: #fffff0; + } + } + } +} + +.site-content__body--chart { + & #timeline, + & #map { + width: 100%; + max-width: 100%; + grid-area: section-chart; + } +} + +.site-content__body--list { + & .site-content__sections-list { + grid-area: sections-list; + display: block; + list-style: none; + margin: auto; + padding-left: 0; + + & li * { + display: inline-block; + } + } +} diff --git a/assets/css/pages/_single.scss b/assets/css/pages/_single.scss new file mode 100644 index 0000000..e00bf5e --- /dev/null +++ b/assets/css/pages/_single.scss @@ -0,0 +1,381 @@ +.site-content--single { + display: grid; + column-gap: 2em; + grid-template-columns: 0.4fr 0.6fr; + grid-template-rows: auto auto auto; + + & .site-content__header, + & .site-content__footer { + display: grid; + grid-column-start: 1; + grid-column-end: 3; + background-color: $light; + filter: brightness(80%); + @include mq('desktop') { + border: 2px solid $dark; + grid-column-end: 2; + padding: 2em; + } + } + + & .site-content__header { + grid-row-start: 1; + grid-row-end: 2; + overflow: auto; + border-bottom: 2px solid $dark; + margin-bottom: 2em; + + & .article-header { + text-align: center; + background-color: $dark; + opacity: 0.8; + color: $light; + display: grid; + grid-area: post-header-details; + grid-template-columns: 1fr; + padding: 20px; + grid-template-rows: 1fr auto auto 1fr; + justify-items: center; + align-items: center; + grid-template-areas: "." "post-title" "post-subtitle" "."; + + &__series { + margin: 0 auto 1em; + font-size: 1.2em; + } + + &__featured-image { + display: grid; + grid-template-columns: 15% 1fr 15%; + grid-template-rows: 20% 1fr 20%; + grid-template-areas: ". . ." ". post-header-details ." ". . ."; + background-position: center center; + background-repeat: no-repeat; + background-size: cover; + height: 40vh; + min-height: 380px; + width: 100%; + border: 2px solid $dark; + + & .attr { + background-color: $dark; + font-size: 0.7em; + color: $light; + width: fit-content; + position: fixed; + padding: 0.2em 0.5em; + opacity: 0.8; + margin: 0 auto; + + & a { + color: $light; + } + } + } + + &__title, + &__subtitle { + border-bottom: 2px inset $dark; + margin-top: 0.5em; + margin-bottom: 0.5em; + line-height: 1.2em; + border-bottom: 2px inset $dark; + margin-top: 0.5em; + margin-bottom: 0.5em; + line-height: 1.2em; + } + + &__title-wrapper { + display: grid; + grid-area: post-header-details; + background-color: $dark; + opacity: 0.8; + text-align: center; + grid-template-columns: 1fr; + padding: 20px; + grid-template-rows: 1fr auto auto 1fr; + justify-items: center; + align-items: center; + grid-template-areas: "." "post-title" "post-subtitle" "."; + + &--no-title { + visibility: hidden; + } + + & .article-header__title, + & .article-header__subtitle { + color: $light; + } + + & .article-header__title { + grid-area: post-title; + font-weight: bold; + + &--long { + font-size: 1.5em; + } + } + + & .article-header__subtitle { + grid-area: post-subtitle; + } + } + + &__word-count, + &__publish-date, + &__modified-date { + font-size: 1.2em; + margin: 0.2rem auto; + } + + &__word-count { + margin-top: 1rem; + } + + &__notes, + &__warnings { + width: 90%; + margin: 1.6em auto; + display: block; + padding-right: 1em; + + & ul { + list-style: circle; + + & li { + margin: 0.5em 0; + } + } + } + + &__notes { + background-color: $light; + filter: brightness(70%); + border: 1px solid gray; + } + + &__warnings { + border: 4px solid darkred; + background-color: #fc3a3a; + color: $light; + font-weight: 500; + + & ul { + list-style: disc; + } + } + + &__table-of-contents { + & ul { + list-style-type: arabic; + padding-left: 2em; + } + } + } + } + + & .site-content__body { + grid-column-start: 1; + grid-column-end: 3; + grid-row-start: 2; + grid-row-end: 3; + + @include mq('desktop') { + grid-row-start: 1; + grid-row-end: 4; + grid-column-start: 2; + } + /* Temporary until I've fixed all the figures */ + overflow-x: clip; + + .heading { + text-align: center; + font-size: 2em; + font-weight: bold; + } + + .heading::before, + .heading::after { + content: " ~ "; + } + + .subheading { + font-size: 1.6em; + border-bottom: 2px inset $dark; + margin-top: 0.5em; + margin-bottom: 0.5em; + line-height: 1.2em; + text-align: center; + + &__subtitle { + font-size: 1em; + border-bottom: 1px dashed $dark; + margin-top: 0; + margin-bottom: 1em; + padding-bottom: 0.5em; + line-height: 1em; + text-align: center; + font-weight: bold; + width: fit-content; + margin: auto; + padding: 0 3em 0.4em; + } + } + + blockquote { + padding-left: 1em; + border-left: 2px outset $dark; + display: inline-block; + max-width: 85%; + + & footer { + text-align: right; + font-style: normal; + display: inline-block; + margin-left: 5em; + + &::before { + content: "—"; + } + } + + &:first-child { + font-size: 1.2em; + text-align: center; + display: block; + margin: 0 auto; + border-left: 0; + padding-left: 0; + width: 100%; + padding-top: 1em; + padding-bottom: 1.2em; + border-top: 2px outset $dark; + border-bottom: 2px inset $dark; + } + + & p:first-child { + margin-top: 0; + } + + & p:last-of-type { + margin-bottom: 0.5em; + } + + &.script { + display: grid; + grid-template-columns: auto 1fr 0.2fr; + padding-bottom: 0.4em; + text-align: left; + + & > p::before, + & > p::after { + content: none !important; + } + + & > .script-line__character { + grid-column: 1; + margin: 0.5em 2em 0.5em 0.5em; + font-style: italic; + } + + & > .script-line__text { + grid-column-start: 2; + grid-column-end: 4; + margin: 0.5em; + } + + & footer { + grid-column-start: 1; + grid-column-end: 3; + } + } + } + + @media only screen and (min-width: 1024px) { + blockquote { + margin: 1em 2em; + } + } + + /* TODO: remove once replaced in content with figures */ + img, + video { + max-width: 100%; + height: auto; + width: auto; + max-height: 50vh; + margin: auto; + display: block; + } + + .figure { + margin: 16px auto; + width: fit-content; + + &__image { + display: block; + width: auto; + max-width: 100%; + margin: auto; + height: auto; + max-height: 50vh; + } + + &__caption { + height: auto; + margin: auto; + + &--no-height { + height: 0; + } + + & .figcaption { + &__caption { + font-size: 0.9em; + font-style: italic; + text-align: center; + } + + &__attr { + background-color: $dark; + font-size: 0.7em; + color: $light; + width: fit-content; + top: -2em; + position: relative; + padding: 0.2em 0.5em; + opacity: 0.8; + margin: 0 auto; + } + + &__attr + .figcaption__caption { + margin-top: -0.5em; + } + } + } + } + } + + & .site-content__footer { + grid-row-start: 3; + grid-row-end: 4; + border-top: 2px solid $dark; + @include mq('desktop') { + margin-bottom: 2em; + grid-row-start: 2; + grid-row-end: 3; + } + + & h2 { + margin: 1rem 0; + } + + & ul { + margin: 0; + } + + #mapdiv { + border: 2px solid $dark; + } + } +} diff --git a/assets/css/themes/_dark.scss b/assets/css/themes/_dark.scss new file mode 100644 index 0000000..e20ea6c --- /dev/null +++ b/assets/css/themes/_dark.scss @@ -0,0 +1,32 @@ +html, +.site-header { + color: $light; + background-color: $dark; +} + +.site-header__nav li { + color: $light; + border-color: $light; + + &:hover { + background-color: $dark; + } +} + +.site-header__title a { + color: $light; +} + +.item-tile { + &--heading, + &__header { + background-color: $light; + } + + &--heading, + &__header, + &__title, + &__subtitle { + color: $dark; + } +} diff --git a/config.toml b/config.toml new file mode 100644 index 0000000..c0bc7f9 --- /dev/null +++ b/config.toml @@ -0,0 +1,5 @@ +[module] + [module.hugoVersion] + extended = true + min = "0.140.0" + max = "0.140.2" diff --git a/data/itemtypes.json b/data/itemtypes.json new file mode 100644 index 0000000..02b2303 --- /dev/null +++ b/data/itemtypes.json @@ -0,0 +1,1363 @@ +[ +"3DModel", +"AMRadioChannel", +"APIReference", +"Abdomen", +"AboutPage", +"AcceptAction", +"Accommodation", +"AccountingService", +"AchieveAction", +"Action", +"ActionAccessSpecification", +"ActionStatusType", +"ActivateAction", +"ActivationFee", +"ActiveActionStatus", +"ActiveNotRecruiting", +"AddAction", +"AdministrativeArea", +"AdultEntertainment", +"AdultOrientedEnumeration", +"AdvertiserContentArticle", +"AerobicActivity", +"AggregateOffer", +"AggregateRating", +"AgreeAction", +"Airline", +"Airport", +"AlbumRelease", +"AlcoholConsideration", +"AlignmentObject", +"AllWheelDriveConfiguration", +"AllergiesHealthAspect", +"AllocateAction", +"AmpStory", +"AmusementPark", +"AnaerobicActivity", +"AnalysisNewsArticle", +"AnatomicalStructure", +"AnatomicalSystem", +"AndroidPlatform", +"Anesthesia", +"AnimalShelter", +"Answer", +"Apartment", +"ApartmentComplex", +"Appearance", +"AppendAction", +"ApplyAction", +"ApprovedIndication", +"Aquarium", +"ArchiveComponent", +"ArchiveOrganization", +"ArriveAction", +"ArtGallery", +"Artery", +"Article", +"AskAction", +"AskPublicNewsArticle", +"AssessAction", +"AssignAction", +"Atlas", +"Attorney", +"Audience", +"AudioObject", +"AudioObjectSnapshot", +"Audiobook", +"AudiobookFormat", +"AuthoritativeLegalValue", +"AuthorizeAction", +"AutoBodyShop", +"AutoDealer", +"AutoPartsStore", +"AutoRental", +"AutoRepair", +"AutoWash", +"AutomatedTeller", +"AutomotiveBusiness", +"Ayurvedic", +"BackOrder", +"BackgroundNewsArticle", +"Bacteria", +"Bakery", +"Balance", +"BankAccount", +"BankOrCreditUnion", +"BarOrPub", +"Barcode", +"BasicIncome", +"Beach", +"BeautySalon", +"BedAndBreakfast", +"BedDetails", +"BedType", +"BefriendAction", +"BenefitsHealthAspect", +"BikeStore", +"BioChemEntity", +"Blog", +"BlogPosting", +"BloodTest", +"BoardingPolicyType", +"BoatReservation", +"BoatTerminal", +"BoatTrip", +"BodyMeasurementArm", +"BodyMeasurementBust", +"BodyMeasurementChest", +"BodyMeasurementFoot", +"BodyMeasurementHand", +"BodyMeasurementHead", +"BodyMeasurementHeight", +"BodyMeasurementHips", +"BodyMeasurementInsideLeg", +"BodyMeasurementNeck", +"BodyMeasurementTypeEnumeration", +"BodyMeasurementUnderbust", +"BodyMeasurementWaist", +"BodyMeasurementWeight", +"BodyOfWater", +"Bone", +"Book", +"BookFormatType", +"BookSeries", +"BookStore", +"BookmarkAction", +"Boolean", +"BorrowAction", +"BowlingAlley", +"BrainStructure", +"Brand", +"BreadcrumbList", +"Brewery", +"Bridge", +"BroadcastChannel", +"BroadcastEvent", +"BroadcastFrequencySpecification", +"BroadcastRelease", +"BroadcastService", +"BrokerageAccount", +"BuddhistTemple", +"BusOrCoach", +"BusReservation", +"BusStation", +"BusStop", +"BusTrip", +"BusinessAudience", +"BusinessEntityType", +"BusinessEvent", +"BusinessFunction", +"BusinessSupport", +"BuyAction", +"CDCPMDRecord", +"CDFormat", +"CT", +"CableOrSatelliteService", +"CafeOrCoffeeShop", +"Campground", +"CampingPitch", +"Canal", +"CancelAction", +"Car", +"CarUsageType", +"Cardiovascular", +"CardiovascularExam", +"CaseSeries", +"Casino", +"CassetteFormat", +"CategoryCode", +"CategoryCodeSet", +"CatholicChurch", +"CausesHealthAspect", +"Cemetery", +"Chapter", +"CharitableIncorporatedOrganization", +"CheckAction", +"CheckInAction", +"CheckOutAction", +"CheckoutPage", +"ChemicalSubstance", +"ChildCare", +"ChildrensEvent", +"Chiropractic", +"ChooseAction", +"Church", +"City", +"CityHall", +"CivicStructure", +"Claim", +"ClaimReview", +"Class", +"CleaningFee", +"Clinician", +"Clip", +"ClothingStore", +"CoOp", +"Code", +"CohortStudy", +"Collection", +"CollectionPage", +"CollegeOrUniversity", +"ComedyClub", +"ComedyEvent", +"ComicCoverArt", +"ComicIssue", +"ComicSeries", +"ComicStory", +"Comment", +"CommentAction", +"CommentPermission", +"CommunicateAction", +"CommunityHealth", +"CompilationAlbum", +"CompleteDataFeed", +"Completed", +"CompletedActionStatus", +"CompoundPriceSpecification", +"ComputerLanguage", +"ComputerStore", +"ConfirmAction", +"Consortium", +"ConstraintNode", +"ConsumeAction", +"ContactPage", +"ContactPoint", +"ContactPointOption", +"ContagiousnessHealthAspect", +"Continent", +"ControlAction", +"ConvenienceStore", +"Conversation", +"CookAction", +"Corporation", +"CorrectionComment", +"Country", +"Course", +"CourseInstance", +"Courthouse", +"CoverArt", +"CovidTestingFacility", +"CreateAction", +"CreativeWork", +"CreativeWorkSeason", +"CreativeWorkSeries", +"CreditCard", +"Crematorium", +"CriticReview", +"CrossSectional", +"CssSelectorType", +"CurrencyConversionService", +"DDxElement", +"DJMixAlbum", +"DVDFormat", +"DamagedCondition", +"DanceEvent", +"DanceGroup", +"DangerousGoodConsideration", +"DataCatalog", +"DataDownload", +"DataFeed", +"DataFeedItem", +"DataType", +"Dataset", +"Date", +"DateTime", +"DatedMoneySpecification", +"DayOfWeek", +"DaySpa", +"DeactivateAction", +"DecontextualizedContent", +"DefenceEstablishment", +"DefinedRegion", +"DefinedTerm", +"DefinedTermSet", +"DefinitiveLegalValue", +"DeleteAction", +"DeliveryChargeSpecification", +"DeliveryEvent", +"DeliveryMethod", +"DeliveryTimeSettings", +"Demand", +"DemoAlbum", +"DemoGameAvailability", +"Dentist", +"Dentistry", +"DepartAction", +"DepartmentStore", +"DepositAccount", +"Dermatologic", +"Dermatology", +"DesktopWebPlatform", +"DiabeticDiet", +"Diagnostic", +"DiagnosticLab", +"DiagnosticProcedure", +"Diet", +"DietNutrition", +"DietarySupplement", +"DigitalAudioTapeFormat", +"DigitalDocument", +"DigitalDocumentPermission", +"DigitalDocumentPermissionType", +"DigitalFormat", +"DigitalPlatformEnumeration", +"DisabilitySupport", +"DisagreeAction", +"Discontinued", +"DiscoverAction", +"DiscussionForumPosting", +"DislikeAction", +"Distance", +"DistanceFee", +"Distillery", +"DonateAction", +"DoseSchedule", +"DoubleBlindedTrial", +"DownloadAction", +"Downpayment", +"DrawAction", +"Drawing", +"DrinkAction", +"DriveWheelConfigurationValue", +"DrivingSchoolVehicleUsage", +"Drug", +"DrugClass", +"DrugCost", +"DrugCostCategory", +"DrugLegalStatus", +"DrugPregnancyCategory", +"DrugPrescriptionStatus", +"DrugStrength", +"DryCleaningOrLaundry", +"Duration", +"EBook", +"EPRelease", +"EUEnergyEfficiencyCategoryA", +"EUEnergyEfficiencyCategoryA1Plus", +"EUEnergyEfficiencyCategoryA2Plus", +"EUEnergyEfficiencyCategoryA3Plus", +"EUEnergyEfficiencyCategoryB", +"EUEnergyEfficiencyCategoryC", +"EUEnergyEfficiencyCategoryD", +"EUEnergyEfficiencyCategoryE", +"EUEnergyEfficiencyCategoryF", +"EUEnergyEfficiencyCategoryG", +"EUEnergyEfficiencyEnumeration", +"Ear", +"EatAction", +"EditedOrCroppedContent", +"EducationEvent", +"EducationalAudience", +"EducationalOccupationalCredential", +"EducationalOccupationalProgram", +"EducationalOrganization", +"EffectivenessHealthAspect", +"Electrician", +"ElectronicsStore", +"ElementarySchool", +"EmailMessage", +"Embassy", +"Emergency", +"EmergencyService", +"EmployeeRole", +"EmployerAggregateRating", +"EmployerReview", +"EmploymentAgency", +"Endocrine", +"EndorseAction", +"EndorsementRating", +"Energy", +"EnergyConsumptionDetails", +"EnergyEfficiencyEnumeration", +"EnergyStarCertified", +"EnergyStarEnergyEfficiencyEnumeration", +"EngineSpecification", +"EnrollingByInvitation", +"EntertainmentBusiness", +"EntryPoint", +"Enumeration", +"Episode", +"Event", +"EventAttendanceModeEnumeration", +"EventCancelled", +"EventMovedOnline", +"EventPostponed", +"EventRescheduled", +"EventReservation", +"EventScheduled", +"EventSeries", +"EventStatusType", +"EventVenue", +"EvidenceLevelA", +"EvidenceLevelB", +"EvidenceLevelC", +"ExampleMeasurementMethodEnum", +"ExchangeRateSpecification", +"ExchangeRefund", +"ExerciseAction", +"ExerciseGym", +"ExercisePlan", +"ExhibitionEvent", +"Eye", +"FAQPage", +"FDAcategoryA", +"FDAcategoryB", +"FDAcategoryC", +"FDAcategoryD", +"FDAcategoryX", +"FDAnotEvaluated", +"FMRadioChannel", +"FailedActionStatus", +"False", +"FastFoodRestaurant", +"Female", +"Festival", +"FilmAction", +"FinancialProduct", +"FinancialService", +"FindAction", +"FireStation", +"Flexibility", +"Flight", +"FlightReservation", +"Float", +"FloorPlan", +"Florist", +"FollowAction", +"FoodEstablishment", +"FoodEstablishmentReservation", +"FoodEvent", +"FoodService", +"FourWheelDriveConfiguration", +"FreeReturn", +"Friday", +"FrontWheelDriveConfiguration", +"FullGameAvailability", +"FullRefund", +"FundingAgency", +"FundingScheme", +"Fungus", +"FurnitureStore", +"Game", +"GameAvailabilityEnumeration", +"GamePlayMode", +"GameServer", +"GameServerStatus", +"GardenStore", +"GasStation", +"Gastroenterologic", +"GatedResidenceCommunity", +"GenderType", +"Gene", +"GeneralContractor", +"GenericWebPlatform", +"Genetic", +"Genitourinary", +"GeoCircle", +"GeoCoordinates", +"GeoShape", +"GeospatialGeometry", +"Geriatric", +"GettingAccessHealthAspect", +"GiveAction", +"GlutenFreeDiet", +"GolfCourse", +"GovernmentBenefitsType", +"GovernmentBuilding", +"GovernmentOffice", +"GovernmentOrganization", +"GovernmentPermit", +"GovernmentService", +"Grant", +"GraphicNovel", +"GroceryStore", +"GroupBoardingPolicy", +"Guide", +"Gynecologic", +"HVACBusiness", +"Hackathon", +"HairSalon", +"HalalDiet", +"Hardcover", +"HardwareStore", +"Head", +"HealthAndBeautyBusiness", +"HealthAspectEnumeration", +"HealthCare", +"HealthClub", +"HealthInsurancePlan", +"HealthPlanCostSharingSpecification", +"HealthPlanFormulary", +"HealthPlanNetwork", +"HealthTopicContent", +"HealthcareConsideration", +"HearingImpairedSupported", +"Hematologic", +"HighSchool", +"HinduDiet", +"HinduTemple", +"HobbyShop", +"HomeAndConstructionBusiness", +"HomeGoodsStore", +"Homeopathic", +"Hospital", +"Hostel", +"Hotel", +"HotelRoom", +"House", +"HousePainter", +"HowItWorksHealthAspect", +"HowOrWhereHealthAspect", +"HowTo", +"HowToDirection", +"HowToItem", +"HowToSection", +"HowToStep", +"HowToSupply", +"HowToTip", +"HowToTool", +"HyperToc", +"HyperTocEntry", +"IOSPlatform", +"IceCreamShop", +"IgnoreAction", +"ImageGallery", +"ImageObject", +"ImageObjectSnapshot", +"ImagingTest", +"InForce", +"InStock", +"InStoreOnly", +"IndividualProduct", +"Infectious", +"InfectiousAgentClass", +"InfectiousDisease", +"InformAction", +"IngredientsHealthAspect", +"InsertAction", +"InstallAction", +"Installment", +"InsuranceAgency", +"Intangible", +"Integer", +"InteractAction", +"InteractionCounter", +"InternationalTrial", +"InternetCafe", +"InvestmentFund", +"InvestmentOrDeposit", +"InviteAction", +"Invoice", +"InvoicePrice", +"ItemAvailability", +"ItemList", +"ItemListOrderAscending", +"ItemListOrderDescending", +"ItemListOrderType", +"ItemListUnordered", +"ItemPage", +"JewelryStore", +"JobPosting", +"JoinAction", +"Joint", +"KosherDiet", +"LaboratoryScience", +"LakeBodyOfWater", +"Landform", +"LandmarksOrHistoricalBuildings", +"Language", +"LaserDiscFormat", +"LearningResource", +"LeaveAction", +"LeftHandDriving", +"LegalForceStatus", +"LegalService", +"LegalValueLevel", +"Legislation", +"LegislationObject", +"LegislativeBuilding", +"LeisureTimeActivity", +"LendAction", +"Library", +"LibrarySystem", +"LifestyleModification", +"Ligament", +"LikeAction", +"LimitedAvailability", +"LimitedByGuaranteeCharity", +"LinkRole", +"LiquorStore", +"ListItem", +"ListPrice", +"ListenAction", +"LiteraryEvent", +"LiveAlbum", +"LiveBlogPosting", +"LivingWithHealthAspect", +"LoanOrCredit", +"LocalBusiness", +"LocationFeatureSpecification", +"LockerDelivery", +"Locksmith", +"LodgingBusiness", +"LodgingReservation", +"Longitudinal", +"LoseAction", +"LowCalorieDiet", +"LowFatDiet", +"LowLactoseDiet", +"LowSaltDiet", +"Lung", +"LymphaticVessel", +"MRI", +"MSRP", +"Male", +"Manuscript", +"Map", +"MapCategoryType", +"MarryAction", +"Mass", +"MathSolver", +"MaximumDoseSchedule", +"MayTreatHealthAspect", +"MeasurementMethodEnum", +"MeasurementTypeEnumeration", +"MediaGallery", +"MediaManipulationRatingEnumeration", +"MediaObject", +"MediaReview", +"MediaReviewItem", +"MediaSubscription", +"MedicalAudience", +"MedicalAudienceType", +"MedicalBusiness", +"MedicalCause", +"MedicalClinic", +"MedicalCode", +"MedicalCondition", +"MedicalConditionStage", +"MedicalContraindication", +"MedicalDevice", +"MedicalDevicePurpose", +"MedicalEntity", +"MedicalEnumeration", +"MedicalEvidenceLevel", +"MedicalGuideline", +"MedicalGuidelineContraindication", +"MedicalGuidelineRecommendation", +"MedicalImagingTechnique", +"MedicalIndication", +"MedicalIntangible", +"MedicalObservationalStudy", +"MedicalObservationalStudyDesign", +"MedicalOrganization", +"MedicalProcedure", +"MedicalProcedureType", +"MedicalResearcher", +"MedicalRiskCalculator", +"MedicalRiskEstimator", +"MedicalRiskFactor", +"MedicalRiskScore", +"MedicalScholarlyArticle", +"MedicalSign", +"MedicalSignOrSymptom", +"MedicalSpecialty", +"MedicalStudy", +"MedicalStudyStatus", +"MedicalSymptom", +"MedicalTest", +"MedicalTestPanel", +"MedicalTherapy", +"MedicalTrial", +"MedicalTrialDesign", +"MedicalWebPage", +"MedicineSystem", +"MeetingRoom", +"MensClothingStore", +"Menu", +"MenuItem", +"MenuSection", +"MerchantReturnEnumeration", +"MerchantReturnFiniteReturnWindow", +"MerchantReturnNotPermitted", +"MerchantReturnPolicy", +"MerchantReturnPolicySeasonalOverride", +"MerchantReturnUnlimitedWindow", +"MerchantReturnUnspecified", +"Message", +"MiddleSchool", +"Midwifery", +"MinimumAdvertisedPrice", +"MisconceptionsHealthAspect", +"MixedEventAttendanceMode", +"MixtapeAlbum", +"MobileApplication", +"MobilePhoneStore", +"MobileWebPlatform", +"MolecularEntity", +"Monday", +"MonetaryAmount", +"MonetaryAmountDistribution", +"MonetaryGrant", +"MoneyTransfer", +"MortgageLoan", +"Mosque", +"Motel", +"Motorcycle", +"MotorcycleDealer", +"MotorcycleRepair", +"MotorizedBicycle", +"Mountain", +"MoveAction", +"Movie", +"MovieClip", +"MovieRentalStore", +"MovieSeries", +"MovieTheater", +"MovingCompany", +"MultiCenterTrial", +"MultiPlayer", +"MulticellularParasite", +"Muscle", +"Musculoskeletal", +"MusculoskeletalExam", +"Museum", +"MusicAlbum", +"MusicAlbumProductionType", +"MusicAlbumReleaseType", +"MusicComposition", +"MusicEvent", +"MusicGroup", +"MusicPlaylist", +"MusicRecording", +"MusicRelease", +"MusicReleaseFormatType", +"MusicStore", +"MusicVenue", +"MusicVideoObject", +"NGO", +"NLNonprofitType", +"NailSalon", +"NarcoticConsideration", +"Neck", +"Nerve", +"Neuro", +"Neurologic", +"NewCondition", +"NewsArticle", +"NewsMediaOrganization", +"Newspaper", +"NightClub", +"NoninvasiveProcedure", +"Nonprofit501a", +"Nonprofit501c1", +"Nonprofit501c10", +"Nonprofit501c11", +"Nonprofit501c12", +"Nonprofit501c13", +"Nonprofit501c14", +"Nonprofit501c15", +"Nonprofit501c16", +"Nonprofit501c17", +"Nonprofit501c18", +"Nonprofit501c19", +"Nonprofit501c2", +"Nonprofit501c20", +"Nonprofit501c21", +"Nonprofit501c22", +"Nonprofit501c23", +"Nonprofit501c24", +"Nonprofit501c25", +"Nonprofit501c26", +"Nonprofit501c27", +"Nonprofit501c28", +"Nonprofit501c3", +"Nonprofit501c4", +"Nonprofit501c5", +"Nonprofit501c6", +"Nonprofit501c7", +"Nonprofit501c8", +"Nonprofit501c9", +"Nonprofit501d", +"Nonprofit501e", +"Nonprofit501f", +"Nonprofit501k", +"Nonprofit501n", +"Nonprofit501q", +"Nonprofit527", +"NonprofitANBI", +"NonprofitSBBI", +"NonprofitType", +"Nose", +"NotInForce", +"NotYetRecruiting", +"Notary", +"NoteDigitalDocument", +"Number", +"Nursing", +"NutritionInformation", +"OTC", +"Observation", +"Observational", +"Obstetric", +"Occupation", +"OccupationalActivity", +"OccupationalExperienceRequirements", +"OccupationalTherapy", +"OceanBodyOfWater", +"Offer", +"OfferCatalog", +"OfferForLease", +"OfferForPurchase", +"OfferItemCondition", +"OfferShippingDetails", +"OfficeEquipmentStore", +"OfficialLegalValue", +"OfflineEventAttendanceMode", +"OfflinePermanently", +"OfflineTemporarily", +"OnDemandEvent", +"OnSitePickup", +"Oncologic", +"OneTimePayments", +"Online", +"OnlineBusiness", +"OnlineEventAttendanceMode", +"OnlineFull", +"OnlineOnly", +"OnlineStore", +"OpenTrial", +"OpeningHoursSpecification", +"OpinionNewsArticle", +"Optician", +"Optometric", +"Order", +"OrderAction", +"OrderCancelled", +"OrderDelivered", +"OrderInTransit", +"OrderItem", +"OrderPaymentDue", +"OrderPickupAvailable", +"OrderProblem", +"OrderProcessing", +"OrderReturned", +"OrderStatus", +"Organization", +"OrganizationRole", +"OrganizeAction", +"OriginalMediaContent", +"OriginalShippingFees", +"Osteopathic", +"Otolaryngologic", +"OutOfStock", +"OutletStore", +"OverviewHealthAspect", +"OwnershipInfo", +"PET", +"PaidLeave", +"PaintAction", +"Painting", +"PalliativeProcedure", +"Paperback", +"ParcelDelivery", +"ParcelService", +"ParentAudience", +"ParentalSupport", +"Park", +"ParkingFacility", +"ParkingMap", +"PartiallyInForce", +"Pathology", +"PathologyTest", +"Patient", +"PatientExperienceHealthAspect", +"PawnShop", +"PayAction", +"PaymentAutomaticallyApplied", +"PaymentCard", +"PaymentChargeSpecification", +"PaymentComplete", +"PaymentDeclined", +"PaymentDue", +"PaymentMethod", +"PaymentPastDue", +"PaymentService", +"PaymentStatusType", +"Pediatric", +"PeopleAudience", +"PercutaneousProcedure", +"PerformAction", +"PerformanceRole", +"PerformingArtsTheater", +"PerformingGroup", +"Periodical", +"Permit", +"Person", +"PetStore", +"Pharmacy", +"PharmacySpecialty", +"Photograph", +"PhotographAction", +"PhysicalActivity", +"PhysicalActivityCategory", +"PhysicalExam", +"PhysicalTherapy", +"Physician", +"Physiotherapy", +"Place", +"PlaceOfWorship", +"PlaceboControlledTrial", +"PlanAction", +"PlasticSurgery", +"Play", +"PlayAction", +"PlayGameAction", +"Playground", +"Plumber", +"PodcastEpisode", +"PodcastSeason", +"PodcastSeries", +"Podiatric", +"PoliceStation", +"PoliticalParty", +"Pond", +"PostOffice", +"PostalAddress", +"PostalCodeRangeSpecification", +"Poster", +"PotentialActionStatus", +"PreOrder", +"PreOrderAction", +"PreSale", +"PregnancyHealthAspect", +"PrependAction", +"Preschool", +"PrescriptionOnly", +"PresentationDigitalDocument", +"PreventionHealthAspect", +"PreventionIndication", +"PriceComponentTypeEnumeration", +"PriceSpecification", +"PriceTypeEnumeration", +"PrimaryCare", +"Prion", +"Product", +"ProductCollection", +"ProductGroup", +"ProductModel", +"ProfessionalService", +"ProfilePage", +"PrognosisHealthAspect", +"ProgramMembership", +"Project", +"PronounceableText", +"Property", +"PropertyValue", +"PropertyValueSpecification", +"Protein", +"Protozoa", +"Psychiatric", +"PsychologicalTreatment", +"PublicHealth", +"PublicHolidays", +"PublicSwimmingPool", +"PublicToilet", +"PublicationEvent", +"PublicationIssue", +"PublicationVolume", +"Pulmonary", +"QAPage", +"QualitativeValue", +"QuantitativeValue", +"QuantitativeValueDistribution", +"Quantity", +"Question", +"Quiz", +"Quotation", +"QuoteAction", +"RVPark", +"RadiationTherapy", +"RadioBroadcastService", +"RadioChannel", +"RadioClip", +"RadioEpisode", +"RadioSeason", +"RadioSeries", +"RadioStation", +"Radiography", +"RandomizedTrial", +"Rating", +"ReactAction", +"ReadAction", +"ReadPermission", +"RealEstateAgent", +"RealEstateListing", +"RearWheelDriveConfiguration", +"ReceiveAction", +"Recipe", +"Recommendation", +"RecommendedDoseSchedule", +"Recruiting", +"RecyclingCenter", +"ReducedRelevanceForChildrenConsideration", +"RefundTypeEnumeration", +"RefurbishedCondition", +"RegisterAction", +"Registry", +"ReimbursementCap", +"RejectAction", +"RelatedTopicsHealthAspect", +"RemixAlbum", +"Renal", +"RentAction", +"RentalCarReservation", +"RentalVehicleUsage", +"RepaymentSpecification", +"ReplaceAction", +"ReplyAction", +"Report", +"ReportageNewsArticle", +"ReportedDoseSchedule", +"ResearchOrganization", +"ResearchProject", +"Researcher", +"Reservation", +"ReservationCancelled", +"ReservationConfirmed", +"ReservationHold", +"ReservationPackage", +"ReservationPending", +"ReservationStatusType", +"ReserveAction", +"Reservoir", +"Residence", +"Resort", +"RespiratoryTherapy", +"Restaurant", +"RestockingFees", +"RestrictedDiet", +"ResultsAvailable", +"ResultsNotAvailable", +"ResumeAction", +"Retail", +"ReturnAction", +"ReturnAtKiosk", +"ReturnByMail", +"ReturnFeesCustomerResponsibility", +"ReturnFeesEnumeration", +"ReturnInStore", +"ReturnLabelCustomerResponsibility", +"ReturnLabelDownloadAndPrint", +"ReturnLabelInBox", +"ReturnLabelSourceEnumeration", +"ReturnMethodEnumeration", +"ReturnShippingFees", +"Review", +"ReviewAction", +"ReviewNewsArticle", +"Rheumatologic", +"RightHandDriving", +"RisksOrComplicationsHealthAspect", +"RiverBodyOfWater", +"Role", +"RoofingContractor", +"Room", +"RsvpAction", +"RsvpResponseMaybe", +"RsvpResponseNo", +"RsvpResponseType", +"RsvpResponseYes", +"SRP", +"SafetyHealthAspect", +"SaleEvent", +"SalePrice", +"SatireOrParodyContent", +"SatiricalArticle", +"Saturday", +"Schedule", +"ScheduleAction", +"ScholarlyArticle", +"School", +"SchoolDistrict", +"ScreeningEvent", +"ScreeningHealthAspect", +"Sculpture", +"SeaBodyOfWater", +"SearchAction", +"SearchRescueOrganization", +"SearchResultsPage", +"Season", +"Seat", +"SeatingMap", +"SeeDoctorHealthAspect", +"SeekToAction", +"SelfCareHealthAspect", +"SelfStorage", +"SellAction", +"SendAction", +"Series", +"Service", +"ServiceChannel", +"SexualContentConsideration", +"ShareAction", +"SheetMusic", +"ShippingDeliveryTime", +"ShippingRateSettings", +"ShoeStore", +"ShoppingCenter", +"ShortStory", +"SideEffectsHealthAspect", +"SingleBlindedTrial", +"SingleCenterTrial", +"SingleFamilyResidence", +"SinglePlayer", +"SingleRelease", +"SiteNavigationElement", +"SizeGroupEnumeration", +"SizeSpecification", +"SizeSystemEnumeration", +"SizeSystemImperial", +"SizeSystemMetric", +"SkiResort", +"Skin", +"SocialEvent", +"SocialMediaPosting", +"SoftwareApplication", +"SoftwareSourceCode", +"SoldOut", +"SolveMathAction", +"SomeProducts", +"SoundtrackAlbum", +"SpeakableSpecification", +"SpecialAnnouncement", +"Specialty", +"SpeechPathology", +"SpokenWordAlbum", +"SportingGoodsStore", +"SportsActivityLocation", +"SportsClub", +"SportsEvent", +"SportsOrganization", +"SportsTeam", +"SpreadsheetDigitalDocument", +"StadiumOrArena", +"StagedContent", +"StagesHealthAspect", +"State", +"Statement", +"StatisticalPopulation", +"StatisticalVariable", +"StatusEnumeration", +"SteeringPositionValue", +"Store", +"StoreCreditRefund", +"StrengthTraining", +"StructuredValue", +"StudioAlbum", +"SubscribeAction", +"Subscription", +"Substance", +"SubwayStation", +"Suite", +"Sunday", +"SuperficialAnatomy", +"Surgical", +"SurgicalProcedure", +"SuspendAction", +"Suspended", +"Syllabus", +"SymptomsHealthAspect", +"Synagogue", +"TVClip", +"TVEpisode", +"TVSeason", +"TVSeries", +"Table", +"TakeAction", +"TattooParlor", +"Taxi", +"TaxiReservation", +"TaxiService", +"TaxiStand", +"TaxiVehicleUsage", +"Taxon", +"TechArticle", +"TelevisionChannel", +"TelevisionStation", +"TennisComplex", +"Terminated", +"Text", +"TextDigitalDocument", +"TextObject", +"TheaterEvent", +"TheaterGroup", +"Therapeutic", +"TherapeuticProcedure", +"Thesis", +"Thing", +"Throat", +"Thursday", +"Ticket", +"TieAction", +"Time", +"TipAction", +"TireShop", +"TobaccoNicotineConsideration", +"TollFree", +"TouristAttraction", +"TouristDestination", +"TouristInformationCenter", +"TouristTrip", +"Toxicologic", +"ToyStore", +"TrackAction", +"TradeAction", +"TraditionalChinese", +"TrainReservation", +"TrainStation", +"TrainTrip", +"TransferAction", +"TransformedContent", +"TransitMap", +"TravelAction", +"TravelAgency", +"TreatmentIndication", +"TreatmentsHealthAspect", +"Trip", +"TripleBlindedTrial", +"True", +"Tuesday", +"TypeAndQuantityNode", +"TypesHealthAspect", +"UKNonprofitType", +"UKTrust", +"URL", +"USNonprofitType", +"Ultrasound", +"UnRegisterAction", +"UnclassifiedAdultConsideration", +"UnemploymentSupport", +"UnincorporatedAssociationCharity", +"UnitPriceSpecification", +"UnofficialLegalValue", +"UpdateAction", +"Urologic", +"UsageOrScheduleHealthAspect", +"UseAction", +"UsedCondition", +"UserBlocks", +"UserCheckins", +"UserComments", +"UserDownloads", +"UserInteraction", +"UserLikes", +"UserPageVisits", +"UserPlays", +"UserPlusOnes", +"UserReview", +"UserTweets", +"VacationRental", +"VeganDiet", +"VegetarianDiet", +"Vehicle", +"Vein", +"VenueMap", +"Vessel", +"VeterinaryCare", +"VideoGallery", +"VideoGame", +"VideoGameClip", +"VideoGameSeries", +"VideoObject", +"VideoObjectSnapshot", +"ViewAction", +"VinylFormat", +"ViolenceConsideration", +"VirtualLocation", +"Virus", +"VisualArtsEvent", +"VisualArtwork", +"VitalSign", +"Volcano", +"VoteAction", +"WPAdBlock", +"WPFooter", +"WPHeader", +"WPSideBar", +"WantAction", +"WarrantyPromise", +"WarrantyScope", +"WatchAction", +"Waterfall", +"WeaponConsideration", +"WearAction", +"WearableMeasurementBack", +"WearableMeasurementChestOrBust", +"WearableMeasurementCollar", +"WearableMeasurementCup", +"WearableMeasurementHeight", +"WearableMeasurementHips", +"WearableMeasurementInseam", +"WearableMeasurementLength", +"WearableMeasurementOutsideLeg", +"WearableMeasurementSleeve", +"WearableMeasurementTypeEnumeration", +"WearableMeasurementWaist", +"WearableMeasurementWidth", +"WearableSizeGroupBig", +"WearableSizeGroupBoys", +"WearableSizeGroupEnumeration", +"WearableSizeGroupExtraShort", +"WearableSizeGroupExtraTall", +"WearableSizeGroupGirls", +"WearableSizeGroupHusky", +"WearableSizeGroupInfants", +"WearableSizeGroupJuniors", +"WearableSizeGroupMaternity", +"WearableSizeGroupMens", +"WearableSizeGroupMisses", +"WearableSizeGroupPetite", +"WearableSizeGroupPlus", +"WearableSizeGroupRegular", +"WearableSizeGroupShort", +"WearableSizeGroupTall", +"WearableSizeGroupWomens", +"WearableSizeSystemAU", +"WearableSizeSystemBR", +"WearableSizeSystemCN", +"WearableSizeSystemContinental", +"WearableSizeSystemDE", +"WearableSizeSystemEN13402", +"WearableSizeSystemEnumeration", +"WearableSizeSystemEurope", +"WearableSizeSystemFR", +"WearableSizeSystemGS1", +"WearableSizeSystemIT", +"WearableSizeSystemJP", +"WearableSizeSystemMX", +"WearableSizeSystemUK", +"WearableSizeSystemUS", +"WebAPI", +"WebApplication", +"WebContent", +"WebPage", +"WebPageElement", +"WebSite", +"Wednesday", +"WesternConventional", +"Wholesale", +"WholesaleStore", +"WinAction", +"Winery", +"Withdrawn", +"WorkBasedProgram", +"WorkersUnion", +"WriteAction", +"WritePermission", +"XPathType", +"XRay", +"ZoneBoardingPolicy", +"Zoo" +] diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..1e0747c --- /dev/null +++ b/go.mod @@ -0,0 +1,3 @@ +module code.bengoldsworthy.net/Rumperuu/Cataloguer + +go 1.22.10 diff --git a/layouts/_default/baseof.html b/layouts/_default/baseof.html new file mode 100644 index 0000000..87fefc5 --- /dev/null +++ b/layouts/_default/baseof.html @@ -0,0 +1,53 @@ + + +{{ partialCached "copying.html" . }} + + + + + + + + + + + + {{- block "title" . -}}{{- .Site.Title }} | {{ .Site.Params.tagline -}}{{- end -}} + + + + + {{ with .OutputFormats.Get "rss" }}{{ end }} + + + {{- $sass := resources.Get "css/main.scss" }} + {{- $style := $sass | css.Sass | resources.Fingerprint }} + + + + + + {{ block "header" . -}} + {{- partialCached "header/site-header.html" . -}} + {{- end }} + +
+ {{ block "main-header" . }}{{ end }} + {{ block "main-body" . }}{{ end }} + {{ block "main-footer" . }}{{ end }} +
+ + {{- block "footer" . -}} + + {{- end -}} + + + diff --git a/layouts/_default/list.html b/layouts/_default/list.html new file mode 100644 index 0000000..6dc1592 --- /dev/null +++ b/layouts/_default/list.html @@ -0,0 +1,37 @@ +{{ define "title" }} + {{ .Page.Title | plainify }} | {{ .Site.Title }} +{{ end }} + +{{ define "main-class" }}--list{{ end }} + +{{ define "main-type" }}.{{ .Params.mainType }}{{ end }} +{{ define "item-type" }}{{ .Params.itemsType }}{{ end }} + +{{ define "main-header" }} +
+

{{ .Title | safeHTML }} + {{ range .AlternativeOutputFormats -}} + + + + {{ end }} +

+ {{ .Content }} +
+{{ end }} + +{{ define "main-body" }} +
+ {{ if .File }} + {{ if ( eq .File.Dir "log/" ) }} + {{ .Scratch.Set "listMode" "log" }} + {{ else if ( eq .File.Dir "wishlist/" ) }} + {{ .Scratch.Set "listMode" "wishlist" }} + {{ end }} + + {{ if ( in "log/ wishlist/" .File.Dir ) }} + {{ partial "table" . }} + {{ end }} + {{ end }} +
+{{ end }} diff --git a/layouts/_default/section.html b/layouts/_default/section.html new file mode 100644 index 0000000..ddac409 --- /dev/null +++ b/layouts/_default/section.html @@ -0,0 +1,56 @@ +{{ define "title" }} + {{ .Page.Title | plainify }} | {{ .Site.Title }} +{{ end }} + +{{ define "main-class" }}--section{{ end }} + +{{ define "main-type" }}.{{ .Params.mainType }}{{ end }} +{{ define "item-type" }}{{ .Params.itemsType }}{{ end }} + +{{ define "main-header" }} +
+ {{- .Scratch.Set "section" ( first 1 ( split .File.Dir "/" ) ) -}} + {{- $section := .Scratch.Get "section" -}} + {{ if ( or ( in "books" ( delimit $section "" ) ) ( in "games" ( delimit $section "" ) ) ) }} + Current ~ + {{ end }} + Log ~ + Wishlist + +

{{ .Title | safeHTML }} + {{ range .AlternativeOutputFormats -}} + + + + {{ end }} +

+ {{ .Content }} +
+{{ end }} + +{{ define "main-body" }} +
+ {{ if .File }} + + {{ .Scratch.Set "page" ( index ( split .File.Dir "/" ) 1 ) }} + {{ if ( in "current log wishlist" ( .Scratch.Get "page" ) ) }} + + {{ if ( eq ( .Scratch.Get "page" ) "current" ) }} + {{ .Scratch.Set "listMode" "current" }} + + {{ else if ( eq ( .Scratch.Get "page" ) "log" ) }} + {{ .Scratch.Set "listMode" "log" }} + + {{ else if ( eq ( .Scratch.Get "page" ) "wishlist" ) }} + {{ .Scratch.Set "listMode" "wishlist" }} + + {{ end }} + + {{ partial "stats" . }} + + {{ partial "table" . }} + + {{ end }} + {{ end }} +
+{{ end }} diff --git a/layouts/_default/single.html b/layouts/_default/single.html new file mode 100644 index 0000000..d0669a6 --- /dev/null +++ b/layouts/_default/single.html @@ -0,0 +1,76 @@ +{{ define "title" }}{{ .Title | plainify }} | {{ .Site.Title }}{{ end }} + +{{ define "head-description" }}{{ .Summary | plainify }}{{ end }} + +{{ define "main-class" }}--single{{ end }} + +{{ define "main-header" }} +
+
+
+

+ {{ .Title | safeHTML }} +

+ {{ with .Params.subtitle }} +

{{ . | safeHTML }}

+ {{ end }} +
+ {{ with .Resources.GetMatch .Params.featured_image }} +

+ {{ if .Params.attrlink }}{{ end }} + {{- .Params.Attr | safeHTML -}} + {{ if .Params.attrlink }}{{ end }} + {{ if .Params.attrlicence }} ({{ .Params.attrlicence }}){{ end }} +

+ {{ end }} +

+ +

~{{ .FuzzyWordCount | lang.FormatNumberCustom 0 }} words

+

Published:

+

Last modified: {{ .Lastmod.Format "January 2" }}{{ if in (slice 1 21 31) .Lastmod.Day}}st{{ else if in (slice 2 22) .Lastmod.Day}}nd{{ else if in (slice 3 23) .Lastmod.Day}}rd{{ else }}th{{ end }}, 1{{ .Lastmod.Format "2006" | lang.FormatNumberCustom 0 }} HE

+ + {{ $post_age_in_years := math.Round ( div ( div ( now.Sub .PublishDate ).Hours 24 ) 365 ) }} + {{ if ( or .Params.site .Params.controversial ( gt $post_age_in_years 2 ) ) }} + + {{ end }} + + {{ if .Params.notes }} + + {{ end }} + + {{ if and ( .TableOfContents ) ( ne .TableOfContents "" ) }} + + {{ end }} +
+{{ end }} + +{{ define "main-body" }} +
+ {{ .Content }} +
+{{ end }} + +{{ define "main-footer" }} +{{ end }} diff --git a/layouts/index.html b/layouts/index.html new file mode 100644 index 0000000..aebd420 --- /dev/null +++ b/layouts/index.html @@ -0,0 +1,11 @@ +{{ define "main-class" }}--homepage{{ end }} + +{{ define "header" }} {{ end }} + +{{ define "main-body" }} +

+ Ben's Catalogue +

+ + {{ range ( where .Pages "Type" "in" site.Params.mainSections ).ByTitle }}

{{ .Title }}

{{ end }} +{{ end }} diff --git a/layouts/partials/books/rows/authors.html b/layouts/partials/books/rows/authors.html new file mode 100644 index 0000000..cd33201 --- /dev/null +++ b/layouts/partials/books/rows/authors.html @@ -0,0 +1,34 @@ +{{- with .Author -}} +

{{ . }}

+{{- else -}} + {{- $authors_names := slice -}} + + {{- range .authors -}} + {{- $authors_names = $authors_names | append .name -}} + {{- end -}} + {{- range .work.authors -}} + {{- $authors_names = $authors_names | append .name -}} + {{- end -}} + {{- if .contributors -}} + {{- range ( where .contributors "role" "like" `[aA]uthor` ) -}} + {{- $authors_names = $authors_names | append .name -}} + {{- end -}} + {{- end -}} +

{{ delimit ( uniq $authors_names ) ", " }}

+{{- end -}} + +{{- if .contributors -}} + {{- $translators_names := slice -}} + + {{- range ( where .contributors "role" "like" `[tT]ranslat` ) -}} + {{- $translators_names = $translators_names | append .name -}} + {{- end -}} + + {{- with $translators_names -}} +

Translator(s): {{ delimit ( uniq . ) ", " }}

+ {{- end -}} +{{- end -}} + +{{- with ( index . "Additional Authors" ) -}} +

Additional Author(s): {{ . }}

+{{- end -}} diff --git a/layouts/partials/books/rows/publish-date.html b/layouts/partials/books/rows/publish-date.html new file mode 100644 index 0000000..e11e043 --- /dev/null +++ b/layouts/partials/books/rows/publish-date.html @@ -0,0 +1,7 @@ +

{{- .publish_date -}} +{{- if .first_publish_date -}} + {{- if ( ne .first_publish_date .publish_date ) -}} +  (orig. {{ .first_publish_date }}) + {{- end -}} +{{- end -}} +

diff --git a/layouts/partials/books/rows/read-dates.html b/layouts/partials/books/rows/read-dates.html new file mode 100644 index 0000000..0dffc7c --- /dev/null +++ b/layouts/partials/books/rows/read-dates.html @@ -0,0 +1,9 @@ +{{- with .date_started -}} + {{- time.Format "Jan 2, 2006" . -}} +{{- else -}} + Unknown +{{- end -}}–{{- with .date_finished -}} + {{- time.Format "Jan 2, 2006" . -}} +{{- else -}} + Unknown +{{- end -}} diff --git a/layouts/partials/books/rows/title.html b/layouts/partials/books/rows/title.html new file mode 100644 index 0000000..e0c227e --- /dev/null +++ b/layouts/partials/books/rows/title.html @@ -0,0 +1,23 @@ +{{- + $cite_options := ( dict + "c" .c + "g" .g + "section" "books" + "schemaType" "Book" + "title" ( cond ( isset .c "subtitle" ) ( + printf "%s: %s" .c.title .c.subtitle + ) ( + .c.title + ) + ) + "edition" ( + default .c.edition_name .c.Edition + ) + ) +-}} + +{{- if .c.work.original_language -}} + {{- $cite_options = merge $cite_options ( dict "titleLang" .c.work.original_language "titleTrans" .c.work.title ) -}} +{{- end -}} + +{{- partial "cite" $cite_options -}} diff --git a/layouts/partials/books/table-body.html b/layouts/partials/books/table-body.html new file mode 100644 index 0000000..9fe5ffe --- /dev/null +++ b/layouts/partials/books/table-body.html @@ -0,0 +1,112 @@ +{{ if ( eq ( .Scratch.Get "listMode" ) "current" ) }} + {{ range ( sort $.Site.Data.books.current "date_started" "desc" ) }} + + {{ with .date_added }}{{ time.Format "Jan 2, 2006" . }}{{ else }}n/a{{ end }} + + + {{- partial "books/rows/title.html" ( dict "c" . "g" $ ) -}} + + {{- with .comments -}} +

Comments: {{ . }}

+ {{- end -}} + + + + {{- partial "books/rows/authors.html" . -}} + + + + {{- partial "books/rows/publish-date.html" . -}} + + + + {{- with .date_started -}} + Since {{ time.Format "Jan 2, 2006" . -}} + {{- else -}} + Unknown + {{- end -}} + + + {{ end }} +{{ else if ( eq ( .Scratch.Get "listMode" ) "log" ) }} + +

Diary

+ + {{ range ( sort ( where $.Site.Data.books.log "Date Finished" "!=" "" ) "Date Finished" "desc" ) }} + + {{ with .date_added }}{{ time.Format "Jan 2, 2006" . }}{{ else }}n/a{{ end }} + + + {{- partial "books/rows/title.html" ( dict "c" . "g" $ ) -}} + + {{- with .comments -}} +

Comments: {{ . }}

+ {{- end -}} + + + + {{- partial "books/rows/authors.html" . -}} + + + + {{- partial "books/rows/publish-date.html" . -}} + + + + {{- partial "books/rows/read-dates.html" . -}} + + + {{ end }} + +

Assorted

+ + {{ range ( sort ( where $.Site.Data.books.log "Date Finished" "" ) "Title" "asc" ) }} + + {{ with .date_added }}{{ time.Format "Jan 2, 2006" . }}{{ else }}n/a{{ end }} + + + {{- partial "books/rows/title.html" ( dict "c" . "g" $ ) -}} + + {{- with .comments -}} +

Comments: {{ . }}

+ {{- end -}} + + + + {{- partial "books/rows/authors.html" . -}} + + + + {{- partial "books/rows/publish-date.html" . -}} + + + + {{- partial "books/rows/read-dates.html" . -}} + + + {{ end }} +{{ else if ( eq ( .Scratch.Get "listMode" ) "wishlist" ) }} + {{ range ( sort $.Site.Data.books.wishlist "Title" "asc" ) }} + + {{ with .date_added }}{{ time.Format "Jan 2, 2006" . }}{{ else }}n/a{{ end }} + + + {{- partial "books/rows/title.html" ( dict "c" . "g" $ ) -}} + + {{- with .comments -}} +

Comments: {{ . }}

+ {{- end -}} + + + + {{- partial "books/rows/authors.html" . -}} + + + + {{- partial "books/rows/publish-date.html" . -}} + + + n/a + + {{ end }} +{{ end }} diff --git a/layouts/partials/books/table-header.html b/layouts/partials/books/table-header.html new file mode 100644 index 0000000..341406a --- /dev/null +++ b/layouts/partials/books/table-header.html @@ -0,0 +1,5 @@ +Date Added +Title +Author(s) +Publication Date +Dates Read diff --git a/layouts/partials/cite.html b/layouts/partials/cite.html new file mode 100644 index 0000000..f511f42 --- /dev/null +++ b/layouts/partials/cite.html @@ -0,0 +1,21 @@ +{{- $itemType := default "CreativeWork" .schemaType -}} + +{{- $pages := where ( where .g.Site.Pages "Section" .section ) "title" .title | first 1 -}} + +{{- with .c -}} + {{- with $pages -}}{{- range . -}}{{- end -}}{{- end -}} + + {{- default .Title $.title -}} + + {{- with $pages -}}{{- end -}} + + {{- with $.edition }}

{{ . }}

{{- end -}} +{{- end -}} diff --git a/layouts/partials/copying.html b/layouts/partials/copying.html new file mode 100644 index 0000000..5684e7b --- /dev/null +++ b/layouts/partials/copying.html @@ -0,0 +1,12 @@ +{{ "" | safeHTML }} diff --git a/layouts/partials/films/table-body.html b/layouts/partials/films/table-body.html new file mode 100644 index 0000000..963e938 --- /dev/null +++ b/layouts/partials/films/table-body.html @@ -0,0 +1,81 @@ +{{ if ( eq ( .Scratch.Get "listMode" ) "log" ) }} + +

Diary

+ + {{ range ( sort ( where $.Site.Data.films.log "date_finished" "!=" "" ) "date_finished" "desc" ) }} + + {{ with .date_added }}{{ time.Format "Jan 2, 2006" . }}{{ end }} + + + {{- partial "cite" ( dict "c" . "g" $ "section" "films" "schemaType" "Movie" "title" .title "titleLang" .original_language "titleTrans" .original_title ) -}} + + {{- with .comments -}} +

Comments: {{ . }}

+ {{- end -}} + + + {{ with .release_date }}{{ time.Format "Jan 2, 2006" . }}{{ end }} + + + {{- if .date_finished -}} + {{- time.Format "Jan 2, 2006" .date_finished -}} + {{- if .is_repeat }} ↻{{ end -}} + {{- else -}} + n/a + {{- end -}} + + + {{ end }} + +

Assorted

+ + {{ range ( sort ( where $.Site.Data.films.log "date_finished" "" ) "title" "asc" ) }} + + {{ with .date_added }}{{ time.Format "Jan 2, 2006" . }}{{ end }} + + + {{- partial "cite" ( dict "c" . "g" $ "section" "films" "schemaType" "Movie" "title" .title "titleLang" .original_language "titleTrans" .original_title ) -}} + + {{- with .comments -}} +

Comments: {{ . }}

+ {{- end -}} + + + {{ with .release_date }}{{ time.Format "Jan 2, 2006" . }}{{ end }} + + + {{- if .date_finished -}} + {{- time.Format "Jan 2, 2006" .date_finished -}} + {{- if .is_repeat }} ↻{{ end -}} + {{- else -}} + n/a + {{- end -}} + + + {{ end }} +{{ else if ( eq ( .Scratch.Get "listMode" ) "wishlist" ) }} + {{ range ( sort $.Site.Data.films.wishlist "title" "asc" ) }} + + {{ with .date_added }}{{ time.Format "Jan 2, 2006" . }}{{ end }} + + + {{- partial "cite" ( dict "c" . "g" $ "section" "films" "schemaType" "Movie" "title" .title "titleLang" .original_language "titleTrans" .original_title ) -}} + + {{- with .comments -}} +

Comments: {{ . }}

+ {{- end -}} + + + {{ with .release_date }}{{ time.Format "Jan 2, 2006" . }}{{ end }} + + + {{- if .date_finished -}} + {{- time.Format "Jan 2, 2006" .date_finished -}} + {{- if .is_repeat }} ↻{{ end -}} + {{- else -}} + n/a + {{- end -}} + + + {{ end }} +{{ end }} diff --git a/layouts/partials/films/table-header.html b/layouts/partials/films/table-header.html new file mode 100644 index 0000000..dd6b0e9 --- /dev/null +++ b/layouts/partials/films/table-header.html @@ -0,0 +1,4 @@ +Date Added +Title +Release Date +Date Watched diff --git a/layouts/partials/games/table-body.html b/layouts/partials/games/table-body.html new file mode 100644 index 0000000..4d76fa0 --- /dev/null +++ b/layouts/partials/games/table-body.html @@ -0,0 +1,78 @@ +{{ if ( eq ( .Scratch.Get "listMode" ) "current" ) }} + {{ range ( sort $.Site.Data.games.current "Date Started" "desc" ) }} + + + {{- partial "cite" ( dict "c" . "g" $ "section" "games" "schemaType" "VideoGame" ) -}} + + {{ index . "Date Released" }} + {{ .Platforms }} + + {{- if index . "Date Started" -}} + Since {{ time.Format "Jan 2, 2006" ( index . "Date Started" ) -}} + {{- else -}} + Unknown + {{- end -}} + + + {{ end }} +{{ else if ( eq ( .Scratch.Get "listMode" ) "log" ) }} + +

Diary

+ + {{ range ( sort ( where $.Site.Data.games.log "Date Finished" "!=" "" ) "Date Finished" "desc" ) }} + + + {{- partial "cite" ( dict "c" . "g" $ "section" "games" "schemaType" "VideoGame" ) -}} + + {{ index . "Date Released" }} + {{ .Platforms }} + + {{- if index . "Date Started" -}} + {{- time.Format "Jan 2, 2006" ( index . "Date Started" ) -}} + {{- else -}} + Unknown + {{- end -}}–{{- if index . "Date Finished" -}} + {{- time.Format "Jan 2, 2006" ( index . "Date Finished" ) -}} + {{- else -}} + Unknown + {{- end -}} + {{- if index . "Level of Completion" }} ({{ index . "Level of Completion" }}){{- end -}} + + + {{ end }} + +

Assorted

+ + {{ range ( sort ( where $.Site.Data.games.log "Date Finished" "" ) "Title" "asc" ) }} + + + {{- partial "cite" ( dict "c" . "g" $ "section" "games" "schemaType" "VideoGame" ) -}} + + {{ index . "Date Released" }} + {{ .Platforms }} + + {{- if index . "Date Started" -}} + {{- time.Format "Jan 2, 2006" ( index . "Date Started" ) -}} + {{- else -}} + Unknown + {{- end -}}–{{- if index . "Date Finished" -}} + {{- time.Format "Jan 2, 2006" ( index . "Date Finished" ) -}} + {{- else -}} + Unknown + {{- end -}} + {{- if index . "Level of Completion" }} ({{ index . "Level of Completion" }}){{- end -}} + + + {{ end }} +{{ else if ( eq ( .Scratch.Get "listMode" ) "wishlist" ) }} + {{ range ( sort $.Site.Data.games.wishlist "Title" "asc" ) }} + + + {{- partial "cite" ( dict "c" . "g" $ "section" "games" "schemaType" "VideoGame" ) -}} + + {{ index . "Date Released" }} + {{ .Platforms }} + n/a + + {{ end }} +{{ end }} diff --git a/layouts/partials/games/table-header.html b/layouts/partials/games/table-header.html new file mode 100644 index 0000000..04613f6 --- /dev/null +++ b/layouts/partials/games/table-header.html @@ -0,0 +1,4 @@ +Title +Release Year +Platform(s) Played +Date Played diff --git a/layouts/partials/header/site-header.html b/layouts/partials/header/site-header.html new file mode 100644 index 0000000..d164b07 --- /dev/null +++ b/layouts/partials/header/site-header.html @@ -0,0 +1,20 @@ + diff --git a/layouts/partials/series_by_id.html b/layouts/partials/series_by_id.html new file mode 100644 index 0000000..ca9d7ad --- /dev/null +++ b/layouts/partials/series_by_id.html @@ -0,0 +1,22 @@ +{{- $series_tmdb_id := .tmdb_id -}} +{{- $series := "" -}} + +{{- range ( index .g.Site.Data.tv_series.current ) -}} + {{- if ( eq .tmdb_id $series_tmdb_id ) -}} + {{- $series = . -}} + {{- end -}} +{{- end -}} + +{{- range ( index .g.Site.Data.tv_series.log ) -}} + {{- if ( eq .tmdb_id $series_tmdb_id ) -}} + {{- $series = . -}} + {{- end -}} +{{- end -}} + +{{- range ( index .g.Site.Data.tv_series.wishlist ) -}} + {{- if ( eq .tmdb_id $series_tmdb_id ) -}} + {{- $series = . -}} + {{- end -}} +{{- end -}} + +{{- return $series -}} diff --git a/layouts/partials/stats.html b/layouts/partials/stats.html new file mode 100644 index 0000000..4c2da90 --- /dev/null +++ b/layouts/partials/stats.html @@ -0,0 +1,51 @@ +{{- $section := default "" ( .Scratch.Get "section" ) -}} +{{- $list_mode := default "" ( .Scratch.Get "listMode" ) -}} +{{- $log_file := index ( index $.Site.Data $section ) $list_mode -}} + +{{- if $log_file -}} + {{- $total := len $log_file -}} + + {{- $today := time.Now -}} + + {{- + $this_year_total := ( + where ( + where $log_file "date_finished" "gt" ( + ( $today.AddDate -1 0 0 ).Format "2006-01-02" + ) + ) "date_finished" "lt" ( $today.Format "2006-01-02" ) + ) | len + -}} + + {{- + $this_quarter_total := ( + where ( + where $log_file "date_finished" "gt" ( + ( $today.AddDate 0 -3 0 ).Format "2006-01-02" + ) + ) "date_finished" "lt" ( $today.Format "2006-01-02" ) + ) | len + -}} + {{- + $this_month_total := ( + where ( + where $log_file "date_finished" "gt" ( + ( $today.AddDate 0 -1 0 ).Format "2006-01-02" + ) + ) "date_finished" "lt" ( $today.Format "2006-01-02" ) + ) | len + -}} + +
+ Summary + +
+

Total: {{ lang.FormatNumber 0 $total }}

+ {{- if eq $list_mode "log" -}} +

Last 12 months: {{ lang.FormatNumber 0 $this_year_total }}

+

Last 3 months: {{ lang.FormatNumber 0 $this_quarter_total }}

+

Last month: {{ lang.FormatNumber 0 $this_month_total }}

+ {{- end -}} +
+
+{{- end -}} diff --git a/layouts/partials/table.html b/layouts/partials/table.html new file mode 100644 index 0000000..45ea2bd --- /dev/null +++ b/layouts/partials/table.html @@ -0,0 +1,16 @@ +{{ if ( .Scratch.Get "listMode" ) }} + + + + {{ if ( and ( in site.Params.mainSections .Section ) ( in "current log wishlist" ( .Scratch.Get "page" ) ) ) }} + {{ partial ( printf "%s/%s" .Section "table-header" ) . }} + {{ end }} + + + + {{ if ( and ( in site.Params.mainSections .Section ) ( in "current log wishlist" ( .Scratch.Get "page" ) ) ) }} + {{ partial ( printf "%s/%s" .Section "table-body" ) . }} + {{ end }} + +
+{{ end }} diff --git a/layouts/partials/tv/table-body.html b/layouts/partials/tv/table-body.html new file mode 100644 index 0000000..335e3f0 --- /dev/null +++ b/layouts/partials/tv/table-body.html @@ -0,0 +1,46 @@ +{{ if ( eq ( .Scratch.Get "listMode" ) "log" ) }} + {{ if ( eq ( .Scratch.Get "listMode" ) "log" ) }} + {{ .Scratch.Set "filterCol" "date_finished" }} + {{ .Scratch.Set "filterDir" "desc" }} + {{ end }} + + {{ range ( sort ( index $.Site.Data.tv_episodes ( .Scratch.Get "listMode" ) ) ( .Scratch.Get "filterCol" ) ( .Scratch.Get "filterDir" ) ) }} + + + + + + + + {{ end }} +{{ end }} diff --git a/layouts/partials/tv/table-header.html b/layouts/partials/tv/table-header.html new file mode 100644 index 0000000..55da00d --- /dev/null +++ b/layouts/partials/tv/table-header.html @@ -0,0 +1,3 @@ + + + diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..3a5989c --- /dev/null +++ b/package-lock.json @@ -0,0 +1,4567 @@ +{ + "name": "cataloguer", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "cataloguer", + "version": "1.0.0", + "devDependencies": { + "eslint": "^9.17.0", + "husky": "^9.1.7", + "jsonlint": "^1.6.3", + "lint-staged": "^15.3.0", + "markdownlint": "^0.37.3", + "markdownlint-cli": "^0.43.0", + "prettier": "^3.4.2", + "stylelint": "^16.12.0", + "stylelint-config-standard-scss": "^14.0.0", + "stylelint-prettier": "^5.0.2", + "stylelint-scss": "^6.10.0", + "stylelint-selector-bem-pattern": "^4.0.1" + } + }, + "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": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz", + "integrity": "sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", + "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/config-array": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.19.1.tgz", + "integrity": "sha512-fo6Mtm5mWyKjA/Chy1BYTdn5mGJoDNjC7C64ug20ADsRDGrA85bN3uK3MaKbeRkRuuIEAR5N33Jr1pbm411/PA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/object-schema": "^2.1.5", + "debug": "^4.3.1", + "minimatch": "^3.1.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/core": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.9.1.tgz", + "integrity": "sha512-GuUdqkyyzQI5RMIWkHhvTWLCyLo1jNK3vzkSyaExH5kHPDHcuL2VOpHjmMY+y3+NC69qAKToBqldTBgYeLSr9Q==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.2.0.tgz", + "integrity": "sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^10.0.1", + "globals": "^14.0.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/js": { + "version": "9.17.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.17.0.tgz", + "integrity": "sha512-Sxc4hqcs1kTu0iID3kcZDW3JHq2a77HO9P8CP6YEA/FpH3Ll8UXE2r/86Rz9YJLKme39S9vU5OWNjC6Xl0Cr3w==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/object-schema": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.5.tgz", + "integrity": "sha512-o0bhxnL89h5Bae5T318nFoFzGy+YE5i/gGkoPAgkmTVdRKTiv3p8JHevPiPaMwoloKfEiiaHlawCqaZMqRm+XQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/plugin-kit": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.4.tgz", + "integrity": "sha512-zSkKow6H5Kdm0ZUQUB2kV5JIXqoG0+uH5YADhaEHswm664N9Db8dXSi0nMJpacpMf+MyyglF1vnZohpEg5yUtg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "levn": "^0.4.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@humanfs/core": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", + "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node": { + "version": "0.16.6", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz", + "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanfs/core": "^0.19.1", + "@humanwhocodes/retry": "^0.3.0" + }, + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node/node_modules/@humanwhocodes/retry": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", + "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/retry": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.1.tgz", + "integrity": "sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@types/debug": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", + "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/ms": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", + "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/katex": { + "version": "0.16.7", + "resolved": "https://registry.npmjs.org/@types/katex/-/katex-0.16.7.tgz", + "integrity": "sha512-HMwFiRujE5PjrgwHQ25+bsLJgowjGjm5Z8FVSf0N6PwgJrwxH0QxzHYDcKsTfV3wva0vzrpqMTJS2jXPr5BMEQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/ms": { + "version": "0.7.34", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.34.tgz", + "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/unist": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", + "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", + "dev": true, + "license": "MIT" + }, + "node_modules/acorn": { + "version": "8.14.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", + "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-escapes": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-7.0.0.tgz", + "integrity": "sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw==", + "dev": true, + "license": "MIT", + "dependencies": { + "environment": "^1.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "license": "Python-2.0" + }, + "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/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/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "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/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/character-entities": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", + "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-legacy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", + "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-reference-invalid": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz", + "integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/cli-cursor": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-5.0.0.tgz", + "integrity": "sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==", + "dev": true, + "license": "MIT", + "dependencies": { + "restore-cursor": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-truncate": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-4.0.0.tgz", + "integrity": "sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==", + "dev": true, + "license": "MIT", + "dependencies": { + "slice-ansi": "^5.0.0", + "string-width": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/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/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "dev": true, + "license": "MIT" + }, + "node_modules/commander": { + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", + "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "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.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "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/debug": { + "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.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decode-named-character-reference": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz", + "integrity": "sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==", + "dev": true, + "license": "MIT", + "dependencies": { + "character-entities": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/devlop": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", + "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", + "dev": true, + "license": "MIT", + "dependencies": { + "dequal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "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/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true, + "license": "MIT" + }, + "node_modules/emoji-regex": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz", + "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==", + "dev": true, + "license": "MIT" + }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "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/environment": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/environment/-/environment-1.1.0.tgz", + "integrity": "sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "9.17.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.17.0.tgz", + "integrity": "sha512-evtlNcpJg+cZLcnVKwsai8fExnqjGPicK7gnUtlNuzu+Fv9bI0aLpND5T44VLQtoMEnI57LoXO9XAkIXwohKrA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.12.1", + "@eslint/config-array": "^0.19.0", + "@eslint/core": "^0.9.0", + "@eslint/eslintrc": "^3.2.0", + "@eslint/js": "9.17.0", + "@eslint/plugin-kit": "^0.2.3", + "@humanfs/node": "^0.16.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.4.1", + "@types/estree": "^1.0.6", + "@types/json-schema": "^7.0.15", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.6", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^8.2.0", + "eslint-visitor-keys": "^4.2.0", + "espree": "^10.3.0", + "esquery": "^1.5.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^8.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } + } + }, + "node_modules/eslint-scope": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.2.0.tgz", + "integrity": "sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", + "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.3.0.tgz", + "integrity": "sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.14.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eventemitter3": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", + "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", + "dev": true, + "license": "MIT" + }, + "node_modules/execa": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", + "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^8.0.1", + "human-signals": "^5.0.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^3.0.0" + }, + "engines": { + "node": ">=16.17" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-diff": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", + "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "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.4" + }, + "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", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-uri": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.3.tgz", + "integrity": "sha512-aLrHthzCjH5He4Z2H9YZ+v6Ujb9ocRuW6ZzkJQOrTxleEijANq4v1TsaPaVG1PZcuurEzrLcWRyYBYXD5cEiaw==", + "dev": true, + "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.18.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.18.0.tgz", + "integrity": "sha512-QKHXPW0hD8g4UET03SdOdunzSouc9N4AuHdsX8XNcTsuz+yYFILVNIX4l9yHABMhiEI9Db0JTTIpu0wB+Y1QQw==", + "dev": true, + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/file-entry-cache": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "flat-cache": "^4.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "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": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "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" + } + }, + "node_modules/flat-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.4" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/flatted": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.2.tgz", + "integrity": "sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==", + "dev": true, + "license": "ISC" + }, + "node_modules/foreground-child": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz", + "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==", + "dev": true, + "license": "ISC", + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/get-east-asian-width": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.3.0.tgz", + "integrity": "sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-stream": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", + "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/glob": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-11.0.0.tgz", + "integrity": "sha512-9UiX/Bl6J2yaBbxKoEBRm4Cipxgok8kQYcOPEhScPwebu2I0HoQOuYdIO6S3hLuWoZgpDpwQZMzTFxgpkyT76g==", + "dev": true, + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^4.0.1", + "minimatch": "^10.0.0", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^2.0.0" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/glob/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/glob/node_modules/minimatch": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.1.tgz", + "integrity": "sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "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/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/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": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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/has-color": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/has-color/-/has-color-0.1.7.tgz", + "integrity": "sha512-kaNz5OTAYYmt646Hkqw50/qyxP2vFnTVu5AQ1Zmk22Kk5+4Qx6BpO8+u7IKsML5fOsFk0ZT0AcCJNYwcvaLBvw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/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/human-signals": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", + "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=16.17.0" + } + }, + "node_modules/husky": { + "version": "9.1.7", + "resolved": "https://registry.npmjs.org/husky/-/husky-9.1.7.tgz", + "integrity": "sha512-5gs5ytaNjBrh5Ow3zrvdUUY+0VxIuWVL4i9irt6friV+BqdCfmV11CQTWMiBYWHbXhco+J1kHfTOUkePhCDvMA==", + "dev": true, + "license": "MIT", + "bin": { + "husky": "bin.js" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/typicode" + } + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/ini": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.3.tgz", + "integrity": "sha512-X7rqawQBvfdjS10YU1y1YVreA3SsLrW9dX2CewP2EbBJM4ypVNLDkO5y04gejPwKIY9lR+7r9gn3rFPt/kmWFg==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/is-alphabetical": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz", + "integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-alphanumerical": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz", + "integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-alphabetical": "^2.0.0", + "is-decimal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "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-decimal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz", + "integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", + "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-hexadecimal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz", + "integrity": "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "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-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-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, + "license": "ISC" + }, + "node_modules/jackspeak": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.0.2.tgz", + "integrity": "sha512-bZsjR/iRjl1Nk1UkjGpAzLNfQtzuijhn2g+pbZb98HQ1Gk8vM9hfbxeMBP+M2/UUdwj0RqGG3mlvk2MsAqwvEw==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "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", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "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", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/jsonc-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz", + "integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/jsonlint": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/jsonlint/-/jsonlint-1.6.3.tgz", + "integrity": "sha512-jMVTMzP+7gU/IyC6hvKyWpUU8tmTkK5b3BPNuMI9U8Sit+YAWLlZwB6Y6YrdCxfg2kNz05p3XY3Bmm4m26Nv3A==", + "dev": true, + "dependencies": { + "JSV": "^4.0.x", + "nomnom": "^1.5.x" + }, + "bin": { + "jsonlint": "lib/cli.js" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/jsonpointer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.1.tgz", + "integrity": "sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/JSV": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/JSV/-/JSV-4.0.2.tgz", + "integrity": "sha512-ZJ6wx9xaKJ3yFUhq5/sk82PJMuUyLk277I8mQeyDgCTjGdjWJIvPfaU5LIXaMuaN2UO1X3kZH4+lgphublZUHw==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/katex": { + "version": "0.16.19", + "resolved": "https://registry.npmjs.org/katex/-/katex-0.16.19.tgz", + "integrity": "sha512-3IA6DYVhxhBabjSLTNO9S4+OliA3Qvb8pBQXMfC4WxXJgLwZgnfDl0BmB4z6nBMdznBsZ+CGM8DrGZ5hcguDZg==", + "dev": true, + "funding": [ + "https://opencollective.com/katex", + "https://github.com/sponsors/katex" + ], + "license": "MIT", + "dependencies": { + "commander": "^8.3.0" + }, + "bin": { + "katex": "cli.js" + } + }, + "node_modules/katex/node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 12" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "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", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lilconfig": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", + "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" + } + }, + "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/linkify-it": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.0.tgz", + "integrity": "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "uc.micro": "^2.0.0" + } + }, + "node_modules/lint-staged": { + "version": "15.3.0", + "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-15.3.0.tgz", + "integrity": "sha512-vHFahytLoF2enJklgtOtCtIjZrKD/LoxlaUusd5nh7dWv/dkKQJY74ndFSzxCdv7g0ueGg1ORgTSt4Y9LPZn9A==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "~5.4.1", + "commander": "~12.1.0", + "debug": "~4.4.0", + "execa": "~8.0.1", + "lilconfig": "~3.1.3", + "listr2": "~8.2.5", + "micromatch": "~4.0.8", + "pidtree": "~0.6.0", + "string-argv": "~0.3.2", + "yaml": "~2.6.1" + }, + "bin": { + "lint-staged": "bin/lint-staged.js" + }, + "engines": { + "node": ">=18.12.0" + }, + "funding": { + "url": "https://opencollective.com/lint-staged" + } + }, + "node_modules/lint-staged/node_modules/chalk": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz", + "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/listr2": { + "version": "8.2.5", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-8.2.5.tgz", + "integrity": "sha512-iyAZCeyD+c1gPyE9qpFu8af0Y+MRtmKOncdGoA2S5EY8iFq99dmmvkNnHiWo+pj0s7yH7l3KPIgee77tKpXPWQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "cli-truncate": "^4.0.0", + "colorette": "^2.0.20", + "eventemitter3": "^5.0.1", + "log-update": "^6.1.0", + "rfdc": "^1.4.1", + "wrap-ansi": "^9.0.0" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "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/log-update": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-6.1.0.tgz", + "integrity": "sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-escapes": "^7.0.0", + "cli-cursor": "^5.0.0", + "slice-ansi": "^7.1.0", + "strip-ansi": "^7.1.0", + "wrap-ansi": "^9.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/log-update/node_modules/is-fullwidth-code-point": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-5.0.0.tgz", + "integrity": "sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-east-asian-width": "^1.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update/node_modules/slice-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-7.1.0.tgz", + "integrity": "sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.2.1", + "is-fullwidth-code-point": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/lru-cache": { + "version": "11.0.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.0.2.tgz", + "integrity": "sha512-123qHRfJBmo2jXDbo/a5YOQrJoHF/GNQTLzQ5+IdK5pWpceK17yRc6ozlWd25FxvGKQbIUs91fDFkXmDHTKcyA==", + "dev": true, + "license": "ISC", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/markdown-it": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.1.0.tgz", + "integrity": "sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1", + "entities": "^4.4.0", + "linkify-it": "^5.0.0", + "mdurl": "^2.0.0", + "punycode.js": "^2.3.1", + "uc.micro": "^2.1.0" + }, + "bin": { + "markdown-it": "bin/markdown-it.mjs" + } + }, + "node_modules/markdownlint": { + "version": "0.37.3", + "resolved": "https://registry.npmjs.org/markdownlint/-/markdownlint-0.37.3.tgz", + "integrity": "sha512-eoQqH0291YCCjd+Pe1PUQ9AmWthlVmS0XWgcionkZ8q34ceZyRI+pYvsWksXJJL8OBkWCPwp1h/pnXxrPFC4oA==", + "dev": true, + "license": "MIT", + "dependencies": { + "markdown-it": "14.1.0", + "micromark": "4.0.1", + "micromark-core-commonmark": "2.0.2", + "micromark-extension-directive": "3.0.2", + "micromark-extension-gfm-autolink-literal": "2.1.0", + "micromark-extension-gfm-footnote": "2.1.0", + "micromark-extension-gfm-table": "2.1.0", + "micromark-extension-math": "3.1.0", + "micromark-util-types": "2.0.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/DavidAnson" + } + }, + "node_modules/markdownlint-cli": { + "version": "0.43.0", + "resolved": "https://registry.npmjs.org/markdownlint-cli/-/markdownlint-cli-0.43.0.tgz", + "integrity": "sha512-6vwurKK4B21eyYzwgX6ph13cZS7hE6LZfcS8QyD722CyxVD2RtAvbZK2p7k+FZbbKORulEuwl+hJaEq1l6/hoQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "commander": "~12.1.0", + "glob": "~11.0.0", + "ignore": "~6.0.2", + "js-yaml": "^4.1.0", + "jsonc-parser": "~3.3.1", + "jsonpointer": "5.0.1", + "markdownlint": "~0.36.1", + "minimatch": "~10.0.1", + "run-con": "~1.3.2", + "smol-toml": "~1.3.1" + }, + "bin": { + "markdownlint": "markdownlint.js" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/markdownlint-cli/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/markdownlint-cli/node_modules/ignore": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-6.0.2.tgz", + "integrity": "sha512-InwqeHHN2XpumIkMvpl/DCJVrAHgCsG5+cn1XlnLWGwtZBm8QJfSusItfrwx81CTp5agNZqpKU2J/ccC5nGT4A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/markdownlint-cli/node_modules/markdownlint": { + "version": "0.36.1", + "resolved": "https://registry.npmjs.org/markdownlint/-/markdownlint-0.36.1.tgz", + "integrity": "sha512-s73fU2CQN7WCgjhaQUQ8wYESQNzGRNOKDd+3xgVqu8kuTEhmwepd/mxOv1LR2oV046ONrTLBFsM7IoKWNvmy5g==", + "dev": true, + "license": "MIT", + "dependencies": { + "markdown-it": "14.1.0", + "markdownlint-micromark": "0.1.12" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/DavidAnson" + } + }, + "node_modules/markdownlint-cli/node_modules/minimatch": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.1.tgz", + "integrity": "sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/markdownlint-micromark": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/markdownlint-micromark/-/markdownlint-micromark-0.1.12.tgz", + "integrity": "sha512-RlB6EwMGgc0sxcIhOQ2+aq7Zw1V2fBnzbXKGgYK/mVWdT7cz34fteKSwfYeo4rL6+L/q2tyC9QtD/PgZbkdyJQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/DavidAnson" + } + }, + "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/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/mdurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz", + "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==", + "dev": true, + "license": "MIT" + }, + "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/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true, + "license": "MIT" + }, + "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": "4.0.1", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.1.tgz", + "integrity": "sha512-eBPdkcoCNvYcxQOAKAlceo5SNdzZWfF+FcSupREAzdAh9rRmE239CEQAiTwIgblwnoM8zzj35sZ5ZwvSEOF6Kw==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "@types/debug": "^4.0.0", + "debug": "^4.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-core-commonmark": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.2.tgz", + "integrity": "sha512-FKjQKbxd1cibWMM1P9N+H8TwlgGgSkWZMmfuVucLCHaYqeSvJ0hFeHsIa65pA2nYbes0f8LDHPMrd9X7Ujxg9w==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-destination": "^2.0.0", + "micromark-factory-label": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-factory-title": "^2.0.0", + "micromark-factory-whitespace": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-html-tag-name": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-directive": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/micromark-extension-directive/-/micromark-extension-directive-3.0.2.tgz", + "integrity": "sha512-wjcXHgk+PPdmvR58Le9d7zQYWy+vKEU9Se44p2CrCDPiLr2FMyiT4Fyb5UFKFC66wGB3kPlgD7q3TnoqPS7SZA==", + "dev": true, + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-factory-whitespace": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "parse-entities": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-autolink-literal": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-2.1.0.tgz", + "integrity": "sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==", + "dev": true, + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-footnote": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-2.1.0.tgz", + "integrity": "sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==", + "dev": true, + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-table": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-2.1.0.tgz", + "integrity": "sha512-Ub2ncQv+fwD70/l4ou27b4YzfNaCJOvyX4HxXU15m7mpYY+rjuWzsLIPZHJL253Z643RpbcP1oeIJlQ/SKW67g==", + "dev": true, + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-math": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-math/-/micromark-extension-math-3.1.0.tgz", + "integrity": "sha512-lvEqd+fHjATVs+2v/8kg9i5Q0AP2k85H0WUOwpIVvUML8BapsMvh1XAogmQjOCsLpoKRCVQqEkQBB3NhVBcsOg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/katex": "^0.16.0", + "devlop": "^1.0.0", + "katex": "^0.16.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-factory-destination": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.1.tgz", + "integrity": "sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-label": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.1.tgz", + "integrity": "sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-space": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz", + "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-title": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.1.tgz", + "integrity": "sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-whitespace": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.1.tgz", + "integrity": "sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-chunked": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.1.tgz", + "integrity": "sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-classify-character": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.1.tgz", + "integrity": "sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-combine-extensions": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.1.tgz", + "integrity": "sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-chunked": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-decode-numeric-character-reference": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.2.tgz", + "integrity": "sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-encode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz", + "integrity": "sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-html-tag-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.1.tgz", + "integrity": "sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-normalize-identifier": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.1.tgz", + "integrity": "sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-resolve-all": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.1.tgz", + "integrity": "sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-sanitize-uri": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz", + "integrity": "sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-subtokenize": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.0.3.tgz", + "integrity": "sha512-VXJJuNxYWSoYL6AJ6OQECCFGhIU2GGHMw8tahogePBrjkG8aCCas3ibkp7RnVOSTClg2is05/R7maAhF1XyQMg==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-types": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.1.tgz", + "integrity": "sha512-534m2WhVTddrcKVepwmVEVnUAmtrx9bfIjNoQHRqfnvdaHQiFytEhJoTgpWJvDEXCO5gLTQh3wYC1PgOJA4NSQ==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "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/mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mimic-function": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/mimic-function/-/mimic-function-5.0.1.tgz", + "integrity": "sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/ms": { + "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.8", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz", + "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==", + "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", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true, + "license": "MIT" + }, + "node_modules/nomnom": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/nomnom/-/nomnom-1.8.1.tgz", + "integrity": "sha512-5s0JxqhDx9/rksG2BTMVN1enjWSvPidpoSgViZU4ZXULyTe+7jxcCRLB6f42Z0l1xYJpleCBtSyY6Lwg3uu5CQ==", + "deprecated": "Package no longer supported. Contact support@npmjs.com for more info.", + "dev": true, + "dependencies": { + "chalk": "~0.4.0", + "underscore": "~1.6.0" + } + }, + "node_modules/nomnom/node_modules/ansi-styles": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.0.0.tgz", + "integrity": "sha512-3iF4FIKdxaVYT3JqQuY3Wat/T2t7TRbbQ94Fu50ZUCbLy4TFbTzr90NOHQodQkNqmeEGCw8WbeP78WNi6SKYUA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/nomnom/node_modules/chalk": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.4.0.tgz", + "integrity": "sha512-sQfYDlfv2DGVtjdoQqxS0cEZDroyG8h6TamA6rvxwlrU5BaSLDx9xhatBYl2pxZ7gmpNaPFVwBtdGdu5rQ+tYQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "~1.0.0", + "has-color": "~0.1.0", + "strip-ansi": "~0.1.0" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/nomnom/node_modules/strip-ansi": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.1.1.tgz", + "integrity": "sha512-behete+3uqxecWlDAm5lmskaSaISA+ThQ4oNNBDTBJt0x2ppR6IPqfZNuj6BLaLJ/Sji4TPZlcRyOis8wXQTLg==", + "dev": true, + "license": "MIT", + "bin": { + "strip-ansi": "cli.js" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "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/npm-run-path": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", + "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm-run-path/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-fn": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/package-json-from-dist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", + "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", + "dev": true, + "license": "BlueOak-1.0.0" + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-entities": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.2.tgz", + "integrity": "sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^2.0.0", + "character-entities-legacy": "^3.0.0", + "character-reference-invalid": "^2.0.0", + "decode-named-character-reference": "^1.0.0", + "is-alphanumerical": "^2.0.0", + "is-decimal": "^2.0.0", + "is-hexadecimal": "^2.0.0" + }, + "funding": { + "type": "github", + "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", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-scurry": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.0.tgz", + "integrity": "sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "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/pidtree": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.6.0.tgz", + "integrity": "sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==", + "dev": true, + "license": "MIT", + "bin": { + "pidtree": "bin/pidtree.js" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/postcss": { + "version": "8.4.49", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.49.tgz", + "integrity": "sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==", + "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.7", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-bem-linter": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-bem-linter/-/postcss-bem-linter-4.0.1.tgz", + "integrity": "sha512-jTG3uMo6n2YyxLBPLsRN+5R9djNJZ3mirAugvnYbZaZOwPmLb/MaQ2uql0fSdVYegjZBmX8tW5B0mfZigiXZ9Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "minimatch": "^3.1.2", + "postcss-resolve-nested-selector": "^0.1.1" + }, + "peerDependencies": { + "postcss": "^8.4.21" + } + }, + "node_modules/postcss-media-query-parser": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz", + "integrity": "sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig==", + "dev": true, + "license": "MIT" + }, + "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-scss": { + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-4.0.9.tgz", + "integrity": "sha512-AjKOeiwAitL/MXxQW2DliT28EKukvvbEWx3LBmJIRN8KfBGZbRTxNYW0kSqi1COiTZ57nZ9NW06S6ux//N1c9A==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss-scss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "engines": { + "node": ">=12.0" + }, + "peerDependencies": { + "postcss": "^8.4.29" + } + }, + "node_modules/postcss-selector-parser": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.0.0.tgz", + "integrity": "sha512-9RbEr1Y7FFfptd/1eEdntyjMwLeghW1bHX9GWjXo19vx4ytPQhANltvVxDggzJl7mnWM+dX28kb6cyS/4iQjlQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "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", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.4.2.tgz", + "integrity": "sha512-e9MewbtFo+Fevyuxn/4rrcDAaq0IYxPGLvObpQjiZBMAzB9IGmzlnG9RZy3FFas+eBMu2vA0CszMeduow5dIuQ==", + "dev": true, + "license": "MIT", + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-diff": "^1.1.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/punycode.js": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz", + "integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "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/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-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/restore-cursor": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-5.1.0.tgz", + "integrity": "sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==", + "dev": true, + "license": "MIT", + "dependencies": { + "onetime": "^7.0.0", + "signal-exit": "^4.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/restore-cursor/node_modules/onetime": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-7.0.0.tgz", + "integrity": "sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-function": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rfdc": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", + "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==", + "dev": true, + "license": "MIT" + }, + "node_modules/run-con": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/run-con/-/run-con-1.3.2.tgz", + "integrity": "sha512-CcfE+mYiTcKEzg0IqS08+efdnH0oJ3zV0wSUFBNrMHMuxCtXvBCLzCJHatwuXDcu/RlhjTziTo/a1ruQik6/Yg==", + "dev": true, + "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~4.1.0", + "minimist": "^1.2.8", + "strip-json-comments": "~3.1.1" + }, + "bin": { + "run-con": "cli.js" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "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": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "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": "5.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz", + "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.0.0", + "is-fullwidth-code-point": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/slice-ansi/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/smol-toml": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/smol-toml/-/smol-toml-1.3.1.tgz", + "integrity": "sha512-tEYNll18pPKHroYSmLLrksq233j021G0giwW7P3D24jC54pQ5W5BXMsQ/Mvw1OJCmEYDgY+lrzT+3nNUtoNfXQ==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">= 18" + }, + "funding": { + "url": "https://github.com/sponsors/cyyynthia" + } + }, + "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-argv": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.2.tgz", + "integrity": "sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.6.19" + } + }, + "node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/string-width-cjs": { + "name": "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-width-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/string-width-cjs/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/stylelint": { + "version": "16.12.0", + "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-16.12.0.tgz", + "integrity": "sha512-F8zZ3L/rBpuoBZRvI4JVT20ZanPLXfQLzMOZg1tzPflRVh9mKpOZ8qcSIhh1my3FjAjZWG4T2POwGnmn6a6hbg==", + "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.0.1", + "debug": "^4.3.7", + "fast-glob": "^3.3.2", + "fastest-levenshtein": "^1.0.16", + "file-entry-cache": "^9.1.0", + "global-modules": "^2.0.0", + "globby": "^11.1.0", + "globjoin": "^0.1.4", + "html-tags": "^3.3.1", + "ignore": "^6.0.2", + "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.4.49", + "postcss-resolve-nested-selector": "^0.1.6", + "postcss-safe-parser": "^7.0.1", + "postcss-selector-parser": "^7.0.0", + "postcss-value-parser": "^4.2.0", + "resolve-from": "^5.0.0", + "string-width": "^4.2.3", + "supports-hyperlinks": "^3.1.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": "14.0.1", + "resolved": "https://registry.npmjs.org/stylelint-config-recommended/-/stylelint-config-recommended-14.0.1.tgz", + "integrity": "sha512-bLvc1WOz/14aPImu/cufKAZYfXs/A/owZfSMZ4N+16WGXLoX5lOir53M6odBxvhgmgdxCVnNySJmZKx73T93cg==", + "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.1.0" + } + }, + "node_modules/stylelint-config-recommended-scss": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/stylelint-config-recommended-scss/-/stylelint-config-recommended-scss-14.1.0.tgz", + "integrity": "sha512-bhaMhh1u5dQqSsf6ri2GVWWQW5iUjBYgcHkh7SgDDn92ijoItC/cfO/W+fpXshgTQWhwFkP1rVcewcv4jaftRg==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-scss": "^4.0.9", + "stylelint-config-recommended": "^14.0.1", + "stylelint-scss": "^6.4.0" + }, + "engines": { + "node": ">=18.12.0" + }, + "peerDependencies": { + "postcss": "^8.3.3", + "stylelint": "^16.6.1" + }, + "peerDependenciesMeta": { + "postcss": { + "optional": true + } + } + }, + "node_modules/stylelint-config-standard": { + "version": "36.0.1", + "resolved": "https://registry.npmjs.org/stylelint-config-standard/-/stylelint-config-standard-36.0.1.tgz", + "integrity": "sha512-8aX8mTzJ6cuO8mmD5yon61CWuIM4UD8Q5aBcWKGSf6kg+EC3uhB+iOywpTK4ca6ZL7B49en8yanOFtUW0qNzyw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/stylelint" + }, + { + "type": "github", + "url": "https://github.com/sponsors/stylelint" + } + ], + "license": "MIT", + "dependencies": { + "stylelint-config-recommended": "^14.0.1" + }, + "engines": { + "node": ">=18.12.0" + }, + "peerDependencies": { + "stylelint": "^16.1.0" + } + }, + "node_modules/stylelint-config-standard-scss": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/stylelint-config-standard-scss/-/stylelint-config-standard-scss-14.0.0.tgz", + "integrity": "sha512-6Pa26D9mHyi4LauJ83ls3ELqCglU6VfCXchovbEqQUiEkezvKdv6VgsIoMy58i00c854wVmOw0k8W5FTpuaVqg==", + "dev": true, + "license": "MIT", + "dependencies": { + "stylelint-config-recommended-scss": "^14.1.0", + "stylelint-config-standard": "^36.0.1" + }, + "engines": { + "node": ">=18.12.0" + }, + "peerDependencies": { + "postcss": "^8.3.3", + "stylelint": "^16.11.0" + }, + "peerDependenciesMeta": { + "postcss": { + "optional": true + } + } + }, + "node_modules/stylelint-prettier": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/stylelint-prettier/-/stylelint-prettier-5.0.2.tgz", + "integrity": "sha512-qJ+BN+1T2ZcKz9WIrv0x+eFGHzSUnXfXd5gL///T6XoJvr3D8/ztzz2fhtmXef7Vb8P33zBXmLTTveByr0nwBw==", + "dev": true, + "license": "MIT", + "dependencies": { + "prettier-linter-helpers": "^1.0.0" + }, + "engines": { + "node": ">=18.12.0" + }, + "peerDependencies": { + "prettier": ">=3.0.0", + "stylelint": ">=16.0.0" + } + }, + "node_modules/stylelint-scss": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-6.10.0.tgz", + "integrity": "sha512-y03if6Qw9xBMoVaf7tzp5BbnYhYvudIKzURkhSHzcHG0bW0fAYvQpTUVJOe7DyhHaxeThBil4ObEMvGbV7+M+w==", + "dev": true, + "license": "MIT", + "dependencies": { + "css-tree": "^3.0.1", + "is-plain-object": "^5.0.0", + "known-css-properties": "^0.35.0", + "mdn-data": "^2.12.2", + "postcss-media-query-parser": "^0.2.3", + "postcss-resolve-nested-selector": "^0.1.6", + "postcss-selector-parser": "^7.0.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=18.12.0" + }, + "peerDependencies": { + "stylelint": "^16.0.2" + } + }, + "node_modules/stylelint-selector-bem-pattern": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/stylelint-selector-bem-pattern/-/stylelint-selector-bem-pattern-4.0.1.tgz", + "integrity": "sha512-zpyC52/aqwbxbtliyTKdV3gv+h/ExZUTIn7tKMt9nfILtMhYIeJNF5a3UE1dtv9L826ulXU+83YA83Ymx3jW0A==", + "dev": true, + "license": "MIT", + "dependencies": { + "lodash": ">=4.17.21", + "postcss": "^8.4.24", + "postcss-bem-linter": "^4.0.1" + }, + "engines": { + "node": ">=18.12.0" + }, + "peerDependencies": { + "stylelint": "^16.2.1" + } + }, + "node_modules/stylelint/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "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/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/stylelint/node_modules/file-entry-cache": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-9.1.0.tgz", + "integrity": "sha512-/pqPFG+FdxWQj+/WSuzXSDaNzxgTLr/OrR1QuqfEZzDakpdYE70PwUxL7BPUa8hpjbvY1+qvCl8k+8Tq34xJgg==", + "dev": true, + "license": "MIT", + "dependencies": { + "flat-cache": "^5.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/stylelint/node_modules/flat-cache": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-5.0.0.tgz", + "integrity": "sha512-JrqFmyUl2PnPi1OvLyTVHnQvwQ0S+e6lGSwu8OkAZlSaNIZciTY2H/cOOROxsBA1m/LZNHDsqAgDZt6akWcjsQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "flatted": "^3.3.1", + "keyv": "^4.5.4" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/stylelint/node_modules/ignore": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-6.0.2.tgz", + "integrity": "sha512-InwqeHHN2XpumIkMvpl/DCJVrAHgCsG5+cn1XlnLWGwtZBm8QJfSusItfrwx81CTp5agNZqpKU2J/ccC5nGT4A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/stylelint/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/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/stylelint/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/stylelint/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-hyperlinks": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-3.1.0.tgz", + "integrity": "sha512-2rn0BZ+/f7puLOHZm1HOJfwBggfaHXUpPUSSG/SWM4TWp5KCfmNYwnC3hruy2rZlMnmWZ+QAGpZfchu3f3695A==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/table/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/table/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/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/table/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/table/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/table/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "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/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/uc.micro": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz", + "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==", + "dev": true, + "license": "MIT" + }, + "node_modules/underscore": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.6.0.tgz", + "integrity": "sha512-z4o1fvKUojIWh9XuaVLUDdf86RQiq13AC1dmHbTpoyuu+bquHms76v16CjycCbec87J7z0k//SiQVk0sMdFmpQ==", + "dev": true + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "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", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrap-ansi": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.0.tgz", + "integrity": "sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.2.1", + "string-width": "^7.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/wrap-ansi-cjs/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs/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/wrap-ansi-cjs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "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/yaml": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.6.1.tgz", + "integrity": "sha512-7r0XPzioN/Q9kXBro/XPnA6kznR73DHq+GXh5ON7ZozRO6aMjbmiBuKste2wslTFkC5d1dw0GooOCepZXJ2SAg==", + "dev": true, + "license": "ISC", + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..c9d0881 --- /dev/null +++ b/package.json @@ -0,0 +1,59 @@ +{ + "name": "cataloguer", + "version": "1.0.0", + "description": "A theme for my personal static site incorporating a blog, various portfolios and a CV searcher.", + "scripts": { + "precommit": "npm run lint-staged", + "dev": "snap run hugo serve", + "lint": "npm run lint:css; npm run lint:md; npm run lint:html; npm run lint:json", + "lint:fix": "npm run lint:css:fix; npm run lint:md:fix; npm run lint:html:fix; npm run lint:json:fix", + "lint:css": "stylelint \"./assets/css/**/*.scss\" --cache --cache-location .cache/ .stylelintcache", + "lint:css:fix": "npm run lint:css -- --fix", + "lint:js": "eslint \"./assets/js/*.js\" \"./content/**/*.js\"", + "format:html": "prettier --parser html --check \"public/**/*.{htm,html}\"", + "format:html:fix": "npm run format:html -- --write", + "format:md": "prettier --parser markdown \"*/**/*.md\"", + "format:md:fix": "npm run format:md -- --write", + "lint:md": "markdownlint --rules sentences-per-line \"*/**/*.md\"", + "lint:md:fix": "npm run lint:md -- --fix", + "lint:json": "jsonlint ./**/*.json -s", + "lint:json:fix": "npm run lint:json -- -i" + }, + "lint-staged": { + "*.s?[ca]ss": [ + "npm run spellcheck", + "npm run lint:css", + "git add" + ], + "*.md": [ + "npm run spellcheck", + "npm run format:md", + "npm run lint:md", + "git add" + ], + "*.html?": [ + "npm run spellcheck", + "npm run format:html", + "git add" + ], + "*.json": [ + "npm run spellcheck", + "npm run lint:json", + "git add" + ] + }, + "devDependencies": { + "eslint": "^9.17.0", + "husky": "^9.1.7", + "jsonlint": "^1.6.3", + "lint-staged": "^15.3.0", + "markdownlint": "^0.37.3", + "markdownlint-cli": "^0.43.0", + "prettier": "^3.4.2", + "stylelint": "^16.12.0", + "stylelint-config-standard-scss": "^14.0.0", + "stylelint-prettier": "^5.0.2", + "stylelint-scss": "^6.10.0", + "stylelint-selector-bem-pattern": "^4.0.1" + } +} diff --git a/static/css/sanitize.css b/static/css/sanitize.css new file mode 100644 index 0000000..58cf3c1 --- /dev/null +++ b/static/css/sanitize.css @@ -0,0 +1,363 @@ +/* Document + * ========================================================================== */ + +/** + * 1. Add border box sizing in all browsers (opinionated). + * 2. Backgrounds do not repeat by default (opinionated). + */ + +*, +::before, +::after { + box-sizing: border-box; /* 1 */ + background-repeat: no-repeat; /* 2 */ +} + +/** + * 1. Add text decoration inheritance in all browsers (opinionated). + * 2. Add vertical alignment inheritance in all browsers (opinionated). + */ + +::before, +::after { + text-decoration: inherit; /* 1 */ + vertical-align: inherit; /* 2 */ +} + +/** + * 1. Use the default cursor in all browsers (opinionated). + * 2. Change the line height in all browsers (opinionated). + * 3. Breaks words to prevent overflow in all browsers (opinionated). + * 4. Use a 4-space tab width in all browsers (opinionated). + * 5. Remove the grey highlight on links in iOS (opinionated). + * 6. Prevent adjustments of font size after orientation changes in iOS. + */ + +:where(:root) { + cursor: default; /* 1 */ + line-height: 1.5; /* 2 */ + overflow-wrap: break-word; /* 3 */ + -moz-tab-size: 4; /* 4 */ + tab-size: 4; /* 4 */ + -webkit-tap-highlight-color: transparent; /* 5 */ + -webkit-text-size-adjust: 100%; /* 6 */ +} + +/* Sections + * ========================================================================== */ + +/** + * Remove the margin in all browsers (opinionated). + */ + +:where(body) { + margin: 0; +} + +/** + * Correct the font size and margin on `h1` elements within `section` and + * `article` contexts in Chrome, Edge, Firefox, and Safari. + */ + +:where(h1) { + font-size: 2em; + margin: 0.67em 0; +} + +/* Grouping content + * ========================================================================== */ + +/** + * Remove the margin on nested lists in Chrome, Edge, and Safari. + */ + +:where(dl, ol, ul) :where(dl, ol, ul) { + margin: 0; +} + +/** + * 1. Correct the inheritance of border color in Firefox. + * 2. Add the correct box sizing in Firefox. + */ + +:where(hr) { + color: inherit; /* 1 */ + height: 0; /* 2 */ +} + +/** + * Remove the list style on navigation lists in all browsers (opinionated). + */ + +:where(nav) :where(ol, ul) { + list-style-type: none; + padding: 0; +} + +/** + * Prevent VoiceOver from ignoring list semantics in Safari (opinionated). + */ + +:where(nav li)::before { + content: "\200B"; + float: left; +} + +/** + * 1. Correct the inheritance and scaling of font size in all browsers. + * 2. Correct the odd `em` font sizing in all browsers. + * 3. Prevent overflow of the container in all browsers (opinionated). + */ + +:where(pre) { + font-family: monospace, monospace; /* 1 */ + font-size: 1em; /* 2 */ + overflow: auto; /* 3 */ +} + +/* Text-level semantics + * ========================================================================== */ + +/** + * Add the correct text decoration in Safari. + */ + +:where(abbr[title]) { + text-decoration: underline; + text-decoration: underline dotted; +} + +/** + * Add the correct font weight in Chrome, Edge, and Safari. + */ + +:where(b, strong) { + font-weight: bolder; +} + +/** + * 1. Correct the inheritance and scaling of font size in all browsers. + * 2. Correct the odd `em` font sizing in all browsers. + */ + +:where(code, kbd, samp) { + font-family: monospace, monospace; /* 1 */ + font-size: 1em; /* 2 */ +} + +/** + * Add the correct font size in all browsers. + */ + +:where(small) { + font-size: 80%; +} + +/* Embedded content + * ========================================================================== */ + +/* + * Change the alignment on media elements in all browsers (opinionated). + */ + +:where(audio, canvas, iframe, img, svg, video) { + vertical-align: middle; +} + +/** + * Remove the border on iframes in all browsers (opinionated). + */ + +:where(iframe) { + border-style: none; +} + +/** + * Change the fill color to match the text color in all browsers (opinionated). + */ + +:where(svg:not([fill])) { + fill: currentColor; +} + +/* Tabular data + * ========================================================================== */ + +/** + * 1. Collapse border spacing in all browsers (opinionated). + * 2. Correct table border color inheritance in all Chrome, Edge, and Safari. + * 3. Remove text indentation from table contents in Chrome, Edge, and Safari. + */ + +:where(table) { + border-collapse: collapse; /* 1 */ + border-color: inherit; /* 2 */ + text-indent: 0; /* 3 */ +} + +/* Forms + * ========================================================================== */ + +/** + * Remove the margin on controls in Safari. + */ + +:where(button, input, select) { + margin: 0; +} + +/** + * Correct the inability to style buttons in iOS and Safari. + */ + +:where(button, [type="button" i], [type="reset" i], [type="submit" i]) { + -webkit-appearance: button; +} + +/** + * Change the inconsistent appearance in all browsers (opinionated). + */ + +:where(fieldset) { + border: 1px solid #a0a0a0; +} + +/** + * Add the correct vertical alignment in Chrome, Edge, and Firefox. + */ + +:where(progress) { + vertical-align: baseline; +} + +/** + * 1. Remove the margin in Firefox and Safari. + * 3. Change the resize direction in all browsers (opinionated). + */ + +:where(textarea) { + margin: 0; /* 1 */ + resize: vertical; /* 3 */ +} + +/** + * 1. Correct the odd appearance in Chrome, Edge, and Safari. + * 2. Correct the outline style in Safari. + */ + +:where([type="search" i]) { + -webkit-appearance: textfield; /* 1 */ + outline-offset: -2px; /* 2 */ +} + +/** + * Correct the cursor style of increment and decrement buttons in Safari. + */ + +::-webkit-inner-spin-button, +::-webkit-outer-spin-button { + height: auto; +} + +/** + * Correct the text style of placeholders in Chrome, Edge, and Safari. + */ + +::-webkit-input-placeholder { + color: inherit; + opacity: 0.54; +} + +/** + * Remove the inner padding in Chrome, Edge, and Safari on macOS. + */ + +::-webkit-search-decoration { + -webkit-appearance: none; +} + +/** + * 1. Correct the inability to style upload buttons in iOS and Safari. + * 2. Change font properties to `inherit` in Safari. + */ + +::-webkit-file-upload-button { + -webkit-appearance: button; /* 1 */ + font: inherit; /* 2 */ +} + +/* Interactive + * ========================================================================== */ + +/* + * Add the correct styles in Safari. + */ + +:where(dialog) { + background-color: white; + border: solid; + color: black; + height: -moz-fit-content; + height: fit-content; + left: 0; + margin: auto; + padding: 1em; + position: absolute; + right: 0; + width: -moz-fit-content; + width: fit-content; +} + +:where(dialog:not([open])) { + display: none; +} + +/* + * Add the correct display in Safari. + */ + +:where(details > summary:first-of-type) { + display: list-item; +} + +/* Accessibility + * ========================================================================== */ + +/** + * Change the cursor on busy elements in all browsers (opinionated). + */ + +:where([aria-busy="true" i]) { + cursor: progress; +} + +/* + * Change the cursor on control elements in all browsers (opinionated). + */ + +:where([aria-controls]) { + cursor: pointer; +} + +/* + * Change the cursor on disabled, not-editable, or otherwise + * inoperable elements in all browsers (opinionated). + */ + +:where([aria-disabled="true" i], [disabled]) { + cursor: not-allowed; +} + +/* + * Change the display on visually hidden accessible elements + * in all browsers (opinionated). + */ + +:where([aria-hidden="false" i][hidden]) { + display: initial; +} + +:where([aria-hidden="false" i][hidden]:not(:focus)) { + clip: rect(0, 0, 0, 0); + position: absolute; +} diff --git a/static/images/feed-icon.png b/static/images/feed-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..513a7e10213ad977033dd42d3ef427e165d426da GIT binary patch literal 14773 zcmXY2cRbtO_fN!VOY9M1RPEYDXsw4-Y>L{m)Fwu)nn_2D8b#5nQdN7eQiQZtX{o(O znm$#fC3ejIKA!LIl~?|_>zwyJ_uO;OJ?DNBZ<**qFY#Ogfk04wy_@DB5O^2(A6}pZ zYQput+y)8{y^+XU`bgyEz~BH6Z$EbsNIX3zU0tvH9~f@ABrB;&Wk#z<5EKL5JNHisErGDpM zI$p|Y-vkxfy61B6&?zn=6w2Q||6H5&&H53G_A}ELwtacR#otsrH&}?rjt@K!r%$iH z@%iBT&p*QX?l^C@0A|yGIoh8wB$(vqt6SH%p6hc7$Nt+!+JgVg_)PUR`NixPwV-4h zsnGhd-YP$z9*dqJ%W(s2wPXCL*noNZTbRNr}9mms3YT=+WmQbk?* zYe%tOZQO9C#+l%>Y`USKHBB-veVNw7-$x(*62k+kN&h~|Vb`ZpmrdP~r+O5QwdxM) zOyesJrJ^ptO5(rQDq&xkj=}k)W2tuoAY9XY#fQwX zJ^#JNmu3Pr7X$Td?}0!vLg#;QM6qTVP)Qe}Z>&SNLPrgSiaL>lUIJCzAv!i8$N+zT zcXS8{8SH*1#QpB&aPJVW%ewl;x2&;@Tp-Y8kp4}r+Yxhr7Qqg=Fheb$>FjKUHGZagT^TfJIp-R5gYcph_W+eM=Rx6oDF`0)sdX| z$Z@uJ@@A!ayLK7mM7P4(OzN6W71m#C(dsRz)=@H`tLrE$)+s8mn2?k_IlM+@CA)6@ zG?YAn*^v6h^v4FF_))v0zkjp{w_Moe3e)~B_Ua%DAZko%))PAfKccOR$JSr_+b1qh zg$Ho?&kJ>`p?;&?ap?Qm&M8$>_DZ}p-NWJ=cOSmx|B)sLpkS6>U9WigjWQ|-hwptA?FNXcw`?Zv%;TEagCh$ME!^-$*7FG$glIh zgj1c&E@*4kjADOc_hJ4VbTPKlKKFT;BMfibRxWt16X!qr@8;#HFNS~^24~;|W5Q(bg|k?a99%yG>iA;q zvdPLWtjHW4gYn% zZ%^$&;{ZD0Fip$^IyW3d%DZajsQip6|6g+yEOj zi3fYF!y}w7)`)i}QiB}k@^n-$_|e7%$HOQdiluyT+?=_71gE&j%;sK!) z8~HOtS9|^b35kjj&}%3(Jmg`_yRe{LwM&tc`)G6CBl^#!6W$0`%8k18^#6L;2~e() zVS)VhSmP)4=Qa0vF6B`#81b%0Dh{XS+(qUzbZYJkPc>;?h`t2#mjc$)yz?FP@a3h( z0!AY_R$!?loZS+KeE1>5)b9}gD|cfpFvp3y+ZKUTug-y1f9QGpejZbadFc21KLU11 z9%tdMVJGeQu5(l!f50a+t#B3ooDO{eg6%w*A{{78c7nH`k8bhD-b=g~BG6QCc#dzL zhoVFVkp=(1u^QtH9#4?=@c)l;pD0T_VFAKR$8ha`P%^R05R0JqFV6|#`4WGil|ghQ zTBUOoQ~OsCW$%+`%&pE#C3ct=NDGLIb#orj7a8{os0wE*6GdKbSnofNL#Kq}ixw3Mr4xuEEE=Kn7kqIf@ zv9x|J!sq2qTCjlNQf(X~4E?|I6!qClo3*e<2k!ye&swChnry1W{=U5DotGHF8?hIeGY5WvfKWIlty_JzG`bU^<@o|G4`DE9DG!OF^CwJ3jt~ zBq$PZ<|&GubMS|_jxF>OMEeAR(vM1-2(BRF=hDE^>wwH8e0@QlplKqj@_8ZZm{sAM zCLIHU@x0_LlyGl4fcl;Cf2Du`k^RSi9~6b2HwAQK1E{7U^Z(CX9aB!|0zXXtkNflm zVmo1yu<}24{?4SjoVfjV)H$$u7*UFN#U(FD4-uk&UzMtrPGwFUSmw7K)l3c-P8eYR z|C8SGbpb(-kEZhfW1NYBV`RT=BmRSn#0G$@so?PcO&gN%&?)uWrT-wgVKqUT!ibXd zrGB<`Fe-+z$Nc#pqnu zvDFFHLANxPzr0nHraI$LVau5r#MSUK(7Y4RJsu{=^mg&PrJ7&6foV)A_J5L$M1<^3 zUM8iVq6yDPU;mJs#LH*VqS^0;u3efPnRFJy{=uq0$<;RMRPZgY_n_MRaIn@;Sc#fT zXx@$j9dkC*n6zc`+z}+}lb&)dSANFT;$ zJFb~hpoz`!r`ko+it5kU1FCz;+K3RPH3e=uUTR(kMM_GFPDP?FrYK2M1m4C|0iEHA zP$iqVzIoNST732rl6S$u8xTh2i$3PGpG?v`Cnd3|V?Op&(XJ%lF#4-fJI$FjMYMwKe;F=}Wx`-ODY`uV(?k(LcU$7`Rg=eIGY*`ZZs`M1&x zm{}f!1ZqPJyxG^k&Dul#K8_~#F8iSVOP1Sn!9)oniS&6rm6SX4)@$F~vWsh3pSLLl zD&w0e6yokDO$s_W#+(Kg+_#)QB*bs|h0cyxQoUqu_ra&x?8sOSO%j3#l_)`Y+u-Xg zmHE@VuG))ps5h713#jluzjH1MBNR*Ks)n{v#XT8Zg$r$c(D=jux_hyb1&I(s#P?eR zc%v%IuGw?^wopNS{d{fS)3q{3ccp^o)+D=7kzQHH$-!Xa9l&H!xyaXD-->X$I-fS} zhOs5!`_4K0F$Qvw-H2u`NLSq(1sBSVmS4p~=&|-Gfc9i9nv+JJ6hLy==7&u_3OQLa zN)tX1Zn;8ufYaUJIn4<-MWo(&--_VnW_B_6NTX-8*BbN(b*0<~$D;6kQ~2FfQ`N%y ziEERLe%6FR-h8aYR>D%B%MXVf<|u-pd9gp;34@J`TivyqO04|Su#ciApQH{O#*|7x zgfS^S_?{$L#;&@5p1P&b;~sB2<6v#{LpjE*jDDDu#zi`dm73O&CjMFolH_q={AW*U{2Cau9F`mE*e=^zAR@=%cq7P|O4}6@`>*KlzuKHCit`C{M#G9fzY&%p5PmE!I z>(tDRov3DXZCLo4s7tm;@OLjp&BA6lD3JOu<{7skFClS36JAP%XRB%YfWzeT(~=n8 zbGUASX->WgZGhGZ2I`Lzf&FXC?x_gtL*;0md+gM&-EILFbqrN}cK0>^{)H;m*zabeY7phgZAmy) zfZ)4CM>KE71T2cw9$Klfr{LQB_-Y9aMNqE1m3i)obJ*u3JMAxHjto*)eFW=XmmLz+ zh)|b}OG;g3G$^T1UtzK_@jIo-sCmzl=-YP-kBe2^Lf2Z|ND=@CoH0L#bZGzf+r0wZ ze6-EJa_pIJb-SbsBwk%*CQ6aYjLJFZuuR~eu*Xn5H`nsI&Q5`jU(unI93%oa^Y;5J z=@(`bcN?`19P(nM@8*+zS6nlTd{aK+@^gRmdd1R`smT#$X&iqKDkG|1Z+8hS+bf2p zd00w!Q2jRiGW`^)PX9Tv|1gbxFE9vfO6S343VQ3{hx&qBo)*6iF$G1j)LwT-er+55 zDv^79N{Augd&^>L1iDxeFbWl!!zCfe3xmG0;v=Pa2_88s12SqAK`^`a4 z^NnT(l`;EIIP@eMdZI)q#Ts`AD}m@(J^3S?Z7VHmsWR~~+bdEByHa9P?atIEi8Ccu zc6@Mf7tOxnrD~jRlJAOTQQ#x=b*Ggm5`P0N!T# zcO{ly-YqsSr}~IOz2VmLer5@2<-87Gx`7C(tlwOa6%(CE*};_sI|dQZU%~7hqq-J0lOINw^>}n!E5Yi{9E01 z&#GWA43O7QPq3i%lXSDacMrf@aXDPoLwpEI7kP?0JbvbpLl8VIUaD4ck8k#L>hQlw`MC#RFT z&6PC&R%4k!@obsDO4!&+Zu1!?;WRGI@TDDEPK&Y{y450*LJk=h?dm<)43`n)sj@sy zS21lF<989|-!}hbd-|E%UKiDqNG+U|C`&7JIthP~tgCF}< zKiZR-;{{wz@I1UVHG;0aDCk)q4MCnjRdnlHgzJMUU|c;X(XoeTzcDdUad5e~rw@5A zMY}g9mbUIOu%Rtu{d;98-h^KS9#jV2H-V2Duy#pNN6M|5kD-oP@(-R%pUTyTj4A!T z-_8N-*jD5m8>K-W7%2T6QveQUrhA}LDC&Fwq62^Bew-xmI|}v?>Nwdb6i6d48SDG~ z(-cIpnP)W(^NMBOHe?W-Ot2q{x?pEfx;>uv|&>_ zE~RdjJmJ4~5e zE-ImUAb-rtcpaqKqq~U+DW|i*%qOOJtC28aJL|4Hhcx9kb%6z_vblABRK>%GXGV%Ocxdw&9iT>vsdrB~ zDZ(RY_N;qSfzN=ID(;-417ZoYqyIDv3$JLD+1VwT9nGQS<@|g4cx41`S)$f;nSG~f zA)GM%U^Ey-6~&`doD80#l99ipyE?X}l5K<7V=U4$p{w`&JBu>A{+EH*g#i#(sIfQ- zvMj1!9q`%~MyIaIk(a`HcjMIg0i-n!Om2^ZZa_T-<6! zD7-vuiFN_xhh{gf2dQK~mnz-nK~^EsfjLwT^n72&1EV~^{a|3?6DHgIjfI9ObsB*p z_5Q^?n^r`N)}K+cQPbgD36ohW5+)UCA9{Fx{pd|tTp6=DV2+RKm=rhgMFO`er=klc zNttV#UtD`uM+;Jvo<*29)S5k;l5(+MaJWEDZ=bjzKoiT9teAweGwRq6%y77Ge0kXV zDb&&Dxe)dkhvlkx_5nL(MVlpE=t0_sEq8dyI1PMRlK zHCJhh3A>Y0*py1Q5A^hDf?|EKG0AW4+(=MA5V)3P?gQy`+{^bs=H$9b69WjUK+_7R z(0k?NH_!ILslX2Q!I=>X68;!W!k9n;{W0LdH8`QJ;;g&9K6%37A*Lwdq3FWpBKZ>V zcdTRbn~*86)0KVephq(0-)JG8-~vPvZWVMkByg*E&z+Q&4TPvHn!uW%PFHrQe1QtF zo3C%sQ=NFv@|1Nez5N-ElZYY3@9*`Qh0C(Ff8w*fTf05Oty1cvIRhwWq;ZThN&ci6 zXdO>*>yYkBOn!Yqkm$Qral8^p%1VOb2U21~Mv38q2!@&Wu*J0P84wPq7TUPKue!y@sNa>B;52!4a%v}Y)eqQe$ey7^78pSIdmPQ}QCrc<)8r9c$R z%VP#a(wIuF%C`|*J~oI@(_>x`1B8NZ)!xaPxaPW(3>as0r-|QoQE+SRD$8fT)kAK_ zRy79R@{P-3h;X_YUgy*DW_)e1V zkw;P46F$s5FT=CGCK8?9FVrtfUymmkU2GRvlWG{ke>HZ-i11=}aGaT#;QH+BP0+*w zeNW!whskf)r|9^l23aEYQv_3MqPfT>3yju>FZ4U?BFDsi&~ia<|L~*Ca?OrR2*L2k zL+BNcuLAbT(Fg@rcaoV)9PxTl*?a%QVpAc2lEHz@B5tW=rBfl0xBlNdZ_>qsEE4;> z17JEsG5IqOtPk6}C}?Li`=tLy6j)Pq$ui8w>P@J8O+ih(U=Q{6+WO#$QKzv7&$l8~ z0>N_2@NR>;Sdv9++YGYim%+e21k#_$2FztTcW)@SK6)$6vTMAgr2;vROg%PCfRx>ZlYCB%Za%88(}>y{wpK2wnEK2fOJ}r&8bznpj2$r@MF#v{O+ZoSGM9 z^ek#t#b?FVMXJ8X@-XtATm8L3GSizr+cXuo!y*E%uaNeoN!3_Huegr~LlCjQ1eM+# z<~sgbHCemT7e)q?I@|^N?Nh2MqYZA~+uYZX(Q#ZYuEKhWcnmse`Jsu%?n-ZBe~-V< z)%?{lvVQg0?vmfDoyV)HyDMv;eA;0V#wi=f^V^D%|%>5i(4w9BeI_;_l5R#BEE>z`hn$gR8q|D+hxuqc;}jxnb~385;Gs1 zSo%YooJ9G%e2KIypQ-RQ+tuZiNDE^*UX>IZ``;;E(6>N-jB||eM=LMvXJ}TypPX@; zpF#)0Hna;=CvB8#OCP>koi=Hip=;y=6%y5#!mlOyRqGq+W#@Wuk&>O`?%1EIn`{?! zr1-eznGQEBW4!5gSA9x;VwRZ|l*0RU%k0#pdk%l)ur@YN#_c5akr73o%B1>SWk^@I8QIeh;CnS*y~oTD3#`i zMfR-MLx~DAF?k+)#Ve42t#{mYueK(wheOMRLW)-{i6^cTolN=Ps`8<<`&7d+JQ+tn zue&HX^kr8nJ=rvtuzktAIde*b-m}u&4&$zaCi>sO=WkcK_k_)-j$~C$W9bw0RgZ7j zSu=%!H-whxD&tl-4`yOf>94F@({Oil>aKq`mz+y}uJSV{rEQ0GOD3YkY!^rius8%| z6j>)M{$07QZN26M85YTI`-9|_6Rh?Ume<;d&fA)Iev-&G%czj_I~kM@+K|8W<1QBw z939{h>R5XJ3BxC5;+@(eKhrxqzuqr_RC2 zixGrJlkYdEaFJ2F_L6}wr_HkW=w+RM_|bPoSIMlcFY!Qv>r4p^Rrd)u${meNk}RBu zz{7$j=qSlfr1=blqB)Pq3%hz2u_pJ}MyIK-YZa0Z|3b!*r|=mk}@YSAIQ%I-c&a)_cS# zkZ#IY&ess2gmKiU>^L@!neE53v?

p)75B@_jX(!KB5ns7S-zc^W6=?Bse+p>*nq zC66+2<=mvk!FAnJL`*!|2gQ$m+##}egQEdT{<0V3^@w-7VMJ!r!Tu#;*M7X<@g0pJ3>p^w+kN zBKNM&VV+wA;mxYv}pDmj?No(=ghgiN4|b=v*IhxS@t6NJ=9Isc2}l}SaROVs>;Nl9J{NM7OSRj zY3%j0^FJ|2spANg2>SG-;(PI%>v%8r%0Jpf8@Eq=S6sf6asw`fi-*LZ%+SVq5T{LA+W8e3zi&eHk3!*C@blr{H9C9wt z#rcjOyUD7_s<#N#8mr#zx83l;xf2So7YQbPW*67NI|=>|Cc_o55Ug?X6?$oc1JS4G z)?^cS`M^4+n6Y7IcMsrJsx!^Hna@~Pp0jk9nClTe>weZ9&L7xhcGpe5-pIP5N|r?Z`sxIq z;;;0(eK?Tm{XcgtWLY!g_zEi<(4zYw&6)Jba^uUQQTK5n%hF;_#`s0?2Dt{xx1%z% zvNa9sXzZb3SI3^(R*hLqi>O?`uh`2Q%PeiwEzG4&e5-o+CKO9rdaYcNhCOwaah0+4 z5ds{mmzO7IxfFLK*|n=%)zQni%RcJt3Afh@fI4sG6tck5K4e&3H5_^++mNomZ~!A+iE7fX{zWV zduDad3g^L6YC0qjII~RAA7MwouM?U2o<2rmlmM4^n*XvWjWpn=AM)12bB|W~d)}HA z`wK&7;+Ml$2WKq^3WRjZQJEBq`JPCPQj*4t6wl(HuGh)Bz(pB5@r35s14&bNJz-4|nS58)mSgVgb zWuh=Tx{omCQ7!ne7jKz4xGh=-j65p3F)6D%wId4zm29Ozse()8l5s+qIAxs1@pY5b z&mRg2E&%uTp9#(Rol(;9nThIj6Ya;C`4qwXY#7J&J+1@3w!xW+0tudWh2d z$G=k1wpO=yaM)~z>5NSYipoz#ml`e?R#s(GiLt!=DjpyJnNq-M9CDbX8ahhKU$2pg zyHj4}L}fzwbLSqA)JT@!9pLK`axAWvfrEj()nnP#@#I4GqFtqwLhC<-fMmh@QD*T9 z^wIG(SDzd3et!Sz+&z&0w(e21I+;l*#b}|@tF(aUGRV}C;>mHX-)ab8OYBQ5EH%mI z)72>A{>3*=#c9FYDoCNko36Uoe|UG36mD-0%Rl%R&sUIP2-)^_pnG}D<0K$*fL0+l zOdD=D-;>r1iQ_BtDdAKe6)yTT)<#&Q9KBWkj4{S8CSURXN~JutCTrDPEpMM##H|eK z<8o&7WmA<(5kJFEk#febxd_(FQha-B7k^@Hdp0Z$@tlp#v7_vLaGh*4?f!?oDg11u z7bhBy_HCG6CP3wtOB82^5wn2#+8Q;46DJu!35CILZp0z=o`hM)^%W9g!KXE??9N;Zxu zjIz^5)j0tL(L=r>hc^a4E9T1>QJ-bav_#!;6&MS4ogWnd(?PmVK4mC8cz*XsjzMfQ zZ03_;t99m+%`3GpLe@(yJO7!cGZ7g+bIcx%-;dt<@aNYjbqR~46(W~mY-k%mn^q(I zezmY;nsv2U6BQk}%QR4UsUY%oL_=Nbva&uU?$mss!3l(lJltPf##?37{2*9awlc>< z#Mm;2=L{)Y!!)rrSxgFdkO@EhV&DI3EwI1+XVT+^`cRc?Ove{4;ss)6kJ0wk=;wx* zorJ^?pHx2YlbZ&<#L(K>x})8hQ_k9~x9e}NIYm6g#?j{2tj4!JQjzes=z5q->N;^9 zsF}k;IzpoMxX-(}({|?Fkcekbn>r1=qapvzGkF;aRbpseUYBh@dXGM`S!4ZT%+b-83sK_olEv`0agv7+Y76?=bAMg=MZR$vv zv7axQoaG_Z6J!X+J;FC8r;S`Q-z=tFfj`7pCq>;znI`;QdYY&-V$rvC5N+@)REN zmf+pl_IbQXMokRe_BTZE`+hm%--L@&zERG5hV+4~_134rA!g0R65k>&AfWWX>GZ>e zjCanAahYrhndv7qR_(cT9bebGYD78HK6ET?zu^6OwxRy=QB-@WL!7{;`1u6=pmxr< z%uIZakI#ib;rfeTnrvoxjellhH@@*HB8{Xt+J` z#q8O3#orqX-8FKhm5D)J;%ADOPZkv{G^!L z%pX1hf`PfF|1{M9_@|Rul5|B#&#o(6qskijmmyG8WPVU42*~(@r5L#Ofy=Ccw`cm z`D*%pJw>}s;C7{k!oT5LHvjyB8+CBbj)?ob;iFtdBQo1KiPUbZ>5Yry%~3@>NA-mM zAyvtB$WNk&W^?fM4etDh--9G)@*O;=e|WE+)?bua9C+VJiZNF>CcXGoZmn7upX1Yl zVuf!-RKK;RPwZ}4Lud!k3}4~wlr;UTrMWazW~j_56k1$a3@fhm-ND)?3+i`cUaifJ zXkO|V%4-OcY?dG6cyT{7e+?mmmXF&tsKIEosn?#Gm-2od6y$uM*vwJ1o2#_T1fGB4E71&E4*A!dO&P2VLykoc&ftAdwQ{Q@ zntfJ<68Y+HJIzBj6>#8nP^UkGzACTsi(kV=L>4za^8&HHy{Qq?4}Y{PiJu9#++cN; zn5Yy%TYK<44B4WoSF3;%{_~H3^ZkQe0UmJll$7Khdg4u>+mD`Tw&Ha?q1Ei#x+qlei_Syt`pp2>x@W zCDEatN-YH%-Tu-)Gl$Z(HFE5(Zk+qGFQ1A`rsrs&=&0E&q^ni!cUzbdy{ zQ8H8g&p*+pgKOoKkSvP*;76hnF4!B5h10_{Js+eEo|uZZ@2klH2EWnYndb;i>Ad|4 zKY0O&_z-#A^tO2f?l8P+f`s!RgAt|i{!ff9e}8*Y zJLb|#Dd9SJj&AIJvq4x+2@92#@1$J5-VQ;g6lUg-|7~XXU$j6j!<4OW9lVo!klV)c z+?zq4+gO0Hv#hK=<#H{qGx4yD&PkxTnVnK3FI-HM;}!N(27q<5ZFU^bFC_!Y)X?D)J}LOpozR5tPsf+w{{QHvytZkuh=frOAHr-(bxg9xd}Qg$FWmBbs*^ z24<@&ah;zWCg^L^kKQvVZ|DuwphiS;YKlEwt)Vgb@5^$We*)P6bbkM7g9UuAbyM3j z4W`8}v^zbdgI5dzMy*6WmKSzYQP1;mM_R8zPdV4)op1fAwt5+_Xc3r@MdS*Yl3GPr4vA4{CkyJ6X-E)dYo}pj2~f zwU&1Inh#=v<*kA#P-9idEO~JFv%yB>XpxWP2w2&(@JZkyZ1^{LhvlY-7Jxw3goBR6Gp2Qh0AU- zYaj3Fl*{M+%1`yTaZjnWSv}C=hsIRAFQa$jO4*Y`?>sD`IaOv778nJv?0!p35YnE@WzmJjH4 z@;U&~DS1#B^Evsogi|k6&Ah&tCFB}gIH&Ott)tSePHREa$6%tln^#hpgX7brA&gdE zUB>mE0bhgYM~r08Mi%+;BU?8wV59I%(V>8tG$)lT92q?AodZ2JkBhlTfuOf$j1G9T zSm!Xt$%SlyId*>t>;wlQ>rQ!-J7F`Wu)Kt$;9+h6z0m625*Fd&dEE_==S$OK$A_M; zmFL%6my|isGUKySLVAO3>Pov^$B&)7yA&UktP}b-5FtP;>ZLq;dvECENDh^za*;tK zf9nh^gNW7lp80aYZ#5Bab{l{)WS09f>GoIK*o}ce$rVLEAL>_>PwLW02`jgzeKPjC ze1#n+l_#)S_&)$LsME-Adsi_FSg3k+r4Y;}iSwCdaA#LX=C+iKpz#NB7d|(ef%P8L zU4#Beywa{WMWgv@HfR|zQ5tM%6@HxvE1RE^AWk-Wc1gbV-Ki09=ZZL&rhKOERMnf22Le+a}?p&?a>19$b{wXM=_Ynt}g&ovWXCxiv>Q;izk6nxC zrk54JP){FS1X`W|YSMf(Hv;7H?m89kUL!-@^s+UZ#^jbRw4H3+!U=_7Y9U`=*#0_+ zSN0go7ZL3TzP`xKNxr;{JG&Z~`yy-bPpgp2np6LPt^~}JI(6jp#E77Wwlf-CTt`h& z$zRQC`#~57GP&W8YMiR-+n{(pN{;Kq>y8+@)_GV1xs^q65$4h=U)3X~`$9P+Y4oFK z;`r-lrR@pVSq8fmP$MD!t@aBQD=;l{)In(>l6N6E{m|W8gRJF%d!Ff;Lcry}w&t4= zahH>OqY1@BD8PF*ZjWLJg<(U(18E(Xtn|P{C*CugPx^Z)SN=xHdmIL*p_Tuu->scKLh|0;b^BiPxN&g7|yzT|22znyOy zF$!O zJ@a5Mc0mSoDy6(;TQ1BAd~{ZlgAFHf4-dV|n;G3yE2=B3^q7)+U=sbW6A8yC2Unq< zzM*{Y?wPz=NH0zX9(g*X{2*94B*Au)?wixMly}rBvmQVw#4(xH4#-gF*WIZOJ)-Zr zrMTz&rB!eR+zhk7UIl=^~&i3@ZJ3>pqA;xxhpq`|FE(dJ|Ym zG_uwY89&2MMiSzfGn;SQhl8V7+xLN|s7Krz7Z!2(t%WJA|I8Q4oS?N2Ks=x`9p!>-Dg4{b z)?2nc-@__dogal&$0(dW0MrQQ69n`zU3fYr>PYQ;Su|LE&2vP|5F5ZTw6I92IPCq! z`)mb%hZ?c_2#Q`2PFu&m!u}PUx>e~5paeVb(pD&%e)jFW^B;@w0F5BKd3NHB=qlh6 zNhnP+drwz&+n%m&1eS{~W2w4Z4xEqe!2HhQ&X4%74!$Ww zN&)YVBIwCM6)n8J67}r=dNJvR;@>q8xD ztGLYsO1tj}tXK0@b+yP{7oRp-{)wpt+p~J+m>xvlX3A5^ zC2*Cn0J>u1%gD8APW-B4Ecz}({UWU3m+V{@r0WV|E-1U~Xwcmku{+VkR{L<_y9QMH z{U76#%fK@p3nE`n(Hhq^FOo8-lrwHQp7kD$-%3N_&*GsAR-_8x`zs~i3~P3!M>hLm z;$#HLad$-2`QOIG(EWfj^-f}Q33z+Ug9?B;;{6CvE@Nph`s$h?;RXRs*w86jX0gdR zQj=M~JT+!Yw;{Y=-bE9!AnS5nTb55iT2;d@3obrOS-{5$|E%U$10OsOx_r#N|GJAv+7m+0u8l6KU%8= + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/theme.toml b/theme.toml new file mode 100644 index 0000000..3feb81c --- /dev/null +++ b/theme.toml @@ -0,0 +1,15 @@ +name = "Cataloguer" +min_version = "0.41.0" +license = "CC0" +licenselink = "https://code.bengoldsworthy.net/Rumperuu/Cataloguer/blob/main/LICENSE" +description = "A media cataloguing site, made with Hugo." + +demosite = "https://cataloguebengoldsworthy.net" +homepage = "https://bengoldsworthy.net/portfolio/programs/cataloguer" + +tags = ["cataloguing"] +features = [] + +[author] + name = "Ben Goldsworthy" + homepage = "https://bengoldsworthy.net/"

+ {{- with ( index . "Series Title" ) -}} + {{ . }} + {{- else -}} + {{- $series := partialCached "series_by_id" ( dict "g" $ "tmdb_id" .series.tmdb_id ) .series.tmdb_id -}} + {{- if ( not ( eq $series "" ) ) -}} + {{- partial "cite" ( dict "c" . "g" $ "section" "tv" "schemaType" "TVSeries" "title" $series.name "titleLang" $series.original_language "titleTrans" $series.original_name ) -}} + {{- else -}} + Unknown series + {{- end -}} + {{- end -}} + + {{- if ( index . "Episode Title" ) -}} + {{- partial "cite" ( dict "c" . "g" $ "section" "tv" "schemaType" "TVEpisode" "title" ( index . "Episode Title" ) ) -}} + ({{ index . "Episode Number" }}) + {{- else -}} + {{- partial "cite" ( dict "c" . "g" $ "section" "tv" "schemaType" "TVEpisode" "title" .name ) -}} + (S{{ .season_number }}E{{ .episode_number }}) + {{- end -}} + + {{- if ( or ( index . "Date Watched" ) .date_finished ) -}} + {{- with ( index . "Date Watched" ) -}} + {{- time.Format "Jan 2, 2006" . -}} + {{- else -}} + {{- time.Format "Jan 2, 2006" .date_finished -}} + {{- end -}} + {{- if ( or .is_rewatch .Rewatch ) }} ↻{{ end -}} + {{- else -}} + n/a + {{- end -}} +
Series TitleEpisode TitleWatch Date