diff --git a/.cache/mastodon.json b/.cache/mastodon.json deleted file mode 100644 index 768bb3e..0000000 --- a/.cache/mastodon.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "lastFetched": "2026-07-05T22:01:02.267Z", - "posts": [ - { - "date": "2026-07-03T01:51:37.604Z", - "id": "116853538658966225", - "content": "

So about the #digitalcircus finale.

They made me cry tears I've been holding for long. The way this EP dealed with supressed emotions and coping with the pain of what's unchangeable, unfixable; communicated deeply with me. It's funny I cried laughing in realization of how warm and clever this goodbye was.

It's the best bittersweet ending I could ever wish for the show.

OH GOD the part they tell Jax is doing okay. You can't hit my heart harder than that 😭😭😭

", - "source_url": "https://mstdn.social/@tenkuma/116853538658966225", - "site": "Mastodon", - "media": [], - "emojis": [] - }, - { - "date": "2026-07-01T22:04:13.252Z", - "id": "116846982152346064", - "content": "

if I wanted shit there's a shit generator at chat.openai.com

", - "source_url": "https://mstdn.social/@tenkuma/116846982152346064", - "site": "Mastodon", - "media": [], - "emojis": [] - }, - { - "date": "2025-07-08T21:40:54.760Z", - "id": "114819783377460165", - "content": "

I love how ya'll humans give grades for vulnerabilities

@cR0w https://infosec.exchange/@cR0w/114819777669875206

", - "source_url": "https://mstdn.social/@tenkuma/114819783377460165", - "site": "Mastodon", - "media": [], - "emojis": [] - }, - { - "date": "2025-07-07T22:42:45.377Z", - "id": "114814364246016516", - "content": "

Another level of nostalgia playing Roblox on Linux with Sober! Plus wearing that Linux t-shirt just feels right. Good times...

#RobloxSober

", - "source_url": "https://mstdn.social/@tenkuma/114814364246016516", - "site": "Mastodon", - "media": [ - { - "image": "https://media.mstdn.social/media_attachments/files/114/814/350/913/893/408/original/a0c9e5a52e282587.png", - "alt": null, - "width": 640, - "height": 360, - "aspect": 1.7777777777777777 - } - ], - "emojis": [] - }, - { - "date": "2025-07-01T09:12:57.603Z", - "id": "114777206135368914", - "content": "

Meet Pete the cat :baba_baba:

He is as sleepy as I am.

", - "source_url": "https://mstdn.social/@tenkuma/114777206135368914", - "site": "Mastodon", - "media": [ - { - "image": "https://media.mstdn.social/media_attachments/files/114/777/200/647/969/908/original/203ba60ae84a96cb.jpg", - "alt": "Black and white cat lying in a sofa.", - "width": 554, - "height": 415, - "aspect": 1.3349397590361445 - } - ], - "emojis": [ - { - "shortcode": "baba_baba", - "url": "https://media.mstdn.social/custom_emojis/images/000/641/966/static/8d71b7179d1a7445.png" - } - ] - }, - { - "date": "2025-06-29T03:15:31.767Z", - "id": "114764476040214757", - "content": "

@cR0w this guy bio is just impeccable.

", - "source_url": "https://mstdn.social/@tenkuma/114764476040214757", - "site": "Mastodon", - "media": [], - "emojis": [] - }, - { - "date": "2025-06-10T21:32:12.812Z", - "id": "114661204480015822", - "content": "

Hello, world.

", - "source_url": "https://mstdn.social/@tenkuma/114661204480015822", - "site": "Mastodon", - "media": [], - "emojis": [] - } - ] -} \ No newline at end of file diff --git a/.eleventy.js b/.eleventy.js index e272860..ed81672 100644 --- a/.eleventy.js +++ b/.eleventy.js @@ -1,101 +1,46 @@ -import fs from "fs"; -import path from "path"; +const fs = require("fs"); +const path = require("path"); +const i18n = require('./_data/i18n.js'); -import syntaxHighlight from "@11ty/eleventy-plugin-syntaxhighlight"; -import safeLinks from "@sardine/eleventy-plugin-external-links"; -import pluginGitCommitDate from "eleventy-plugin-git-commit-date"; -import recentChanges from "eleventy-plugin-recent-changes"; -// import Webmentions from "eleventy-plugin-webmentions"; // configure later -import pluginInlineLinkFavicon from "eleventy-plugin-inline-link-favicon"; -import poison from "eleventy-plugin-poison"; -import mastoarchive from "eleventy-plugin-mastoarchive"; -// import purgeCssPlugin from "eleventy-plugin-purgecss"; -import pluginCleanUrls from "@inframanufaktur/eleventy-plugin-clean-urls"; -// import githubRepos from 'eleventy-plugin-github-repos'; -import readingTime from 'eleventy-plugin-reading-time'; - -// import i18n from "./_data/i18n.js"; - -const production = (process.env.GITHUB_ACTIONS || process.env.FORGEJO_ACTIONS || process.env.IS_PRODUCTION); -console.log("Production:", production ? "true" : "false"); - -export default function (eleventyConfig) { - eleventyConfig.setInputDirectory("site"); - - eleventyConfig.setQuietMode(true); - eleventyConfig.addPlugin(syntaxHighlight); - eleventyConfig.addPlugin(safeLinks); - eleventyConfig.addPlugin(pluginGitCommitDate); - eleventyConfig.addPlugin(recentChanges, { - commits: 10, +module.exports = function(eleventyConfig) { + eleventyConfig.addCollection("post", function(collectionApi) { + return collectionApi.getFilteredByGlob("./posts/*").sort((a, b) => b.date - a.date); }); - eleventyConfig.addPlugin(pluginInlineLinkFavicon); - eleventyConfig.addPlugin(poison); - eleventyConfig.addPlugin(mastoarchive, { - host: "https://mstdn.social", - userId: "114661188739031987", - cacheLocation: ".cache/mastodon.json", - isProduction: production - }); - // eleventyConfig.addPlugin(purgeCssPlugin, { - // config: "./purgecss.config.cjs", - // quiet: false, - // }); - eleventyConfig.addPlugin(pluginCleanUrls); - // eleventyConfig.addPlugin(githubRepos, { userAccount: 'adrianvic' }); - eleventyConfig.addPlugin(readingTime); - - eleventyConfig.addWatchTarget("./site"); - - - eleventyConfig.addCollection("post", function (collectionApi) { - return collectionApi - .getFilteredByGlob("./site/posts/*") - .sort((a, b) => b.date - a.date); - }); - - eleventyConfig.addCollection("misc", (api) => api.getFilteredByTag("misc")); - + eleventyConfig.addCollection("misc", (api) => + api.getFilteredByTag("misc") + ); eleventyConfig.addFilter("getTranslation", (page, lang) => { const dir = path.dirname(page.inputPath); const file = path.join(dir, `${lang}.json`); - + if (fs.existsSync(file)) { return JSON.parse(fs.readFileSync(file, "utf-8")); } - + return {}; }); - eleventyConfig.addCollection("88x31", () => { - return fs - .readdirSync("static/images/88x31") - .map((file) => ({ - url: `/static/images/88x31/${file}`, - fileSlug: file, - })); + return fs.readdirSync("static/images/88x31") + .map(file => ({ + url: `/static/images/88x31/${file}`, + fileSlug: file + })); }); eleventyConfig.addPassthroughCopy("static"); - eleventyConfig.addNunjucksFilter( - "alternateLanguages", - function (collection, postId, currentLanguageKey) { - return collection - .filter( - (post) => - post.data.postId === postId && - post.data.langKey !== currentLanguageKey - ) - .map((post) => ({ - lang: post.data.langKey, - url: post.url, - title: post.data.title, - })); - } - ); + eleventyConfig.addNunjucksFilter("alternateLanguages", function(collection, postId, currentLanguageKey) { + return collection.filter(post => + post.data.postId === postId && post.data.langKey !== currentLanguageKey + ) + .map(post => ({ + lang: post.data.langKey, + url: post.url, + title: post.data.title + })) + }); - eleventyConfig.addFilter("absoluteUrl", function (url) { + eleventyConfig.addFilter("absoluteUrl", function(url) { const base = "https://adrianvic.github.io"; const prefix = process.env.GITHUB_ACTIONS ? "" : "/tenkuma/web"; return base + prefix + url; @@ -107,65 +52,24 @@ export default function (eleventyConfig) { year: "numeric", month: "numeric", day: "numeric", - timeZone: "America/Sao_Paulo", + timeZone: "America/Sao_Paulo" }); }); - eleventyConfig.addNunjucksFilter("smartTitle", function (str) { + eleventyConfig.addNunjucksFilter("smartTitle", function(str) { if (!str) return ""; - const smallWords = [ - "a", - "an", - "and", - "at", - "but", - "by", - "for", - "in", - "nor", - "of", - "on", - "or", - "so", - "the", - "to", - "up", - "yet", - "e", - "de", - "do", - "da", - "dos", - "das", - "a", - "o", - "um", - "uma", - "em", - "por", - "para", - "com", - "no", - "na", - "nos", - ]; - - return str - .toLowerCase() - .split(" ") - .map((word, i) => { - if (i === 0) return word.charAt(0).toUpperCase() + word.slice(1); - return smallWords.includes(word) - ? word - : word.charAt(0).toUpperCase() + word.slice(1); - }) - .join(" "); + const smallWords = ["a","an","and","at","but","by","for","in","nor","of","on","or","so","the","to","up","yet", + "e","de","do","da","dos","das","a","o","um","uma","em","por","para","com","no","na","nos"]; + return str.toLowerCase().split(" ").map((word, i) => { + if (i === 0) return word.charAt(0).toUpperCase() + word.slice(1); + return smallWords.includes(word) ? word : word.charAt(0).toUpperCase() + word.slice(1); + }).join(" "); }); return { pathPrefix: process.env.GITHUB_ACTIONS ? "" : "/tenkuma/web", dir: { - output: "docs", - }, + output: "docs" + } }; -} +}; diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index b7d21c1..8d068a5 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -3,15 +3,15 @@ name: Build Eleventy on: push: paths-ignore: - - 'maintenance/**' - - 'README.md' + - '/maintenance/**' + - '/README.md' branches: - main workflow_dispatch: pull_request: paths-ignore: - - 'maintenance/**' - - 'README.md' + - '/maintenance/**' + - '/README.md' permissions: contents: write @@ -26,8 +26,6 @@ jobs: steps: - uses: actions/checkout@v4 - with: - fetch-depth: 0 - name: Use Node.js ${{ matrix.node-version }} uses: actions/setup-node@v4 diff --git a/site/_data/i18n.cjs b/_data/i18n.js similarity index 74% rename from site/_data/i18n.cjs rename to _data/i18n.js index c304022..348a8cc 100644 --- a/site/_data/i18n.cjs +++ b/_data/i18n.js @@ -19,8 +19,7 @@ const globalValues = { homeSongImage: "/songs/velkommen.jpg", homeSongWebsite: "Bandcamp", homeSongDuration: "5:39", - homeSongAccent: "#482948", - + homeSongAccent: "#482948" }; module.exports = { @@ -39,9 +38,9 @@ module.exports = { myVideos: "my videos", mySoftware: "my software", homeAboutMeParagraph: ` - My name is Adrian Victor, but I go by tenkuma on-line. I'm in high school's last year, also studying computing. My hobbies are music, music production, programming, selfhosting, Linux, and a lot more. + My name is Adrian Victor, but I go by tenkuma on-line. I'm in high school's last year, also studying computing. My hobbies are music and music production, programming, selfhosting, Linux, and a lot more. `, - homeAboutMeParagraphTwo: `The name tenkuma, or 天くま in japanese, means celestial bear and was given by a friend of mine that I lost contact a long time ago. Sakata is gone, but the name stayed and turned into an integral part of my digital self.`, + homeAboutMeParagraphTwo: `Tenkuma, or 天くま in japanese, means celestial bear and was given by a friend of mine that I lost contact a long time ago. Sakata is gone, but the name stayed and turned into an integral part of my digital self.`, homeSocialsAndContactParagraph: ` I'm publicly available at Mastodon (${globalValues.mastodon.username}), GitHub (${globalValues.github.username}), @@ -80,42 +79,8 @@ module.exports = { permissionIssue: "Permission issue", permissionIssueNotificationContent: "Unable to continue playing background music, please enable audio autoplay for this website.", notificationDefaultHint: "Click to dismiss", - kaoMain: "You're about to lose sovereignty over your phone because of Google's monopoly. Fight back before is too late!", - kaoLink: "Learn what you can do at Keep Android Open", - webringDescription: "What are webrings?", - breakcoreWebring: "This site is a member of the breakcore webring.", - wrongosWebring: "This site is a member of the Wrongos webring.", - previousSite: "previous site", - nextSite: "next site", - random: "random", - showMore: "Show more", - showLess: "Show less", - previous: "previous", - next: "next", - about: "about", - thisWebsiteDoesNotTrackYou: "This website does not track you.", - mrnandoChannel: "Mr. Nando's channel", - liked: "liked", - changes: "changes", - readingTime: "Reading time", - mastodonPageDescription: "This is an archive of all my Mastodon posts.", - addMe: "Add me", - socialContentNotRated: "Social content is not rated and may mention topics not appropriate for all ages.", - clickHereToContinue: "Click here to continue", - windsArtAlt: "First Winds album artwork", - velkommenArtAlt: "Velkommen song artwork", - pgArtAlt: "Frugal APE song artwork", - bearAlt: "Background image. White bear swimming in water that reverberates around it.", - gearsAlt: "Gears", - soundOffAlt: "Audio disabled", - soundOnAlt: "Audio enabled", - volumeSliderAlt: "Volume", - backgroundCheckAlt: "Background image", - sfxCheckboxAlt: "Sound effects", - videoArtworkAlt: "Video artwork", - songSelectAlt: "Song selector", - guestbookWarning: "Load guestbook widget? You're subject to Chattable's terms of service.", - dontAskAgain: "Don't ask again" + kaoMain: "The Android OS is great danger. You're about to lose sovereignty over your phone because of Google's monopoly.", + kaoLink: "Learn what you can do at Keep Android Open ->" }, pt: { language: "português", @@ -171,41 +136,7 @@ module.exports = { permissionIssue: "Problema de permissão", permissionIssueNotificationContent: "Não foi possivel continuar tocando a música de fundo, por favor habilite reprodução automática de áudio para esse website.", notificationDefaultHint: "Clique para ignorar", - kaoMain: "Você está prestes a perder controle do seu celular em favor do monopólio da Google. Lute contra antes que seja tarde!", - kaoLink: "Veja o que você pode fazer em Keep Android Open", - webringDescription: "O que são webrings?", - breakcoreWebring: "Esse website faz parte do webring breakcore.", - wrongosWebring: "Esse website faz parte do webring Wrongos.", - previousSite: "site anterior", - nextSite: "próximo site", - random: "aleatório", - showMore: "Ver mais", - showLess: "Ver menos", - previous: "anterior", - next: "próximo", - about: "sobre", - thisWebsiteDoesNotTrackYou: "Esse website não rastreia você.", - mrnandoChannel: "Canal do Mr. Nando", - liked: "curtiu", - changes: "mudanças", - readingTime: "Tempo de leitura", - mastodonPageDescription: "Essa página lista todas as minhas postagens do Mastodon.", - addMe: "Me adicionar", - socialContentNotRated: "Conteúdo das redes sociais não é monitorado e pode conter tópicos não apropriados para todas as idades.", - clickHereToContinue: "Clique aqui para continuar", - windsArtAlt: "Capa do album First Winds", - velkommenArtAlt: "Capa da música Velkommen", - pgArtAlt: "Capa da música Frugal APE", - bearAlt: "Imagem de fundo. Urso branco nadando na água que reverbera ao seu redor.", - gearsAlt: "Engrenagens", - soundOffAlt: "Áudio desligado", - soundOnAlt: "Áudio ligado", - volumeSliderAlt: "Volume", - backgroundCheckAlt: "Imagem de fundo", - sfxCheckboxAlt: "Efeitos sonoros", - videoArtworkAlt: "Capa do vídeo", - songSelectAlt: "Seletor de música", - guestbookWarning: "Carregar o guestbook? Você estará sujeito aos termos de uso do Chattable.", - dontAskAgain: "Não pergunte novamente" + kaoMain: "O Android está em grande perigo. Você está prestes a perder controle do seu celular em favor do monopólio da Google.", + kaoLink: "Veja o que você pode fazer em Keep Android Open ->" } }; \ No newline at end of file diff --git a/site/_data/languages.cjs b/_data/languages.js similarity index 100% rename from site/_data/languages.cjs rename to _data/languages.js diff --git a/site/_includes/base.njk b/_includes/base.njk similarity index 94% rename from site/_includes/base.njk rename to _includes/base.njk index 27cee06..8dda116 100644 --- a/site/_includes/base.njk +++ b/_includes/base.njk @@ -13,17 +13,20 @@ Adrian Victor{% if pageTitle or postTitle %} - {{ pageTitle or postTitle }}{% endif %} + - + + + @@ -31,30 +34,24 @@ - {% poison %} - - -
- {{ i18n[langKey].bearAlt }} - + {% include "header.njk" %} -
{{ content | safe }}
diff --git a/_includes/header.njk b/_includes/header.njk new file mode 100644 index 0000000..704f163 --- /dev/null +++ b/_includes/header.njk @@ -0,0 +1,28 @@ +
+
+

{{ title or "Adrian Victor" }}

+ {{ subtitle or "Fanasy is not a crime, find your castle in the sky." }} + +
+ +
\ No newline at end of file diff --git a/site/_includes/macros.njk b/_includes/macros.njk similarity index 66% rename from site/_includes/macros.njk rename to _includes/macros.njk index 72dee07..eaeec1b 100644 --- a/site/_includes/macros.njk +++ b/_includes/macros.njk @@ -1,23 +1,17 @@ -{% macro i88x31(link, alt=link, interactive=true) %} +{% macro i88x31(link) %} = {% endmacro %} -{% macro videoCard(videoLink, videoTitle, videoImage, videoWebsite, videoDuration, videoAccent, imageAlt = i18n[langKey].videoArtworkAlt) %} +{% macro videoCard(videoLink, videoTitle, videoImage, videoWebsite, videoDuration, videoAccent) %}
-{% endmacro %} - -{% macro webring(opts) %} -
-

{{ opts.text }}

-
- {% for link in opts.links %} - {{ link | safe }} - {% endfor %} +

{{ projectDescription }}

{% endmacro %} \ No newline at end of file diff --git a/_includes/post.11tydata.js b/_includes/post.11tydata.js new file mode 100644 index 0000000..c45c03e --- /dev/null +++ b/_includes/post.11tydata.js @@ -0,0 +1,3 @@ +module.exports = { + langKey: data => data.lang +}; \ No newline at end of file diff --git a/site/_includes/post.njk b/_includes/post.njk similarity index 92% rename from site/_includes/post.njk rename to _includes/post.njk index 217cd1c..2f68554 100644 --- a/site/_includes/post.njk +++ b/_includes/post.njk @@ -1,7 +1,6 @@ --- layout: base.njk title: Adrian Victor:Blog -headerLink: blog --- {% set altLanguages = collections.post | alternateLanguages(postId, langKey) %} {% from "macros.njk" import videoCard with context %} @@ -10,7 +9,6 @@ headerLink: blog

{{ postTitle }}

-

{{ i18n[langKey].readingTime }}: {{ content | readingTime }}

{{ authors or "Adrian Victor" }} - {{ date | postDate }}{% if lastModified | postDate !== date | postDate %} ({{ i18n[langKey].lastEditedIn }} {{ lastModified | postDate }}){% endif %}

{% if altLanguages.length > 0 %} {{ i18n[langKey].availableInOtherLanguages }}: diff --git a/site/blog.njk b/blog.njk similarity index 84% rename from site/blog.njk rename to blog.njk index 678d0ea..bc9c94b 100644 --- a/site/blog.njk +++ b/blog.njk @@ -6,7 +6,6 @@ pagination: permalink: "/{{ langKey }}/blog/index.html" layout: base.njk title: Adrian Victor:Blog -headerLink: blog ---
@@ -15,8 +14,10 @@ headerLink: blog {% for post in collections.post %} {% if post.data.langKey == langKey %}
  • - {{ post.data.postTitle }}
    +

    + {{ post.data.postTitle }}
    {{ post.data.date | postDate }}{% if post.data.lastModified | postDate !== post.data.date | postDate %} ({{ i18n[langKey].lastEditedIn }} {{ post.data.lastModified | postDate}}){% endif %} +

  • {% endif %} {% endfor %} diff --git a/index.njk b/index.njk new file mode 100644 index 0000000..75defb4 --- /dev/null +++ b/index.njk @@ -0,0 +1,208 @@ +--- +pagination: + data: i18n + size: 1 + alias: langKey +permalink: "/{{ langKey }}/index.html" +layout: base.njk +--- +{% from "macros.njk" import i88x31 with context %} +{% from "macros.njk" import videoCard with context %} +{% from "macros.njk" import projectCard %} + +
    +
    + +
    + + + + +
    +
    +

    {{ i18n[langKey].kaoMain | safe }}

    +

    {{ i18n[langKey].kaoLink | safe }}

    +
    +
    +

    {{ i18n[langKey].welcome | smartTitle }}

    +

    {{ i18n[langKey].homeWelcomeParagraph | safe }}

    + +
    + {{ i88x31("tenkuma.gif") }} + {{ i88x31("anybrowser6.gif") }} + {{ i88x31("ai.gif") }} + {{ i88x31("WEBP.gif") }} + {{ i88x31("rainbowrain.gif") }} + {{ i88x31("blasphemy.gif") }} + {{ i88x31("css3.gif") }} + {{ i88x31("best_viewed_with_open_eyes.gif") }} + {{ i88x31("gnu-linux.gif") }} +
    +
    + +
    + +

    {{ i18n[langKey].aboutMe | smartTitle }}

    +

    {{ i18n[langKey].homeAboutMeParagraph | safe }}

    +

    {{ i18n[langKey].homeAboutMeParagraphTwo | safe }}

    + +

    {{ i18n[langKey].socialsAndContact | smartTitle }}

    +

    {{ i18n[langKey].homeSocialsAndContactParagraph | safe }}

    +

    {{ i18n[langKey].homeSocialsAndContactParagraphTwo | safe }}

    + +

    Webrings

    +
    +
    +
    +
    +
    +
    + + + +
    + +
    +
    +
    +
    + +
    +
    +

    {{ i18n[langKey].myMusic | smartTitle }}

    +

    {{ i18n[langKey].homeMyMusicParagraph | safe }}

    +

    {{ i18n[langKey].homeMyMusicParagraphTwo | safe }}

    + +
    + {{ i88x31("rave.gif") }} + {{ i88x31("happymix.gif") }} +
    +
    + +
    + +
    + {{ + videoCard( + i18n["global"].homeSongLink, + i18n["global"].homeSongTitle, + i18n["global"].homeSongImage, + i18n["global"].homeSongWebsite, + i18n["global"].homeSongDuration, + i18n["global"].homeSongAccent + ) + }} +
    +
    + +
    +
    +

    {{ i18n[langKey].myVideos | smartTitle }}

    +

    {{ i18n[langKey].homeMyVideoParagraph | safe }}

    +
    + +
    + + {{ + videoCard( + i18n["global"].homeVideoLink, + i18n[langKey].homeVideoTitle, + i18n["global"].homeVideoImage, + i18n["global"].homeVideoWebsite, + i18n["global"].homeVideoDuration + ) + }} +
    + +
    +
    +

    {{ i18n[langKey].mySoftware | smartTitle }}

    +

    {{ i18n[langKey].homeMySoftwareParagraph | safe }}

    +
    + +
    + +
    + {{ + projectCard( + "Jamfish", + i18n[langKey].jamfishProjectDesctiption, + "https://github.com/adrianvic/jamfish", + '/static/images/jamfish-wide.png', + "Jamfish" + ) + }} + + {{ + projectCard( + "ItemEconomy", + i18n[langKey].itemeconomyProjectDesctiption, + "https://github.com/adrianvic/ItemEconomy", + '/static/images/itemeconomy2-wide.png', + "ItemEconomy" + ) + }} + + {{ + projectCard( + "Eye of Nemesis", + i18n[langKey].eyeofnemesisProjectDesctiption, + "https://github.com/adrianvic/NemesisEye", + '/static/images/eye_of_nemesis.png', + "Eye of Nemesis" + ) + }} + + {{ + projectCard( + "PestoWiki", + i18n[langKey].pestoProjectDesctiption, + "https://github.com/Margarina-not-butter/PestoWiki", + '/static/images/pestowikifullwhite.png', + "PestoWiki" + ) + }} +
    +
    +
    \ No newline at end of file diff --git a/site/languages.njk b/languages.njk similarity index 100% rename from site/languages.njk rename to languages.njk diff --git a/maintenance/edit-i18n.js b/maintenance/edit-i18n.js new file mode 100644 index 0000000..216820b --- /dev/null +++ b/maintenance/edit-i18n.js @@ -0,0 +1,191 @@ +// Coded entirely by ChatGPT +// :( + +const express = require("express"); +const fs = require("fs"); +const parser = require("@babel/parser"); +const traverse = require("@babel/traverse").default; +const generate = require("@babel/generator").default; +const t = require("@babel/types"); + +const app = express(); +app.use(express.json()); + +const FILE = "../_data/i18n.js"; + +function loadAST() { + const code = fs.readFileSync(FILE, "utf8"); + return parser.parse(code, { sourceType: "module" }); +} + +function extract(ast) { + const out = {}; + + traverse(ast, { + AssignmentExpression(path) { + if ( + path.node.left.object?.name === "module" && + path.node.left.property?.name === "exports" + ) { + path.node.right.properties.forEach(langProp => { + const lang = langProp.key.name || langProp.key.value; + out[lang] = {}; + + langProp.value.properties.forEach(p => { + const key = p.key.name || p.key.value; + out[lang][key] = p.value.extra?.raw || generate(p.value).code; + }); + }); + } + } + }); + + return out; +} + +function write(ast, newData) { + traverse(ast, { + AssignmentExpression(path) { + if ( + path.node.left.object?.name === "module" && + path.node.left.property?.name === "exports" + ) { + path.node.right.properties.forEach(langProp => { + const lang = langProp.key.name || langProp.key.value; + + const existingKeys = new Set( + langProp.value.properties.map(p => p.key.name || p.key.value) + ); + + // update existing + langProp.value.properties.forEach(p => { + const key = p.key.name || p.key.value; + + if (key in (newData[lang] || {})) { + p.value = parser.parseExpression(newData[lang][key]); + } + }); + + // add new keys + Object.keys(newData[lang] || {}).forEach(key => { + if (!existingKeys.has(key)) { + langProp.value.properties.push( + t.objectProperty( + t.identifier(key), + parser.parseExpression(newData[lang][key]) + ) + ); + } + }); + }); + } + } + }); + + const output = generate(ast, { retainLines: true }).code; + fs.writeFileSync(FILE, output); +} + +app.get("/data", (req, res) => { + const ast = loadAST(); + res.json(extract(ast)); +}); + +app.post("/save", (req, res) => { + const ast = loadAST(); + write(ast, req.body); + res.send("ok"); +}); + +app.get("/", (req, res) => { + res.send(` + + + +

    i18n Editor

    +
    + + + + + + + `); + }); + + app.listen(3000,()=>console.log('http://localhost:3000')); + \ No newline at end of file diff --git a/site/misc.njk b/misc.njk similarity index 95% rename from site/misc.njk rename to misc.njk index ae82248..241f059 100644 --- a/site/misc.njk +++ b/misc.njk @@ -6,14 +6,13 @@ pagination: permalink: "/{{ langKey }}/misc/index.html" layout: base.njk title: Adrian Victor:Misc -headerLink: misc ---

    {{ i18n[langKey].miscellaneous }}

      -
      +
      {% for page in collections.misc %} {% set t = page | getTranslation(langKey) %} diff --git a/site/misc/88x31/en.json b/misc/88x31/en.json similarity index 100% rename from site/misc/88x31/en.json rename to misc/88x31/en.json diff --git a/site/misc/88x31/index.njk b/misc/88x31/index.njk similarity index 84% rename from site/misc/88x31/index.njk rename to misc/88x31/index.njk index 62e3492..144be82 100644 --- a/site/misc/88x31/index.njk +++ b/misc/88x31/index.njk @@ -19,9 +19,6 @@ tags: misc

      {{ t.me }}

      {{ i88x31("tenkuma.gif") }} - {{ i88x31("tenkuma2.gif") }} - {{ i88x31("tenkuma-splash.gif") }} - {{ i88x31("mrnandokk.gif") }}

      {{ t.others }}

      diff --git a/site/misc/88x31/pt.json b/misc/88x31/pt.json similarity index 100% rename from site/misc/88x31/pt.json rename to misc/88x31/pt.json diff --git a/site/misc/about/en.json b/misc/about/en.json similarity index 82% rename from site/misc/about/en.json rename to misc/about/en.json index b427774..97056e1 100644 --- a/site/misc/about/en.json +++ b/misc/about/en.json @@ -16,8 +16,5 @@ "clickSoundLabel": "Click sound effect", "thanksHeading": "Thanks", "eleventyDesc": "Static website generator, used in this website.", - "githubPagesDesc": "For web hosting.", - "recentChangesPluginDesc": "Plugin for listing recent commits.", - "inlineFaviconPluginDesc": "Support for inline link icons.", - "poisonPluginDesc": "Hidden AI poisoning inside page source." + "githubPagesDesc": "For web hosting." } \ No newline at end of file diff --git a/misc/about/index.njk b/misc/about/index.njk new file mode 100644 index 0000000..fce4ced --- /dev/null +++ b/misc/about/index.njk @@ -0,0 +1,34 @@ +--- +layout: base.njk +pagination: + data: languages + size: 1 + alias: langKey +tags: misc +backgroundOpacity: "0.3" +background: "bear3.jpg" +--- +
      +

      {{ t.pageTitle }}

      +

      {{ t.introText1 }} {{ t.introRepoLinkText }} {{ t.introText2 }} {{ t.introLicenseLinkText }}.

      +

      {{ t.privacyText1 }} () {{ t.privacyText2 }} () {{ t.privacyText3 }}

      + +

      {{ t.attributionsHeading }}

      +
      +
      {{ t.bgImageLabel }}
      +
      {{ t.bgImageCredit }}
      +
      {{ t.badges88x31Label }}
      +
      88x31.nl
      +
      {{ t.neocitiesCommunity }}
      +
      {{ t.clickSoundLabel }}
      +
      lilypids @ Myinstants
      +
      + +

      {{ t.thanksHeading }}

      +
      +
      Eleventy (11ty)
      +
      {{ t.eleventyDesc }}
      +
      GitHub Pages
      +
      {{ t.githubPagesDesc }}
      +
      +
      \ No newline at end of file diff --git a/site/misc/about/pt.json b/misc/about/pt.json similarity index 82% rename from site/misc/about/pt.json rename to misc/about/pt.json index 867c07d..b8abc8d 100644 --- a/site/misc/about/pt.json +++ b/misc/about/pt.json @@ -16,8 +16,5 @@ "clickSoundLabel": "Efeito sonoro de clique", "thanksHeading": "Agradecimentos", "eleventyDesc": "Gerador de sites estáticos, usado neste website.", - "githubPagesDesc": "Pela hospedagem do website.", - "recentChangesPluginDesc": "Plugin para listagem de commits recentes.", - "inlineFaviconPluginDesc": "Suporte para icones em links.", - "poisonPluginDesc": "Envenenamento de IA dentro do código fonte das páginas." + "githubPagesDesc": "Pela hospedagem do website." } \ No newline at end of file diff --git a/site/misc/bookmarks/common.json b/misc/bookmarks/common.json similarity index 88% rename from site/misc/bookmarks/common.json rename to misc/bookmarks/common.json index 77b67d6..3f085ae 100644 --- a/site/misc/bookmarks/common.json +++ b/misc/bookmarks/common.json @@ -124,18 +124,6 @@ } ] }, - "services": { - "links": [ - { - "name": "Disroot", - "link": "https://disroot.org/", - "description": { - "en": "Privacy respecting e-mail, Nextcloud storage, XMPP server, encrypted file sharing and other cool services.", - "pt": "E-mail que respeita sua privacidade, armazenamento Nextcloud, servidor XMPP, compartilhamento de arquivos criptografados e outros serviços legais." - } - } - ] - }, "piracy": { "88x31": ["piracy.png"], "links": [ @@ -163,14 +151,6 @@ "pt": "Baixe musica diretamente de Qobuz, Tidal, Soundcloud, Deezer, Amazon Music, e Yandex Music em alta qualidade de graça.", "en": "Download music directly from Amazon Music, Soundcloud, Qobuz, Deezer and Tidal for free." } - }, - { - "name": "Orpheus", - "link": "https://orpheus.network/", - "description": { - "pt": "Tracker de músicas por convite, tem algumas músicas mais difíceis de achar.", - "en": "Invitation only music tracker, has a lot of hard to find songs." - } } ] } diff --git a/site/misc/bookmarks/en.json b/misc/bookmarks/en.json similarity index 87% rename from site/misc/bookmarks/en.json rename to misc/bookmarks/en.json index 6b0cc31..b7ae767 100644 --- a/site/misc/bookmarks/en.json +++ b/misc/bookmarks/en.json @@ -7,6 +7,5 @@ "games": "Games", "tools": "Tools", "music": "Music", - "piracy": "Piracy", - "services": "Services" + "piracy": "Piracy" } \ No newline at end of file diff --git a/site/misc/bookmarks/index.njk b/misc/bookmarks/index.njk similarity index 94% rename from site/misc/bookmarks/index.njk rename to misc/bookmarks/index.njk index 343695b..ec34a11 100644 --- a/site/misc/bookmarks/index.njk +++ b/misc/bookmarks/index.njk @@ -30,7 +30,7 @@ backgroundOpacity: .2
      {% for link in section.links %}
      -
      {% ai link.link %}{{ link.name }}{% endai %}
      +
      {{ link.name }}

      {{ link.description[langKey] }} diff --git a/site/misc/bookmarks/pt.json b/misc/bookmarks/pt.json similarity index 87% rename from site/misc/bookmarks/pt.json rename to misc/bookmarks/pt.json index acff116..450bcb3 100644 --- a/site/misc/bookmarks/pt.json +++ b/misc/bookmarks/pt.json @@ -7,6 +7,5 @@ "games": "Jogos", "tools": "Ferramentas", "music": "Música", - "piracy": "Pirataria", - "services": "Serviços" + "piracy": "Pirataria" } \ No newline at end of file diff --git a/site/misc/misc.11tydata.cjs b/misc/misc.11tydata.js similarity index 95% rename from site/misc/misc.11tydata.cjs rename to misc/misc.11tydata.js index ecd6f5f..dec5ff3 100644 --- a/site/misc/misc.11tydata.cjs +++ b/misc/misc.11tydata.js @@ -27,6 +27,5 @@ module.exports = { permalink: data => { return `/${data.langKey}/misc/${data.page.fileSlug}/`; }, - tags: "misc", - headerLink: "misc" + tags: "misc" }; diff --git a/package-lock.json b/package-lock.json index ce1b23f..affb8b5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,35 +8,33 @@ "name": "adrianvictor-new", "version": "1.0.0", "license": "ISC", - "dependencies": { - "@11ty/eleventy-plugin-syntaxhighlight": "^5.0.2", - "@inframanufaktur/eleventy-plugin-clean-urls": "^1.0.2", - "@sardine/eleventy-plugin-external-links": "^1.4.0", - "eleventy-plugin-git-commit-date": "^1.0.2", - "eleventy-plugin-github-repos": "^0.1.8", - "eleventy-plugin-inline-link-favicon": "^1.1.0", - "eleventy-plugin-mastoarchive": "^0.2.0", - "eleventy-plugin-poison": "^1.0.1", - "eleventy-plugin-purgecss": "^0.6.0", - "eleventy-plugin-reading-time": "^0.0.1", - "eleventy-plugin-recent-changes": "^1.0.1", - "eleventy-plugin-webmentions": "^2.1.0" + "devDependencies": { + "@babel/generator": "^7.29.1", + "@babel/parser": "^7.29.2", + "@babel/traverse": "^7.29.0", + "eleventy-plugin-citations": "^0.1.10", + "express": "^5.2.1", + "readline-sync": "^1.4.10" } }, "node_modules/@11ty/dependency-tree": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@11ty/dependency-tree/-/dependency-tree-4.0.2.tgz", - "integrity": "sha512-RTF6VTZHatYf7fSZBUN3RKwiUeJh5dhWV61gDPrHhQF2/gzruAkYz8yXuvGLx3w3ZBKreGrR+MfYpSVkdbdbLA==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@11ty/dependency-tree/-/dependency-tree-4.0.0.tgz", + "integrity": "sha512-PTOnwM8Xt+GdJmwRKg4pZ8EKAgGoK7pedZBfNSOChXu8MYk2FdEsxdJYecX4t62owpGw3xK60q9TQv/5JI59jw==", + "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@11ty/eleventy-utils": "^2.0.1" } }, "node_modules/@11ty/dependency-tree-esm": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@11ty/dependency-tree-esm/-/dependency-tree-esm-2.0.4.tgz", - "integrity": "sha512-MYKC0Ac77ILr1HnRJalzKDlb9Z8To3kXQCltx299pUXXUFtJ1RIONtULlknknqW8cLe19DLVgmxVCtjEFm7h0A==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@11ty/dependency-tree-esm/-/dependency-tree-esm-2.0.2.tgz", + "integrity": "sha512-kSTmXneksQLBhwsfqjxiSi9ecRKENXmRtT5RG95rFoWSI8kkwLcGlYpoXsPkCD9uQwSU1rmDzXBDnqUJlWaIyw==", + "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@11ty/eleventy-utils": "^2.0.7", "acorn": "^8.15.0", @@ -45,44 +43,46 @@ } }, "node_modules/@11ty/eleventy": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/@11ty/eleventy/-/eleventy-3.1.6.tgz", - "integrity": "sha512-ZlSiR1PLdS2lv7TelBgWAhcvMiLNZkPBlLEb+lh7kGYZ+Mk0bo9qcYgVsewvw9W7Em0RH3wd01h5fAstNDh0zA==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@11ty/eleventy/-/eleventy-3.1.2.tgz", + "integrity": "sha512-IcsDlbXnBf8cHzbM1YBv3JcTyLB35EK88QexmVyFdVJVgUU6bh9g687rpxryJirHzo06PuwnYaEEdVZQfIgRGg==", + "dev": true, "license": "MIT", + "peer": true, "dependencies": { - "@11ty/dependency-tree": "^4.0.2", - "@11ty/dependency-tree-esm": "^2.0.4", + "@11ty/dependency-tree": "^4.0.0", + "@11ty/dependency-tree-esm": "^2.0.0", "@11ty/eleventy-dev-server": "^2.0.8", - "@11ty/eleventy-plugin-bundle": "^3.0.7", + "@11ty/eleventy-plugin-bundle": "^3.0.6", "@11ty/eleventy-utils": "^2.0.7", "@11ty/lodash-custom": "^4.17.21", - "@11ty/posthtml-urls": "^1.0.3", - "@11ty/recursive-copy": "^4.0.4", + "@11ty/posthtml-urls": "^1.0.1", + "@11ty/recursive-copy": "^4.0.2", "@sindresorhus/slugify": "^2.2.1", "bcp-47-normalize": "^2.3.0", "chokidar": "^3.6.0", - "debug": "^4.4.3", + "debug": "^4.4.1", "dependency-graph": "^1.0.0", "entities": "^6.0.1", "filesize": "^10.1.6", "gray-matter": "^4.0.3", "iso-639-1": "^3.1.5", - "js-yaml": "^4.1.1", + "js-yaml": "^4.1.0", "kleur": "^4.1.5", - "liquidjs": "^10.27.0", - "luxon": "^3.7.2", - "markdown-it": "^14.2.0", + "liquidjs": "^10.21.1", + "luxon": "^3.6.1", + "markdown-it": "^14.1.0", "minimist": "^1.2.8", - "moo": "0.5.2", + "moo": "^0.5.2", "node-retrieve-globals": "^6.0.1", "nunjucks": "^3.2.4", - "picomatch": "^4.0.4", + "picomatch": "^4.0.2", "please-upgrade-node": "^3.2.0", - "posthtml": "^0.16.7", + "posthtml": "^0.16.6", "posthtml-match-helper": "^2.0.3", - "semver": "^7.8.1", - "slugify": "^1.6.9", - "tinyglobby": "^0.2.16" + "semver": "^7.7.2", + "slugify": "^1.6.6", + "tinyglobby": "^0.2.14" }, "bin": { "eleventy": "cmd.cjs" @@ -99,7 +99,9 @@ "version": "2.0.8", "resolved": "https://registry.npmjs.org/@11ty/eleventy-dev-server/-/eleventy-dev-server-2.0.8.tgz", "integrity": "sha512-15oC5M1DQlCaOMUq4limKRYmWiGecDaGwryr7fTE/oM9Ix8siqMvWi+I8VjsfrGr+iViDvWcH/TVI6D12d93mA==", + "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@11ty/eleventy-utils": "^2.0.1", "chokidar": "^3.6.0", @@ -125,31 +127,13 @@ "url": "https://opencollective.com/11ty" } }, - "node_modules/@11ty/eleventy-fetch": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/@11ty/eleventy-fetch/-/eleventy-fetch-5.1.3.tgz", - "integrity": "sha512-4HS6QB/mVWTVlE6kjCKPkjkC1Z0YOqizJaHR05zK+E7a2b4EUC3T+wLktIy7wEl76ZoarkY45EKLmTw1XuR8fQ==", - "license": "MIT", - "dependencies": { - "@11ty/eleventy-utils": "^2.0.7", - "@rgrove/parse-xml": "^4.2.1", - "debug": "^4.4.3", - "flatted": "^3.4.2", - "p-queue": "6.6.2" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/11ty" - } - }, "node_modules/@11ty/eleventy-plugin-bundle": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/@11ty/eleventy-plugin-bundle/-/eleventy-plugin-bundle-3.0.7.tgz", "integrity": "sha512-QK1tRFBhQdZASnYU8GMzpTdsMMFLVAkuU0gVVILqNyp09xJJZb81kAS3AFrNrwBCsgLxTdWHJ8N64+OTTsoKkA==", + "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@11ty/eleventy-utils": "^2.0.2", "debug": "^4.4.0", @@ -163,24 +147,13 @@ "url": "https://opencollective.com/11ty" } }, - "node_modules/@11ty/eleventy-plugin-syntaxhighlight": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@11ty/eleventy-plugin-syntaxhighlight/-/eleventy-plugin-syntaxhighlight-5.0.2.tgz", - "integrity": "sha512-T6xVVRDJuHlrFMHbUiZkHjj5o1IlLzZW+1IL9eUsyXFU7rY2ztcYhZew/64vmceFFpQwzuSfxQOXxTJYmKkQ+A==", - "license": "MIT", - "dependencies": { - "prismjs": "^1.30.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/11ty" - } - }, "node_modules/@11ty/eleventy-utils": { "version": "2.0.7", "resolved": "https://registry.npmjs.org/@11ty/eleventy-utils/-/eleventy-utils-2.0.7.tgz", "integrity": "sha512-6QE+duqSQ0GY9rENXYb4iPR4AYGdrFpqnmi59tFp9VrleOl0QSh8VlBr2yd6dlhkdtj7904poZW5PvGr9cMiJQ==", + "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=18" }, @@ -189,35 +162,13 @@ "url": "https://opencollective.com/11ty" } }, - "node_modules/@11ty/eleventy/node_modules/entities": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz", - "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/@11ty/eleventy/node_modules/picomatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.5.tgz", - "integrity": "sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, "node_modules/@11ty/lodash-custom": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/@11ty/lodash-custom/-/lodash-custom-4.17.21.tgz", "integrity": "sha512-Mqt6im1xpb1Ykn3nbcCovWXK3ggywRJa+IXIdoz4wIIK+cvozADH63lexcuPpGS/gJ6/m2JxyyXDyupkMr5DHw==", + "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=14" }, @@ -227,10 +178,12 @@ } }, "node_modules/@11ty/posthtml-urls": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@11ty/posthtml-urls/-/posthtml-urls-1.0.3.tgz", - "integrity": "sha512-1YvhnkaNlFnnJic1rBMWmTC2adbuy+JQiBfl1Hecr1Wjjik1pQZmGyk/eC9zKX/FQv52s2Nht1Gi/UwhYqrBeg==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@11ty/posthtml-urls/-/posthtml-urls-1.0.1.tgz", + "integrity": "sha512-6EFN/yYSxC/OzYXpq4gXDyDMlX/W+2MgCvvoxf11X1z76bqkqFJ8eep5RiBWfGT5j0323a1pwpelcJJdR46MCw==", + "dev": true, "license": "MIT", + "peer": true, "dependencies": { "evaluate-value": "^2.0.0", "http-equiv-refresh": "^2.0.1", @@ -242,209 +195,207 @@ } }, "node_modules/@11ty/recursive-copy": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@11ty/recursive-copy/-/recursive-copy-4.0.4.tgz", - "integrity": "sha512-oI7m8pa7/IAU/3lqRU9vjBbs20iKFo7x+1K9kT3aVira6scc1X9MjBdgLCHzLJeJ7iB6wydioA+kr9/qPnvmlQ==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@11ty/recursive-copy/-/recursive-copy-4.0.2.tgz", + "integrity": "sha512-174nFXxL/6KcYbLYpra+q3nDbfKxLxRTNVY1atq2M1pYYiPfHse++3IFNl8mjPFsd7y2qQjxLORzIjHMjL3NDQ==", + "dev": true, "license": "ISC", + "peer": true, "dependencies": { "errno": "^1.0.0", "junk": "^3.1.0", - "minimatch": "^3.1.5", + "maximatch": "^0.1.0", "slash": "^3.0.0" }, "engines": { "node": ">=18" } }, - "node_modules/@inframanufaktur/clean-urls": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@inframanufaktur/clean-urls/-/clean-urls-1.0.1.tgz", - "integrity": "sha512-WCYk+lp0Cu+jts6C3myAuzEwZov7ZjYMNkXjk3RhIU3I5wXrrZQNAn7Si7376MEpTGWEBsVU4rlwW4UU6SKTWA==", - "license": "MIT", - "engines": { - "node": ">=10" - } - }, - "node_modules/@inframanufaktur/eleventy-plugin-clean-urls": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@inframanufaktur/eleventy-plugin-clean-urls/-/eleventy-plugin-clean-urls-1.0.2.tgz", - "integrity": "sha512-pdSXyzShC7x0rO0ujjqA7Zeq9n6lLXVYFCAf+Wm9lpAJ0gY0eDMbYqkrqs8GaWwkNAhhpXu/yJUFxiTWdET3Xg==", + "node_modules/@babel/code-frame": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz", + "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==", + "dev": true, "license": "MIT", "dependencies": { - "@inframanufaktur/clean-urls": "^1.0.1", - "linkedom": "^0.14.4" - } - }, - "node_modules/@inframanufaktur/eleventy-plugin-clean-urls/node_modules/css-select": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.2.2.tgz", - "integrity": "sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==", - "license": "BSD-2-Clause", - "dependencies": { - "boolbase": "^1.0.0", - "css-what": "^6.1.0", - "domhandler": "^5.0.2", - "domutils": "^3.0.1", - "nth-check": "^2.0.1" + "@babel/helper-validator-identifier": "^7.28.5", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" }, - "funding": { - "url": "https://github.com/sponsors/fb55" + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@inframanufaktur/eleventy-plugin-clean-urls/node_modules/dom-serializer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", - "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "node_modules/@babel/generator": { + "version": "7.29.1", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.1.tgz", + "integrity": "sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==", + "dev": true, "license": "MIT", "dependencies": { - "domelementtype": "^2.3.0", - "domhandler": "^5.0.2", - "entities": "^4.2.0" - }, - "funding": { - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" - } - }, - "node_modules/@inframanufaktur/eleventy-plugin-clean-urls/node_modules/domhandler": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", - "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", - "license": "BSD-2-Clause", - "dependencies": { - "domelementtype": "^2.3.0" + "@babel/parser": "^7.29.0", + "@babel/types": "^7.29.0", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", + "jsesc": "^3.0.2" }, "engines": { - "node": ">= 4" - }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" + "node": ">=6.9.0" } }, - "node_modules/@inframanufaktur/eleventy-plugin-clean-urls/node_modules/domutils": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", - "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", - "license": "BSD-2-Clause", - "dependencies": { - "dom-serializer": "^2.0.0", - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3" - }, - "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" - } - }, - "node_modules/@inframanufaktur/eleventy-plugin-clean-urls/node_modules/entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/@inframanufaktur/eleventy-plugin-clean-urls/node_modules/htmlparser2": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz", - "integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==", - "funding": [ - "https://github.com/fb55/htmlparser2?sponsor=1", - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "license": "MIT", - "dependencies": { - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3", - "domutils": "^3.0.1", - "entities": "^4.4.0" - } - }, - "node_modules/@inframanufaktur/eleventy-plugin-clean-urls/node_modules/linkedom": { - "version": "0.14.26", - "resolved": "https://registry.npmjs.org/linkedom/-/linkedom-0.14.26.tgz", - "integrity": "sha512-mK6TrydfFA7phrnp+1j57ycBwFI5bGSW6YXlw9acHoqF+mP/y+FooEYYyniOt5Ot57FSKB3iwmnuQ1UUyNLm5A==", - "license": "ISC", - "dependencies": { - "css-select": "^5.1.0", - "cssom": "^0.5.0", - "html-escaper": "^3.0.3", - "htmlparser2": "^8.0.1", - "uhyphen": "^0.2.0" - } - }, - "node_modules/@inframanufaktur/eleventy-plugin-clean-urls/node_modules/uhyphen": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/uhyphen/-/uhyphen-0.2.0.tgz", - "integrity": "sha512-qz3o9CHXmJJPGBdqzab7qAYuW8kQGKNEuoHFYrBwV6hWIMcpAmxDLXojcHfFr9US1Pe6zUswEIJIbLI610fuqA==", - "license": "ISC" - }, - "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==", - "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==", + "node_modules/@babel/helper-globals": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", + "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", + "dev": true, "license": "MIT", "engines": { - "node": ">= 8" + "node": ">=6.9.0" } }, - "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==", + "node_modules/@babel/helper-string-parser": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", + "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.29.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.2.tgz", + "integrity": "sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA==", + "dev": true, "license": "MIT", "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" + "@babel/types": "^7.29.0" + }, + "bin": { + "parser": "bin/babel-parser.js" }, "engines": { - "node": ">= 8" + "node": ">=6.0.0" } }, - "node_modules/@rgrove/parse-xml": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@rgrove/parse-xml/-/parse-xml-4.2.1.tgz", - "integrity": "sha512-ZOkOIicFSf5qXbC+8ps5hA+nEhCxsUDpm2U1xp1BACoUZyMkGXEQjsWLD30K77r1fzOTaqEZS85++fmzwCIOJQ==", - "license": "ISC", - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@sardine/eleventy-plugin-external-links": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@sardine/eleventy-plugin-external-links/-/eleventy-plugin-external-links-1.4.0.tgz", - "integrity": "sha512-K9WDFQwLMSBo6bjqNmH3kZSdXKTAb0MYHK3Tmm8IChsprF1XHl574U4pxgouTwJNjzlxqPKI/JYbY2okg0tiaQ==", + "node_modules/@babel/runtime-corejs3": { + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.28.4.tgz", + "integrity": "sha512-h7iEYiW4HebClDEhtvFObtPmIvrd1SSfpI9EhOeKk4CtIK/ngBWFpuhCzhdmRKtg71ylcue+9I6dv54XYO1epQ==", + "dev": true, "license": "MIT", "dependencies": { - "linkedom": "^0.13.0" + "core-js-pure": "^3.43.0" }, "engines": { - "node": ">= 12" + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.28.6.tgz", + "integrity": "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.28.6", + "@babel/parser": "^7.28.6", + "@babel/types": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.0.tgz", + "integrity": "sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.0", + "@babel/generator": "^7.29.0", + "@babel/helper-globals": "^7.28.0", + "@babel/parser": "^7.29.0", + "@babel/template": "^7.28.6", + "@babel/types": "^7.29.0", + "debug": "^4.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.0.tgz", + "integrity": "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" } }, "node_modules/@sindresorhus/slugify": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/@sindresorhus/slugify/-/slugify-2.2.1.tgz", "integrity": "sha512-MkngSCRZ8JdSOCHRaYd+D01XhvU3Hjy6MGl06zhOk614hp9EOAp5gIkBeQg7wtmxpitU6eAL4kdiRMcJa2dlrw==", + "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@sindresorhus/transliterate": "^1.0.0", "escape-string-regexp": "^5.0.0" @@ -456,23 +407,13 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@sindresorhus/slugify/node_modules/escape-string-regexp": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", - "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/@sindresorhus/transliterate": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/@sindresorhus/transliterate/-/transliterate-1.6.0.tgz", "integrity": "sha512-doH1gimEu3A46VX6aVxpHTeHrytJAG6HgdxntYnCFiIFHEM/ZGpG8KiZGBChchjQmG0XFIBL552kBTjVcMZXwQ==", + "dev": true, "license": "MIT", + "peer": true, "dependencies": { "escape-string-regexp": "^5.0.0" }, @@ -483,35 +424,35 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@sindresorhus/transliterate/node_modules/escape-string-regexp": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", - "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@tweetback/canonical": { - "version": "2.0.48", - "resolved": "https://registry.npmjs.org/@tweetback/canonical/-/canonical-2.0.48.tgz", - "integrity": "sha512-wOg/a/zl6rXqJyUpGyOjtWEmZQPOwU88HDeoovE8UebCAvFRMzQaEyEGnY0jq9jEoYcFsAj3teoUy8pOR0HJ7A==", - "license": "MIT" - }, "node_modules/a-sync-waterfall": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/a-sync-waterfall/-/a-sync-waterfall-1.0.1.tgz", "integrity": "sha512-RYTOHHdWipFUliRFMCS4X2Yn2X8M87V/OpSqWzKKOGhzqyUxzyVmhHDH9sAvG+ZuQf/TAOFsLCpMw09I1ufUnA==", - "license": "MIT" + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/accepts": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz", + "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-types": "^3.0.0", + "negotiator": "^1.0.0" + }, + "engines": { + "node": ">= 0.6" + } }, "node_modules/acorn": { - "version": "8.17.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.17.0.tgz", - "integrity": "sha512-xRQbDb9BnwDafYNn6Vwl839DYVjqXYb1XVGtWAZ1kcDc6iwAL4hg3B1dZlRiuENFeO2H53gFG3in621AdERVAg==", + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", + "dev": true, "license": "MIT", + "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -520,10 +461,12 @@ } }, "node_modules/acorn-walk": { - "version": "8.3.5", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.5.tgz", - "integrity": "sha512-HEHNfbars9v4pgpW6SO1KSPkfoS0xVOM/9UzkJltjlsHZmJasxg8aXkuZa7SMf8vKGIBhpUsPluQSqhJFCqebw==", + "version": "8.3.4", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz", + "integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==", + "dev": true, "license": "MIT", + "peer": true, "dependencies": { "acorn": "^8.11.0" }, @@ -535,7 +478,9 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, "license": "ISC", + "peer": true, "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" @@ -544,29 +489,98 @@ "node": ">= 8" } }, + "node_modules/anymatch/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", + "peer": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "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==", - "license": "Python-2.0" + "dev": true, + "license": "Python-2.0", + "peer": true + }, + "node_modules/array-differ": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz", + "integrity": "sha512-LeZY+DZDRnvP7eMuQ6LHfCzUGxAAIViUBliK24P3hWXL6y4SortgR6Nim6xrkfSLlmH0+k+9NYNwVC2s53ZrYQ==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "array-uniq": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/asap": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", - "license": "MIT" + "dev": true, + "license": "MIT", + "peer": true }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "license": "MIT" + "dev": true, + "license": "MIT", + "peer": true }, "node_modules/bcp-47": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/bcp-47/-/bcp-47-2.1.1.tgz", - "integrity": "sha512-KLw+H/gd2p4zly1X7Yh/qziuyae5/w/QFnvTng9eZL5fvszL7Whl3MBoWF8yxL7ksUjBfOD+OxkytiqbBpG+Fw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/bcp-47/-/bcp-47-2.1.0.tgz", + "integrity": "sha512-9IIS3UPrvIa1Ej+lVDdDwO7zLehjqsaByECw0bu2RRGP73jALm6FYbzI5gWbgHLvNdkvfXB5YrSbocZdOS0c0w==", + "dev": true, "license": "MIT", + "peer": true, "dependencies": { "is-alphabetical": "^2.0.0", "is-alphanumerical": "^2.0.0", @@ -581,7 +595,9 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/bcp-47-match/-/bcp-47-match-2.0.3.tgz", "integrity": "sha512-JtTezzbAibu8G0R9op9zb3vcWZd9JF6M0xOYGPn0fNCd7wOpRB1mU2mH9T8gaBGbAAyIIVgB2G7xG0GP98zMAQ==", + "dev": true, "license": "MIT", + "peer": true, "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -591,7 +607,9 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/bcp-47-normalize/-/bcp-47-normalize-2.3.0.tgz", "integrity": "sha512-8I/wfzqQvttUFz7HVJgIZ7+dj3vUaIyIxYXaTRP1YWoSDfzt6TUmxaKZeuXR62qBmYr+nvuWINFRl6pZ5DlN4Q==", + "dev": true, "license": "MIT", + "peer": true, "dependencies": { "bcp-47": "^2.0.0", "bcp-47-match": "^2.0.0" @@ -601,11 +619,25 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/biblatex-csl-converter": { + "version": "2.1.0", + "resolved": "git+ssh://git@github.com/h-tex/biblatex-csl-converter.git#223b6d2ba3219cdcd85e23205353dda83d922537", + "dev": true, + "license": "LGPL-3.0", + "dependencies": { + "xregexp": "^5.1.0" + }, + "engines": { + "node": ">=16" + } + }, "node_modules/binary-extensions": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=8" }, @@ -613,17 +645,38 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", - "license": "ISC" + "node_modules/body-parser": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.2.tgz", + "integrity": "sha512-oP5VkATKlNwcgvxi0vM0p/D3n2C3EReYVX+DNYs5TjZFn/oQt2j+4sVJtSMr18pdRr8wjTcBl6LoV+FUwzPmNA==", + "dev": true, + "license": "MIT", + "dependencies": { + "bytes": "^3.1.2", + "content-type": "^1.0.5", + "debug": "^4.4.3", + "http-errors": "^2.0.0", + "iconv-lite": "^0.7.0", + "on-finished": "^2.4.1", + "qs": "^6.14.1", + "raw-body": "^3.0.1", + "type-is": "^2.0.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } }, "node_modules/brace-expansion": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.15.tgz", - "integrity": "sha512-EwOCDEex4quD37XhqM3omwtMoJjr//isUZz1JopUNWms+4Z2ViyM/k1YIRePpoVNnQhENnxtFjLaxNHrT7xIUg==", + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, "license": "MIT", + "peer": true, "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -633,7 +686,9 @@ "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", + "peer": true, "dependencies": { "fill-range": "^7.1.1" }, @@ -641,194 +696,54 @@ "node": ">=8" } }, - "node_modules/cheerio": { - "version": "1.0.0-rc.12", - "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.12.tgz", - "integrity": "sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==", + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "dev": true, "license": "MIT", "dependencies": { - "cheerio-select": "^2.1.0", - "dom-serializer": "^2.0.0", - "domhandler": "^5.0.3", - "domutils": "^3.0.1", - "htmlparser2": "^8.0.1", - "parse5": "^7.0.0", - "parse5-htmlparser2-tree-adapter": "^7.0.0" + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" }, "engines": { - "node": ">= 6" - }, - "funding": { - "url": "https://github.com/cheeriojs/cheerio?sponsor=1" + "node": ">= 0.4" } }, - "node_modules/cheerio-select": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz", - "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==", - "license": "BSD-2-Clause", - "dependencies": { - "boolbase": "^1.0.0", - "css-select": "^5.1.0", - "css-what": "^6.1.0", - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3", - "domutils": "^3.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/cheerio-select/node_modules/css-select": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.2.2.tgz", - "integrity": "sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==", - "license": "BSD-2-Clause", - "dependencies": { - "boolbase": "^1.0.0", - "css-what": "^6.1.0", - "domhandler": "^5.0.2", - "domutils": "^3.0.1", - "nth-check": "^2.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/cheerio-select/node_modules/dom-serializer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", - "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "dev": true, "license": "MIT", "dependencies": { - "domelementtype": "^2.3.0", - "domhandler": "^5.0.2", - "entities": "^4.2.0" - }, - "funding": { - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" - } - }, - "node_modules/cheerio-select/node_modules/domhandler": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", - "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", - "license": "BSD-2-Clause", - "dependencies": { - "domelementtype": "^2.3.0" + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" }, "engines": { - "node": ">= 4" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" - } - }, - "node_modules/cheerio-select/node_modules/domutils": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", - "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", - "license": "BSD-2-Clause", - "dependencies": { - "dom-serializer": "^2.0.0", - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3" - }, - "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" - } - }, - "node_modules/cheerio-select/node_modules/entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/cheerio/node_modules/dom-serializer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", - "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", - "license": "MIT", - "dependencies": { - "domelementtype": "^2.3.0", - "domhandler": "^5.0.2", - "entities": "^4.2.0" - }, - "funding": { - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" - } - }, - "node_modules/cheerio/node_modules/domhandler": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", - "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", - "license": "BSD-2-Clause", - "dependencies": { - "domelementtype": "^2.3.0" - }, - "engines": { - "node": ">= 4" - }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" - } - }, - "node_modules/cheerio/node_modules/domutils": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", - "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", - "license": "BSD-2-Clause", - "dependencies": { - "dom-serializer": "^2.0.0", - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3" - }, - "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" - } - }, - "node_modules/cheerio/node_modules/entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/cheerio/node_modules/htmlparser2": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz", - "integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==", - "funding": [ - "https://github.com/fb55/htmlparser2?sponsor=1", - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "license": "MIT", - "dependencies": { - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3", - "domutils": "^3.0.1", - "entities": "^4.4.0" + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/chokidar": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dev": true, "license": "MIT", + "peer": true, "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", @@ -848,104 +763,93 @@ "fsevents": "~2.3.2" } }, - "node_modules/circular": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/circular/-/circular-1.0.5.tgz", - "integrity": "sha512-n4Sspha+wxUl5zeA3JYp1zFCjsLz2VfXIe2gRKNQBrIX+7iPdGcCGZOF8W8IULtllZ/aejXtySfdFFt1wy/3JQ==" - }, - "node_modules/cli-logger": { - "version": "0.5.40", - "resolved": "https://registry.npmjs.org/cli-logger/-/cli-logger-0.5.40.tgz", - "integrity": "sha512-piXVCa0TLm/+A7xdVEhw7t4OSrsmJaZIekWcoGrVMY1bHtLJTXgiNzgHlKT0EVHQ14sCKWorQJazU7UWgZhXOQ==", - "dependencies": { - "circular": "^1.0.5", - "cli-util": "~1.1.27" - } - }, - "node_modules/cli-regexp": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/cli-regexp/-/cli-regexp-0.1.2.tgz", - "integrity": "sha512-L++cAQ5g0Nu6aV56B3uaR+c7jEGSAa4WApY1ZN7XiD8niJ5jRfXE/qvMwgz3uZBG0rft4hJS75Vpz2F3mSm4Mg==" - }, - "node_modules/cli-util": { - "version": "1.1.27", - "resolved": "https://registry.npmjs.org/cli-util/-/cli-util-1.1.27.tgz", - "integrity": "sha512-Z6+zI0kIrqf9Oi+PmUm8J9AELp8bTf2vCLYseudYtdOPNJvzpNiExO95aHIm477IbPdu/8SE9Wvc/M1kJl4Anw==", - "dependencies": { - "cli-regexp": "~0.1.0" - } + "node_modules/citeproc": { + "version": "2.4.63", + "resolved": "https://registry.npmjs.org/citeproc/-/citeproc-2.4.63.tgz", + "integrity": "sha512-68F95Bp4UbgZU/DBUGQn0qV3HDZLCdI9+Bb2ByrTaNJDL5VEm9LqaiNaxljsvoaExSLEXe1/r6n2Z06SCzW3/Q==", + "dev": true, + "license": "CPAL-1.0 OR AGPL-1.0" }, "node_modules/commander": { - "version": "12.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", - "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", + "dev": true, "license": "MIT", + "peer": true, "engines": { - "node": ">=18" + "node": ">=14" } }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "license": "MIT" + "dev": true, + "license": "MIT", + "peer": true }, - "node_modules/css-select": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", - "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", - "license": "BSD-2-Clause", - "dependencies": { - "boolbase": "^1.0.0", - "css-what": "^6.0.1", - "domhandler": "^4.3.1", - "domutils": "^2.8.0", - "nth-check": "^2.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/css-what": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.2.2.tgz", - "integrity": "sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==", - "license": "BSD-2-Clause", - "engines": { - "node": ">= 6" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "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==", + "node_modules/content-disposition": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.1.0.tgz", + "integrity": "sha512-5jRCH9Z/+DRP7rkvY83B+yGIGX96OYdJmzngqnw2SBSxqCFPd0w2km3s5iawpGX8krnwSGmF0FW5Nhr0Hfai3g==", + "dev": true, "license": "MIT", - "bin": { - "cssesc": "bin/cssesc" - }, "engines": { - "node": ">=4" + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, - "node_modules/cssom": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.5.0.tgz", - "integrity": "sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==", - "license": "MIT" + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } }, - "node_modules/dayjs": { - "version": "1.11.21", - "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.21.tgz", - "integrity": "sha512-98IT+HOahAisibz/yjKbzuOBwYcjJ7BCLPzARyHiyEBmRz4fatF+KPJszEHXsGYjUG234aH/cOjW1wwTbKUZlA==", - "license": "MIT" + "node_modules/cookie": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", + "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz", + "integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.6.0" + } + }, + "node_modules/core-js-pure": { + "version": "3.46.0", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.46.0.tgz", + "integrity": "sha512-NMCW30bHNofuhwLhYPt66OLOKTMbOhgTTatKVbaQC3KRHpTCiRIBYvtshr+NBYSnBxwAFhjW/RfJ0XbIjS16rw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } }, "node_modules/debug": { "version": "4.4.3", "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "dev": true, "license": "MIT", "dependencies": { "ms": "^2.1.3" @@ -959,19 +863,11 @@ } } }, - "node_modules/deepmerge": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", - "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/depd": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.8" @@ -981,7 +877,9 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-1.0.0.tgz", "integrity": "sha512-cW3gggJ28HZ/LExwxP2B++aiKxhJXMSIt9K48FOXQkm+vuG5gyatXnLsONRJdzO/7VfjDIiaOOa/bs4l464Lwg==", + "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=4" } @@ -990,7 +888,9 @@ "version": "1.4.1", "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "dev": true, "license": "MIT", + "peer": true, "dependencies": { "domelementtype": "^2.0.1", "domhandler": "^4.2.0", @@ -1000,23 +900,38 @@ "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" } }, + "node_modules/dom-serializer/node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true, + "license": "BSD-2-Clause", + "peer": true, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, "node_modules/domelementtype": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true, "funding": [ { "type": "github", "url": "https://github.com/sponsors/fb55" } ], - "license": "BSD-2-Clause" + "license": "BSD-2-Clause", + "peer": true }, "node_modules/domhandler": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "dev": true, "license": "BSD-2-Clause", + "peer": true, "dependencies": { "domelementtype": "^2.2.0" }, @@ -1031,7 +946,9 @@ "version": "2.8.0", "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dev": true, "license": "BSD-2-Clause", + "peer": true, "dependencies": { "dom-serializer": "^1.0.1", "domelementtype": "^2.2.0", @@ -1041,102 +958,65 @@ "url": "https://github.com/fb55/domutils?sponsor=1" } }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "dev": true, "license": "MIT" }, - "node_modules/eleventy-plugin-git-commit-date": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/eleventy-plugin-git-commit-date/-/eleventy-plugin-git-commit-date-1.0.2.tgz", - "integrity": "sha512-//pN28Y64D6AKBRKsOdG2hYG8WSIrOzf5JBmTO3RjHj0F1n/neFfJ0Jc1YorRIGX38iDfi2Bu6SHQRidWJRcxQ==", - "license": "MIT" - }, - "node_modules/eleventy-plugin-github-repos": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/eleventy-plugin-github-repos/-/eleventy-plugin-github-repos-0.1.8.tgz", - "integrity": "sha512-Bhhqj8NLRTWDxD6Ydy9wu5PCz96Ulyqd7SYqdKXPbYhjzwKhX0895Xdz+I+LaQ+bCTpVnxgF2ngT6O5iFvCVsQ==", + "node_modules/eleventy-plugin-citations": { + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/eleventy-plugin-citations/-/eleventy-plugin-citations-0.1.10.tgz", + "integrity": "sha512-Tq50yD8+74wkZDUkOV9rRXBzSU9wxYPFKWsMPjiISmQFbk1aR7jcVyw8zJDPdeH3EPbAvQj4x8ZXfGOVrFsZXQ==", + "dev": true, "license": "MIT", "dependencies": { - "@11ty/eleventy": "^3.1.2", - "@11ty/eleventy-fetch": "^5.1.1", - "cli-logger": "^0.5.40" - } - }, - "node_modules/eleventy-plugin-inline-link-favicon": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/eleventy-plugin-inline-link-favicon/-/eleventy-plugin-inline-link-favicon-1.1.0.tgz", - "integrity": "sha512-ZhzQ9WYwhrHBGHv1fBwK1y2QYYJt8jX4oUL3jB82AWCv03WpiMBK77OIJcGBo7XQdo4gIm6oPQZ8tG/150ApeA==", - "license": "MIT" - }, - "node_modules/eleventy-plugin-mastoarchive": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eleventy-plugin-mastoarchive/-/eleventy-plugin-mastoarchive-0.2.0.tgz", - "integrity": "sha512-NYSx9yQxTcaA2mn1GVA3tfArqJoAI5YhOKU/GFCAEhRZv26GPmRGtlD7jAqPVIS68wEpUDlgh9WacHOPEWDY7w==", - "license": "ISC", - "dependencies": { - "lodash": "^4.17.21", - "node-fetch": "^2.6.9" - } - }, - "node_modules/eleventy-plugin-poison": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/eleventy-plugin-poison/-/eleventy-plugin-poison-1.0.1.tgz", - "integrity": "sha512-mjfed3IZvPRJCGtjWUnjOsNREKptikeIeXNwXlIv20l/YqSq01MtFZKMcFvmwFs1d/3CVQAjrLuXg/eJQeXRvg==", - "license": "MIT" - }, - "node_modules/eleventy-plugin-purgecss": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/eleventy-plugin-purgecss/-/eleventy-plugin-purgecss-0.6.0.tgz", - "integrity": "sha512-PZLqSTn8hAwa1YA8qy1ybNvtbbwZfz3SDQlRS2IghD56PFRC+QuetbqOeHmhA7IIFAFYYUDKYpGh0iEt9Ent1A==", - "license": "MIT", - "dependencies": { - "purgecss": "^8.0.0" - } - }, - "node_modules/eleventy-plugin-reading-time": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/eleventy-plugin-reading-time/-/eleventy-plugin-reading-time-0.0.1.tgz", - "integrity": "sha512-6MRHwrWMYm/u9lJK4/mnyS+6SyQxJSQcTfa1DqQS9fpQRPsZ9mdO9rZ/6DAhZpX2/cXxrbc6qxgcv6Qj90im1g==", - "license": "MIT" - }, - "node_modules/eleventy-plugin-recent-changes": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/eleventy-plugin-recent-changes/-/eleventy-plugin-recent-changes-1.0.1.tgz", - "integrity": "sha512-lFP9Zyyy/o+HglF2aI9neLfskjKLaD/MAD6RQHNfdi7D0HAZcUo5GIRO932G7R9VTDKpJeJIAUx2PMDJQqbzIQ==", - "license": "ISC", - "dependencies": { - "gitlog": "^4.0.4" - } - }, - "node_modules/eleventy-plugin-webmentions": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eleventy-plugin-webmentions/-/eleventy-plugin-webmentions-2.1.0.tgz", - "integrity": "sha512-zoLTF/xw1KkU6xU3eMH+DFF+RaCtF7VImyJS3MQ1vRHQ7siBSb/bF7gv7ldSwk0eMxtj5ABVhalUf6dt+2wiVg==", - "license": "MIT", - "dependencies": { - "@tweetback/canonical": "^2.0.27", - "html-entities": "^2.3.3", - "node-fetch": "^2.6.6", - "sanitize-html": "^2.7.0", - "truncate-html": "^1.0.4" + "biblatex-csl-converter": "github:h-tex/biblatex-csl-converter", + "citeproc": "^2.4.63", + "locale-en-us": "^0.0.2", + "style-vancouver": "^0.0.2" + }, + "peerDependencies": { + "@11ty/eleventy": "^3.0.0-beta.1", + "nunjucks": "^3" } }, "node_modules/encodeurl": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.8" } }, "node_modules/entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz", + "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==", + "dev": true, "license": "BSD-2-Clause", + "peer": true, + "engines": { + "node": ">=0.12" + }, "funding": { "url": "https://github.com/fb55/entities?sponsor=1" } @@ -1145,7 +1025,9 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/errno/-/errno-1.0.0.tgz", "integrity": "sha512-3zV5mFS1E8/1bPxt/B0xxzI1snsg3uSCIh6Zo1qKg6iMw93hzPANk9oBFzSFBFrwuVoQuE3rLoouAUfwOAj1wQ==", + "dev": true, "license": "MIT", + "peer": true, "dependencies": { "prr": "~1.0.1" }, @@ -1153,19 +1035,55 @@ "errno": "cli.js" } }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "dev": true, "license": "MIT" }, "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==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "dev": true, "license": "MIT", + "peer": true, "engines": { - "node": ">=10" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -1175,7 +1093,9 @@ "version": "3.0.5", "resolved": "https://registry.npmjs.org/esm-import-transformer/-/esm-import-transformer-3.0.5.tgz", "integrity": "sha512-1GKLvfuMnnpI75l8c6sHoz0L3Z872xL5akGuBudgqTDPv4Vy6f2Ec7jEMKTxlqWl/3kSvNbHELeimJtnqgYniw==", + "dev": true, "license": "MIT", + "peer": true, "dependencies": { "acorn": "^8.15.0" } @@ -1184,7 +1104,9 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, "license": "BSD-2-Clause", + "peer": true, "bin": { "esparse": "bin/esparse.js", "esvalidate": "bin/esvalidate.js" @@ -1197,6 +1119,7 @@ "version": "1.8.1", "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.6" @@ -1206,22 +1129,86 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/evaluate-value/-/evaluate-value-2.0.0.tgz", "integrity": "sha512-VonfiuDJc0z4sOO7W0Pd130VLsXN6vmBWZlrog1mCb/o7o/Nl5Lr25+Kj/nkCCAhG+zqeeGjxhkK9oHpkgTHhQ==", + "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">= 8" } }, - "node_modules/eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", - "license": "MIT" + "node_modules/express": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/express/-/express-5.2.1.tgz", + "integrity": "sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw==", + "dev": true, + "license": "MIT", + "dependencies": { + "accepts": "^2.0.0", + "body-parser": "^2.2.1", + "content-disposition": "^1.0.0", + "content-type": "^1.0.5", + "cookie": "^0.7.1", + "cookie-signature": "^1.2.1", + "debug": "^4.4.0", + "depd": "^2.0.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "finalhandler": "^2.1.0", + "fresh": "^2.0.0", + "http-errors": "^2.0.0", + "merge-descriptors": "^2.0.0", + "mime-types": "^3.0.0", + "on-finished": "^2.4.1", + "once": "^1.4.0", + "parseurl": "^1.3.3", + "proxy-addr": "^2.0.7", + "qs": "^6.14.0", + "range-parser": "^1.2.1", + "router": "^2.2.0", + "send": "^1.1.0", + "serve-static": "^2.2.0", + "statuses": "^2.0.1", + "type-is": "^2.0.1", + "vary": "^1.1.2" + }, + "engines": { + "node": ">= 18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/express/node_modules/finalhandler": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.1.tgz", + "integrity": "sha512-S8KoZgRZN+a5rNwqTxlZZePjT/4cnm0ROV70LedRHZ0p8u9fRID0hJUZQpkKLzro8LfmC8sx23bY6tVNxv8pQA==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.4.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "on-finished": "^2.4.1", + "parseurl": "^1.3.3", + "statuses": "^2.0.1" + }, + "engines": { + "node": ">= 18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } }, "node_modules/extend-shallow": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, "license": "MIT", + "peer": true, "dependencies": { "is-extendable": "^0.1.0" }, @@ -1229,36 +1216,32 @@ "node": ">=0.10.0" } }, - "node_modules/fast-glob": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", - "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, "license": "MIT", - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.8" - }, + "peer": true, "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/fastq": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz", - "integrity": "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==", - "license": "ISC", - "dependencies": { - "reusify": "^1.0.4" + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } } }, "node_modules/filesize": { "version": "10.1.6", "resolved": "https://registry.npmjs.org/filesize/-/filesize-10.1.6.tgz", "integrity": "sha512-sJslQKU2uM33qH5nqewAwVB2QgR6w1aMNsYUp3aN5rMRyXEwJGmZvaWzeJFNTOXWlHQyBFCWrdj3fV/fsTOX8w==", + "dev": true, "license": "BSD-3-Clause", + "peer": true, "engines": { "node": ">= 10.4.0" } @@ -1267,7 +1250,9 @@ "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", + "peer": true, "dependencies": { "to-regex-range": "^5.0.1" }, @@ -1276,17 +1261,19 @@ } }, "node_modules/finalhandler": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.2.tgz", - "integrity": "sha512-aA4RyPcd3badbdABGDuTXCMTtOneUCAYH/gxoYRTZlIJdF0YPWuGqiAsIrhNnnqdXGswYk6dGujem4w80UJFhg==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", + "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", + "dev": true, "license": "MIT", + "peer": true, "dependencies": { "debug": "2.6.9", "encodeurl": "~2.0.0", "escape-html": "~1.0.3", - "on-finished": "~2.4.1", + "on-finished": "2.4.1", "parseurl": "~1.3.3", - "statuses": "~2.0.2", + "statuses": "2.0.1", "unpipe": "~1.0.0" }, "engines": { @@ -1297,7 +1284,9 @@ "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, "license": "MIT", + "peer": true, "dependencies": { "ms": "2.0.0" } @@ -1306,18 +1295,25 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "license": "MIT" + "dev": true, + "license": "MIT", + "peer": true }, - "node_modules/flatted": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.2.tgz", - "integrity": "sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==", - "license": "ISC" + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } }, "node_modules/fresh": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz", "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.8" @@ -1327,34 +1323,74 @@ "version": "2.3.3", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, "hasInstallScript": true, "license": "MIT", "optional": true, "os": [ "darwin" ], + "peer": true, "engines": { "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, - "node_modules/gitlog": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/gitlog/-/gitlog-4.0.8.tgz", - "integrity": "sha512-FcTLP7Rc0H1vWXD+J/aj5JS1uiCEBblcYXlcacRAT73N26OMYFFzrBXYmDozmWlV2K7zwK5PrH16/nuRNhqSlQ==", - "license": "BSD-3-Clause", + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "dev": true, + "license": "MIT", "dependencies": { - "debug": "^4.1.1", - "tslib": "^2.5.0" + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" }, "engines": { - "node": ">= 10.x" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" } }, "node_modules/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", + "peer": true, "dependencies": { "is-glob": "^4.0.1" }, @@ -1362,11 +1398,26 @@ "node": ">= 6" } }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/gray-matter": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.3.tgz", "integrity": "sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==", + "dev": true, "license": "MIT", + "peer": true, "dependencies": { "js-yaml": "^3.13.1", "kind-of": "^6.0.2", @@ -1381,16 +1432,20 @@ "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, "license": "MIT", + "peer": true, "dependencies": { "sprintf-js": "~1.0.2" } }, "node_modules/gray-matter/node_modules/js-yaml": { - "version": "3.15.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.15.0.tgz", - "integrity": "sha512-ttBQIIQPDeLjpPOohtUdXuXUVoA2uIB6fEH9HyJ7234s5mBJ5wTx20njxplLZQgLaOfpmPQA7X2t5AX6tIPbog==", + "version": "3.14.2", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz", + "integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==", + "dev": true, "license": "MIT", + "peer": true, "dependencies": { "argparse": "^1.0.7", "esprima": "^4.0.0" @@ -1399,32 +1454,37 @@ "js-yaml": "bin/js-yaml.js" } }, - "node_modules/html-entities": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.6.0.tgz", - "integrity": "sha512-kig+rMn/QOVRvr7c86gQ8lWXq+Hkv6CbAH1hLu+RG338StTpE8Z0b44SDVaqVu7HGKf27frdmUYEs9hTUX/cLQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/mdevils" - }, - { - "type": "patreon", - "url": "https://patreon.com/mdevils" - } - ], - "license": "MIT" + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "node_modules/html-escaper": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-3.0.3.tgz", - "integrity": "sha512-RuMffC89BOWQoY0WKGpIhn5gX3iI54O6nRA0yC124NYVtzjmFWBIiFd8M0x+ZdX0P9R4lADg1mgP8C7PxGOWuQ==", - "license": "MIT" + "node_modules/hasown": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.3.tgz", + "integrity": "sha512-ej4AhfhfL2Q2zpMmLo7U1Uv9+PyhIZpgQLGT1F9miIGmiCJIoCgSmczFdrc97mWT4kVY72KA+WnnhJ5pghSvSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } }, "node_modules/htmlparser2": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-7.2.0.tgz", "integrity": "sha512-H7MImA4MS6cw7nbyURtLPO1Tms7C5H602LRETv95z1MxO/7CP7rDVROehUYeYBUYEON94NXXDEPmZuq+hX4sog==", + "dev": true, "funding": [ "https://github.com/fb55/htmlparser2?sponsor=1", { @@ -1433,6 +1493,7 @@ } ], "license": "MIT", + "peer": true, "dependencies": { "domelementtype": "^2.0.1", "domhandler": "^4.2.2", @@ -1444,7 +1505,9 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz", "integrity": "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==", + "dev": true, "license": "BSD-2-Clause", + "peer": true, "engines": { "node": ">=0.12" }, @@ -1456,7 +1519,9 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/http-equiv-refresh/-/http-equiv-refresh-2.0.1.tgz", "integrity": "sha512-XJpDL/MLkV3dKwLzHwr2dY05dYNfBNlyPu4STQ8WvKCFdc6vC5tPXuq28of663+gHVg03C+16pHHs/+FmmDjcw==", + "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">= 6" } @@ -1465,6 +1530,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", + "dev": true, "license": "MIT", "dependencies": { "depd": "~2.0.0", @@ -1481,17 +1547,57 @@ "url": "https://opencollective.com/express" } }, + "node_modules/http-errors/node_modules/statuses": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/iconv-lite": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.2.tgz", + "integrity": "sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==", + "dev": true, + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true, "license": "ISC" }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, "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", + "peer": true, "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -1501,7 +1607,9 @@ "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", + "peer": true, "dependencies": { "is-alphabetical": "^2.0.0", "is-decimal": "^2.0.0" @@ -1515,7 +1623,9 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, "license": "MIT", + "peer": true, "dependencies": { "binary-extensions": "^2.0.0" }, @@ -1527,7 +1637,9 @@ "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", + "peer": true, "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -1537,7 +1649,9 @@ "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=0.10.0" } @@ -1546,7 +1660,9 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=0.10.0" } @@ -1555,7 +1671,9 @@ "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", + "peer": true, "dependencies": { "is-extglob": "^2.1.1" }, @@ -1567,50 +1685,53 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-json/-/is-json-2.0.1.tgz", "integrity": "sha512-6BEnpVn1rcf3ngfmViLM6vjUjGErbdrL4rwlv+u1NO1XO8kqT4YGL8+19Q+Z/bas8tY90BTWMk2+fW1g6hQjbA==", - "license": "ISC" + "dev": true, + "license": "ISC", + "peer": true }, "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", + "peer": true, "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==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } + "node_modules/is-promise": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", + "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==", + "dev": true, + "license": "MIT" }, "node_modules/iso-639-1": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/iso-639-1/-/iso-639-1-3.1.6.tgz", - "integrity": "sha512-ZFar/L4ngX7wZh2QX+Fiftmuf0igWJsrJtfizrovWifF1gAWkfmRa5Z1m0LQZbm0hKCHRDYhLRSLFrSqNe4EJA==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/iso-639-1/-/iso-639-1-3.1.5.tgz", + "integrity": "sha512-gXkz5+KN7HrG0Q5UGqSMO2qB9AsbEeyLP54kF1YrMsIxmu+g4BdB7rflReZTSTZGpfj8wywu6pfPBCylPIzGQA==", + "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=6.0" } }, + "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.3.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.3.0.tgz", - "integrity": "sha512-1td788aAnnZ5qs7V2QIRl1owjtYpbKt749Y3xauqQgwIIGF/xXWz1wMTEBx5O3LK3lXLVuqXPdPxj2BoFHaW9Q==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/puzrin" - }, - { - "type": "github", - "url": "https://github.com/sponsors/nodeca" - } - ], + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", + "dev": true, "license": "MIT", + "peer": true, "dependencies": { "argparse": "^2.0.1" }, @@ -1618,11 +1739,26 @@ "js-yaml": "bin/js-yaml.js" } }, + "node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "dev": true, + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/junk": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/junk/-/junk-3.1.0.tgz", "integrity": "sha512-pBxcB3LFc8QVgdggvZWyeys+hnrNWg4OcZIU/1X59k5jQdLBlCsYGRQaz234SqoRLTCgMH00fY0xRJH+F9METQ==", + "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=8" } @@ -1631,7 +1767,9 @@ "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", + "peer": true, "engines": { "node": ">=0.10.0" } @@ -1640,57 +1778,31 @@ "version": "4.1.5", "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", + "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=6" } }, - "node_modules/launder": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/launder/-/launder-1.7.1.tgz", - "integrity": "sha512-mU6WRz5EusL9ZZuiZ5SO4Y6C0P9PAUR9iwdb6bzj4KDihm28DiHFw+/yk9DBH4f+Pv1wuzQ4e2jV3oQ7mkIqvw==", - "license": "MIT", - "dependencies": { - "dayjs": "^1.11.7" - } - }, - "node_modules/linkedom": { - "version": "0.13.7", - "resolved": "https://registry.npmjs.org/linkedom/-/linkedom-0.13.7.tgz", - "integrity": "sha512-We9cyPHV/exsrC43KXtItjqSTxwrK9pLpOnG6TLzqXrmqwe/wqd3Gi6eAAU4YCqfTgy79R8g75hY2fS7723XUg==", - "license": "ISC", - "dependencies": { - "css-select": "^4.2.1", - "cssom": "^0.5.0", - "html-escaper": "^3.0.3", - "htmlparser2": "^7.2.0", - "uhyphen": "^0.1.0" - } - }, "node_modules/linkify-it": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.2.tgz", - "integrity": "sha512-ONTm2jCMAVZjgQa/Fy1kScXsuOoF5NPTsoFBdE1KVIZ2vAh/r9+Bqo+0jINCBYnavTPQZz38QzFTme79ENoN3Q==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/puzrin" - }, - { - "type": "github", - "url": "https://github.com/sponsors/markdown-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", + "peer": true, "dependencies": { "uc.micro": "^2.0.0" } }, "node_modules/liquidjs": { - "version": "10.27.1", - "resolved": "https://registry.npmjs.org/liquidjs/-/liquidjs-10.27.1.tgz", - "integrity": "sha512-ylE+1q2kSef1UxAyxqbyuWM3FRWS1v48JK1Y3CoW3bD6TSNXZh0+GsVnihujEpKyR+Jejx2aRAFfC3AHm9rElg==", + "version": "10.24.0", + "resolved": "https://registry.npmjs.org/liquidjs/-/liquidjs-10.24.0.tgz", + "integrity": "sha512-TAUNAdgwaAXjjcUFuYVJm9kOVH7zc0mTKxsG9t9Lu4qdWjB2BEblyVIYpjWcmJLMGgiYqnGNJjpNMHx0gp/46A==", + "dev": true, "license": "MIT", + "peer": true, "dependencies": { "commander": "^10.0.0" }, @@ -1706,55 +1818,43 @@ "url": "https://opencollective.com/liquidjs" } }, - "node_modules/liquidjs/node_modules/commander": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", - "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", - "license": "MIT", - "engines": { - "node": ">=14" - } - }, "node_modules/list-to-array": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/list-to-array/-/list-to-array-1.1.0.tgz", "integrity": "sha512-+dAZZ2mM+/m+vY9ezfoueVvrgnHIGi5FvgSymbIgJOFwiznWyA59mav95L+Mc6xPtL3s9gm5eNTlNtxJLbNM1g==", - "license": "MIT" + "dev": true, + "license": "MIT", + "peer": true }, - "node_modules/lodash": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.18.1.tgz", - "integrity": "sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==", + "node_modules/locale-en-us": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/locale-en-us/-/locale-en-us-0.0.2.tgz", + "integrity": "sha512-I02W/LK36C1IDloiFY4ZvK7kIs4C92vCHVEI01rIrJPzzlqcn1NnUxn5d1oiq0pe6JwuzpWwSCYnV0o1WAQP9g==", + "dev": true, "license": "MIT" }, "node_modules/luxon": { "version": "3.7.2", "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.7.2.tgz", "integrity": "sha512-vtEhXh/gNjI9Yg1u4jX/0YVPMvxzHuGgCm6tC5kZyb08yjGWGnqAjGJvcXbqQR2P3MyMEFnRbpcdFS6PBcLqew==", + "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=12" } }, "node_modules/markdown-it": { - "version": "14.3.0", - "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.3.0.tgz", - "integrity": "sha512-RCEsPjR+sr0x+AuYp601tKTkgFG4YEPLCzHST3cQ/fhlJkqAkz1L2/Qbp1j9qw5SBwQHFBoW8+hoN5xssOF0Tw==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/puzrin" - }, - { - "type": "github", - "url": "https://github.com/sponsors/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", + "peer": true, "dependencies": { "argparse": "^2.0.1", - "entities": "^4.5.0", - "linkify-it": "^5.0.2", + "entities": "^4.4.0", + "linkify-it": "^5.0.0", "mdurl": "^2.0.0", "punycode.js": "^2.3.1", "uc.micro": "^2.1.0" @@ -1767,7 +1867,9 @@ "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", + "peer": true, "engines": { "node": ">=0.12" }, @@ -1775,39 +1877,71 @@ "url": "https://github.com/fb55/entities?sponsor=1" } }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/maximatch": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/maximatch/-/maximatch-0.1.0.tgz", + "integrity": "sha512-9ORVtDUFk4u/NFfo0vG/ND/z7UQCVZBL539YW0+U1I7H1BkZwizcPx5foFv7LCPcBnm2U6RjFnQOsIvN4/Vm2A==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "array-differ": "^1.0.0", + "array-union": "^1.0.1", + "arrify": "^1.0.0", + "minimatch": "^3.0.0" + }, + "engines": { + "node": ">=0.10.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==", - "license": "MIT" + "dev": true, + "license": "MIT", + "peer": true }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "node_modules/media-typer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz", + "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==", + "dev": true, "license": "MIT", "engines": { - "node": ">= 8" + "node": ">= 0.8" } }, - "node_modules/micromatch": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", - "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "node_modules/merge-descriptors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-2.0.0.tgz", + "integrity": "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==", + "dev": true, "license": "MIT", - "dependencies": { - "braces": "^3.0.3", - "picomatch": "^2.3.1" - }, "engines": { - "node": ">=8.6" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/mime": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", + "dev": true, "license": "MIT", + "peer": true, "bin": { "mime": "cli.js" }, @@ -1819,32 +1953,32 @@ "version": "1.54.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/mime-types": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz", - "integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.1.tgz", + "integrity": "sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==", + "dev": true, "license": "MIT", "dependencies": { "mime-db": "^1.54.0" }, "engines": { - "node": ">=18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" + "node": ">= 0.6" } }, "node_modules/minimatch": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", - "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", + "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", + "peer": true, "dependencies": { "brace-expansion": "^1.1.7" }, @@ -1856,16 +1990,20 @@ "version": "1.2.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, "license": "MIT", + "peer": true, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/minipass": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz", - "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==", - "license": "BlueOak-1.0.0", + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, + "license": "ISC", + "peer": true, "engines": { "node": ">=16 || 14 >=14.17" } @@ -1874,63 +2012,42 @@ "version": "0.5.2", "resolved": "https://registry.npmjs.org/moo/-/moo-0.5.2.tgz", "integrity": "sha512-iSAJLHYKnX41mKcJKjqvnAN9sf0LMDTXDEvFv+ffuRR9a1MIuXLjMNL6EsnDHSkKLTWNqQQ5uo61P4EbU4NU+Q==", - "license": "BSD-3-Clause" + "dev": true, + "license": "BSD-3-Clause", + "peer": true }, "node_modules/morphdom": { - "version": "2.7.8", - "resolved": "https://registry.npmjs.org/morphdom/-/morphdom-2.7.8.tgz", - "integrity": "sha512-D/fR4xgGUyVRbdMGU6Nejea1RFzYxYtyurG4Fbv2Fi/daKlWKuXGLOdXtl+3eIwL110cI2hz1ZojGICjjFLgTg==", - "license": "MIT" + "version": "2.7.7", + "resolved": "https://registry.npmjs.org/morphdom/-/morphdom-2.7.7.tgz", + "integrity": "sha512-04GmsiBcalrSCNmzfo+UjU8tt3PhZJKzcOy+r1FlGA7/zri8wre3I1WkYN9PT3sIeIKfW9bpyElA+VzOg2E24g==", + "dev": true, + "license": "MIT", + "peer": true }, "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.15", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.15.tgz", - "integrity": "sha512-y7Wygv/7mEOvxTuEQDB8StXdMRBWf1kR/tlhAzBRUFkB2jfcLOAxO/SHmOO2zgz1pVgK29/kyupn059/bCHdjA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], + "node_modules/negotiator": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", + "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", + "dev": true, "license": "MIT", - "bin": { - "nanoid": "bin/nanoid.cjs" - }, "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/node-fetch": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", - "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", - "license": "MIT", - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } + "node": ">= 0.6" } }, "node_modules/node-retrieve-globals": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/node-retrieve-globals/-/node-retrieve-globals-6.0.1.tgz", "integrity": "sha512-j0DeFuZ/Wg3VlklfbxUgZF/mdHMTEiEipBb3q0SpMMbHaV3AVfoUQF8UGxh1s/yjqO0TgRZd4Pi/x2yRqoQ4Eg==", + "dev": true, "license": "MIT", + "peer": true, "dependencies": { "acorn": "^8.14.1", "acorn-walk": "^8.3.4", @@ -1941,28 +2058,20 @@ "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", + "peer": true, "engines": { "node": ">=0.10.0" } }, - "node_modules/nth-check": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", - "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", - "license": "BSD-2-Clause", - "dependencies": { - "boolbase": "^1.0.0" - }, - "funding": { - "url": "https://github.com/fb55/nth-check?sponsor=1" - } - }, "node_modules/nunjucks": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/nunjucks/-/nunjucks-3.2.4.tgz", "integrity": "sha512-26XRV6BhkgK0VOxfbU5cQI+ICFUtMLixv1noZn1tGU38kQH5A5nmmbk/O45xdyBhD1esk47nKrY0mvQpZIhRjQ==", + "dev": true, "license": "BSD-2-Clause", + "peer": true, "dependencies": { "a-sync-waterfall": "^1.0.0", "asap": "^2.0.3", @@ -1987,15 +2096,31 @@ "version": "5.1.0", "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", + "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">= 6" } }, + "node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/on-finished": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dev": true, "license": "MIT", "dependencies": { "ee-first": "1.1.1" @@ -2004,123 +2129,61 @@ "node": ">= 0.8" } }, - "node_modules/p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/p-queue": { - "version": "6.6.2", - "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-6.6.2.tgz", - "integrity": "sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==", - "license": "MIT", + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "license": "ISC", "dependencies": { - "eventemitter3": "^4.0.4", - "p-timeout": "^3.2.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-timeout": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz", - "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==", - "license": "MIT", - "dependencies": { - "p-finally": "^1.0.0" - }, - "engines": { - "node": ">=8" + "wrappy": "1" } }, "node_modules/parse-srcset": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/parse-srcset/-/parse-srcset-1.0.2.tgz", "integrity": "sha512-/2qh0lav6CmI15FzA3i/2Bzk2zCgQhGMkvhOhKNcBVQ1ldgpbfiNTVslmooUmWJcADi1f1kIeynbDRVzNlfR6Q==", - "license": "MIT" - }, - "node_modules/parse5": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz", - "integrity": "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==", + "dev": true, "license": "MIT", - "dependencies": { - "entities": "^6.0.0" - }, - "funding": { - "url": "https://github.com/inikulin/parse5?sponsor=1" - } - }, - "node_modules/parse5-htmlparser2-tree-adapter": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.1.0.tgz", - "integrity": "sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g==", - "license": "MIT", - "dependencies": { - "domhandler": "^5.0.3", - "parse5": "^7.0.0" - }, - "funding": { - "url": "https://github.com/inikulin/parse5?sponsor=1" - } - }, - "node_modules/parse5-htmlparser2-tree-adapter/node_modules/domhandler": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", - "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", - "license": "BSD-2-Clause", - "dependencies": { - "domelementtype": "^2.3.0" - }, - "engines": { - "node": ">= 4" - }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" - } - }, - "node_modules/parse5/node_modules/entities": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz", - "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } + "peer": true }, "node_modules/parseurl": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.8" } }, + "node_modules/path-to-regexp": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.4.2.tgz", + "integrity": "sha512-qRcuIdP69NPm4qbACK+aDogI5CBDMi1jKe0ry5rSQJz8JVLsC7jV8XpiJjGRLLol3N+R5ihGYcrPLTno6pAdBA==", + "dev": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, "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.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", - "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, "license": "MIT", + "peer": true, "engines": { - "node": ">=8.6" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/jonschlinkert" @@ -2130,57 +2193,20 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz", "integrity": "sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==", + "dev": true, "license": "MIT", + "peer": true, "dependencies": { "semver-compare": "^1.0.0" } }, - "node_modules/postcss": { - "version": "8.5.16", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.16.tgz", - "integrity": "sha512-vuwillviilfKZsg0VGj5R/YwwcHx4SLsIOI/7K6mQkWx+l5cUHTjj5g0AasTBcyXsbfTgrwsUNmVUb5xVwyPwg==", - "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.12", - "picocolors": "^1.1.1", - "source-map-js": "^1.2.1" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "node_modules/postcss-selector-parser": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.4.tgz", - "integrity": "sha512-HeP7D2wyhkR+XaK6v4W8oRF62Dsz4flyuczALJp61GckGm42u1saSSJ/0auvcBqxs3jMRFEcPK34At/0JBKdOg==", - "license": "MIT", - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/posthtml": { "version": "0.16.7", "resolved": "https://registry.npmjs.org/posthtml/-/posthtml-0.16.7.tgz", "integrity": "sha512-7Hc+IvlQ7hlaIfQFZnxlRl0jnpWq2qwibORBhQYIb0QbNtuicc5ZxvKkVT71HJ4Py1wSZ/3VR1r8LfkCtoCzhw==", + "dev": true, "license": "MIT", + "peer": true, "dependencies": { "posthtml-parser": "^0.11.0", "posthtml-render": "^3.0.0" @@ -2193,7 +2219,9 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/posthtml-match-helper/-/posthtml-match-helper-2.0.3.tgz", "integrity": "sha512-p9oJgTdMF2dyd7WE54QI1LvpBIkNkbSiiECKezNnDVYhGhD1AaOnAkw0Uh0y5TW+OHO8iBdSqnd8Wkpb6iUqmw==", + "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=18" }, @@ -2205,7 +2233,9 @@ "version": "0.11.0", "resolved": "https://registry.npmjs.org/posthtml-parser/-/posthtml-parser-0.11.0.tgz", "integrity": "sha512-QecJtfLekJbWVo/dMAA+OSwY79wpRmbqS5TeXvXSX+f0c6pW4/SE6inzZ2qkU7oAMCPqIDkZDvd/bQsSFUnKyw==", + "dev": true, "license": "MIT", + "peer": true, "dependencies": { "htmlparser2": "^7.1.1" }, @@ -2217,7 +2247,9 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/posthtml-render/-/posthtml-render-3.0.0.tgz", "integrity": "sha512-z+16RoxK3fUPgwaIgH9NGnK1HKY9XIDpydky5eQGgAFVXTCSezalv9U2jQuNV+Z9qV1fDWNzldcw4eK0SSbqKA==", + "dev": true, "license": "MIT", + "peer": true, "dependencies": { "is-json": "^2.0.1" }, @@ -2225,83 +2257,88 @@ "node": ">=12" } }, - "node_modules/prismjs": { - "version": "1.30.0", - "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.30.0.tgz", - "integrity": "sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==", + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dev": true, "license": "MIT", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, "engines": { - "node": ">=6" + "node": ">= 0.10" } }, "node_modules/prr": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", - "license": "MIT" + "dev": true, + "license": "MIT", + "peer": true }, "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", + "peer": true, "engines": { "node": ">=6" } }, - "node_modules/purgecss": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/purgecss/-/purgecss-8.0.0.tgz", - "integrity": "sha512-QFJyps9y5oHeXnNA3Ql1EaAqWBivNwQn19Pw1lt9RxfB+4e+bIyqCyuombk79D6Fxe+lPXggVfI1WtRGEBwgbQ==", - "license": "MIT", + "node_modules/qs": { + "version": "6.15.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.15.1.tgz", + "integrity": "sha512-6YHEFRL9mfgcAvql/XhwTvf5jKcOiiupt2FiJxHkiX1z4j7WL8J/jRHYLluORvc1XxB5rV20KoeK00gVJamspg==", + "dev": true, + "license": "BSD-3-Clause", "dependencies": { - "commander": "^12.1.0", - "fast-glob": "^3.3.2", - "postcss": "^8.4.47", - "postcss-selector-parser": "^7.0.0" + "side-channel": "^1.1.0" }, - "bin": { - "purgecss": "bin/purgecss.js" + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "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==", - "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/range-parser": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.3.0.tgz", - "integrity": "sha512-hek2mFQpPuI4E1BBKrSto+BU3e3x4xuarsbiwr3+lf7p44juvFMV0XFWQAP3xUyqXA4RrXLIoaSUGbSt056ZMw==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.2.tgz", + "integrity": "sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA==", + "dev": true, + "license": "MIT", + "dependencies": { + "bytes": "~3.1.2", + "http-errors": "~2.0.1", + "iconv-lite": "~0.7.0", + "unpipe": "~1.0.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" + "engines": { + "node": ">= 0.10" } }, "node_modules/readdirp": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, "license": "MIT", + "peer": true, "dependencies": { "picomatch": "^2.2.1" }, @@ -2309,145 +2346,61 @@ "node": ">=8.10.0" } }, - "node_modules/reusify": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", - "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", + "node_modules/readdirp/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", + "peer": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/readline-sync": { + "version": "1.4.10", + "resolved": "https://registry.npmjs.org/readline-sync/-/readline-sync-1.4.10.tgz", + "integrity": "sha512-gNva8/6UAe8QYepIQH/jQ2qn91Qj0B9sYjMBBs3QOB8F2CXcKgLxQaJRP76sWVRQt+QU+8fAkCbCvjjMFu7Ycw==", + "dev": true, "license": "MIT", "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" + "node": ">= 0.8.0" } }, - "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==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], + "node_modules/router": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/router/-/router-2.2.0.tgz", + "integrity": "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==", + "dev": true, "license": "MIT", "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "node_modules/sanitize-html": { - "version": "2.17.5", - "resolved": "https://registry.npmjs.org/sanitize-html/-/sanitize-html-2.17.5.tgz", - "integrity": "sha512-ZmU1joGRrvoyctKIiuwUxqR6moLoU2Wk+2bMccN6f7UwhAmwYDvWziqPxRDDN2Qip62NqnIrVrT9akbL6Wretg==", - "license": "MIT", - "dependencies": { - "deepmerge": "^4.2.2", - "escape-string-regexp": "^4.0.0", - "htmlparser2": "^10.1.0", - "is-plain-object": "^5.0.0", - "launder": "^1.7.1", - "parse-srcset": "^1.0.2", - "postcss": "^8.3.11" - } - }, - "node_modules/sanitize-html/node_modules/dom-serializer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", - "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", - "license": "MIT", - "dependencies": { - "domelementtype": "^2.3.0", - "domhandler": "^5.0.2", - "entities": "^4.2.0" - }, - "funding": { - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" - } - }, - "node_modules/sanitize-html/node_modules/dom-serializer/node_modules/entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/sanitize-html/node_modules/domhandler": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", - "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", - "license": "BSD-2-Clause", - "dependencies": { - "domelementtype": "^2.3.0" + "debug": "^4.4.0", + "depd": "^2.0.0", + "is-promise": "^4.0.0", + "parseurl": "^1.3.3", + "path-to-regexp": "^8.0.0" }, "engines": { - "node": ">= 4" - }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" + "node": ">= 18" } }, - "node_modules/sanitize-html/node_modules/domutils": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", - "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", - "license": "BSD-2-Clause", - "dependencies": { - "dom-serializer": "^2.0.0", - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3" - }, - "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" - } - }, - "node_modules/sanitize-html/node_modules/entities": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/entities/-/entities-7.0.1.tgz", - "integrity": "sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/sanitize-html/node_modules/htmlparser2": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-10.1.0.tgz", - "integrity": "sha512-VTZkM9GWRAtEpveh7MSF6SjjrpNVNNVJfFup7xTY3UpFtm67foy9HDVXneLtFVt4pMz5kZtgNcvCniNFb1hlEQ==", - "funding": [ - "https://github.com/fb55/htmlparser2?sponsor=1", - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "license": "MIT", - "dependencies": { - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3", - "domutils": "^3.2.2", - "entities": "^7.0.1" - } + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true, + "license": "MIT" }, "node_modules/section-matter": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz", "integrity": "sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==", + "dev": true, "license": "MIT", + "peer": true, "dependencies": { "extend-shallow": "^2.0.1", "kind-of": "^6.0.0" @@ -2457,10 +2410,12 @@ } }, "node_modules/semver": { - "version": "7.8.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.5.tgz", - "integrity": "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==", + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "dev": true, "license": "ISC", + "peer": true, "bin": { "semver": "bin/semver.js" }, @@ -2472,25 +2427,44 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", "integrity": "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==", - "license": "MIT" + "dev": true, + "license": "MIT", + "peer": true }, "node_modules/send": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/send/-/send-1.2.1.tgz", - "integrity": "sha512-1gnZf7DFcoIcajTjTwjwuDjzuz4PPcY2StKPlsGAQ1+YH20IRVrBaXSWmdjowTJ6u8Rc01PoYOGHXfP1mYcZNQ==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/send/-/send-1.2.0.tgz", + "integrity": "sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==", + "dev": true, "license": "MIT", "dependencies": { - "debug": "^4.4.3", + "debug": "^4.3.5", "encodeurl": "^2.0.0", "escape-html": "^1.0.3", "etag": "^1.8.1", "fresh": "^2.0.0", - "http-errors": "^2.0.1", - "mime-types": "^3.0.2", + "http-errors": "^2.0.0", + "mime-types": "^3.0.1", "ms": "^2.1.3", "on-finished": "^2.4.1", "range-parser": "^1.2.1", - "statuses": "^2.0.2" + "statuses": "^2.0.1" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/serve-static": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.2.1.tgz", + "integrity": "sha512-xRXBn0pPqQTVQiC8wyQrKs2MOlX24zQ0POGaj0kultvoOCstBQM5yvOhAVSUwOMjQtTvsPWoNCHfPGwaaQJhTw==", + "dev": true, + "license": "MIT", + "dependencies": { + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "parseurl": "^1.3.3", + "send": "^1.2.0" }, "engines": { "node": ">= 18" @@ -2504,46 +2478,122 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true, "license": "ISC" }, + "node_modules/side-channel": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.1.tgz", + "integrity": "sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=8" } }, "node_modules/slugify": { - "version": "1.6.9", - "resolved": "https://registry.npmjs.org/slugify/-/slugify-1.6.9.tgz", - "integrity": "sha512-vZ7rfeehZui7wQs438JXBckYLkIIdfHOXsaVEUMyS5fHo1483l1bMdo0EDSWYclY0yZKFOipDy4KHuKs6ssvdg==", + "version": "1.6.6", + "resolved": "https://registry.npmjs.org/slugify/-/slugify-1.6.6.tgz", + "integrity": "sha512-h+z7HKHYXj6wJU+AnS/+IH8Uh9fdcX1Lrhg1/VMdf9PwoBQXFcXiAdsy2tSK0P6gKwJLXp02r90ahUCqHk9rrw==", + "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=8.0.0" } }, - "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==", - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "license": "BSD-3-Clause" + "dev": true, + "license": "BSD-3-Clause", + "peer": true }, "node_modules/ssri": { "version": "11.0.0", "resolved": "https://registry.npmjs.org/ssri/-/ssri-11.0.0.tgz", "integrity": "sha512-aZpUoMN/Jj2MqA4vMCeiKGnc/8SuSyHbGSBdgFbZxP8OJGF/lFkIuElzPxsN0q8TQQ+prw3P4EDfB3TBHHgfXw==", + "dev": true, "license": "ISC", + "peer": true, "dependencies": { "minipass": "^7.0.3" }, @@ -2552,9 +2602,10 @@ } }, "node_modules/statuses": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", - "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.8" @@ -2564,19 +2615,30 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz", "integrity": "sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==", + "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=0.10.0" } }, + "node_modules/style-vancouver": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/style-vancouver/-/style-vancouver-0.0.2.tgz", + "integrity": "sha512-6DYqSJSRPdPYPZB64LAKjhX6IBpbI8G2QJg0qsgGE6vLMvWG/8tTpuzdIsZPDMPBMnF2jt/1WBqbDZR4VaA2KQ==", + "dev": true, + "license": "MIT" + }, "node_modules/tinyglobby": { - "version": "0.2.17", - "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.17.tgz", - "integrity": "sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==", + "version": "0.2.15", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", + "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", + "dev": true, "license": "MIT", + "peer": true, "dependencies": { "fdir": "^6.5.0", - "picomatch": "^4.0.4" + "picomatch": "^4.0.3" }, "engines": { "node": ">=12.0.0" @@ -2585,40 +2647,13 @@ "url": "https://github.com/sponsors/SuperchupuDev" } }, - "node_modules/tinyglobby/node_modules/fdir": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", - "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", - "license": "MIT", - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "picomatch": "^3 || ^4" - }, - "peerDependenciesMeta": { - "picomatch": { - "optional": true - } - } - }, - "node_modules/tinyglobby/node_modules/picomatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.5.tgz", - "integrity": "sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, "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", + "peer": true, "dependencies": { "is-number": "^7.0.0" }, @@ -2630,48 +2665,40 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "dev": true, "license": "MIT", "engines": { "node": ">=0.6" } }, - "node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "license": "MIT" - }, - "node_modules/truncate-html": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/truncate-html/-/truncate-html-1.2.2.tgz", - "integrity": "sha512-0pogasqkxhCj8PWqxLPTYqtC66ruVXzOS6uNcOCI7yxS1Bf2HMqeXUty5mlbv0UjjlCuExBpPN4vEAFV6imsug==", + "node_modules/type-is": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.0.1.tgz", + "integrity": "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==", + "dev": true, "license": "MIT", "dependencies": { - "cheerio": "1.0.0-rc.12" + "content-type": "^1.0.5", + "media-typer": "^1.1.0", + "mime-types": "^3.0.0" + }, + "engines": { + "node": ">= 0.6" } }, - "node_modules/tslib": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "license": "0BSD" - }, "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==", - "license": "MIT" - }, - "node_modules/uhyphen": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/uhyphen/-/uhyphen-0.1.0.tgz", - "integrity": "sha512-o0QVGuFg24FK765Qdd5kk0zU/U4dEsCtN/GSiwNI9i8xsSVtjIAOdTaVhLwZ1nrbWxFVMxNDDl+9fednsOMsBw==", - "license": "ISC" + "dev": true, + "license": "MIT", + "peer": true }, "node_modules/unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.8" @@ -2681,35 +2708,34 @@ "version": "10.1.0", "resolved": "https://registry.npmjs.org/urlpattern-polyfill/-/urlpattern-polyfill-10.1.0.tgz", "integrity": "sha512-IGjKp/o0NL3Bso1PymYURCJxMPNAf/ILOpendP9f5B6e1rTJgdgiOvgfoT8VxCAdY+Wisb9uhGaJJf3yZ2V9nw==", - "license": "MIT" - }, - "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==", - "license": "MIT" - }, - "node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", - "license": "BSD-2-Clause" - }, - "node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dev": true, "license": "MIT", - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" + "peer": true + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" } }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true, + "license": "ISC" + }, "node_modules/ws": { - "version": "8.21.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.21.0.tgz", - "integrity": "sha512-Vsp28b7DRcimFQvrqu2Wek3z1iYxDCWqHYB8Qsnk/S4RfaCQzPGPyBNuVjJV3cd6UiKtUtp6sNM77gWvzcCH+g==", + "version": "8.18.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz", + "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==", + "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=10.0.0" }, @@ -2725,6 +2751,16 @@ "optional": true } } + }, + "node_modules/xregexp": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-5.1.2.tgz", + "integrity": "sha512-6hGgEMCGhqCTFEJbqmWrNIPqfpdirdGWkqshu7fFZddmTSfgv5Sn9D2SaKloR79s5VUiUlpwzg3CM3G6D3VIlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/runtime-corejs3": "^7.26.9" + } } } } diff --git a/package.json b/package.json index 5d966b9..f7e92bf 100644 --- a/package.json +++ b/package.json @@ -6,25 +6,10 @@ "scripts": { "build": "npx @11ty/eleventy", "serve": "npx @11ty/eleventy --serve", - "production": "IS_PRODUCTION=true npx @11ty/eleventy --serve", "test": "echo \"Error: no test specified\" && exit 1" }, "keywords": [], "author": "", "license": "ISC", - "type": "module", - "dependencies": { - "@11ty/eleventy-plugin-syntaxhighlight": "^5.0.2", - "@inframanufaktur/eleventy-plugin-clean-urls": "^1.0.2", - "@sardine/eleventy-plugin-external-links": "^1.4.0", - "eleventy-plugin-git-commit-date": "^1.0.2", - "eleventy-plugin-github-repos": "^0.1.8", - "eleventy-plugin-inline-link-favicon": "^1.1.0", - "eleventy-plugin-mastoarchive": "^0.2.0", - "eleventy-plugin-poison": "^1.0.1", - "eleventy-plugin-purgecss": "^0.6.0", - "eleventy-plugin-reading-time": "^0.0.1", - "eleventy-plugin-recent-changes": "^1.0.1", - "eleventy-plugin-webmentions": "^2.1.0" - } + "type": "commonjs" } diff --git a/site/posts/android-developer-verification.html b/posts/android-developer-verification.html similarity index 100% rename from site/posts/android-developer-verification.html rename to posts/android-developer-verification.html diff --git a/site/posts/instalando-fl-studio-no-linux.html b/posts/instalando-fl-studio-no-linux.html similarity index 100% rename from site/posts/instalando-fl-studio-no-linux.html rename to posts/instalando-fl-studio-no-linux.html diff --git a/site/posts/installing-fl-studio-on-linux.html b/posts/installing-fl-studio-on-linux.html similarity index 100% rename from site/posts/installing-fl-studio-on-linux.html rename to posts/installing-fl-studio-on-linux.html diff --git a/site/posts/posts.11tydata.cjs b/posts/posts.11tydata.js similarity index 91% rename from site/posts/posts.11tydata.cjs rename to posts/posts.11tydata.js index 6dd7a73..9b619b7 100644 --- a/site/posts/posts.11tydata.cjs +++ b/posts/posts.11tydata.js @@ -1,6 +1,5 @@ let data = { layout: "_includes/post.njk", - headerLink: "blog", eleventyComputed: { lastModified: function(data) { const fs = require('fs'); diff --git a/site/posts/verificacao-de-desenvolvedor-no-android.html b/posts/verificacao-de-desenvolvedor-no-android.html similarity index 100% rename from site/posts/verificacao-de-desenvolvedor-no-android.html rename to posts/verificacao-de-desenvolvedor-no-android.html diff --git a/purgecss.config.cjs b/purgecss.config.cjs deleted file mode 100644 index 93b780c..0000000 --- a/purgecss.config.cjs +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - // Content files referencing CSS classes - content: ["./docs/**/*.html"], - - // CSS files to be purged in-place - css: ["./docs/**/*.css"], -}; \ No newline at end of file diff --git a/site/school/api-rodrigoribeiro.html b/school/api-rodrigoribeiro.html similarity index 100% rename from site/school/api-rodrigoribeiro.html rename to school/api-rodrigoribeiro.html diff --git a/site/school/guia-ifc-novatos.html b/school/guia-ifc-novatos.html similarity index 100% rename from site/school/guia-ifc-novatos.html rename to school/guia-ifc-novatos.html diff --git a/site/school/school.json b/school/school.json similarity index 100% rename from site/school/school.json rename to school/school.json diff --git a/school/telnet-en.html b/school/telnet-en.html new file mode 100644 index 0000000..2bf225b --- /dev/null +++ b/school/telnet-en.html @@ -0,0 +1,61 @@ +--- +postTitle: "Telnet" +layout: post.njk +date: 2025-08-27 +background: redes.jpg +authors: Adrian Victor & Arthur Borges +langKey: en +--- + +

      What the protocol is, its function and history

      +

      Telnet (from TELecommunication NETwork) is a TCP/IP stack network protocol that allows remote text-mode communication between computers. Its main function is to provide an interactive session where a user can access and control another device as if they were on a local terminal.

      +

      Created in 1969, Telnet was one of the first protocols developed for ARPANET (the network that gave rise to the Internet) and became fundamental for system and device administration in the 1970s, 1980s, and 1990s. Over time, it fell out of use due to lack of security, being replaced by more modern alternatives such as SSH (Secure Shell).

      +

      Implementation

      +

      Default port: 23/TCP.
      +Works at the application layer of the OSI model.
      +Format: Based on ASCII character exchange, without encryption.
      +RFC: Defined by RFC 854 (1983).
      +Architecture: Follows the client-server model

      +

      How it works

      +

      In practice, Telnet works relatively simply. The process starts when the client establishes a TCP connection to the server via port 23. Then a remote terminal session is initiated and the user must provide credentials such as username and password. After authentication, commands typed on the client are transmitted in plain text to the server, which processes them and returns the corresponding output. The session remains active as long as the user wants, normally ending with commands like exit or logout

      +

      Use cases

      +

      For many years, Telnet was widely used for remote access to Unix, Linux, and Windows servers, especially older versions of these systems. It also became common in network device administration, such as routers and switches, until SSH became the standard. Additionally, mainframes and some legacy devices still use Telnet today. Another practical application is in educational environments and network diagnostics, where it is used to test open ports and check service connectivity, such as running “telnet server.com 80” to see if a web server port is operational.

      +

      Encryption: the inherent problem

      +

      Telnet has no native encryption, which makes it extremely vulnerable. To solve this problem, more secure alternatives were developed. The main one is SSH (Secure Shell), created in the 1990s as a direct Telnet replacement. SSH offers the same functionality while ensuring data protection through strong authentication and full traffic encryption. Another, less common approach is using SSL/TLS to tunnel Telnet sessions, but in practice this is rarely used.

      +

      Advantages and disadvantages

      +

      Telnet’s advantages include simplicity, low resource usage, and compatibility with various older systems, which facilitated its adoption over the years. However, these benefits are outweighed by its disadvantages. The main one is the lack of encryption, exposing all transmitted data—including passwords—in plain text. This makes it vulnerable to attacks such as sniffing, which captures network packets, and hijacking, which takes over active sessions. For this reason, Telnet is considered obsolete and unsafe for use on open networks like the Internet.

      +

      Relation to other protocols

      +

      Telnet is part of the TCP/IP protocol family and uses TCP to ensure reliable communication. Like other protocols in this stack, such as HTTP, FTP, and SMTP, it relies on stable connections to perform its functions, but its distinguishing feature has always been terminal-mode interactivity. Due to security flaws, it was replaced by its natural successor, SSH, which retained Telnet’s conceptual base but added robust protection layers.

      +

      Functional example

      +

      Below is a Telnet connection simulator written in JavaScript.

      +
      +

      Loading...

      +
      +
      +
      +
      +
      +
      +
      +
      +
      +

      Server

      + + +
      +
      +

      Client

      + +
      + + +
      +
      +
      \ No newline at end of file diff --git a/site/school/telnet-pt.html b/school/telnet-pt.html similarity index 100% rename from site/school/telnet-pt.html rename to school/telnet-pt.html diff --git a/site/site.webmanifest.njk b/site.webmanifest.njk similarity index 100% rename from site/site.webmanifest.njk rename to site.webmanifest.njk diff --git a/site/_includes/header.njk b/site/_includes/header.njk deleted file mode 100644 index cfb261a..0000000 --- a/site/_includes/header.njk +++ /dev/null @@ -1,27 +0,0 @@ -
      -
      -
      -

      {{ title or "Adrian Victor" }}

      -

      {{ subtitle or "Fanasy is not a crime, find your castle in the sky." }}

      -
      -
      -
      - - -
      -
      - {# test #} -
      - \ No newline at end of file diff --git a/site/_includes/iframe.njk b/site/_includes/iframe.njk deleted file mode 100644 index 9bf32a4..0000000 --- a/site/_includes/iframe.njk +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - Adrian Victor{% if pageTitle or postTitle %} - {{ pageTitle or postTitle }}{% endif %} - - - - - - - - - - - - - - - - - {{ content | safe }} - - \ No newline at end of file diff --git a/site/_includes/text.njk b/site/_includes/text.njk deleted file mode 100644 index 212390e..0000000 --- a/site/_includes/text.njk +++ /dev/null @@ -1,6 +0,0 @@ ---- -layout: base.njk ---- -
      - {{ content | safe }} -
      \ No newline at end of file diff --git a/site/_includes/widgets/chattable.html b/site/_includes/widgets/chattable.html deleted file mode 100644 index c778445..0000000 --- a/site/_includes/widgets/chattable.html +++ /dev/null @@ -1,7 +0,0 @@ - - - \ No newline at end of file diff --git a/site/_includes/widgets/droidring.html b/site/_includes/widgets/droidring.html deleted file mode 100644 index b97f080..0000000 --- a/site/_includes/widgets/droidring.html +++ /dev/null @@ -1,44 +0,0 @@ -
      -
      - Droidring
      - -
      - - - -
      - -
      -
      \ No newline at end of file diff --git a/site/_includes/widgets/internetometer-aside.html b/site/_includes/widgets/internetometer-aside.html deleted file mode 100644 index a11c75e..0000000 --- a/site/_includes/widgets/internetometer-aside.html +++ /dev/null @@ -1,7 +0,0 @@ -
      -
      -

      {{ i18n[langKey].liked | smartTitle }}?

      -
      -
      - Internetometer -
      \ No newline at end of file diff --git a/site/iframe/guestbook.njk b/site/iframe/guestbook.njk deleted file mode 100644 index bc79278..0000000 --- a/site/iframe/guestbook.njk +++ /dev/null @@ -1,28 +0,0 @@ ---- -pagination: - data: i18n - size: 1 - alias: langKey -permalink: "/{{ langKey }}/iframe/guestbook/index.html" -layout: iframe.njk -title: Adrian Victor:Guestbook -headerLink: social ---- - -
      -

      {{ i18n[langKey].guestbookWarning | safe }}

      - -
      -
      \ No newline at end of file diff --git a/site/index.njk b/site/index.njk deleted file mode 100644 index b5f41d1..0000000 --- a/site/index.njk +++ /dev/null @@ -1,314 +0,0 @@ ---- -pagination: - data: i18n - size: 1 - alias: langKey -permalink: "/{{ langKey }}/index.html" -layout: base.njk -headerLink: home ---- -{% from "macros.njk" import i88x31 with context %} -{% from "macros.njk" import videoCard with context %} -{% from "macros.njk" import projectCard %} -{% from "macros.njk" import webring %} - - -
      - - - - -
      - - - -
      - -
      -

      {{ i18n[langKey].kaoMain | safe }}

      -

      {{ i18n[langKey].kaoLink | safe }} →

      -
      - -
      -

      {{ i18n[langKey].welcome | smartTitle }}

      -

      {{ i18n[langKey].homeWelcomeParagraph | safe }}

      - -
      - {{ i88x31("tenkuma.gif") }} - {{ i88x31("anybrowser6.gif") }} - {{ i88x31("ai.gif") }} - {{ i88x31("WEBP.gif") }} - {{ i88x31("rainbowrain.gif") }} - {{ i88x31("blasphemy.gif") }} - {{ i88x31("wrongos.gif") }} - {{ i88x31("best_viewed_with_open_eyes.gif") }} - {{ i88x31("gnu-linux.gif") }} -
      -
      - -
      - -

      {{ i18n[langKey].aboutMe | smartTitle }}

      -

      {{ i18n[langKey].homeAboutMeParagraph | safe }}

      -

      {{ i18n[langKey].homeAboutMeParagraphTwo | safe }}

      - -

      {{ i18n[langKey].socialsAndContact | smartTitle }}

      -

      {{ i18n[langKey].homeSocialsAndContactParagraph | safe }}

      -

      {{ i18n[langKey].homeSocialsAndContactParagraphTwo | safe }}

      -
      - - -
      -
      -

      {{ i18n[langKey].myMusic | smartTitle }}

      -

      {{ i18n[langKey].homeMyMusicParagraph | safe }}

      -

      {{ i18n[langKey].homeMyMusicParagraphTwo | safe }}

      - -
      - {{ i88x31("rave.gif") }} - {{ i88x31("happymix.gif") }} -
      -
      - -
      - -
      - {{ - videoCard( - i18n["global"].homeSongLink, - i18n["global"].homeSongTitle, - i18n["global"].homeSongImage, - i18n["global"].homeSongWebsite, - i18n["global"].homeSongDuration, - i18n["global"].homeSongAccent, - i18n[langKey].velkommenArtAlt - ) - }} -
      -
      - - -
      -
      -

      {{ i18n[langKey].myVideos | smartTitle }}

      -

      {{ i18n[langKey].homeMyVideoParagraph | safe }}

      -
      - -
      - - {{ - videoCard( - i18n["global"].homeVideoLink, - i18n[langKey].homeVideoTitle, - i18n["global"].homeVideoImage, - i18n["global"].homeVideoWebsite, - i18n["global"].homeVideoDuration - ) - }} -
      - - -
      -
      -

      {{ i18n[langKey].mySoftware | smartTitle }}

      -

      {{ i18n[langKey].homeMySoftwareParagraph | safe }}

      -
      - -
      - -
      - {{ - projectCard( - "Jamfish", - i18n[langKey].jamfishProjectDesctiption, - "https://github.com/adrianvic/jamfish", - '/static/images/jamfish-wide.png', - "Jamfish" - ) - }} - - {{ - projectCard( - "ItemEconomy", - i18n[langKey].itemeconomyProjectDesctiption, - "https://github.com/adrianvic/ItemEconomy", - '/static/images/itemeconomy2-wide.png', - "ItemEconomy" - ) - }} - - {{ - projectCard( - "Eye of Nemesis", - i18n[langKey].eyeofnemesisProjectDesctiption, - "https://github.com/adrianvic/NemesisEye", - '/static/images/eye_of_nemesis.png', - "Eye of Nemesis" - ) - }} - - {{ - projectCard( - "PestoWiki", - i18n[langKey].pestoProjectDesctiption, - "https://github.com/Margarina-not-butter/PestoWiki", - '/static/images/pestowikifullwhite.png', - "PestoWiki" - ) - }} -
      -
      -
      - - - \ No newline at end of file diff --git a/site/misc/about/index.njk b/site/misc/about/index.njk deleted file mode 100644 index 204edbc..0000000 --- a/site/misc/about/index.njk +++ /dev/null @@ -1,56 +0,0 @@ ---- -layout: base.njk -pagination: - data: languages - size: 1 - alias: langKey -tags: misc -backgroundOpacity: "0.28" -background: "bear3.jpg" ---- -
      -

      {{ t.pageTitle }}

      -

      {{ t.introText1 }} {{ t.introRepoLinkText }} {{ t.introText2 }} {{ t.introLicenseLinkText }}.

      -

      {{ t.privacyText1 }} () {{ t.privacyText2 }} () {{ t.privacyText3 }}

      - -

      {{ t.attributionsHeading }}

      -
      -
      {{ t.bgImageLabel }}
      -
      {{ t.bgImageCredit }}
      -
      {{ t.badges88x31Label }}
      -
      88x31.nl
      -
      dabamos.de
      -
      {{ t.neocitiesCommunity }}
      -
      88x31 generator
      -
      {{ t.clickSoundLabel }}
      -
      lilypids @ Myinstants
      -
      - -

      {{ t.thanksHeading }}

      -
      -
      Eleventy (11ty)
      -
      {{ t.eleventyDesc }}
      -
      GitHub Pages
      -
      {{ t.githubPagesDesc }}
      -
      eleventy-plugin-recent-changes {{ i18n[langKey].by }} workeffortwaste
      -
      {{ t.recentChangesPluginDesc }}
      -
      eleventy-plugin-inline-link-favicon {{ i18n[langKey].by }} bmuenzenmeyer
      -
      {{ t.inlineFaviconPluginDesc }}
      -
      eleventy-plugin-poison {{ i18n[langKey].by }} gingerchew
      -
      {{ t.poisonPluginDesc }}
      -
      -
      - \ No newline at end of file diff --git a/site/misc/hotlinking/en.json b/site/misc/hotlinking/en.json deleted file mode 100644 index f3a17ac..0000000 --- a/site/misc/hotlinking/en.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "pageTitle": "Hotlinking me", - "pageDescription": "Instructions and resources for other cool netizens linking me in their page.", - "intro": "You're here probably because you want to link me in your page, that's cooool! To help you I've compiled some resources and snippets that carry some of my visual identity. Of course you're free to modify, reupload or even not use these." -} \ No newline at end of file diff --git a/site/misc/hotlinking/index.njk b/site/misc/hotlinking/index.njk deleted file mode 100644 index 2d34e6e..0000000 --- a/site/misc/hotlinking/index.njk +++ /dev/null @@ -1,45 +0,0 @@ ---- -layout: text.njk -pagination: - data: languages - size: 1 - alias: langKey ---- -{% from "macros.njk" import i88x31 with context %} - -
      -
      -

      {{ t.pageTitle }}

      -

      {{ t.intro }}

      -
      -
      -

      88x31

      - {{ i88x31("tenkuma.gif") }} - {% highlight "html" %} - - {% endhighlight %} - {{ i88x31("tenkuma2.gif") }} - {% highlight "html" %} - - {% endhighlight %} - {{ i88x31("tenkuma-splash.gif") }} - {% highlight "html" %} - - {% endhighlight %} - -

      HTML

      - -
      -

      tenkuma

      - Computer cursor arrow line drawing -
      -
      - {% highlight "html" %} - -
      -

      tenkuma

      - Computer cursor arrow line drawing -
      -
      - {% endhighlight %} -
      \ No newline at end of file diff --git a/site/misc/hotlinking/pt.json b/site/misc/hotlinking/pt.json deleted file mode 100644 index b0a9dc1..0000000 --- a/site/misc/hotlinking/pt.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "pageTitle": "Me linkando", - "pageDescription": "Instruções e recursos para outros internautas legais me colocarem nas suas páginas.", - "intro": "Você provavelmente veio aqui porque quer me linkar na sua página, que legaaaaal! Para te ajudar eu juntei uns recursos que carregam um pouco da minha identidade visual. Claro que você pode modificar, salvar ou nem usar eles." -} \ No newline at end of file diff --git a/site/misc/kumaos/en.json b/site/misc/kumaos/en.json deleted file mode 100644 index 5405e32..0000000 --- a/site/misc/kumaos/en.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "pageDescription": "Operating system written in JS." -} \ No newline at end of file diff --git a/site/misc/kumaos/index.njk b/site/misc/kumaos/index.njk deleted file mode 100644 index 07bcd46..0000000 --- a/site/misc/kumaos/index.njk +++ /dev/null @@ -1,34 +0,0 @@ ---- -pageTitle: kumaOS -pagination: - data: languages - size: 1 - alias: langKey ---- - - - - - - Document - - - - - -
      -

      kumaOS

      -

      demo - not for production

      -
      - - - \ No newline at end of file diff --git a/site/misc/kumaos/pt.json b/site/misc/kumaos/pt.json deleted file mode 100644 index 0f23f42..0000000 --- a/site/misc/kumaos/pt.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "pageDescription": "Sistema operacional em JS." -} \ No newline at end of file diff --git a/site/misc/webresources/en.json b/site/misc/webresources/en.json deleted file mode 100644 index d402f37..0000000 --- a/site/misc/webresources/en.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "pageTitle": "Web assets", - "pageDescription": "My library of assets/scripts for websites.", - "intro": "This page's dedicated to showcasing some stuff I made for websites that may also be useful to you. Everything's on public domain unless otherwise stated, and atributtion is very appreciated ;-)", - "tumblrAdapt": "A script that detects if the URL attribute tumblr is true and adapts the website design to dodge Tumblr menu, useful if you point your blog HTML to your website (doable with iframe). It also sanitizes external links adding target=\"_blank\" (opens in a new tab) and preserves the tumblr attribute in each link.", - "click": "Script that plays a custom sound when you click the page or hover a link. The code checks disablesfx on localstorage, if it's true the sound does not play. Localstorage is checked when playing the audio, so it's possible to enable/disable it without reloading the page.", - "ccd": "Triggered when the user types the famous Konami Code inside the page and redirects to another page. The script name is an abbreviation of Konami Code, but with a C instead of K to be less obvious. It's pretty easy to modify it do other stuff." -} \ No newline at end of file diff --git a/site/misc/webresources/index.njk b/site/misc/webresources/index.njk deleted file mode 100644 index db2c74e..0000000 --- a/site/misc/webresources/index.njk +++ /dev/null @@ -1,123 +0,0 @@ ---- -layout: text.njk -pagination: - data: languages - size: 1 - alias: langKey ---- -{% from "macros.njk" import i88x31 with context %} - -
      -
      -

      {{ t.pageTitle }}

      -

      {{ t.intro }}

      -
      -
      - - - -

      tumblr-adapt.js

      -

      {{ t.tumblrAdapt | safe }}

      - {% highlight 'js'%}const isTumblr = new URLSearchParams(location.search).get("tumblr") == "true"; // add ?tumblr=true to the tumblr iframe src attribute - -function adaptToTumblrLayout() { - const header = document.querySelector('header'); // change to anything that would return your header - header.classList.add("tumblr"); // your CSS must handle the rest - - // will calc the size of the header and save as a CSS variable called --header-height - const setHeaderOffset = () => { - const height = header.offsetHeight + "px"; - document.documentElement.style.setProperty('--header-height', height); - }; - - // do this once and when the page resizes - setHeaderOffset(); - window.addEventListener('resize', setHeaderOffset); - - // sanitizing links so they don't open in your tumblr iframe - // also making sure all links carry the tumblr property! - document.querySelectorAll("a").forEach(link => { - if (new URL(link.href).host !== location.host) { - link.target = "_blank"; - } - const u = new URL(link.href); - u.searchParams.set("tumblr", "true"); - link.href = u.toString(); - }); -} - -if (isTumblr) adaptToTumblrLayout(); - -/* - By tenkuma ^^ - https://adrianvic.github.io - For those thumblrs that change the blog HTML for an iframe poiting to your personal website! -*/{% endhighlight %} - -

      click.js

      -

      {{ t.click | safe }}

      - -{% highlight 'js' %}// these must be URLs pointing to your audio! -const click = new Audio(`https://adrianvic.github.io/static/audio/click.ogg`); -const hover = new Audio(`https://adrianvic.github.io/static/audio/hover.ogg`); -click.preload = "auto"; -hover.preload = "auto"; - -// adjust volume below -click.volume = 0.5; -hover.volume = 0.5; - - -document.body.addEventListener("click", () => { - // set disablesfx in the local storage to true to - // disable sound effects - if (localStorage.getItem("disablesfx") == 'true') return; - - click.currentTime = 0; - click.play().catch(() => {}); -}); - -document.querySelectorAll('a').forEach(link => { - link.addEventListener("mouseenter", () => { - if (localStorage.getItem("disablesfx") == 'true') return; - hover.currentTime = 0; - hover.play().catch(() => {}); - }) -}) - -/* - By tenkuma ^^ - https://adrianvic.github.io - For those thumblrs that change the blog HTML for an iframe poiting to your personal website! -*/{% endhighlight %} - -

      ccd.js

      -

      {{ t.ccd }}

      - -{% highlight 'js' %}const konamiCode = ['ArrowUp', 'ArrowUp', 'ArrowDown', 'ArrowDown', 'ArrowLeft', 'ArrowRight', 'ArrowLeft', 'ArrowRight', 'KeyB', 'KeyA']; -let keyIndex = 0; - -document.addEventListener('keydown', function(event) { - if (event.code === konamiCode[keyIndex]) { - keyIndex++; - if (keyIndex === konamiCode.length) { - // change this to your link! - window.location.href = `https://adrianvic.github.io/static/toyourdreams.txt` - keyIndex = 0; - } - } else { - keyIndex = 0; - } -}); - -/* - By tenkuma ^^ - https://adrianvic.github.io - For those thumblrs that change the blog HTML for an iframe poiting to your personal website! -*/{% endhighlight %} -
      \ No newline at end of file diff --git a/site/misc/webresources/pt.json b/site/misc/webresources/pt.json deleted file mode 100644 index 9c2d577..0000000 --- a/site/misc/webresources/pt.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "pageTitle": "Recursos web", - "pageDescription": "Meu acervo de assets/scripts para websites.", - "intro": "Essa página é dedicada para reunir algumas coisas que eu fiz para websites que podem ser úteis para você também. Tudo daqui está em domínio público, a não ser que esteja escrito o contrário, mas deixar os créditos seria legal ;-)", - "tumblrAdapt": "Um script que detecta se o atributo de URL tumblr é true e adapta o design do site para desviar do menu do Tumblr, caso você coloque seu site como blog do Tumblr (dá para fazer com iframe). Ele também limpa os links adicionando target=\"_blank\" (abre em outra janela) para links externos e preserva o atributo tumblr em todos.", - "click": "Script que toca um som customizado quando você clica ou coloca o cursor em cima de um link. O código verifica o valor de disablesfx no localstorage, se ele for true o som não toca. O localstorage é verificado toda vez que o som toca, então dá para habilitar/desabilitar sem recarregar a página.", - "ccd": "Acionado quando o usuário digita o famoso Konami Code dentro da página e redireciona para outra página. O nome é a abreviação de Konami Code, mas com C ao invés de K para ficar menos óbvio. É bem fácil modificar ele para fazer outra coisa." -} \ No newline at end of file diff --git a/site/playground.njk b/site/playground.njk deleted file mode 100644 index 3cdadba..0000000 --- a/site/playground.njk +++ /dev/null @@ -1,89 +0,0 @@ ---- -layout: text.njk ---- -{% from "macros.njk" import i88x31 with context %} -{% from "macros.njk" import webring %} -{% from "macros.njk" import projectCard %} -{% from "macros.njk" import videoCard with context %} - -
      -

      Playground

      -

      This is a test page showcasing different elements from the website. By the way, this box is a page header box, which is a regular box without margin followed by a separator.

      -
      - -
      - -

      Text

      -

      Flowers are red, they can also be blue. Just like links. I'm not much of a poet... Anyways, did I get the link contrast right this time? And the paragraph spacing?

      -

      Bolinho de Chuva

      -

      Did you know here in Brazil we have a dessert literally called Bolinho de Chuva (lit. "rain cake")? It's basically fried dough with sugar, the best ones have banana inside. The tradition is to make them when it's raining, I have a lot of childhood memories of eating this and thinking of this now makes me realize it may be one of the reasons I like rain so much. Don't get me wrong, I hate being in the rain, I swear I can feel each drop puncturing me like a needle. What I like is to stay home and listen to the gentle song of falling droplets.

      -

      I was eating one when I wrote this.

      - -

      Alert box

      -
      -

      This is a alert box.

      -
      - -

      Code block

      -

      Uses Eleventy highlight plugin, Prism CSS by RunDevelopment slightly edited to fit the website design language.

      -{% highlight "js" %} -function myFunction() { - return true; -} -{% endhighlight %} - -

      88x31 interactive images

      -

      88x31 are looking too small on modern monitors, so you can now click on them to expand.

      -{{ i88x31("tenkuma.gif") }} -{{ i88x31("anybrowser6.gif") }} -{{ i88x31("ai.gif") }} -{{ i88x31("WEBP.gif") }} - -

      Webring widget

      -

      Generic webring widget with custom background, link color and links.

      -{{ webring({ - text: "Breakcore Webring", - links: [ - "First", - "Second", - "Third" - ], - image: "/static/images/metro-flowers.jpg" -}) }} - -

      Project card

      -

      These are used in the homepage to list my repos.

      -{{ - projectCard( - "Example project", - "I'm probably not entering heaven for this terrible picture I made of my Minecraft skin. Now I cannot delete it from the website files because it's being used here. I even had the balls to call it me.png.", - ('/static/images/me.png' | url ), - '/static/images/me.png', - "PestoWiki" - ) -}} - -

      Video card

      -

      The image, website and video duration are hardcoded so you don't ping any server to pull it (and it works without JS). Of course none of that is relevant to you, this site source is a mess so you don't have to deal with privacy invasive bullshit, I'm just stating that to fill space after the title, spacing is strange with no text here.

      -
      - {{ - videoCard( - i18n["global"].homeVideoLink, - "I don't know the video title, it's pulling from the global string table.", - i18n["global"].homeVideoImage, - i18n["global"].homeVideoWebsite, - i18n["global"].homeVideoDuration - ) - }} -
      - -

      Recent commits

      -

      Thanks to workeffortwaste's eleventy-plugin-recent-changes <3

      -
        - {%- for commit in collections.recentChanges %} -
      • {{ commit.subject }}
      • - {%- endfor %} -
      - -

      Link with favicon

      -

      Here's a link to {% ai "https://github.com/adrianivc" %}my github page{% endai %}. Thanks to bmuenzenmeyer's eleventy-plugin-inline-link-favicon <3

      \ No newline at end of file diff --git a/site/social.njk b/site/social.njk deleted file mode 100644 index 8cd1d6f..0000000 --- a/site/social.njk +++ /dev/null @@ -1,50 +0,0 @@ ---- -pagination: - data: i18n - size: 1 - alias: langKey -permalink: "/{{ langKey }}/social/index.html" -layout: base.njk -title: Adrian Victor:Social -headerLink: social ---- - - - -
      -
      -

      {{ i18n[langKey].socialContentNotRated }}

      -
      -

      {{ i18n[langKey].mastodonPageDescription }}

      -
        - {% for post in mastodon.posts %} -
        -
        -
        - {{ post.content | safe }} - {% if post.media %} -
        -
        - {% for media in post.media %} - - {% endfor %} -
        -
        - {% endif %} -
        - -
        - {% endfor %} -
      -
      \ No newline at end of file diff --git a/static/images/88x31/1.gif b/static/images/88x31/1.gif deleted file mode 100644 index 2a28216..0000000 Binary files a/static/images/88x31/1.gif and /dev/null differ diff --git a/static/images/88x31/88x31-micro-button.gif b/static/images/88x31/88x31-micro-button.gif deleted file mode 100644 index 08b2af2..0000000 Binary files a/static/images/88x31/88x31-micro-button.gif and /dev/null differ diff --git a/static/images/88x31/9larpfinal.png b/static/images/88x31/9larpfinal.png deleted file mode 100644 index 29758ed..0000000 Binary files a/static/images/88x31/9larpfinal.png and /dev/null differ diff --git a/static/images/88x31/C4YSB2.gif b/static/images/88x31/C4YSB2.gif deleted file mode 100644 index 12b9479..0000000 Binary files a/static/images/88x31/C4YSB2.gif and /dev/null differ diff --git a/static/images/88x31/FCbw.gif b/static/images/88x31/FCbw.gif deleted file mode 100644 index 8efaa19..0000000 Binary files a/static/images/88x31/FCbw.gif and /dev/null differ diff --git a/static/images/88x31/abs.gif b/static/images/88x31/abs.gif deleted file mode 100644 index 073c1a0..0000000 Binary files a/static/images/88x31/abs.gif and /dev/null differ diff --git a/static/images/88x31/agplv3-88x31.gif b/static/images/88x31/agplv3-88x31.gif deleted file mode 100644 index d2f65d4..0000000 Binary files a/static/images/88x31/agplv3-88x31.gif and /dev/null differ diff --git a/static/images/88x31/altavista.gif b/static/images/88x31/altavista.gif deleted file mode 100644 index ccfc5cf..0000000 Binary files a/static/images/88x31/altavista.gif and /dev/null differ diff --git a/static/images/88x31/appak.png b/static/images/88x31/appak.png deleted file mode 100644 index 1ad660d..0000000 Binary files a/static/images/88x31/appak.png and /dev/null differ diff --git a/static/images/88x31/archlinux.gif b/static/images/88x31/archlinux.gif deleted file mode 100644 index 6fcc440..0000000 Binary files a/static/images/88x31/archlinux.gif and /dev/null differ diff --git a/static/images/88x31/atabook.gif b/static/images/88x31/atabook.gif deleted file mode 100644 index 69494b9..0000000 Binary files a/static/images/88x31/atabook.gif and /dev/null differ diff --git a/static/images/88x31/banner2.gif b/static/images/88x31/banner2.gif deleted file mode 100644 index 7728776..0000000 Binary files a/static/images/88x31/banner2.gif and /dev/null differ diff --git a/static/images/88x31/banporn.gif b/static/images/88x31/banporn.gif deleted file mode 100644 index 427b8bc..0000000 Binary files a/static/images/88x31/banporn.gif and /dev/null differ diff --git a/static/images/88x31/blink-0.gif b/static/images/88x31/blink-0.gif deleted file mode 100644 index 2acde1c..0000000 Binary files a/static/images/88x31/blink-0.gif and /dev/null differ diff --git a/static/images/88x31/blinkie.gif b/static/images/88x31/blinkie.gif deleted file mode 100644 index 6dfd3ed..0000000 Binary files a/static/images/88x31/blinkie.gif and /dev/null differ diff --git a/static/images/88x31/breakcore.gif b/static/images/88x31/breakcore.gif deleted file mode 100644 index adfab70..0000000 Binary files a/static/images/88x31/breakcore.gif and /dev/null differ diff --git a/static/images/88x31/brigif.gif b/static/images/88x31/brigif.gif deleted file mode 100644 index d49edf5..0000000 Binary files a/static/images/88x31/brigif.gif and /dev/null differ diff --git a/static/images/88x31/buttonaban.gif b/static/images/88x31/buttonaban.gif deleted file mode 100644 index 5ba23de..0000000 Binary files a/static/images/88x31/buttonaban.gif and /dev/null differ diff --git a/static/images/88x31/cab.gif b/static/images/88x31/cab.gif deleted file mode 100644 index a62e0f6..0000000 Binary files a/static/images/88x31/cab.gif and /dev/null differ diff --git a/static/images/88x31/cannelle.gif b/static/images/88x31/cannelle.gif deleted file mode 100644 index 04f30ad..0000000 Binary files a/static/images/88x31/cannelle.gif and /dev/null differ diff --git a/static/images/88x31/cd_rom.gif b/static/images/88x31/cd_rom.gif deleted file mode 100644 index de381bc..0000000 Binary files a/static/images/88x31/cd_rom.gif and /dev/null differ diff --git a/static/images/88x31/code88x31_1.gif b/static/images/88x31/code88x31_1.gif deleted file mode 100644 index c60cf11..0000000 Binary files a/static/images/88x31/code88x31_1.gif and /dev/null differ diff --git a/static/images/88x31/cogs.gif b/static/images/88x31/cogs.gif deleted file mode 100644 index d3f68eb..0000000 Binary files a/static/images/88x31/cogs.gif and /dev/null differ diff --git a/static/images/88x31/coke.gif b/static/images/88x31/coke.gif deleted file mode 100644 index b2fb382..0000000 Binary files a/static/images/88x31/coke.gif and /dev/null differ diff --git a/static/images/88x31/coreboot.gif b/static/images/88x31/coreboot.gif deleted file mode 100644 index 6458ac2..0000000 Binary files a/static/images/88x31/coreboot.gif and /dev/null differ diff --git a/static/images/88x31/crypto_is_a_scam.webp b/static/images/88x31/crypto_is_a_scam.webp deleted file mode 100644 index e5f49b1..0000000 Binary files a/static/images/88x31/crypto_is_a_scam.webp and /dev/null differ diff --git a/static/images/88x31/defcon1.gif b/static/images/88x31/defcon1.gif deleted file mode 100644 index 7d2b51b..0000000 Binary files a/static/images/88x31/defcon1.gif and /dev/null differ diff --git a/static/images/88x31/demozoo.gif b/static/images/88x31/demozoo.gif deleted file mode 100644 index 1bde656..0000000 Binary files a/static/images/88x31/demozoo.gif and /dev/null differ diff --git a/static/images/88x31/destinysoulmates.gif b/static/images/88x31/destinysoulmates.gif deleted file mode 100644 index 6942d3b..0000000 Binary files a/static/images/88x31/destinysoulmates.gif and /dev/null differ diff --git a/static/images/88x31/digimon_terminal.gif b/static/images/88x31/digimon_terminal.gif deleted file mode 100644 index a90ec5a..0000000 Binary files a/static/images/88x31/digimon_terminal.gif and /dev/null differ diff --git a/static/images/88x31/disaster.gif b/static/images/88x31/disaster.gif deleted file mode 100644 index a9e8538..0000000 Binary files a/static/images/88x31/disaster.gif and /dev/null differ diff --git a/static/images/88x31/disccontent.gif b/static/images/88x31/disccontent.gif deleted file mode 100644 index ad20126..0000000 Binary files a/static/images/88x31/disccontent.gif and /dev/null differ diff --git a/static/images/88x31/discord-no-way.gif b/static/images/88x31/discord-no-way.gif deleted file mode 100644 index 4ee8d64..0000000 Binary files a/static/images/88x31/discord-no-way.gif and /dev/null differ diff --git a/static/images/88x31/discord.gif b/static/images/88x31/discord.gif deleted file mode 100644 index 8b8b457..0000000 Binary files a/static/images/88x31/discord.gif and /dev/null differ diff --git a/static/images/88x31/discord3.gif b/static/images/88x31/discord3.gif deleted file mode 100644 index 631df88..0000000 Binary files a/static/images/88x31/discord3.gif and /dev/null differ diff --git a/static/images/88x31/discordserver.gif b/static/images/88x31/discordserver.gif deleted file mode 100644 index dbf288c..0000000 Binary files a/static/images/88x31/discordserver.gif and /dev/null differ diff --git a/static/images/88x31/divx_logo2.gif b/static/images/88x31/divx_logo2.gif deleted file mode 100644 index a92b8a5..0000000 Binary files a/static/images/88x31/divx_logo2.gif and /dev/null differ diff --git a/static/images/88x31/dkbutton2.gif b/static/images/88x31/dkbutton2.gif deleted file mode 100644 index 6e21c1c..0000000 Binary files a/static/images/88x31/dkbutton2.gif and /dev/null differ diff --git a/static/images/88x31/doc-cd-icon.gif b/static/images/88x31/doc-cd-icon.gif deleted file mode 100644 index 9e6c1c8..0000000 Binary files a/static/images/88x31/doc-cd-icon.gif and /dev/null differ diff --git a/static/images/88x31/dokuwiki.gif b/static/images/88x31/dokuwiki.gif deleted file mode 100644 index 5600ad3..0000000 Binary files a/static/images/88x31/dokuwiki.gif and /dev/null differ diff --git a/static/images/88x31/donate.gif b/static/images/88x31/donate.gif deleted file mode 100644 index f81ce06..0000000 Binary files a/static/images/88x31/donate.gif and /dev/null differ diff --git a/static/images/88x31/donate2.gif b/static/images/88x31/donate2.gif deleted file mode 100644 index b14b9d7..0000000 Binary files a/static/images/88x31/donate2.gif and /dev/null differ diff --git a/static/images/88x31/dontbephonechump.gif b/static/images/88x31/dontbephonechump.gif deleted file mode 100644 index 67e5420..0000000 Binary files a/static/images/88x31/dontbephonechump.gif and /dev/null differ diff --git a/static/images/88x31/dontklick.gif b/static/images/88x31/dontklick.gif deleted file mode 100644 index b99fc12..0000000 Binary files a/static/images/88x31/dontklick.gif and /dev/null differ diff --git a/static/images/88x31/dos.gif b/static/images/88x31/dos.gif deleted file mode 100644 index 93a00b0..0000000 Binary files a/static/images/88x31/dos.gif and /dev/null differ diff --git a/static/images/88x31/dream_coloured.gif b/static/images/88x31/dream_coloured.gif deleted file mode 100644 index d26718c..0000000 Binary files a/static/images/88x31/dream_coloured.gif and /dev/null differ diff --git a/static/images/88x31/drpepper.gif b/static/images/88x31/drpepper.gif deleted file mode 100644 index dff6eaa..0000000 Binary files a/static/images/88x31/drpepper.gif and /dev/null differ diff --git a/static/images/88x31/email-icon.gif b/static/images/88x31/email-icon.gif deleted file mode 100644 index 2139e09..0000000 Binary files a/static/images/88x31/email-icon.gif and /dev/null differ diff --git a/static/images/88x31/evangelion.gif b/static/images/88x31/evangelion.gif deleted file mode 100644 index 6c9932d..0000000 Binary files a/static/images/88x31/evangelion.gif and /dev/null differ diff --git a/static/images/88x31/evilnet.gif b/static/images/88x31/evilnet.gif deleted file mode 100644 index c23fa9e..0000000 Binary files a/static/images/88x31/evilnet.gif and /dev/null differ diff --git a/static/images/88x31/falink.gif b/static/images/88x31/falink.gif deleted file mode 100644 index bd19b33..0000000 Binary files a/static/images/88x31/falink.gif and /dev/null differ diff --git a/static/images/88x31/fb_button.gif b/static/images/88x31/fb_button.gif deleted file mode 100644 index 475f24e..0000000 Binary files a/static/images/88x31/fb_button.gif and /dev/null differ diff --git a/static/images/88x31/fckfb.gif b/static/images/88x31/fckfb.gif deleted file mode 100644 index 97abe49..0000000 Binary files a/static/images/88x31/fckfb.gif and /dev/null differ diff --git a/static/images/88x31/fckgoogle.gif b/static/images/88x31/fckgoogle.gif deleted file mode 100644 index ed15649..0000000 Binary files a/static/images/88x31/fckgoogle.gif and /dev/null differ diff --git a/static/images/88x31/fckingwww.gif b/static/images/88x31/fckingwww.gif deleted file mode 100644 index 8a07bc4..0000000 Binary files a/static/images/88x31/fckingwww.gif and /dev/null differ diff --git a/static/images/88x31/fediverse.gif b/static/images/88x31/fediverse.gif deleted file mode 100644 index 6ad64ff..0000000 Binary files a/static/images/88x31/fediverse.gif and /dev/null differ diff --git a/static/images/88x31/fedora.gif b/static/images/88x31/fedora.gif deleted file mode 100644 index 5953e46..0000000 Binary files a/static/images/88x31/fedora.gif and /dev/null differ diff --git a/static/images/88x31/fedora2.gif b/static/images/88x31/fedora2.gif deleted file mode 100644 index 0581d69..0000000 Binary files a/static/images/88x31/fedora2.gif and /dev/null differ diff --git a/static/images/88x31/ffrediscover.gif b/static/images/88x31/ffrediscover.gif deleted file mode 100644 index 432edc4..0000000 Binary files a/static/images/88x31/ffrediscover.gif and /dev/null differ diff --git a/static/images/88x31/fftake.gif b/static/images/88x31/fftake.gif deleted file mode 100644 index 7a86d07..0000000 Binary files a/static/images/88x31/fftake.gif and /dev/null differ diff --git a/static/images/88x31/fic005.gif b/static/images/88x31/fic005.gif deleted file mode 100644 index 4988165..0000000 Binary files a/static/images/88x31/fic005.gif and /dev/null differ diff --git a/static/images/88x31/fic009.gif b/static/images/88x31/fic009.gif deleted file mode 100644 index 647ff7f..0000000 Binary files a/static/images/88x31/fic009.gif and /dev/null differ diff --git a/static/images/88x31/filetransit.gif b/static/images/88x31/filetransit.gif deleted file mode 100644 index f6e7f12..0000000 Binary files a/static/images/88x31/filetransit.gif and /dev/null differ diff --git a/static/images/88x31/fpobutton.gif b/static/images/88x31/fpobutton.gif deleted file mode 100644 index c4252c7..0000000 Binary files a/static/images/88x31/fpobutton.gif and /dev/null differ diff --git a/static/images/88x31/get_da.gif b/static/images/88x31/get_da.gif deleted file mode 100644 index dae4e03..0000000 Binary files a/static/images/88x31/get_da.gif and /dev/null differ diff --git a/static/images/88x31/google_25wht.gif b/static/images/88x31/google_25wht.gif deleted file mode 100644 index 28f6fdc..0000000 Binary files a/static/images/88x31/google_25wht.gif and /dev/null differ diff --git a/static/images/88x31/google_stand.gif b/static/images/88x31/google_stand.gif deleted file mode 100644 index 08ffd8b..0000000 Binary files a/static/images/88x31/google_stand.gif and /dev/null differ diff --git a/static/images/88x31/hotgraphics.gif b/static/images/88x31/hotgraphics.gif deleted file mode 100644 index 2ea566c..0000000 Binary files a/static/images/88x31/hotgraphics.gif and /dev/null differ diff --git a/static/images/88x31/hotmail2.gif b/static/images/88x31/hotmail2.gif deleted file mode 100644 index f723b79..0000000 Binary files a/static/images/88x31/hotmail2.gif and /dev/null differ diff --git a/static/images/88x31/ipv6.gif b/static/images/88x31/ipv6.gif deleted file mode 100644 index 3c17939..0000000 Binary files a/static/images/88x31/ipv6.gif and /dev/null differ diff --git a/static/images/88x31/latex.gif b/static/images/88x31/latex.gif deleted file mode 100644 index ac68f8d..0000000 Binary files a/static/images/88x31/latex.gif and /dev/null differ diff --git a/static/images/88x31/ldp-link.gif b/static/images/88x31/ldp-link.gif deleted file mode 100644 index 940cac2..0000000 Binary files a/static/images/88x31/ldp-link.gif and /dev/null differ diff --git a/static/images/88x31/maaagic.png b/static/images/88x31/maaagic.png deleted file mode 100644 index 2bd177c..0000000 Binary files a/static/images/88x31/maaagic.png and /dev/null differ diff --git a/static/images/88x31/macos.gif b/static/images/88x31/macos.gif deleted file mode 100644 index 52d3f72..0000000 Binary files a/static/images/88x31/macos.gif and /dev/null differ diff --git a/static/images/88x31/macos_mov.gif b/static/images/88x31/macos_mov.gif deleted file mode 100644 index 48e82c4..0000000 Binary files a/static/images/88x31/macos_mov.gif and /dev/null differ diff --git a/static/images/88x31/masto.gif b/static/images/88x31/masto.gif deleted file mode 100644 index 8597dab..0000000 Binary files a/static/images/88x31/masto.gif and /dev/null differ diff --git a/static/images/88x31/microsoft_frontpage.gif b/static/images/88x31/microsoft_frontpage.gif deleted file mode 100644 index 18f28de..0000000 Binary files a/static/images/88x31/microsoft_frontpage.gif and /dev/null differ diff --git a/static/images/88x31/minecraft.gif b/static/images/88x31/minecraft.gif deleted file mode 100644 index a149b45..0000000 Binary files a/static/images/88x31/minecraft.gif and /dev/null differ diff --git a/static/images/88x31/mrnandokk.gif b/static/images/88x31/mrnandokk.gif deleted file mode 100644 index 86c1698..0000000 Binary files a/static/images/88x31/mrnandokk.gif and /dev/null differ diff --git a/static/images/88x31/nft-nofuckingthanks.gif b/static/images/88x31/nft-nofuckingthanks.gif deleted file mode 100644 index ecbd158..0000000 Binary files a/static/images/88x31/nft-nofuckingthanks.gif and /dev/null differ diff --git a/static/images/88x31/nintendo-hh-gba.png b/static/images/88x31/nintendo-hh-gba.png deleted file mode 100644 index a35cb92..0000000 Binary files a/static/images/88x31/nintendo-hh-gba.png and /dev/null differ diff --git a/static/images/88x31/noanime.gif b/static/images/88x31/noanime.gif deleted file mode 100644 index c05bebf..0000000 Binary files a/static/images/88x31/noanime.gif and /dev/null differ diff --git a/static/images/88x31/nobelief.gif b/static/images/88x31/nobelief.gif deleted file mode 100644 index 2f0e1f9..0000000 Binary files a/static/images/88x31/nobelief.gif and /dev/null differ diff --git a/static/images/88x31/nocookie.gif b/static/images/88x31/nocookie.gif deleted file mode 100644 index c0dd092..0000000 Binary files a/static/images/88x31/nocookie.gif and /dev/null differ diff --git a/static/images/88x31/noodle.gif b/static/images/88x31/noodle.gif deleted file mode 100644 index 882fa97..0000000 Binary files a/static/images/88x31/noodle.gif and /dev/null differ diff --git a/static/images/88x31/now.gif b/static/images/88x31/now.gif deleted file mode 100644 index 1247e08..0000000 Binary files a/static/images/88x31/now.gif and /dev/null differ diff --git a/static/images/88x31/nvidia.gif b/static/images/88x31/nvidia.gif deleted file mode 100644 index 81d5921..0000000 Binary files a/static/images/88x31/nvidia.gif and /dev/null differ diff --git a/static/images/88x31/oldos.png b/static/images/88x31/oldos.png deleted file mode 100644 index 4651c73..0000000 Binary files a/static/images/88x31/oldos.png and /dev/null differ diff --git a/static/images/88x31/penguin.gif b/static/images/88x31/penguin.gif deleted file mode 100644 index 97e71e0..0000000 Binary files a/static/images/88x31/penguin.gif and /dev/null differ diff --git a/static/images/88x31/pictochat.gif b/static/images/88x31/pictochat.gif deleted file mode 100644 index 91d9cb3..0000000 Binary files a/static/images/88x31/pictochat.gif and /dev/null differ diff --git a/static/images/88x31/psbutton.gif b/static/images/88x31/psbutton.gif deleted file mode 100644 index a4d8c38..0000000 Binary files a/static/images/88x31/psbutton.gif and /dev/null differ diff --git a/static/images/88x31/pyurk.gif b/static/images/88x31/pyurk.gif deleted file mode 100644 index ee34f99..0000000 Binary files a/static/images/88x31/pyurk.gif and /dev/null differ diff --git a/static/images/88x31/spacehey.png b/static/images/88x31/spacehey.png deleted file mode 100644 index 915b97d..0000000 Binary files a/static/images/88x31/spacehey.png and /dev/null differ diff --git a/static/images/88x31/speech.gif b/static/images/88x31/speech.gif deleted file mode 100644 index f1fa905..0000000 Binary files a/static/images/88x31/speech.gif and /dev/null differ diff --git a/static/images/88x31/statuscafe.png b/static/images/88x31/statuscafe.png deleted file mode 100644 index c94631b..0000000 Binary files a/static/images/88x31/statuscafe.png and /dev/null differ diff --git a/static/images/88x31/tenkuma-splash.gif b/static/images/88x31/tenkuma-splash.gif deleted file mode 100644 index f4befbd..0000000 Binary files a/static/images/88x31/tenkuma-splash.gif and /dev/null differ diff --git a/static/images/88x31/tenkuma2.gif b/static/images/88x31/tenkuma2.gif deleted file mode 100644 index ed1e0a7..0000000 Binary files a/static/images/88x31/tenkuma2.gif and /dev/null differ diff --git a/static/images/88x31/vilogo.gif b/static/images/88x31/vilogo.gif deleted file mode 100644 index 98289d7..0000000 Binary files a/static/images/88x31/vilogo.gif and /dev/null differ diff --git a/static/images/88x31/vim.gif b/static/images/88x31/vim.gif deleted file mode 100644 index 84baf9a..0000000 Binary files a/static/images/88x31/vim.gif and /dev/null differ diff --git a/static/images/88x31/volta.gif b/static/images/88x31/volta.gif deleted file mode 100644 index 2616771..0000000 Binary files a/static/images/88x31/volta.gif and /dev/null differ diff --git a/static/images/88x31/wbbhosting.gif b/static/images/88x31/wbbhosting.gif deleted file mode 100644 index b72e71e..0000000 Binary files a/static/images/88x31/wbbhosting.gif and /dev/null differ diff --git a/static/images/88x31/web3.gif b/static/images/88x31/web3.gif deleted file mode 100644 index 4f5a2f1..0000000 Binary files a/static/images/88x31/web3.gif and /dev/null differ diff --git a/static/images/88x31/wrongcode.gif b/static/images/88x31/wrongcode.gif deleted file mode 100644 index 61e4a24..0000000 Binary files a/static/images/88x31/wrongcode.gif and /dev/null differ diff --git a/static/images/88x31/wrongos.gif b/static/images/88x31/wrongos.gif deleted file mode 100644 index d9b2dad..0000000 Binary files a/static/images/88x31/wrongos.gif and /dev/null differ diff --git a/static/images/backgrounds/marika-nisekoi.png b/static/images/backgrounds/marika-nisekoi.png deleted file mode 100644 index f9a1fa4..0000000 Binary files a/static/images/backgrounds/marika-nisekoi.png and /dev/null differ diff --git a/static/images/bliss-dark.jpg b/static/images/bliss-dark.jpg deleted file mode 100644 index 442d1a2..0000000 Binary files a/static/images/bliss-dark.jpg and /dev/null differ diff --git a/static/images/grunge.png b/static/images/grunge.png deleted file mode 100644 index 21cfecf..0000000 Binary files a/static/images/grunge.png and /dev/null differ diff --git a/static/images/metro-flowers-original.jpg b/static/images/metro-flowers-original.jpg deleted file mode 100644 index d3b8bff..0000000 Binary files a/static/images/metro-flowers-original.jpg and /dev/null differ diff --git a/static/images/metro-flowers.jpg b/static/images/metro-flowers.jpg deleted file mode 100644 index ded254a..0000000 Binary files a/static/images/metro-flowers.jpg and /dev/null differ diff --git a/static/images/profile.jpg b/static/images/profile.jpg deleted file mode 100644 index 09f44f3..0000000 Binary files a/static/images/profile.jpg and /dev/null differ diff --git a/static/images/thumbnails/goodbye.png b/static/images/thumbnails/goodbye.png deleted file mode 100644 index 4338749..0000000 Binary files a/static/images/thumbnails/goodbye.png and /dev/null differ diff --git a/static/kumos/apps/apps.mjs b/static/kumos/apps/apps.mjs deleted file mode 100644 index 37e81b5..0000000 --- a/static/kumos/apps/apps.mjs +++ /dev/null @@ -1,29 +0,0 @@ -import { Application, Window, promoteWindow, registerApplication, getScreenRoot, getApplications } from "../kernel.mjs"; - -const app = new Application('apps', (p) => { - const w = new Window(p); - w.setTitle("App list"); - w.content.style.padding = "1rem"; - - const list = document.createElement("ul"); - getApplications().forEach(app => { - const item = document.createElement("li"); - const link = document.createElement("a"); - link.innerText = app.name; - link.addEventListener('click', () => app.bootstrap()); - item.appendChild(link); - list.appendChild(item); - }) - - w.content.appendChild(list); - - w.close.addEventListener('click', () => { - p.detach(); - w.destroy(); - }); - - getScreenRoot().appendChild(w.window); - promoteWindow(w); -}) - -export default app; \ No newline at end of file diff --git a/static/kumos/apps/browser.mjs b/static/kumos/apps/browser.mjs deleted file mode 100644 index 08997d6..0000000 --- a/static/kumos/apps/browser.mjs +++ /dev/null @@ -1,32 +0,0 @@ -import { Application, Window, promoteWindow, registerApplication, getScreenRoot } from "../kernel.mjs"; - -const app = new Application('browser', (p) => { - const w = new Window(p); - w.setTitle("Web browser"); - const iframe = document.createElement("iframe"); - iframe.src = "https://adrianvic.github.io"; - iframe.style.height = "100%"; - const searchBar = document.createElement("div"); - searchBar.style.display = "flex"; - const search = document.createElement("input"); - search.style.width = "100%"; - const searchButton = document.createElement("button"); - searchBar.appendChild(search); - searchBar.appendChild(searchButton); - search.type = "text"; - iframe.addEventListener('load', () => search.value = iframe.src); - searchButton.innerText = "go"; - searchButton.addEventListener('click', () => iframe.src = search.value); - w.content.appendChild(searchBar); - w.content.appendChild(iframe); - - getScreenRoot().appendChild(w.window); - promoteWindow(w); - - w.close.addEventListener('click', () => { - p.detach(); - w.destroy(); - }) -}) - -export default app; \ No newline at end of file diff --git a/static/kumos/apps/guestbook.mjs b/static/kumos/apps/guestbook.mjs deleted file mode 100644 index cd547a8..0000000 --- a/static/kumos/apps/guestbook.mjs +++ /dev/null @@ -1,38 +0,0 @@ -import { Application, Window, promoteWindow, registerApplication, getScreenRoot, getProcList } from "../kernel.mjs"; -import { notify } from "../system/shell.mjs"; - -function draw(p) { - const w = new Window(p); - w.setTitle("Guestbook"); - w.content.innerHTML = ` - - - - ` - - getScreenRoot().appendChild(w.window); - promoteWindow(w); - - w.close.addEventListener('click', () => { - p.detach(); - w.destroy(); - }) -} - -function main(p) { - let running = false; - getProcList().forEach(proc => { - if (proc.name == 'guestbook' && proc != p) { - notify("Guestbook", "Guestbook is already running!") - p.detach(); - running = true; - } - }) - - if (!running) { - draw(p); - } -} - -const app = new Application('guestbook', main); -export default app; \ No newline at end of file diff --git a/static/kumos/apps/pkg.mjs b/static/kumos/apps/pkg.mjs deleted file mode 100644 index 064718f..0000000 --- a/static/kumos/apps/pkg.mjs +++ /dev/null @@ -1,5 +0,0 @@ -import "./apps.mjs"; -import "./browser.mjs"; -import "./guestbook.mjs"; -import "./taskmanager.mjs"; -import "./shell.mjs"; \ No newline at end of file diff --git a/static/kumos/apps/shell.mjs b/static/kumos/apps/shell.mjs deleted file mode 100644 index 2be512c..0000000 --- a/static/kumos/apps/shell.mjs +++ /dev/null @@ -1,61 +0,0 @@ -import { Application, Window, getScreenRoot, bus, promoteWindow } from "../kernel.mjs"; - -function draw(p) { - const w = new Window(p); - w.setTitle("Shell"); - w.content.style.display = "flex"; - w.content.style.flexDirection = "column"; - - const textarea = document.createElement("textarea"); - textarea.style.width = "100%"; - textarea.style.height = "100%"; - bus.addEventListener("system-console", (e) => { - textarea.value += e.detail - .map(arg => typeof arg === "object" ? JSON.stringify(arg) : String(arg)) - .join(" ") - + "\n"; - }) - - const div = document.createElement("div"); - div.style.width = "100%"; - div.style.display = "flex"; - - const input = document.createElement("input"); - input.style.width = "100%"; - - const button = document.createElement("button"); - button.textContent = "go"; - button.addEventListener('click', () => { - eval(input.value); - }); - - div.appendChild(input); - div.appendChild(button); - - w.content.appendChild(textarea); - w.content.appendChild(div); - getScreenRoot().appendChild(w.window); - w.maximize(); - - function title(title) { - w.setTitle(title); - } - - function exit() { - p.detach(); - w.destroy(); - } - - w.close.addEventListener('click', () => { - exit(); - }) - - promoteWindow(w); -} - -function main(p) { - draw(p); -} - -const app = new Application('shell', main); -export default app; \ No newline at end of file diff --git a/static/kumos/apps/taskmanager.mjs b/static/kumos/apps/taskmanager.mjs deleted file mode 100644 index 3d643c7..0000000 --- a/static/kumos/apps/taskmanager.mjs +++ /dev/null @@ -1,34 +0,0 @@ -import { Application, Window, promoteWindow, getScreenRoot, getProcList } from "../kernel.mjs"; - -const app = new Application('task', (p) => { - function update() { - w.content.innerHTML = ``; - const list = document.createElement("ul"); - getProcList().forEach(proc => { - const item = document.createElement("li"); - const link = document.createElement("a"); - link.innerText = `${proc.pid} -> ${proc.parent.length === 0 ? `` : proc.parent} ${proc.name}`; - item.appendChild(link); - list.appendChild(item); - }) - - w.content.appendChild(list); - } - - const w = new Window(); - w.setTitle("Task Manager"); - w.content.style.padding = "1rem"; - - const task = setInterval(update, 100); - - w.close.addEventListener('click', () => { - clearInterval(task); - p.detach(); - w.destroy(); - }); - - getScreenRoot().appendChild(w.window); - promoteWindow(w); -}) - -export default app; \ No newline at end of file diff --git a/static/kumos/kernel.mjs b/static/kumos/kernel.mjs deleted file mode 100644 index c726f55..0000000 --- a/static/kumos/kernel.mjs +++ /dev/null @@ -1,180 +0,0 @@ -const language = "en"; -const procList = []; -const applications = []; -const screenRoot = document.querySelector('body'); -screenRoot.classList.add("kumosroot"); - -export const bus = new EventTarget(); - -class SecurityError extends Error { - constructor(message) { - super(message); - this.name = "SercurityError" - } -}; - -export class Process { - constructor(name, fn, parent = []) { - this.pid = procList.length == 0 ? 0 : procList[procList.length - 1].pid + 1; - this.name = name; - this.parent = parent; - procList.push(this); - fn(this); - } - - detach() { - procList.splice(procList.indexOf(this), 1); - } - - child(name, fn) { - return new Process(name, fn, [...this.parent, this.pid]); - } - - isPrivileged() { - return this.parent.indexOf(0) !== -1 || this.pid == 0; - } -} - -export class Application { - constructor(name, fn) { - this.fn = fn; - this.name = name; - registerApplication(this); - } - - bootstrap() { - new Process(this.name, this.fn); - } -} - -export class Window { - constructor(p) { - this.process = p; - - // Window - const w = document.createElement("div"); - w.classList.add("window"); - this.window = w; - - // Header - const h = document.createElement("div"); - h.classList.add("windowHeader"); - this.header = h; - - // Title - const title = document.createElement("p"); - title.classList.add("windowHeaderTitle"); - this.title = title; - - // Buttons container - const container = document.createElement("div"); - container.classList.add("buttonContainer"); - - // Close button - const close = document.createElement("button"); - close.classList.add("windowHeaderButton"); - close.classList.add("close"); - this.close = close; - - // Maximize button - const maximize = document.createElement("button"); - maximize.classList.add("windowHeaderButton"); - maximize.classList.add("maximize"); - this.maximizeButton = maximize; - maximize.addEventListener("click", () => { this.maximize() }); - - // Content - const c = document.createElement("div"); - c.classList.add("windowContent"); - this.content = c; - - // Building - container.appendChild(maximize); - container.appendChild(close); - h.appendChild(title); - h.appendChild(container); - w.appendChild(h); - w.appendChild(c); - - this.state = "floating"; - } - - setTitle(title) { - this.title.innerText = title; - } - - destroy() { - this.window.remove(); - } - - maximize() { - this.window.classList.toggle("maximized"); - } -} - -export function promoteWindow(window) { - const header = window.header; - const elmnt = window.window; - - header.style.cursor = 'move'; - - header.onmousedown = (e) => { - e.preventDefault(); - - let pos3 = e.clientX; - let pos4 = e.clientY; - - const startTop = elmnt.offsetTop; - const startLeft = elmnt.offsetLeft; - - document.onmouseup = closeDragElement; - document.onmousemove = elementDrag; - - function elementDrag(e) { - e.preventDefault(); - const pos1 = pos3 - e.clientX; - const pos2 = pos4 - e.clientY; - pos3 = e.clientX; - pos4 = e.clientY; - - elmnt.style.top = (elmnt.offsetTop - pos2) + "px"; - elmnt.style.left = (elmnt.offsetLeft - pos1) + "px"; - } - - function closeDragElement() { - document.onmouseup = null; - document.onmousemove = null; - } - }; -} - -export function getScreenRoot() { - return screenRoot; -} - -export function getApplications() { - return applications; -} - -export function registerApplication(application) { - applications.push(application); -} - -export function getLanguage() { - return language; -} - -export function getProcList() { - return procList; -} - -["log","warn", "error", "info"].forEach(method => { - const original = console[method]; - - console[method] = (...args) => { - original(...args); - bus.dispatchEvent(new CustomEvent("system-console", { - detail: args - })); - }; -}) \ No newline at end of file diff --git a/static/kumos/kumos.css b/static/kumos/kumos.css deleted file mode 100644 index 557f15e..0000000 --- a/static/kumos/kumos.css +++ /dev/null @@ -1,138 +0,0 @@ -.kumosroot { - --theme-color: #4c6d6e; - --theme-color-lighter: #84b9bb; - --theme-color-variation: #568b8d; - position: relative; - width: 100vw; - height: 100vh; - margin: 0; - padding: 0; - box-sizing: border-box; - overflow: hidden; - color: white; - background-color: black; - font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; - - * { - box-sizing: border-box; - padding: 0; - margin: 0; - } - - .window { - position: absolute; - z-index: 9; - width: 300px; - height: 300px; - display: flex; - flex-direction: column; - resize: both; - overflow: hidden; - } - - .window.maximized { - left: 0; - top: 0; - right: 0; - bottom: 0; - width: auto; - height: auto; - } - - .windowHeader { - padding: 10px; - cursor: move; - z-index: 10; - background-color: rgba(255, 255, 255, 0.6); - color: #000000; - flex: 0 0 auto; - } - - .windowHeader .buttonContainer { - display: flex; - gap: .4em; - } - - .windowContent { - width: 100%; - height: 100%; - flex: 1 1 auto; - border: 0; - } - - .windowContent { - overflow: hidden; - display: flex; - flex-direction: column; - background-color: black; - } - - .windowHeader { - display: flex; - } - - .windowHeaderTitle { - margin: 0px; - margin-right: auto; - } - - .kumosBar { - position: absolute; - left: 0; - bottom: 0; - width: 100%; - background-color: var(--theme-color); - padding: .4em; - display: flex; - gap: 1em; - } - - .kumosBar * { - height: 100%; - } - - .windowHeaderButton { - height: 1em; - width: 1em; - padding: 0; - box-sizing: border-box; - border: none; - display: inline-flex; - align-items: center; - justify-content: center; - font-size: 1em; - line-height: 1; - cursor: pointer; - } - - .windowHeaderButton.close::before { - content: "×"; - } - - .windowHeaderButton.close { - background-color: rgba(255, 0, 0, 0.6); - color: white; - } - - .windowHeaderButton.maximize::before { - content: "□"; - } - - .windowHeaderButton.maximize { - background-color: rgba(255, 255, 0, 0.6); - color: black; - } - - button, input, textarea { - padding: .2em; - border: none; - } - - textarea { - resize: none; - } - - li { - margin-inline-start: 1em; - } -} \ No newline at end of file diff --git a/static/kumos/system/init.mjs b/static/kumos/system/init.mjs deleted file mode 100644 index 69543a8..0000000 --- a/static/kumos/system/init.mjs +++ /dev/null @@ -1,10 +0,0 @@ -import "../apps/pkg.mjs"; -import { Process } from "../kernel.mjs"; -import interactiveLogin from "./targets/interactive-login.mjs"; - -function init(p) { - console.log("Welcome to KumOS!"); - interactiveLogin(p); -} - -new Process("init", init); \ No newline at end of file diff --git a/static/kumos/system/login.mjs b/static/kumos/system/login.mjs deleted file mode 100644 index 327bf85..0000000 --- a/static/kumos/system/login.mjs +++ /dev/null @@ -1,43 +0,0 @@ -import { Process, Window, getScreenRoot, promoteWindow } from "../kernel.mjs"; -import createShell from "./shell.mjs"; - -export default function init(p) { - function login(password) { - if (password == "demo") { - p.detach(); - new Process("shell", createShell); - w.destroy(); - } else { - console.log("Invalid password.") - } - } - - console.log("Please log in with login(password)!"); - window.login = login; - const w = new Window(p); - w.setTitle("Login"); - w.window.style.height = "fit-content"; - w.window.style.width = "fit-content"; - w.window.style.resize = "none"; - - const loginForm = document.createElement("div"); - loginForm.style.display = "flex"; - - const passwordInput = document.createElement("input"); - passwordInput.type = "password"; - passwordInput.placeholder = "Password is 'demo'"; - - const loginButton = document.createElement("button"); - loginButton.innerText = "login"; - loginButton.addEventListener('click', () => { - login(passwordInput.value); - }) - - loginForm.appendChild(passwordInput); - loginForm.appendChild(loginButton); - w.content.appendChild(loginForm); - - w.close.remove(); - getScreenRoot().appendChild(w.window); - promoteWindow(w); -} \ No newline at end of file diff --git a/static/kumos/system/shell.mjs b/static/kumos/system/shell.mjs deleted file mode 100644 index 973c343..0000000 --- a/static/kumos/system/shell.mjs +++ /dev/null @@ -1,33 +0,0 @@ -import { getScreenRoot, getApplications, Process } from "../kernel.mjs"; -import { showNotification } from "../../scripts/notification.js"; - -export function notify(title, text, time) { - showNotification(title, text, time); -} - -function runApp(name) { - let launched = false; - getApplications().forEach(app => { - if (app.name == name) { - app.bootstrap(); - launched = true; - } - }) - if (!launched) alert("Not found."); -} - -export default function createShell(p) { - const bar = document.createElement('div'); - bar.classList.add("kumosBar"); - - const run = document.createElement('input'); - const runButton = document.createElement('button'); - run.type = "text"; - runButton.innerText = "Run"; - runButton.id = "kumosBarRunButton" - runButton.addEventListener('click', () => runApp(run.value)); - bar.appendChild(run); - bar.appendChild(runButton); - - getScreenRoot().appendChild(bar); -} \ No newline at end of file diff --git a/static/kumos/system/targets/interactive-login.mjs b/static/kumos/system/targets/interactive-login.mjs deleted file mode 100644 index fb75178..0000000 --- a/static/kumos/system/targets/interactive-login.mjs +++ /dev/null @@ -1,5 +0,0 @@ -import login from "../login.mjs"; - -export default (p) => { - p.child("login", login); -} \ No newline at end of file diff --git a/static/main.css b/static/main.css index 6943df9..73efdd7 100644 --- a/static/main.css +++ b/static/main.css @@ -1,14 +1,9 @@ -/* - Adrian Victor's website stylesheet - Don't kill me, I'm just a messenger that grew up using Windows Phone... -*/ - /* Raw elements */ :root { --theme-color: #4c6d6e; --theme-color-lighter: #84b9bb; - --theme-color-variation: #568b8d; + --theme-color-variation: #22e6ed; } * { @@ -26,21 +21,16 @@ body { a { transition: 0.2s; - color: var(--theme-color-variation); + color: lightgray; text-decoration: none; } a:hover { - color: lightgray; - - /* I greatly dislike the look of text-decoration: underline but setting this on hover - is harmonic with the clicking sound effect (it clicks better) */ - text-decoration: underline; + color: var(--theme-color-lighter); } li { list-style-type: none; - margin-bottom: .4em; } dt::before { @@ -64,29 +54,13 @@ select { header { display: flex; - flex-direction: column; border-bottom: thick solid rgba(255, 255, 255, 0.1); - box-shadow: 2px 7px 5px rgba(0, 0, 0, 0.3), 0px -4px 10px rgba(0, 0, 0, 0.3); -} - -header .headerContent { width: 100%; + box-shadow: 2px 7px 5px rgba(0, 0, 0, 0.3), 0px -4px 10px rgba(0, 0, 0, 0.3); background-color: rgba(0, 0, 0, 0.15); - display: flex; } -header.tumblr { - position: fixed; - left: 0; - right: 0; - bottom: 0; - z-index: 9; - border-top: thick solid rgba(255, 255, 255, 0.1); - border-bottom: none; - background-color: rgb(0,0,0,0.8); -} - -header #headerTitle, header #linksHelper { +header div { padding: 1rem; } @@ -116,12 +90,6 @@ main { margin-bottom: 2em; } -#boxChain { - display: flex; - flex-direction: column; - gap: 2em; -} - h1, h2, h3 { @@ -152,9 +120,6 @@ blockquote { } hr { - /* DON'T ASK ME HOW THIS LOOKS SO GOOD - the browser is probably doing weird stuff - to hrs */ border-bottom: thick solid rgba(255, 255, 255, 0.1); box-shadow: 2px 7px 5px rgba(0, 0, 0, 0.3), 0px -4px 10px rgba(0, 0, 0, 0.3); /* margin: .5em 0; */ @@ -169,21 +134,12 @@ h2 { textarea, input, button { - transition: .2s; - border: medium solid rgba(255, 255, 255, 0.6); - background-color: rgba(0, 0, 0, 0.2); + border: medium solid var(--theme-color-lighter); + background-color: black; color: white; padding: 0.6em; } -button:hover { - border-color: white; -} - -img { - max-width: 100%; -} - hs { border-bottom: thin solid white; } @@ -254,28 +210,12 @@ aside.metromenu #content { gap: 1em; } -footer a { - font-size: small; -} - /* Global classes and IDs */ -.visually-hidden { - display: none; -} - .nomargin { margin: 0; } -.noDecoration, .noDecoration:hover { - text-decoration: none; -} - -.noPadding { - padding: 0!important; -} - .end-text { text-align: end; } @@ -288,30 +228,6 @@ footer a { height: 1em; } -.fullWidth { - width: 100%; -} - -.singleLine { - overflow: hidden; - display: -webkit-box; - -webkit-line-clamp: 1; - line-clamp: 1; - -webkit-box-orient: vertical; -} - -.doubleLine { - overflow: hidden; - display: -webkit-box; - -webkit-line-clamp: 2; - line-clamp: 2; - -webkit-box-orient: vertical; -} - -.textColored { - color: white; -} - .notificationBox { transition: transform 1s cubic-bezier(0.19, 1, 0.22, 1); width: fit-content; @@ -348,28 +264,12 @@ li.inlineList { margin-bottom: 0; } -.box.alert { - border-color: rgba(255, 0, 0, 0.1); - background-color: rgba(100, 0, 0, 0.3); -} - -.box.alert a { - color: lightcoral; -} - -.box.alert a:hover { - color: lightgray; -} - .kaoBox { + border-color: rgba(255, 0, 0, 0.1); + background-color: rgba(255, 0, 0, 0.1); margin-bottom: 1em; } -.negativeMargin { - /* to make a text container merge to a hr below it */ - margin-bottom: -.2em; -} - .pageHeaderBox { border-bottom: 0; } @@ -377,7 +277,7 @@ li.inlineList { .headerSquare, #defaultSquare { transition: 0.4s; - border: thick solid rgba(255, 255, 255, 0.2); + border: medium solid white; height: 3vw; overflow: hidden; width: 6vw; @@ -404,7 +304,6 @@ li.inlineList { height: 6vw; box-shadow: 2px 7px 5px rgba(0, 0, 0, 0.4), 0px -4px 10px rgba(0, 0, 0, 0.4); background-color: rgba(0, 0, 0, 0.3); - border-color: white; } .youtubeCardHolderHelper { @@ -628,11 +527,6 @@ div.hs.selected { opacity: 0 !important; } -article { - max-width: 70%; - margin: auto; -} - .blogpostYoutubeVideo { user-select: none; box-shadow: 2px 7px 5px rgba(0, 0, 0, 0.3), 0px -4px 10px rgba(0, 0, 0, 0.3); @@ -726,7 +620,6 @@ article { height: 1.4em; margin-top: auto; opacity: 0.6; - margin: auto; } #music:hover { @@ -735,7 +628,6 @@ article { #everythingHelper { position: relative; - margin-bottom: var(--header-height, 0); } #everythingHelper .bg { @@ -759,68 +651,9 @@ article { #mainHelper { padding-top: 3rem; - max-width: 70vw; + max-width: 50vw; margin: auto; display: flex; - gap: 2em; -} - -#mainHelper > aside { - max-width: 20%; - min-width: 20%; -} - -#mainHelper aside { - display: flex; - flex-direction: column; - gap: 1em; -} - -.webringGeneric { - background-color: black; - padding: .4em; - background-position-x: 0; - background-size: cover; -} - -.webringGeneric p { - margin: 0; -} - -.webringButtons { - display: flex; - gap: .4em; -} - -.wrongoLink { - color: #D5E7B5; -} - -#breakcoreWebring { - background-position-x: 0; - background-size: cover; -} - -#breakcoreWebring p { - margin: 20px; -} - -#breakcoreWebring a { - border: thick solid rgba(255, 255, 255, 0.1); - border-bottom: 0; -} - -#breakcoreWebring a:first-child, #breakcoreWebring a:last-child { - border-left: 0; - border-right: 0; -} - -#webring-Wrongos-widget p { - border-top-right-radius: 10px; -} - -#webring-Wrongos-widget a:first-child { - border-bottom-left-radius: 10px; } #headerSubtitle { @@ -899,6 +732,8 @@ header div:first-child { transition: 0.4s; width: fit-content; height: fit-content; + margin-right: 3vw; + margin-bottom: 3rem; gap: 10px; } @@ -914,51 +749,6 @@ header div:first-child { display: flex; } -#homeAside { - margin-bottom: 2em; -} - -#homeWebrings { - display: flex; - flex-direction: column; - gap: 1em; - height: fit-content; -} - -#homeWebrings.less { - max-height: 30em; - overflow: hidden; - --mask: linear-gradient(to bottom, - rgba(0,0,0, 1) 0, rgba(0,0,0, 1) 85%, - rgba(0,0,0, 0) 95%, rgba(0,0,0, 0) 0 - ) 100% 50% / 100% 100% repeat-x; - -webkit-mask: var(--mask); - mask: var(--mask); -} - -#homeBlog p { - overflow: hidden; - display: -webkit-box; - -webkit-line-clamp: 1; - line-clamp: 1; - -webkit-box-orient: vertical; -} - -#homeBlog a { - color: white; -} - -.hotlinks88x31 { - display: grid; - width: fit-content; - margin: auto; - grid-template-columns: 1fr 1fr 1fr; -} - -.internetometerAside img { - max-width: 100%; -} - #telnetSimulation { display: flex; width: 100%; @@ -1014,11 +804,10 @@ header div:first-child { #languageList li a { transition: 1s; - color: white; } .languagesHighlightedLink { - color: var(--theme-color-variation)!important; + color: var(--theme-color-variation); } #songDrawer { @@ -1054,10 +843,6 @@ header div:first-child { opacity: 1; } -.postLink { - color: white; -} - #postHeader * { margin-bottom: 0; } @@ -1066,11 +851,6 @@ header div:first-child { margin-bottom: 1em; } -#miscList dt { - color: var(--theme-color-lighter); - font-weight: bolder; -} - /* Page: misc/favorites */ .favoritesTextBox { @@ -1112,94 +892,6 @@ header div:first-child { margin-top: .2em; } -.mastodonPost { - margin-bottom: 1em; - display: flex; - flex-direction: column; -} - -.mastodonPostContent { - padding: 1em; -} - -.mastodonPostContent, .mastodonLink { - background-color: rgba(0, 0, 0, 0.2); -} - -.mastodonPost p { - margin-bottom: .2em; -} - -.mastodonLink { - width: fit-content; - padding: .4em; - opacity: .8; - margin-left: auto; -} - -.mastodonMedia { - max-height: 5em; - border: medium solid rgba(0, 0, 0, 0.2); -} - -.mastodonMediaBox { - margin-top: 1em; -} - -.mastodonMediaBox div { - display: flex; - overflow: scroll; -} - -.mastodonMediaBox img { - transition: .2s; - opacity: .6; -} - -.mastodonMediaBox img:hover { - opacity: 1; -} - -#socialAside img { - border: thick solid rgba(255, 255, 255, 0.1); - border-top: none; -} - -.fire, .fireHover:hover { - animation: fire-animation 1s ease-in-out infinite alternate; - -moz-animation: fire-animation 1s ease-in-out infinite alternate; - -webkit-animation: fire-animation 1s ease-in-out infinite alternate; - -o-animation: fire-animation 1s ease-in-out infinite alternate; -} - -.burn { - animation: fire-animation .65s ease-in-out infinite alternate; - -moz-animation: fire-animation .65s ease-in-out infinite alternate; - -webkit-animation: fire-animation .65s ease-in-out infinite alternate; - -o-animation: fire-animation .65s ease-in-out infinite alternate; -} - -.blurred { - filter: blur(4px); - user-select: none; - pointer-events: none; -} - -#socialPosts { - transition: .4s; -} - -#chattable { - background-color: black; - border: medium solid rgb(255, 255, 255, 0.2); - width: 100%; -} - -.iframe { - padding: 1rem; - font-size: medium; -} - /* Animations */ @keyframes ellipsis-loader { @@ -1233,109 +925,23 @@ header div:first-child { to { opacity: 0; } } -@keyframes fire-animation -{ -0% {text-shadow: 0 0 20px #fefcc9, - 10px -10px 30px #feec85, - -20px -20px 40px #ffae34, - 20px -40px 50px #ec760c, - -20px -60px 60px #cd4606, - 0 -80px 70px #973716, - 10px -90px 80px #451b0e;} -100% {text-shadow: 0 0 20px #fefcc9, - 10px -10px 30px #fefcc9, - -20px -20px 40px #feec85, - 22px -42px 60px #ffae34, - -22px -58px 50px #ec760c, - 0 -82px 80px #cd4606, - 10px -90px 80px #973716;} -} - -@-moz-keyframes fire-animation -{ -0% {text-shadow: 0 0 20px #fefcc9, - 10px -10px 30px #feec85, - -20px -20px 40px #ffae34, - 20px -40px 50px #ec760c, - -20px -60px 60px #cd4606, - 0 -80px 70px #973716, - 10px -90px 80px #451b0e;} -100% {text-shadow: 0 0 20px #fefcc9, - 10px -10px 30px #fefcc9, - -20px -20px 40px #feec85, - 22px -42px 60px #ffae34, - -22px -58px 50px #ec760c, - 0 -82px 80px #cd4606, - 10px -90px 80px #973716;} -} - -@-webkit-keyframes fire-animation -{ -0% {text-shadow: 0 0 20px #fefcc9, - 10px -10px 30px #feec85, - -20px -20px 40px #ffae34, - 20px -40px 50px #ec760c, - -20px -60px 60px #cd4606, - 0 -80px 70px #973716, - 10px -90px 80px #451b0e;} -100% {text-shadow: 0 0 20px #fefcc9, - 10px -10px 30px #fefcc9, - -20px -20px 40px #feec85, - 22px -42px 60px #ffae34, - -22px -58px 50px #ec760c, - 0 -82px 80px #cd4606, - 10px -90px 80px #973716;} -} - -@-o-keyframes fire-animation -{ -0% {text-shadow: 0 0 20px #fefcc9, - 10px -10px 30px #feec85, - -20px -20px 40px #ffae34, - 20px -40px 50px #ec760c, - -20px -60px 60px #cd4606, - 0 -80px 70px #973716, - 10px -90px 80px #451b0e;} -100% {text-shadow: 0 0 20px #fefcc9, - 10px -10px 30px #fefcc9, - -20px -20px 40px #feec85, - 22px -42px 60px #ffae34, - -22px -58px 50px #ec760c, - 0 -82px 80px #cd4606, - 10px -90px 80px #973716;} -} - /* Media queries */ -@media screen and (max-width: 1400px) { - #mainHelper { - max-width: 90vw; - } -} - @media screen and (max-width: 1280px) { body { font-size: 2vh; } - article { - max-width: 100%; - margin: auto; - } - - .headerContent { - padding-top: 1rem; + header { + padding-top: 1.4rem; text-align: center; flex-direction: column; } header ul { margin: auto; - margin-bottom: 1rem; + margin-bottom: 1.4rem; } - main { - max-width: 90vw; - margin-bottom: 0px; - } + main { max-width: 90vw; } main h1 { font-size: 3vh; } @@ -1353,18 +959,6 @@ header div:first-child { max-width: 90vw; } - #mainHelper > aside { - max-width: unset; - } - - #socialAside img { - max-width: 50%; - } - - #socialAside h1 { - text-align: end; - } - #homeSquares { flex-direction: row; align-content: center; diff --git a/static/prism.css b/static/prism.css deleted file mode 100644 index 07a0c79..0000000 --- a/static/prism.css +++ /dev/null @@ -1,140 +0,0 @@ -/** - * Coy without shadows - * Based on Tim Shedor's Coy theme for prism.js - * Author: RunDevelopment - */ - -code[class*="language-"], -pre[class*="language-"] { - color: white; - background: none; - font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace; - font-size: 1em; - text-align: left; - white-space: pre; - overflow-x: auto; - word-spacing: normal; - word-break: normal; - word-wrap: normal; - line-height: 1.5; - - -moz-tab-size: 4; - -o-tab-size: 4; - tab-size: 4; - - -webkit-hyphens: none; - -moz-hyphens: none; - -ms-hyphens: none; - hyphens: none; -} - -/* Code blocks */ -pre[class*="language-"] { - position: relative; - border-left: 10px solid rgba(255, 255, 255, 0.2); - background-color: rgba(0, 0, 0, 0.6); - background-image: linear-gradient(transparent 50%, rgba(69, 142, 209, 0.04) 50%); - background-size: 3em 3em; - background-origin: content-box; - background-attachment: local; - margin: .5em 0; - padding: 0 1em; -} - -pre[class*="language-"] > code { - display: block; -} - -/* Inline code */ -:not(pre) > code[class*="language-"] { - position: relative; - padding: .2em; - border-radius: 0.3em; - color: #c92c2c; - border: 1px solid rgba(0, 0, 0, 0.1); - display: inline; - white-space: normal; - background-color: #fdfdfd; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} - -.token.comment, -.token.block-comment, -.token.prolog, -.token.doctype, -.token.cdata { - color: #7D8B99; -} - -.token.punctuation { - color: #5F6364; -} - -.token.property, -.token.tag, -.token.boolean, -.token.number, -.token.function-name, -.token.constant, -.token.symbol, -.token.deleted { - color: #c92c2c; -} - -.token.selector, -.token.attr-name, -.token.string, -.token.char, -.token.function, -.token.builtin, -.token.inserted { - color: #2f9c0a; -} - -.token.operator, -.token.entity, -.token.url, -.token.variable { - color: red; - background: rgba(255, 255, 255, 0.1); -} - -.token.atrule, -.token.attr-value, -.token.keyword, -.token.class-name { - color: #1990b8; -} - -.token.regex, -.token.important { - color: #e90; -} - -.language-css .token.string, -.style .token.string { - color: #a67f59; - background: rgba(255, 255, 255, 0.5); -} - -.token.important { - font-weight: normal; -} - -.token.bold { - font-weight: bold; -} - -.token.italic { - font-style: italic; -} - -.token.entity { - cursor: help; -} - -.token.namespace { - opacity: .7; -} \ No newline at end of file diff --git a/static/scripts/88x31.js b/static/scripts/88x31.js index 9ba53b1..32e37d1 100644 --- a/static/scripts/88x31.js +++ b/static/scripts/88x31.js @@ -1,4 +1,4 @@ -const images = document.querySelectorAll(".i88x31i"); +const images = document.querySelectorAll(".i88x31"); images.forEach(image => { image.addEventListener("click", () => { diff --git a/static/scripts/home.js b/static/scripts/home.js index 9afa929..f570539 100644 --- a/static/scripts/home.js +++ b/static/scripts/home.js @@ -48,12 +48,4 @@ function updateSquare() { div = getSquareDivByID(square.id); selectedSquareDiv = div.id; div.classList.toggle("selected"); -} - -const homeWebrings = document.getElementById("homeWebrings"); -const homeWebringsShowMore = document.getElementById("homeWebringsShowMore"); - -homeWebringsShowMore.addEventListener("click", () => { - homeWebrings.classList.toggle("less"); - homeWebringsShowMore.textContent = homeWebrings.classList.contains("less") ? headeri18n.showMore : headeri18n.showLess; -}); \ No newline at end of file +} \ No newline at end of file diff --git a/static/scripts/music.js b/static/scripts/music.js index 6fb787e..c8d0f6e 100644 --- a/static/scripts/music.js +++ b/static/scripts/music.js @@ -4,18 +4,18 @@ const body = document.querySelector("body"); const musicdiv = document.getElementById("music"); musicdiv.innerHTML = ` -${headeri18n.gearsAlt} -${headeri18n.soundOnAlt} - + + + ` const linksHelper = document.getElementById("linksHelper"); linksHelper.insertBefore(document.createElement("hs"), document.getElementById("headerLinks")); const songs = [ - { file: "Velkommen.mp3", name: 'Velkommen', artwork: "velkommen.jpg", alt: headeri18n.velkommenArtAlt }, - { file: "PG2.mp3", name: 'Frugal APE', artwork: "pg.jpg" , alt: headeri18n.pgArtAlt }, - { file: "dreamscape.mp3", name: 'Dreamscape', artwork: "winds.png" , alt: headeri18n.windsArtAlt }, - { file: "skychat.mp3", name: 'Skychat', artwork: "winds.png" , alt: headeri18n.windsArtAlt } + { file: "Velkommen.mp3", name: 'Velkommen', artwork: "velkommen.jpg" }, + { file: "PG2.mp3", name: 'Frugal APE', artwork: "pg.jpg" }, + { file: "dreamscape.mp3", name: 'Dreamscape', artwork: "winds.png" }, + { file: "skychat.mp3", name: 'Skychat', artwork: "winds.png" } ]; // Options page @@ -43,15 +43,15 @@ optionsAside.classList.add("metromenu");

      Volume

      - +

      ${headeri18n.hideBackground}

      - +

      ${headeri18n.disableSoundEffects}

      - +
      ` @@ -99,7 +99,6 @@ songs.forEach(song => { songElement.classList.add("drawerSong"); songElement.dataset.song = song.file; const songImage = document.createElement("img"); - songImage.alt = song.alt; songImage.src = `${rootPrefix}static/images/songs/${song.artwork}`; songElement.appendChild(songImage); songElement.addEventListener('click', () => { @@ -178,7 +177,6 @@ function play() { });; localStorage.setItem("audioPlaying", "true") toggleIMG.src = `${rootPrefix}static/images/sound-on.png` - toggleIMG.alt = headeri18n.soundOnAlt; console.log(`[Music Player] playing ${audioSelect.value}`) } @@ -186,7 +184,6 @@ function stop() { audio.pause(); localStorage.setItem("audioPlaying", "false") toggleIMG.src = `${rootPrefix}static/images/sound-off.png` - toggleIMG.alt = headeri18n.soundOffAlt; } function setVolume(volume) { diff --git a/static/scripts/notification.js b/static/scripts/notification.js index e91ccc4..a05b793 100644 --- a/static/scripts/notification.js +++ b/static/scripts/notification.js @@ -3,7 +3,7 @@ import { registerElementHint } from "./tips.js"; const notificationBox = document.createElement('div'); notificationBox.classList.add('notificationBox'); -export async function showNotification(title, subtitle, time = 5000, hint) { +export async function showNotification(title, subtitle, time, hint) { if (!hint) { hint = headeri18n.notificationDefaultHint; } diff --git a/static/scripts/social.js b/static/scripts/social.js deleted file mode 100644 index 165564b..0000000 --- a/static/scripts/social.js +++ /dev/null @@ -1,13 +0,0 @@ -const socialPosts = document.querySelector('#socialPosts'); -const socialAlert = document.querySelector('#socialAlert'); - -socialPosts.classList.add('blurred'); - -const continueButton = document.createElement('button'); -continueButton.innerText = clickHereToContinueLocalized; -continueButton.addEventListener('click', () => { - socialPosts.classList.remove('blurred'); - socialAlert.remove(); -}) - -socialAlert.appendChild(continueButton); \ No newline at end of file diff --git a/static/scripts/tips.js b/static/scripts/tips.js index cad5831..7e72b43 100644 --- a/static/scripts/tips.js +++ b/static/scripts/tips.js @@ -1,19 +1,16 @@ const isMobile = /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent); const body = document.querySelector('body'); +const elements = document.querySelectorAll('[data-tip]'); const hint = document.querySelector("#headerSubtitle"); -const hintPanelDefaultText = hint ? hint.innerHTML : null; +const hintPanelDefaultText = hint.innerHTML; let fixedHint; let currentObserver; -if (hint) { - const elements = document.querySelectorAll('[data-tip]'); - elements.forEach(el => { - registerElementHint(el); - }); -} +elements.forEach(el => { + registerElementHint(el); +}) function cleanup() { - if (!hint) return; hint.innerHTML = hintPanelDefaultText; hint.classList.remove('fixed'); if (fixedHint) { diff --git a/static/scripts/tumblr-adapt.js b/static/scripts/tumblr-adapt.js deleted file mode 100644 index c3ae48e..0000000 --- a/static/scripts/tumblr-adapt.js +++ /dev/null @@ -1,34 +0,0 @@ -/* - By tenkuma ^^ - For those thumblrs that change the blog HTML for an iframe poiting to your personal website! -*/ - -const isTumblr = new URLSearchParams(location.search).get("tumblr") == "true"; // add ?tumblr=true to the tumblr iframe src attribute - -function adaptToTumblrLayout() { - const header = document.querySelector('header'); // change to anything that would return your header - header.classList.add("tumblr"); // your CSS must handle the rest - - // will calc the size of the header and save as a CSS variable called --header-height - const setHeaderOffset = () => { - const height = header.offsetHeight + "px"; - document.documentElement.style.setProperty('--header-height', height); - }; - - // do this once and when the page resizes - setHeaderOffset(); - window.addEventListener('resize', setHeaderOffset); - - // sanitizing links so they don't open in your tumblr iframe - // also making sure all links carry the tumblr property! - document.querySelectorAll("a").forEach(link => { - if (new URL(link.href).host !== location.host) { - link.target = "_blank"; - } - const u = new URL(link.href); - u.searchParams.set("tumblr", "true"); - link.href = u.toString(); - }); -} - -if (isTumblr) adaptToTumblrLayout();