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 deleted file mode 100644 index e272860..0000000 --- a/.eleventy.js +++ /dev/null @@ -1,171 +0,0 @@ -import fs from "fs"; -import path from "path"; - -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, - }); - 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.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, - })); - }); - - 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.addFilter("absoluteUrl", function (url) { - const base = "https://adrianvic.github.io"; - const prefix = process.env.GITHUB_ACTIONS ? "" : "/tenkuma/web"; - return base + prefix + url; - }); - - eleventyConfig.addFilter("postDate", (dateObj) => { - if (!dateObj) return ""; - return dateObj.toLocaleString(undefined, { - year: "numeric", - month: "numeric", - day: "numeric", - timeZone: "America/Sao_Paulo", - }); - }); - - 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(" "); - }); - - return { - pathPrefix: process.env.GITHUB_ACTIONS ? "" : "/tenkuma/web", - dir: { - output: "docs", - }, - }; -} diff --git a/.forgejo/workflows/build-forgejo.yml b/.forgejo/workflows/build-forgejo.yml deleted file mode 100644 index e0b77da..0000000 --- a/.forgejo/workflows/build-forgejo.yml +++ /dev/null @@ -1,49 +0,0 @@ -name: Build Eleventy Forgero - -on: - push: - paths-ignore: - - '/maintenance/**' - - '/README.md' - branches: - - main - workflow_dispatch: - pull_request: - paths-ignore: - - '/maintenance/**' - - '/README.md' - -permissions: - contents: write - -jobs: - build: - runs-on: arch-linux - - strategy: - matrix: - node-version: [24.x] - - steps: - - uses: actions/checkout@v4 - - - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v4 - with: - node-version: ${{ matrix.node-version }} - - - name: Install dependencies & build - run: | - npm ci - npm run build -- --pathprefix="/pages/tenkuma/web" - - - name: Deploy to forgejo-pages - run: | - git config user.email "adrianvictor+webmaster@disroot.org" - git config user.name "mareguma" - git checkout --orphan forgejo-pages - git rm -rf . - cp -r docs/* . - git add . - git commit -m "Deploy: $(date)" - git push -f origin forgejo-pages \ No newline at end of file diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml deleted file mode 100644 index b7d21c1..0000000 --- a/.github/workflows/build.yml +++ /dev/null @@ -1,46 +0,0 @@ -name: Build Eleventy - -on: - push: - paths-ignore: - - 'maintenance/**' - - 'README.md' - branches: - - main - workflow_dispatch: - pull_request: - paths-ignore: - - 'maintenance/**' - - 'README.md' - -permissions: - contents: write - -jobs: - build: - runs-on: ubuntu-latest - - strategy: - matrix: - node-version: [24.x] - - steps: - - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v4 - with: - node-version: ${{ matrix.node-version }} - - - name: Install dependencies & build - run: | - npm ci - npm run build -- --pathprefix="" - - - name: Deploy - uses: peaceiris/actions-gh-pages@v4 - with: - publish_dir: ./docs - github_token: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file diff --git a/.gitignore b/.gitignore deleted file mode 100644 index d1a9dc6..0000000 --- a/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -_site/ -node_modules/ -docs/ \ No newline at end of file diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 0000000..e69de29 diff --git a/LICENSE b/LICENSE deleted file mode 100644 index 261eeb9..0000000 --- a/LICENSE +++ /dev/null @@ -1,201 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/README.md b/README.md deleted file mode 100644 index 65eb7c5..0000000 --- a/README.md +++ /dev/null @@ -1,26 +0,0 @@ -# Adrian Victor -[![Forgejo Pages Build and Deploy](https://inspiran.beetal-castor.ts.net/git/tenkuma/web/badges/workflows/build-forgejo.yml/badge.svg)](https://inspiran.beetal-castor.ts.net/git/tenkuma/web/actions?workflow=build-forgejo.yml) -[![Github Pages Build](https://github.com/adrianvic/adrianvic.github.io/actions/workflows/build.yml/badge.svg)](https://github.com/adrianvic/adrianvic.github.io/actions/workflows/build.yml) -[![pages-build-deployment](https://github.com/adrianvic/adrianvic.github.io/actions/workflows/pages/pages-build-deployment/badge.svg)](https://github.com/adrianvic/adrianvic.github.io/actions/workflows/pages/pages-build-deployment) - -My personal static website/blog built with Eleventy. - - - -## Mirrors - - Forgejo: https://inspiran.beetal-castor.ts.net/pages/tenkuma/web/ - - GitHub Pages: https://adrianvic.github.io/ - - NeoCities (some features are broken): https://tenkuma.neocities.org/ - -## Interesting features - - Multiple pages - - Text support - - Interactive - -## Features that are not interesting at all - - Localization support with global/page string table - - Reusable elements with Eleventy's macros - - Responsive design for computers, medium sized devices and smartphones - - Functional without JavaScript - - Robust blog functionality with support for linking post translations with a common internal ID - - Some elements have hints while hovering, they update the text of a hint bar on the website header diff --git a/README/index.html b/README/index.html new file mode 100644 index 0000000..9f6779f --- /dev/null +++ b/README/index.html @@ -0,0 +1,20 @@ +

Adrian Victor

+

Build Eleventy +pages-build-deployment

+

My personal static website/blog built with Eleventy.

+

+

Interesting features

+ +

Features that are not interesting at all

+ diff --git a/en/blog/index.html b/en/blog/index.html new file mode 100644 index 0000000..8d4f74f --- /dev/null +++ b/en/blog/index.html @@ -0,0 +1,107 @@ + + + + + + + Adrian Victor + + + + + + + + + + + + + + + + + + + + +
+ +
+
+

Adrian Victor:Blog

+ Fanasy is not a crime, find your castle in the sky. + +
+
+
+
+ +
+
+
+ +
+

Listing Blog Posts:

+ +
+
+
+ + \ No newline at end of file diff --git a/en/index.html b/en/index.html new file mode 100644 index 0000000..6941a4f --- /dev/null +++ b/en/index.html @@ -0,0 +1,275 @@ + + + + + + + Adrian Victor + + + + + + + + + + + + + + + + + + + + +
+ +
+
+

Adrian Victor

+ Fanasy is not a crime, find your castle in the sky. + +
+
+
+
+ +
+
+
+ + + + +
+
+
+ + + +
+
+

Welcome

+

It seems that you have found my website! Hi, I am Adrian Victor (or tenkuma), a Brazilian guy who likes to mess around with computers, computer programs and enimatpyrtlyhtemids.

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

About Me

+

+ 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. +

+

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.

+

Socials and Contact

+

+ I'm publicly available at Mastodon (@tenkuma@mstdn.social), + GitHub (adrianvic), + Disroot Git (adrianvictor), + Discord (@adrianvic), + YouTube (@adrianvictor8), + BitView (tenkuma), + Modrinth (tenkumabear) + and XMPP (adrianvictor@disroot.org). +

+

You can message me on my E-mail (adrianvictor@disroot.org) or feel free to get in touch through any of the other places mentioned above. For project-specific subjects, check for the project's contact field or if there's no such field add +projectname to my E-mail address (example: adrianvictor+coolproject@disroot.org).

+

Please, avoid reaching me through ways not mentioned above :)

+
+ +
+
+

My Music

+

I've always loved music, and lately I've been finding music production very interesting. I publish my songs as tenkuma, and have founded an amateur label called Margarina Records with my friends.

+

You can find my latest on songs Genius.

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

My Videos

+

I make videos for my YouTube channel. Videos do not come regularly, there's no schedule—just a guy wanting to show something.

+
+
+ + + +
+ +
+
+

My Software

+

I am studying computing at IFC (SC, Brazil) but in my free time I have some projects like computer applications, Minecraft plugins, Minecraft servers, etc... Anything that is public should be in my GitHub profile.

+ +
+
+
+ +
+
+
Jamfish
+ + + +
+
+

Native music player for Android devices that connects to Jellyfin media servers. The code is based on Gelli's archived repository, which is based on an old version of Phonograph.

+
+
+ + +
+
+
ItemEconomy
+ + + +
+
+

This PaperMC plugin integrates with VaultUnlocked to provide a unique, item-based economy system for your Minecraft server. Instead of relying solely on virtual balances, players use in-game items as physical currency, adding a layer of immersion and realism to your economy.

+
+
+ + +
+
+
Eye of Nemesis
+ + + +
+
+

Eye of Nemesis is a plugin that allows server admins to write policies that will deny or allow (black/whitelist) players to do specific things based on the value of nodes.

+
+
+ + +
+
+
PestoWiki
+ + + +
+
+

Multi-platform customizable client for wikis written in Python using PySide6 (QT).

+
+
+ +
+
+
+ +
+
+ + \ No newline at end of file diff --git a/en/misc/88x31/index.html b/en/misc/88x31/index.html new file mode 100644 index 0000000..8ca10f1 --- /dev/null +++ b/en/misc/88x31/index.html @@ -0,0 +1,1589 @@ + + + + + + + Adrian Victor - 88x31 + + + + + + + + + + + + + + + + + + + + +
+ +
+
+

Adrian Victor

+ Fanasy is not a crime, find your castle in the sky. + +
+
+
+
+ +
+
+
+ + +
+
+

88x31

+

This is the collection of 88x31 GIFs and images I've downloaded across the web.

+
+
+

Made by me

+
+ + + +
+

Others

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ + \ No newline at end of file diff --git a/en/misc/bookmarks/index.html b/en/misc/bookmarks/index.html new file mode 100644 index 0000000..78c7bea --- /dev/null +++ b/en/misc/bookmarks/index.html @@ -0,0 +1,370 @@ + + + + + + + Adrian Victor + + + + + + + + + + + + + + + + + + + + +
+ +
+
+

Adrian Victor

+ Fanasy is not a crime, find your castle in the sky. + +
+
+
+
+ +
+
+
+ + +
+
+

Bookmarks

+

A list of useful or cool websites/pages curated by me. Divided in sections for an easier navigation.

+ + + +
+
+ +
+

Downloads

+ +
+ + + + + + + + + +
+ +
+ +
+
MalwareWatch
+
+
+ Enderman's website. Provides download to various useful softwares, operating system images and malware. +
+ +
+
+
+ +
+
Free Images
+
+
+ Search through millions of free stock photos, art and vector images. Every image is Public Domain or CC0. Free to Download and Free to Use. +
+ +
+
+
+ +
+
88x31
+
+
+ This website is a collection with over 6500 GIF's and PNG's in 88x31 format. In the late 1990 and begin of the 2000's it was very common to use these pictures on your personal website. +
+ + + + + + + + + + + +
+
+
+ +
+ +
+

Profiles

+ +
+ +
+
Mr. Nando
+
+
+ My friend Fernando, he makes music and YouTube videos of Minecraft and speedrun. +
+ +
+
+
+ +
+
Endermanch
+
+
+ Andrew is a software engineer, a malware enthusiast and most importantly, a weird tall creature. I've grown up with his videos and he's a great inspiration for me. +
+ +
+
+
+ +
+ +
+

Tools

+ +
+ +
+
Excalidraw
+
+
+ Whiteboard with no bloat. +
+ +
+
+
+ +
+
Postimages
+
+
+ Get permanent links of your images for forums, blogs, and social media. +
+ +
+
+
+ +
+
uBlock Origin
+
+
+ An efficient blocker for Chromium and Firefox. Fast and lean. +
+ + + + + + + +
+
+
+ +
+ +
+

Games

+ +
+ + + + + + + + + +
+ +
+ +
+
SteamGridDB
+
+
+ Download and share custom video game assets and personalize your gaming library. +
+ +
+
+
+ +
+ +
+

Music

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
CVGM Radio
+
+
+ Your home for video game, demo scene and computer related music. +
+ +
+
+
+ +
+ +
+

Piracy

+ +
+ + + + + +
+ +
+ +
+
Nyaa
+
+
+ A tracker of animes, mangas and related stuff. +
+ + + + + + + +
+
+
+ +
+
Lucida
+
+
+ With Lucida, you can download music directly from Qobuz, Tidal, Soundcloud, Deezer, Amazon Music, and Yandex Music in high quality for free. No catches, no mandatory ads, no BS. How does it work? +
+ +
+
+
+ +
+
DoubleDouble
+
+
+ Download music directly from Amazon Music, Soundcloud, Qobuz, Deezer and Tidal for free. +
+ +
+
+
+ +
+ +
+
+
+ + \ No newline at end of file diff --git a/en/misc/index.html b/en/misc/index.html new file mode 100644 index 0000000..f39fee8 --- /dev/null +++ b/en/misc/index.html @@ -0,0 +1,113 @@ + + + + + + + Adrian Victor + + + + + + + + + + + + + + + + + + + + +
+ +
+
+

Adrian Victor:Misc

+ Fanasy is not a crime, find your castle in the sky. + +
+
+
+
+ +
+
+
+ +
+

Miscellaneous

+
    +
    + + + +
    + + 88x31 + +
    + +
    + + My collection of 88x31 GIFs and images. +
    + + + +
    + + Bookmarks + +
    + +
    + + My collection of interesting websites/pages. +
    + +
    +
+
+
+
+ + \ No newline at end of file diff --git a/global/blog/index.html b/global/blog/index.html new file mode 100644 index 0000000..99230cb --- /dev/null +++ b/global/blog/index.html @@ -0,0 +1,93 @@ + + + + + + + Adrian Victor + + + + + + + + + + + + + + + + + + + + +
+ +
+
+

Adrian Victor:Blog

+ Fanasy is not a crime, find your castle in the sky. + +
+
+
+
+ +
+
+
+ +
+

+
    + + + + + + + + + +
+
+
+
+ + \ No newline at end of file diff --git a/global/index.html b/global/index.html new file mode 100644 index 0000000..27c37b4 --- /dev/null +++ b/global/index.html @@ -0,0 +1,263 @@ + + + + + + + Adrian Victor + + + + + + + + + + + + + + + + + + + + +
+ +
+
+

Adrian Victor

+ Fanasy is not a crime, find your castle in the sky. + +
+
+
+
+ +
+
+
+ + + + +
+
+
+ + + +
+
+

+

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

+

+

+

+

+

+
+ +
+
+

+

+

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

+

+
+
+ + + +
+ +
+
+

+

+ +
+
+
+ +
+
+
Jamfish
+ + + +
+
+

+
+
+ + +
+
+
ItemEconomy
+ + + +
+
+

+
+
+ + +
+
+
Eye of Nemesis
+ + + +
+
+

+
+
+ + +
+
+
PestoWiki
+ + + +
+
+

+
+
+ +
+
+
+ +
+
+ + \ No newline at end of file diff --git a/global/misc/index.html b/global/misc/index.html new file mode 100644 index 0000000..c863fd4 --- /dev/null +++ b/global/misc/index.html @@ -0,0 +1,113 @@ + + + + + + + Adrian Victor + + + + + + + + + + + + + + + + + + + + +
+ +
+
+

Adrian Victor:Misc

+ Fanasy is not a crime, find your castle in the sky. + +
+
+
+
+ +
+
+
+ +
+

+ +
+
+
+ + \ No newline at end of file diff --git a/index.html b/index.html new file mode 100644 index 0000000..f5d95f7 --- /dev/null +++ b/index.html @@ -0,0 +1,91 @@ + + + + + + + Adrian Victor + + + + + + + + + + + + + + + + + + + + +
+ +
+
+

Adrian Victor

+ Fanasy is not a crime, find your castle in the sky. + +
+
+
+
+ +
+
+
+ + +
+

Pick a language

+ +
+
+
+ + \ No newline at end of file diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index ce1b23f..0000000 --- a/package-lock.json +++ /dev/null @@ -1,2730 +0,0 @@ -{ - "name": "adrianvictor-new", - "version": "1.0.0", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "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" - } - }, - "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==", - "license": "MIT", - "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==", - "license": "MIT", - "dependencies": { - "@11ty/eleventy-utils": "^2.0.7", - "acorn": "^8.15.0", - "dependency-graph": "^1.0.0", - "normalize-path": "^3.0.0" - } - }, - "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==", - "license": "MIT", - "dependencies": { - "@11ty/dependency-tree": "^4.0.2", - "@11ty/dependency-tree-esm": "^2.0.4", - "@11ty/eleventy-dev-server": "^2.0.8", - "@11ty/eleventy-plugin-bundle": "^3.0.7", - "@11ty/eleventy-utils": "^2.0.7", - "@11ty/lodash-custom": "^4.17.21", - "@11ty/posthtml-urls": "^1.0.3", - "@11ty/recursive-copy": "^4.0.4", - "@sindresorhus/slugify": "^2.2.1", - "bcp-47-normalize": "^2.3.0", - "chokidar": "^3.6.0", - "debug": "^4.4.3", - "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", - "kleur": "^4.1.5", - "liquidjs": "^10.27.0", - "luxon": "^3.7.2", - "markdown-it": "^14.2.0", - "minimist": "^1.2.8", - "moo": "0.5.2", - "node-retrieve-globals": "^6.0.1", - "nunjucks": "^3.2.4", - "picomatch": "^4.0.4", - "please-upgrade-node": "^3.2.0", - "posthtml": "^0.16.7", - "posthtml-match-helper": "^2.0.3", - "semver": "^7.8.1", - "slugify": "^1.6.9", - "tinyglobby": "^0.2.16" - }, - "bin": { - "eleventy": "cmd.cjs" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/11ty" - } - }, - "node_modules/@11ty/eleventy-dev-server": { - "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==", - "license": "MIT", - "dependencies": { - "@11ty/eleventy-utils": "^2.0.1", - "chokidar": "^3.6.0", - "debug": "^4.4.0", - "finalhandler": "^1.3.1", - "mime": "^3.0.0", - "minimist": "^1.2.8", - "morphdom": "^2.7.4", - "please-upgrade-node": "^3.2.0", - "send": "^1.1.0", - "ssri": "^11.0.0", - "urlpattern-polyfill": "^10.0.0", - "ws": "^8.18.1" - }, - "bin": { - "eleventy-dev-server": "cmd.js" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "type": "opencollective", - "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==", - "license": "MIT", - "dependencies": { - "@11ty/eleventy-utils": "^2.0.2", - "debug": "^4.4.0", - "posthtml-match-helper": "^2.0.3" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "type": "opencollective", - "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==", - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "type": "opencollective", - "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==", - "license": "MIT", - "engines": { - "node": ">=14" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/11ty" - } - }, - "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==", - "license": "MIT", - "dependencies": { - "evaluate-value": "^2.0.0", - "http-equiv-refresh": "^2.0.1", - "list-to-array": "^1.1.0", - "parse-srcset": "^1.0.2" - }, - "engines": { - "node": ">= 6" - } - }, - "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==", - "license": "ISC", - "dependencies": { - "errno": "^1.0.0", - "junk": "^3.1.0", - "minimatch": "^3.1.5", - "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==", - "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" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "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==", - "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" - }, - "engines": { - "node": ">= 4" - }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" - } - }, - "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==", - "license": "MIT", - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "license": "MIT", - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "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==", - "license": "MIT", - "dependencies": { - "linkedom": "^0.13.0" - }, - "engines": { - "node": ">= 12" - } - }, - "node_modules/@sindresorhus/slugify": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@sindresorhus/slugify/-/slugify-2.2.1.tgz", - "integrity": "sha512-MkngSCRZ8JdSOCHRaYd+D01XhvU3Hjy6MGl06zhOk614hp9EOAp5gIkBeQg7wtmxpitU6eAL4kdiRMcJa2dlrw==", - "license": "MIT", - "dependencies": { - "@sindresorhus/transliterate": "^1.0.0", - "escape-string-regexp": "^5.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "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==", - "license": "MIT", - "dependencies": { - "escape-string-regexp": "^5.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "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" - }, - "node_modules/acorn": { - "version": "8.17.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.17.0.tgz", - "integrity": "sha512-xRQbDb9BnwDafYNn6Vwl839DYVjqXYb1XVGtWAZ1kcDc6iwAL4hg3B1dZlRiuENFeO2H53gFG3in621AdERVAg==", - "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "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==", - "license": "MIT", - "dependencies": { - "acorn": "^8.11.0" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "license": "ISC", - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "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" - }, - "node_modules/asap": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", - "license": "MIT" - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "license": "MIT" - }, - "node_modules/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==", - "license": "MIT", - "dependencies": { - "is-alphabetical": "^2.0.0", - "is-alphanumerical": "^2.0.0", - "is-decimal": "^2.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/bcp-47-match": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/bcp-47-match/-/bcp-47-match-2.0.3.tgz", - "integrity": "sha512-JtTezzbAibu8G0R9op9zb3vcWZd9JF6M0xOYGPn0fNCd7wOpRB1mU2mH9T8gaBGbAAyIIVgB2G7xG0GP98zMAQ==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/bcp-47-normalize": { - "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==", - "license": "MIT", - "dependencies": { - "bcp-47": "^2.0.0", - "bcp-47-match": "^2.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "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==", - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "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/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==", - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "license": "MIT", - "dependencies": { - "fill-range": "^7.1.1" - }, - "engines": { - "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==", - "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" - }, - "engines": { - "node": ">= 6" - }, - "funding": { - "url": "https://github.com/cheeriojs/cheerio?sponsor=1" - } - }, - "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==", - "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" - }, - "engines": { - "node": ">= 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" - } - }, - "node_modules/chokidar": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", - "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", - "license": "MIT", - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - }, - "optionalDependencies": { - "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/commander": { - "version": "12.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", - "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", - "license": "MIT", - "engines": { - "node": ">=18" - } - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "license": "MIT" - }, - "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==", - "license": "MIT", - "bin": { - "cssesc": "bin/cssesc" - }, - "engines": { - "node": ">=4" - } - }, - "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/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/debug": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", - "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "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==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/dependency-graph": { - "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==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/dom-serializer": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", - "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", - "license": "MIT", - "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" - }, - "funding": { - "url": "https://github.com/cheeriojs/dom-serializer?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==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "license": "BSD-2-Clause" - }, - "node_modules/domhandler": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", - "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", - "license": "BSD-2-Clause", - "dependencies": { - "domelementtype": "^2.2.0" - }, - "engines": { - "node": ">= 4" - }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" - } - }, - "node_modules/domutils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", - "license": "BSD-2-Clause", - "dependencies": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - }, - "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" - } - }, - "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==", - "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==", - "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" - } - }, - "node_modules/encodeurl": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", - "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", - "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==", - "license": "BSD-2-Clause", - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/errno": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/errno/-/errno-1.0.0.tgz", - "integrity": "sha512-3zV5mFS1E8/1bPxt/B0xxzI1snsg3uSCIh6Zo1qKg6iMw93hzPANk9oBFzSFBFrwuVoQuE3rLoouAUfwOAj1wQ==", - "license": "MIT", - "dependencies": { - "prr": "~1.0.1" - }, - "bin": { - "errno": "cli.js" - } - }, - "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==", - "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==", - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/esm-import-transformer": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/esm-import-transformer/-/esm-import-transformer-3.0.5.tgz", - "integrity": "sha512-1GKLvfuMnnpI75l8c6sHoz0L3Z872xL5akGuBudgqTDPv4Vy6f2Ec7jEMKTxlqWl/3kSvNbHELeimJtnqgYniw==", - "license": "MIT", - "dependencies": { - "acorn": "^8.15.0" - } - }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "license": "BSD-2-Clause", - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/evaluate-value": { - "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==", - "license": "MIT", - "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/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "license": "MIT", - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "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==", - "license": "MIT", - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.8" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/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_modules/filesize": { - "version": "10.1.6", - "resolved": "https://registry.npmjs.org/filesize/-/filesize-10.1.6.tgz", - "integrity": "sha512-sJslQKU2uM33qH5nqewAwVB2QgR6w1aMNsYUp3aN5rMRyXEwJGmZvaWzeJFNTOXWlHQyBFCWrdj3fV/fsTOX8w==", - "license": "BSD-3-Clause", - "engines": { - "node": ">= 10.4.0" - } - }, - "node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "license": "MIT", - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/finalhandler": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.2.tgz", - "integrity": "sha512-aA4RyPcd3badbdABGDuTXCMTtOneUCAYH/gxoYRTZlIJdF0YPWuGqiAsIrhNnnqdXGswYk6dGujem4w80UJFhg==", - "license": "MIT", - "dependencies": { - "debug": "2.6.9", - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "on-finished": "~2.4.1", - "parseurl": "~1.3.3", - "statuses": "~2.0.2", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/finalhandler/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/finalhandler/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "license": "MIT" - }, - "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/fresh": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz", - "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "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", - "dependencies": { - "debug": "^4.1.1", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">= 10.x" - } - }, - "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==", - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/gray-matter": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.3.tgz", - "integrity": "sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==", - "license": "MIT", - "dependencies": { - "js-yaml": "^3.13.1", - "kind-of": "^6.0.2", - "section-matter": "^1.0.0", - "strip-bom-string": "^1.0.0" - }, - "engines": { - "node": ">=6.0" - } - }, - "node_modules/gray-matter/node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "license": "MIT", - "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==", - "license": "MIT", - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "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/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/htmlparser2": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-7.2.0.tgz", - "integrity": "sha512-H7MImA4MS6cw7nbyURtLPO1Tms7C5H602LRETv95z1MxO/7CP7rDVROehUYeYBUYEON94NXXDEPmZuq+hX4sog==", - "funding": [ - "https://github.com/fb55/htmlparser2?sponsor=1", - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "license": "MIT", - "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.2", - "domutils": "^2.8.0", - "entities": "^3.0.1" - } - }, - "node_modules/htmlparser2/node_modules/entities": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz", - "integrity": "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/http-equiv-refresh": { - "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==", - "license": "MIT", - "engines": { - "node": ">= 6" - } - }, - "node_modules/http-errors": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", - "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", - "license": "MIT", - "dependencies": { - "depd": "~2.0.0", - "inherits": "~2.0.4", - "setprototypeof": "~1.2.0", - "statuses": "~2.0.2", - "toidentifier": "~1.0.1" - }, - "engines": { - "node": ">= 0.8" - }, - "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==", - "license": "ISC" - }, - "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==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/is-alphanumerical": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz", - "integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==", - "license": "MIT", - "dependencies": { - "is-alphabetical": "^2.0.0", - "is-decimal": "^2.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "license": "MIT", - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-decimal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz", - "integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "license": "MIT", - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-json": { - "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" - }, - "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==", - "license": "MIT", - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-plain-object": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", - "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "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==", - "license": "MIT", - "engines": { - "node": ">=6.0" - } - }, - "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" - } - ], - "license": "MIT", - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/junk": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/junk/-/junk-3.1.0.tgz", - "integrity": "sha512-pBxcB3LFc8QVgdggvZWyeys+hnrNWg4OcZIU/1X59k5jQdLBlCsYGRQaz234SqoRLTCgMH00fY0xRJH+F9METQ==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/kleur": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", - "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", - "license": "MIT", - "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" - } - ], - "license": "MIT", - "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==", - "license": "MIT", - "dependencies": { - "commander": "^10.0.0" - }, - "bin": { - "liquid": "bin/liquid.js", - "liquidjs": "bin/liquid.js" - }, - "engines": { - "node": ">=16" - }, - "funding": { - "type": "opencollective", - "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" - }, - "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==", - "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==", - "license": "MIT", - "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" - } - ], - "license": "MIT", - "dependencies": { - "argparse": "^2.0.1", - "entities": "^4.5.0", - "linkify-it": "^5.0.2", - "mdurl": "^2.0.0", - "punycode.js": "^2.3.1", - "uc.micro": "^2.1.0" - }, - "bin": { - "markdown-it": "bin/markdown-it.mjs" - } - }, - "node_modules/markdown-it/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/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" - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "license": "MIT", - "engines": { - "node": ">= 8" - } - }, - "node_modules/micromatch": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", - "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", - "license": "MIT", - "dependencies": { - "braces": "^3.0.3", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/mime": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", - "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", - "license": "MIT", - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/mime-db": { - "version": "1.54.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", - "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", - "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==", - "license": "MIT", - "dependencies": { - "mime-db": "^1.54.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/minimatch": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", - "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "license": "MIT", - "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", - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/moo": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/moo/-/moo-0.5.2.tgz", - "integrity": "sha512-iSAJLHYKnX41mKcJKjqvnAN9sf0LMDTXDEvFv+ffuRR9a1MIuXLjMNL6EsnDHSkKLTWNqQQ5uo61P4EbU4NU+Q==", - "license": "BSD-3-Clause" - }, - "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" - }, - "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==", - "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" - } - ], - "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_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==", - "license": "MIT", - "dependencies": { - "acorn": "^8.14.1", - "acorn-walk": "^8.3.4", - "esm-import-transformer": "^3.0.3" - } - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "license": "MIT", - "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==", - "license": "BSD-2-Clause", - "dependencies": { - "a-sync-waterfall": "^1.0.0", - "asap": "^2.0.3", - "commander": "^5.1.0" - }, - "bin": { - "nunjucks-precompile": "bin/precompile" - }, - "engines": { - "node": ">= 6.9.0" - }, - "peerDependencies": { - "chokidar": "^3.3.0" - }, - "peerDependenciesMeta": { - "chokidar": { - "optional": true - } - } - }, - "node_modules/nunjucks/node_modules/commander": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", - "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", - "license": "MIT", - "engines": { - "node": ">= 6" - } - }, - "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==", - "license": "MIT", - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "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", - "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" - } - }, - "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==", - "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" - } - }, - "node_modules/parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/picocolors": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", - "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", - "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==", - "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/please-upgrade-node": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz", - "integrity": "sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==", - "license": "MIT", - "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==", - "license": "MIT", - "dependencies": { - "posthtml-parser": "^0.11.0", - "posthtml-render": "^3.0.0" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/posthtml-match-helper": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/posthtml-match-helper/-/posthtml-match-helper-2.0.3.tgz", - "integrity": "sha512-p9oJgTdMF2dyd7WE54QI1LvpBIkNkbSiiECKezNnDVYhGhD1AaOnAkw0Uh0y5TW+OHO8iBdSqnd8Wkpb6iUqmw==", - "license": "MIT", - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "posthtml": "^0.16.6" - } - }, - "node_modules/posthtml-parser": { - "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==", - "license": "MIT", - "dependencies": { - "htmlparser2": "^7.1.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/posthtml-render": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/posthtml-render/-/posthtml-render-3.0.0.tgz", - "integrity": "sha512-z+16RoxK3fUPgwaIgH9NGnK1HKY9XIDpydky5eQGgAFVXTCSezalv9U2jQuNV+Z9qV1fDWNzldcw4eK0SSbqKA==", - "license": "MIT", - "dependencies": { - "is-json": "^2.0.1" - }, - "engines": { - "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==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "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" - }, - "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==", - "license": "MIT", - "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", - "dependencies": { - "commander": "^12.1.0", - "fast-glob": "^3.3.2", - "postcss": "^8.4.47", - "postcss-selector-parser": "^7.0.0" - }, - "bin": { - "purgecss": "bin/purgecss.js" - } - }, - "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==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "license": "MIT", - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "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==", - "license": "MIT", - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.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" - } - ], - "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" - }, - "engines": { - "node": ">= 4" - }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" - } - }, - "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/section-matter": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz", - "integrity": "sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==", - "license": "MIT", - "dependencies": { - "extend-shallow": "^2.0.1", - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/semver": { - "version": "7.8.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.5.tgz", - "integrity": "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/semver-compare": { - "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" - }, - "node_modules/send": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/send/-/send-1.2.1.tgz", - "integrity": "sha512-1gnZf7DFcoIcajTjTwjwuDjzuz4PPcY2StKPlsGAQ1+YH20IRVrBaXSWmdjowTJ6u8Rc01PoYOGHXfP1mYcZNQ==", - "license": "MIT", - "dependencies": { - "debug": "^4.4.3", - "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", - "ms": "^2.1.3", - "on-finished": "^2.4.1", - "range-parser": "^1.2.1", - "statuses": "^2.0.2" - }, - "engines": { - "node": ">= 18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "license": "ISC" - }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/slugify": { - "version": "1.6.9", - "resolved": "https://registry.npmjs.org/slugify/-/slugify-1.6.9.tgz", - "integrity": "sha512-vZ7rfeehZui7wQs438JXBckYLkIIdfHOXsaVEUMyS5fHo1483l1bMdo0EDSWYclY0yZKFOipDy4KHuKs6ssvdg==", - "license": "MIT", - "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" - }, - "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==", - "license": "ISC", - "dependencies": { - "minipass": "^7.0.3" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/statuses": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", - "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/strip-bom-string": { - "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==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/tinyglobby": { - "version": "0.2.17", - "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.17.tgz", - "integrity": "sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==", - "license": "MIT", - "dependencies": { - "fdir": "^6.5.0", - "picomatch": "^4.0.4" - }, - "engines": { - "node": ">=12.0.0" - }, - "funding": { - "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==", - "license": "MIT", - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", - "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==", - "license": "MIT", - "dependencies": { - "cheerio": "1.0.0-rc.12" - } - }, - "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" - }, - "node_modules/unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/urlpattern-polyfill": { - "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==", - "license": "MIT", - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, - "node_modules/ws": { - "version": "8.21.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.21.0.tgz", - "integrity": "sha512-Vsp28b7DRcimFQvrqu2Wek3z1iYxDCWqHYB8Qsnk/S4RfaCQzPGPyBNuVjJV3cd6UiKtUtp6sNM77gWvzcCH+g==", - "license": "MIT", - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - } - } -} diff --git a/package.json b/package.json deleted file mode 100644 index 5d966b9..0000000 --- a/package.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "name": "adrianvictor-new", - "version": "1.0.0", - "description": "", - "main": "index.js", - "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" - } -} diff --git a/site/posts/android-developer-verification.html b/posts/android-developer-verification/index.html similarity index 65% rename from site/posts/android-developer-verification.html rename to posts/android-developer-verification/index.html index 0a68f7e..c1cfaea 100644 --- a/site/posts/android-developer-verification.html +++ b/posts/android-developer-verification/index.html @@ -1,13 +1,99 @@ ---- -postTitle: "On the Recent Changes to App Distribution Requirements in the Android System by Google." -postId: developer-verification -langKey: en -layout: post.njk -date: 2025-08-30 -background: android-jellybean.jpg -backgroundOpacity: .35 ---- -

Recap

+ + + + + + + Adrian Victor - On the Recent Changes to App Distribution Requirements in the Android System by Google. + + + + + + + + + + + + + + + + + + + + +
+ +
+
+

Adrian Victor:Blog

+ Fanasy is not a crime, find your castle in the sky. + +
+
+
+
+ +
+
+
+ + + +
+
+
+

On the Recent Changes to App Distribution Requirements in the Android System by Google.

+

Adrian Victor - 8/29/2025 (last edited in 4/23/2026)

+ + Also available in other languages: + +
  • + + português + +
  • + + +
    + + +

    Recap

    Android is that open-source operating system that works well for users and is loved by developers. Always known for breaking barriers and being open, expandable, versatile, and even friendly to power users–something not every system dares to be (iOS, Windows Phone). For a long time, Android was seen this way compared to its competitors: a breath of fresh air against the abusive practices of companies like Apple. But it seems the Android we've nurtured for two decades no longer fits in the pockets of Google executives; it is too free, creating ethical and technical barriers to the profitable exploitation path adopted by its developer.

    @@ -48,4 +134,10 @@ justify our API usage to their satisfaction. As such, the permission is now bloc

    We must watch how these policies are applied and how they affect the Android ecosystem. An inevitable consequence is that countless abandoned apps, perfectly functional without the new requirements, will disappear overnight. Not all old software connects to the internet, and not all represents a constant threat. Google is taking away the option for experienced users to take responsibility and say: "I know what I'm doing!", treating us as if they know what's best for everyone.

    -

    The commercial Android on phones is based on the AOSP, meaning Android's core remains open, and Google hasn't taken that from users yet. I plan to write another post explaining how to regain control of your device through system modifications, from the simplest, safest, most stable methods to advanced approaches, if you feel confident.

    \ No newline at end of file +

    The commercial Android on phones is based on the AOSP, meaning Android's core remains open, and Google hasn't taken that from users yet. I plan to write another post explaining how to regain control of your device through system modifications, from the simplest, safest, most stable methods to advanced approaches, if you feel confident.

    +
    +
    +
    +
    + + \ No newline at end of file diff --git a/site/posts/instalando-fl-studio-no-linux.html b/posts/instalando-fl-studio-no-linux/index.html similarity index 66% rename from site/posts/instalando-fl-studio-no-linux.html rename to posts/instalando-fl-studio-no-linux/index.html index 1431010..437cd30 100644 --- a/site/posts/instalando-fl-studio-no-linux.html +++ b/posts/instalando-fl-studio-no-linux/index.html @@ -1,18 +1,117 @@ ---- -postTitle: "Instalando FL Studio no Linux." -postId: fl-linux-install -postVideoLink: "https://www.youtube.com/watch?v=6bnNAnSY9Uo" -postVideoTitle: "Como instalar o FL Studio no Linux?" -postVideoImage: "/thumbnails/fl_studio_linux.png" -postVideoWebsite: "YouTube" -postVideoDuration: "5:53" -langKey: pt -layout: post.njk -date: 2026-04-20 -background: fl_screenshot_no_text.png -backgroundOpacity: .35 ---- -

    Prólogo

    + + + + + + + Adrian Victor - Instalando FL Studio no Linux. + + + + + + + + + + + + + + + + + + + + +
    + +
    +
    +

    Adrian Victor:Blog

    + Fanasy is not a crime, find your castle in the sky. + +
    +
    +
    +
    + +
    +
    +
    + + + +
    +
    +
    +

    Instalando FL Studio no Linux.

    +

    Adrian Victor - 4/19/2026 (editado por último em 4/23/2026)

    + + Também disponível em outros idiomas: + +
  • + + english + +
  • + + +
    + + + + + + +

    Prólogo

    Desde que mudei permanentemente para o Linux em 2024, venho me impressionando com a capacidade inabalável da comunidade open-source de trazer a vida no Linux softwares complexos feitos originalmente para Windows. Entretanto, um dos programas amaldiçoados com os mais ímpetos e abstratos erros na velha guarda do Wine é o FL Studio, caracteristica essa que fez com que eu, por muito tempo, achasse que a DAW da Image-Line não iria rodar de jeito nenhum no sistema do penguim.

    Acontece que o FL roda no Linux, e roda muito bem, considerando a sua complexidade. Descartando uns problemas visuais, algumas VSTs que simplesmente não rodam e uma gambiarra para rodar plugins 32-bits, a experiência de usar o FL Studio no Linux é bem sólida. Parece que a Valve, Wine e comunidade open-source não estão para brincadeira mesmo.

    Antes de ir às formalidades, gostaria de definir o escopo desse tutorial. Faço ele com tudo o que cabe na minha memória recente trabalhando com o FL no Linux. Mas também não é uma postagem estática; se estiver faltando alguma coisa me mande um e-mail e eu atualizo.

    @@ -61,4 +160,10 @@ backgroundOpacity: .35

    Conclusões

    Não sou a pessoa mais apta para dizer até onde a usabilidade da DAW se extende no Linux; não sou nem de longe um usuário avançado do FL. Mas, a título de informação, consegui produzir a faixa Velkommen inteiramente no sistema do penguim e não tenho a intenção de voltar para o Windows.

    É mesmo inconveniente quando um plugin ou outro não funciona, quando eu tenho que criar um Fruity Wrapper antes de usar um plugin 32bits, ou quando eu penso que talvez a DAW possa performar um pouco melhor nativamente no Windows. Porém, para mim, é um preço muito justo a se pagar para misturar nas minhas músicas um pouco desse suco de ideologia que é me desafiar a não usar o sistema da Microsoft.

    -

    Espero que você também encontre esse conforto—não na conveniência, mas em desafiar o molde com intenção. Excentricidade digna de um artista.

    \ No newline at end of file +

    Espero que você também encontre esse conforto—não na conveniência, mas em desafiar o molde com intenção. Excentricidade digna de um artista.

    +
    +
    +
    +
    + + \ No newline at end of file diff --git a/site/posts/installing-fl-studio-on-linux.html b/posts/installing-fl-studio-on-linux/index.html similarity index 68% rename from site/posts/installing-fl-studio-on-linux.html rename to posts/installing-fl-studio-on-linux/index.html index 623c1bf..950c57f 100644 --- a/site/posts/installing-fl-studio-on-linux.html +++ b/posts/installing-fl-studio-on-linux/index.html @@ -1,13 +1,99 @@ ---- -postTitle: "Installing FL Studio on linux." -postId: fl-linux-install -langKey: en -layout: post.njk -date: 2026-04-20 -background: fl_screenshot_no_text.png -backgroundOpacity: .35 ---- -

    Prologue

    + + + + + + + Adrian Victor - Installing FL Studio on linux. + + + + + + + + + + + + + + + + + + + + +
    + +
    +
    +

    Adrian Victor:Blog

    + Fanasy is not a crime, find your castle in the sky. + +
    +
    +
    +
    + +
    +
    +
    + + + +
    +
    +
    +

    Installing FL Studio on linux.

    +

    Adrian Victor - 4/19/2026 (last edited in 4/23/2026)

    + + Also available in other languages: + +
  • + + português + +
  • + + +
    + + +

    Prologue

    Since I permanently moved to Linux in 2024, I have been impressed by the unwavering ability of the open-source community to bring to life in Linux complex software originally made for Windows. However, one of the programs cursed with the most stubborn and abstract errors in the old guard of Wine is FL Studio, a characteristic that made me, for a long time, think that Image-Line's DAW would not run at all on the penguin's system.

    It turns out that FL runs on Linux, and runs very well, considering its complexity. Disregarding some visual problems, some VSTs that simply don't run, and a workaround to run 32-bit plugins, the experience of using FL Studio on Linux is quite solid. It seems that Valve, Wine, and the open-source community are not messing around.

    Before getting into the formalities, I would like to define the scope of this tutorial. I'm making it with everything that fits in my recent memory working with FL on Linux. But it's also not a static post; if something is missing, send me an email and I'll update it.

    @@ -59,4 +145,10 @@ backgroundOpacity: .35

    Conclusions

    I'm not the most apt person to say how far the DAW's usability extends on Linux; I'm far from an advanced FL user. But, for your information, I was able to produce the track Velkommen entirely on the penguin's system and have no intention of going back to Windows.

    It's really inconvenient when one plugin or another doesn't work, when I have to create a Fruity Wrapper before using a 32-bit plugin, or when I think that maybe the DAW could perform a little better natively on Windows. However, for me, it's a very fair price to pay to mix into my music a little bit of that ideology juice that is challenging myself not to use Microsoft's system.

    -

    I hope you also find that comfort—not in convenience, but in challenging the mold with intention. Eccentricity worthy of an artist.

    \ No newline at end of file +

    I hope you also find that comfort—not in convenience, but in challenging the mold with intention. Eccentricity worthy of an artist.

    +
    +
    +
    +
    + + \ No newline at end of file diff --git a/site/posts/verificacao-de-desenvolvedor-no-android.html b/posts/verificacao-de-desenvolvedor-no-android/index.html similarity index 70% rename from site/posts/verificacao-de-desenvolvedor-no-android.html rename to posts/verificacao-de-desenvolvedor-no-android/index.html index f39b84a..9875489 100644 --- a/site/posts/verificacao-de-desenvolvedor-no-android.html +++ b/posts/verificacao-de-desenvolvedor-no-android/index.html @@ -1,13 +1,99 @@ ---- -postTitle: "Sobre as recentes mudanças nos requisitos de distribuição de apps no sistema Android feitas pela Google." -postId: developer-verification -layout: post.njk -date: 2025-08-30 -background: android-jellybean.jpg -backgroundOpacity: .35 -langKey: pt ---- -

    Recapitulando

    + + + + + + + Adrian Victor - Sobre as recentes mudanças nos requisitos de distribuição de apps no sistema Android feitas pela Google. + + + + + + + + + + + + + + + + + + + + +
    + +
    +
    +

    Adrian Victor:Blog

    + Fanasy is not a crime, find your castle in the sky. + +
    +
    +
    +
    + +
    +
    +
    + + + +
    +
    +
    +

    Sobre as recentes mudanças nos requisitos de distribuição de apps no sistema Android feitas pela Google.

    +

    Adrian Victor - 8/29/2025 (editado por último em 4/23/2026)

    + + Também disponível em outros idiomas: + +
  • + + english + +
  • + + +
    + + +

    Recapitulando

    Android é aquele sistema operacional open-source que funciona bem para os usuários, e que os desenvolvedores amam. Sempre conhecido por quebrar barreiras e por ser aberto, expansível, versátil e até amigável com os mais nerds, coisa que nem todo sistema tem a cara e coragem de ser (iOS, Windows Phone). É assim que, por muito tempo, o Android foi visto em relação aos seus concorrentes: Um suspiro de ar puro em relação às práticas abusivas de empresas como a Apple. Mas parece que o Android que cultivamos por duas décadas não cabe mais no bolso dos executivos da Google, é livre demais, e isso criou barreiras éticas e técnicas no lucrativo caminho de exploração adotado pela sua desenvolvedora.

    @@ -47,4 +133,10 @@ langKey: pt

    Devemos ficar atentos a como essas novas políticas vão ser aplicadas, e como as mesmas afetarão o ecossistema do Android. Uma consequência inevitável das mudanças é que um número inestimável de aplicações abandonadas pelos desenvolvedores, que, se não fosse pelos novos requisitos, seriam perfeitamente funcionais serão perdidas de um dia para o outro. Nem todo software antigo se conecta à internet, nem todo software antigo representa um perigo constante ao usuário. A Google está tirando do usuário experiente a opção de assumir a responsabilidade e dizer: "Eu sei o que estou fazendo!", nos segurando como crianças, como se soubessem o que é melhor para todos.

    -

    O Android comercializado nos celulares é baseado no AOSP, o que significa que a força vital do Android é aberta, e isso a Google ainda não tirou dos usuários. Portanto pretendo fazer um outro post explicando como você pode recuperar o controle do seu dispositivo por meio de modificações no sistema, da forma mais simples, segura e estável possível, até as formas mais avançadas, caso você se sinta confiante.

    \ No newline at end of file +

    O Android comercializado nos celulares é baseado no AOSP, o que significa que a força vital do Android é aberta, e isso a Google ainda não tirou dos usuários. Portanto pretendo fazer um outro post explicando como você pode recuperar o controle do seu dispositivo por meio de modificações no sistema, da forma mais simples, segura e estável possível, até as formas mais avançadas, caso você se sinta confiante.

    +
    +
    +
    +
    + + \ No newline at end of file diff --git a/pt/blog/index.html b/pt/blog/index.html new file mode 100644 index 0000000..41dbc34 --- /dev/null +++ b/pt/blog/index.html @@ -0,0 +1,107 @@ + + + + + + + Adrian Victor + + + + + + + + + + + + + + + + + + + + +
    + +
    +
    +

    Adrian Victor:Blog

    + Fanasy is not a crime, find your castle in the sky. + +
    +
    +
    +
    + +
    +
    +
    + +
    +

    Listando Postagens do Blog:

    + +
    +
    +
    + + \ No newline at end of file diff --git a/pt/index.html b/pt/index.html new file mode 100644 index 0000000..2389289 --- /dev/null +++ b/pt/index.html @@ -0,0 +1,274 @@ + + + + + + + Adrian Victor + + + + + + + + + + + + + + + + + + + + +
    + +
    +
    +

    Adrian Victor

    + Fanasy is not a crime, find your castle in the sky. + +
    +
    +
    +
    + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +

    Bem-vindo

    +

    Parece que você encontrou meu website! Olá, sou Adrian Victor (ou tenkuma), um cara brasileiro que gosta de mexer com computadores, programas de computadores e enimatpirtlitemídios.

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

    Sobre Mim

    +

    + Meu nome é Adrian Victor, mas on-line eu uso o nickname tenkuma. Estou no último ano do ensino médio e estudo informática. Meus hobbies são escutar e produzir música, programação, selfhosting, Linux, e muito mais. +

    +

    Tenkuma, ou 天くま em japonês, significa urso celestial e foi um nome dado a mim por um amigo que eu já perdi contato há muito tempo. Sakata se foi, mas o nome ficou e se tornou parte integral da personalidade do meu eu digital até hoje.

    +

    Redes Sociais e Contato

    +

    + Estou publicamente disponível no Mastodon (@tenkuma@mstdn.social), + GitHub (adrianvic), + Disroot Git (adrianvictor), + Discord (@adrianvic), + YouTube (@adrianvictor8), + BitView (tenkuma), + Modrinth (tenkumabear) + e XMPP (adrianvictor@disroot.org). +

    +

    Você pode enviar um correio eletrônico para (adrianvictor@disroot.org) ou me contactar por qualquer outro meio citado acima. Para assuntos relativos a projetos específicos, verifique o campo de contato do projeto, caso não haja um adicione +nomedoprojeto ao meu endereço de E-mail (exemplo: adrianvictor+projetolegal@disroot.org).

    +
    + +
    +
    +

    Música

    +

    Sempre amei música, e tenho achado produção musical algo muito interessante ultimamente. Publico minhas músicas como tenkuma, junto com meus amigos formei a Margarina Records—uma label amadora.

    +

    Você pode conferir minhas músicas mais recentes no meu perfil do Genius.

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

    Vídeos

    +

    Eu faço vídeos para o meu canal do YouTube. Não posto regularmente; não tem calendário—apenas eu mostrando alguma coisa em vídeo.

    +
    +
    + + + +
    + +
    +
    +

    Software

    +

    Estou estudando informática no IFC (SC, Brazil) mas no meu tempo livre tenho projetos como programas de computador, plugins para Minecraft, servidores Minecraft, etc... Todos meus projetos públicos estão disponíveis no meu perfil do GitHub.

    + +
    +
    +
    + +
    +
    +
    Jamfish
    + + + +
    +
    +

    Reprodutor de música nativo para dispositivos Android que se conecta a servidores de mídia Jellyfin. O código é baseado no repositório arquivado do Gelli, que por sua vez se baseia em uma versão antiga do Phonograph.

    +
    +
    + + +
    +
    +
    ItemEconomy
    + + + +
    +
    +

    Este plugin PaperMC integra-se ao VaultUnlocked para fornecer um sistema de economia único baseado em itens para o seu servidor Minecraft. Em vez de depender apenas de saldos virtuais, os jogadores usam itens do jogo como moeda física, adicionando uma camada de imersão e realismo à sua economia.

    +
    +
    + + +
    +
    +
    Eye of Nemesis
    + + + +
    +
    +

    Eye of Nemesis é um plugin que permite aos administradores de servidores escrever políticas que negarão ou permitirão (lista negra/branca) que os jogadores façam coisas específicas com base no valor dos nós.

    +
    +
    + + +
    +
    +
    PestoWiki
    + + + +
    +
    +

    Cliente personalizável multiplataforma para wikis escrito em Python usando PySide6 (QT).

    +
    +
    + +
    +
    +
    + +
    +
    + + \ No newline at end of file diff --git a/pt/misc/88x31/index.html b/pt/misc/88x31/index.html new file mode 100644 index 0000000..11c8f59 --- /dev/null +++ b/pt/misc/88x31/index.html @@ -0,0 +1,1589 @@ + + + + + + + Adrian Victor - 88x31 + + + + + + + + + + + + + + + + + + + + +
    + +
    +
    +

    Adrian Victor

    + Fanasy is not a crime, find your castle in the sky. + +
    +
    +
    +
    + +
    +
    +
    + + +
    +
    +

    88x31

    +

    Essa é uma coleção de GIFs e imagens 88x31 que eu baixei pela internet.

    +
    +
    +

    Feitos por mim

    +
    + + + +
    +

    Outros

    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +
    + + \ No newline at end of file diff --git a/pt/misc/bookmarks/index.html b/pt/misc/bookmarks/index.html new file mode 100644 index 0000000..402eb0a --- /dev/null +++ b/pt/misc/bookmarks/index.html @@ -0,0 +1,370 @@ + + + + + + + Adrian Victor + + + + + + + + + + + + + + + + + + + + +
    + +
    +
    +

    Adrian Victor

    + Fanasy is not a crime, find your castle in the sky. + +
    +
    +
    +
    + +
    +
    +
    + + +
    +
    +

    Favoritos

    +

    Essa é a lista de links favoritos curada por mim, dividida em seções para facilitar a navegação ;-)

    + + + +
    +
    + +
    +

    Downloads

    + +
    + + + + + + + + + +
    + +
    + +
    +
    MalwareWatch
    +
    +
    + Website do Enderman. Tem download de vários softwares úteis, imagens de sistemas operacionais e malware. +
    + +
    +
    +
    + +
    +
    Free Images
    +
    +
    + Pesquise por milhões de imagens, artes e vetores. Todas as imagens são de domínio público ou sobre CC0. Livre para baixar e livre para usar. +
    + +
    +
    +
    + +
    +
    88x31
    +
    +
    + Essa é uma coleção de mais de 6500 GIFs e PNGs no formato 88x31. No final dos anos 1990 e começo dos 2000 era muito comum usar essas imagens no seu site pessoal. +
    + + + + + + + + + + + +
    +
    +
    + +
    + +
    +

    Perfis

    + +
    + +
    +
    Mr. Nando
    +
    +
    + Meu amigo Fernando, ele faz músicas e vídeos de Minecraft e speedrun. +
    + +
    +
    +
    + +
    +
    Endermanch
    +
    +
    + Andrew é um engenheiro de software, entusiasta de malware e, mais importante, uma estranha e alta criatura. Cresci com os seus videos e ele é uma grande inspiração para mim. +
    + +
    +
    +
    + +
    + +
    +

    Ferramentas

    + +
    + +
    +
    Excalidraw
    +
    +
    + Quadro branco sem distrações. +
    + +
    +
    +
    + +
    +
    Postimages
    +
    +
    + Gere links permantes de suas imagens para forums, blogs e redes sociais. +
    + +
    +
    +
    + +
    +
    uBlock Origin
    +
    +
    + Um bloqueador eficiente para Chromium e Firefox. Rápido e pequeno. +
    + + + + + + + +
    +
    +
    + +
    + +
    +

    Jogos

    + +
    + + + + + + + + + +
    + +
    + +
    +
    SteamGridDB
    +
    +
    + Baixe e compartilhe recursos visuais de jogos e personalize sua biblioteca de jogos. +
    + +
    +
    +
    + +
    + +
    +

    Música

    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    +
    CVGM Radio
    +
    +
    + Seu lar para música relacionada a video games, demo scene e computadores. +
    + +
    +
    +
    + +
    + +
    +

    Pirataria

    + +
    + + + + + +
    + +
    + +
    +
    Nyaa
    +
    +
    + Um tracker de animes, mangás e coisas relacionadas. +
    + + + + + + + +
    +
    +
    + +
    +
    Lucida
    +
    +
    + Com Lucida, você pode baixar musica diretamente de Qobuz, Tidal, Soundcloud, Deezer, Amazon Music, e Yandex Music em alta qualidade de graça. Sem pegadinhas, sem anúncios obrigatórios, sem enrolação. Como que funciona? +
    + +
    +
    +
    + +
    +
    DoubleDouble
    +
    +
    + Baixe musica diretamente de Qobuz, Tidal, Soundcloud, Deezer, Amazon Music, e Yandex Music em alta qualidade de graça. +
    + +
    +
    +
    + +
    + +
    +
    +
    + + \ No newline at end of file diff --git a/pt/misc/index.html b/pt/misc/index.html new file mode 100644 index 0000000..7ddaed8 --- /dev/null +++ b/pt/misc/index.html @@ -0,0 +1,113 @@ + + + + + + + Adrian Victor + + + + + + + + + + + + + + + + + + + + +
    + +
    +
    +

    Adrian Victor:Misc

    + Fanasy is not a crime, find your castle in the sky. + +
    +
    +
    +
    + +
    +
    +
    + +
    +

    Miscelâneo

    +
      +
      + + + +
      + + 88x31 + +
      + +
      + + Minha coleção de GIFs e imagens 88x31. +
      + + + +
      + + Favoritos + +
      + +
      + + Minha coleção de sites e páginas interessantes. +
      + +
      +
    +
    +
    +
    + + \ No newline at end of file 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/index.html similarity index 58% rename from site/school/api-rodrigoribeiro.html rename to school/api-rodrigoribeiro/index.html index dcf84df..c1735de 100644 --- a/site/school/api-rodrigoribeiro.html +++ b/school/api-rodrigoribeiro/index.html @@ -1,7 +1,78 @@ ---- -pageTitle: "Demonstração da API do Prof. Rodrigo Ribeiro" ---- - + +
    + +
    +
    +

    Adrian Victor:Trabalhos

    + Fanasy is not a crime, find your castle in the sky. + +
    +
    +
    +
    + +
    +
    +
    +
    -

    {{pageTitle}}

    +

    Demonstração da API do Prof. Rodrigo Ribeiro

    A API do Prof. Rodrigo Ribeiro permite que o client envie uma imagem, assim retornando o resultado de uma leitura óptica realizada sobre a mesma com inteligência artificial. Esse client lê o resultado e o mostra de forma simples para o usuário.

    Mais informações sobre a API podem ser encontradas no seu website.

    Token: Ausente
    @@ -128,4 +199,8 @@ pageTitle: "Demonstração da API do Prof. Rodrigo Ribeiro" apiDiv.classList.toggle('selected'); loginDiv.classList.toggle('selected'); } - \ No newline at end of file + +
    +
    + + \ No newline at end of file diff --git a/site/school/guia-ifc-novatos.html b/school/guia-ifc-novatos/index.html similarity index 66% rename from site/school/guia-ifc-novatos.html rename to school/guia-ifc-novatos/index.html index fe765bd..8d43e22 100644 --- a/site/school/guia-ifc-novatos.html +++ b/school/guia-ifc-novatos/index.html @@ -1,13 +1,90 @@ ---- -postTitle: "Guia para novatos no IFC." -langKey: pt -layout: post.njk -date: 2026-01-13 -background: ifc.jpg -backgroundOpacity: .35 -title: Adrian Victor:Escola ---- - + +
    + +
    +
    +

    Adrian Victor:Escola

    + Fanasy is not a crime, find your castle in the sky. + +
    +
    +
    +
    + +
    +
    +
    + + + +
    +
    +
    +

    Guia para novatos no IFC.

    +

    Adrian Victor - 1/12/2026 (editado por último em )

    + +
    + + + + +
    + +
    +
    +

    Adrian Victor:Trabalhos

    + Fanasy is not a crime, find your castle in the sky. + +
    +
    +
    +
    + +
    +
    +
    + + + +
    +
    +
    +

    Telnet

    +

    Adrian Victor & Arthur Borges - 8/26/2025 (last edited in )

    + +
    + + + +

    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/index.html similarity index 64% rename from site/school/telnet-pt.html rename to school/telnet-pt/index.html index a798ccc..c6f101a 100644 --- a/site/school/telnet-pt.html +++ b/school/telnet-pt/index.html @@ -1,12 +1,90 @@ ---- -postTitle: "Telnet" -layout: post.njk -date: 2025-08-27 -background: redes.jpg -authors: Adrian Victor & Arthur Borges -langKey: pt ---- - + + + + + + + Adrian Victor - Telnet + + + + + + + + + + + + + + + + + + + + +
    + +
    +
    +

    Adrian Victor:Trabalhos

    + Fanasy is not a crime, find your castle in the sky. + +
    +
    +
    +
    + +
    +
    +
    + + + +
    +
    +
    +

    Telnet

    +

    Adrian Victor & Arthur Borges - 8/26/2025 (editado por último em )

    + +
    + + +

    O que é o protocolo, sua função e histórico

    O Telnet (do inglês TELecommunication NETwork) é um protocolo de rede da pilha TCP/IP que permite a comunicação remota entre computadores em modo texto. Sua @@ -100,3 +178,10 @@ Pronto para receber comandos.

    + + + +
    +
    + + \ No newline at end of file diff --git a/site/_data/i18n.cjs b/site/_data/i18n.cjs deleted file mode 100644 index 3757673..0000000 --- a/site/_data/i18n.cjs +++ /dev/null @@ -1,211 +0,0 @@ -const globalValues = { - mastodon: { url: "https://mstdn.social/@tenkuma", username: "@tenkuma@mstdn.social" }, - github: { url: "https://github.com/adrianvic", username: "adrianvic" }, - disrootGit: { url: "https://git.disroot.org/adrianvictor", username: "adrianvictor" }, - discord: { url: "https://discord.com/users/681643259764015116", username: "@adrianvic" }, - youtube: { url: "https://www.youtube.com/@adrianvictor8", username: "@adrianvictor8" }, - bitview: { url: "https://www.bitview.net/user/tenkuma", username: "tenkuma" }, - modrinth: { url: "https://modrinth.com/user/tenkumabear", username: "tenkumabear" }, - xmpp: { url: "xmpp:adrianvictor@disroot.org", username: "adrianvictor@disroot.org" }, - email: "adrianvictor@disroot.org", - margarinaRecordsWebsite: "https://margarina-records.rf.gd", - genius: { url: "https://genius.com/tenkuma", username: "tenkuma" }, - homeVideoLink: "https://www.youtube.com/watch?v=6bnNAnSY9Uo", - homeVideoImage: "/thumbnails/fl_studio_linux.png", - homeVideoWebsite: "YouTube", - homeVideoDuration: "5:53", - homeSongTitle: "Velkommen", - homeSongLink: "https://margarina.bandcamp.com/album/velkommen", - homeSongImage: "/songs/velkommen.jpg", - homeSongWebsite: "Bandcamp", - homeSongDuration: "5:39", - homeSongAccent: "#482948", - -}; - -module.exports = { - global: globalValues, - en: { - language: "english", - availableInOtherLanguages: "Also available in other languages", - pt: "portuguese", - en: "english", - home: "home", - welcome: "welcome", - homeWelcomeParagraph: "It seems that you have found my website! Hi, I am Adrian Victor (or tenkuma), a Brazilian guy who likes to mess around with computers, computer programs and enimatpyrtlyhtemids.", - socialsAndContact: "socials and contact", - aboutMe: "about me", - myMusic: "my music", - myVideos: "my videos", - mySoftware: "my software", - homeAboutMeParagraph: ` - I'm tenkuma, the coolest bear to ever exist in this world (not really). I mean, seriously (I already said it's not true). I don't even make jokes, all I said is true (DUDE STOP DIMMING MY TEXT UR NOT COOL). I'm in high school's last year, also studying computing. Sometimes I'm no one, sometimes I'm a programmer, musician (marked as: stretch) or am selfhosting my own stuff. But I'm always against the big-tech oligarchy! - `, - 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.`, - homeSocialsAndContactParagraph: ` - I'm publicly available at Mastodon (${globalValues.mastodon.username}), - GitHub (${globalValues.github.username}), - Disroot Git (${globalValues.disrootGit.username}), - Discord (${globalValues.discord.username}), - YouTube (${globalValues.youtube.username}), - BitView (${globalValues.bitview.username}), - Modrinth (${globalValues.modrinth.username}) - and XMPP (${globalValues.xmpp.username}). - `, - homeSocialsAndContactParagraphTwo: `You can message me on my E-mail (${globalValues.email}), or feel free to get in touch through any of the other places mentioned above. For project-specific subjects, check for the project's contact field or if there's no such field add +projectname to my E-mail address (example: adrianvictor+coolproject@disroot.org).

    -

    Please, avoid reaching me through ways not mentioned above :)`, - homeMyMusicParagraph: `I looooove music. Like really. You can find a lot of playlists I made here. My songs can be found in any major streaming service.`, - homeMyMusicParagraphTwo: `Did you know, that instead of using your subscription money to pay artists, Spotify is massively underpaying artists and instead funding artificial inteligence for war?`, - homeMyVideoParagraph: "Sometimes I make videos for my YouTube channel. Videos do not come regularly, there's no schedule, just for fun.", - homeMyVideoRandomVideoParagraph: "Here's a random video I'm proud of:", - homeVideoTitle: "Installing FL Studio on linux.", - homeMySoftwareParagraph: `Anything that is public should be in my GitHub profile.`, - pestoWikiLogoAlt: "A digital drawing of the top of a fork with a black outline, in the right a text in white says 'Pesto Wiki'", - homeMySoftwareNotableProjects: "These are my most notable projects:", - blogTitle: "Listing blog posts:", - eyeofnemesisProjectDesctiption: "Eye of Nemesis is a plugin that allows server admins to write policies that will deny or allow (black/whitelist) players to do specific things based on the value of nodes.", - jamfishProjectDesctiption: "Native music player for Android devices that connects to Jellyfin media servers. The code is based on Gelli's archived repository, which is based on an old version of Phonograph.", - pestoProjectDesctiption: "Multi-platform customizable client for wikis written in Python using PySide6 (QT).", - itemeconomyProjectDesctiption: "This PaperMC plugin integrates with VaultUnlocked to provide a unique, item-based economy system for your Minecraft server. Instead of relying solely on virtual balances, players use in-game items as physical currency, adding a layer of immersion and realism to your economy.", - by: "by", - back: "back", - hideBackground: "Hide background", - disableSoundEffects: "Disable sound effects", - options: "Options", - alsoAvailableAsVideo: "Also available as video", - websiteDescription: "Personal website/blog of Adrian Victor.", - miscellaneous: "Miscellaneous", - i88x31hover: "Click to expand", - lastEditedIn: "last edited in", - 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" - }, - pt: { - language: "português", - availableInOtherLanguages: "Também disponível em outros idiomas", - pt: "português", - en: "inglês", - home: "início", - welcome: "bem-vindo", - homeWelcomeParagraph: "Parece que você encontrou meu website! Olá, sou Adrian Victor (ou tenkuma), um cara brasileiro que gosta de mexer com computadores, programas de computadores e enimatpirtlitemídios.", - socialsAndContact: "redes sociais e contato", - aboutMe: "sobre mim", - myMusic: "música", - myVideos: "vídeos", - mySoftware: "software", - homeAboutMeParagraph: ` - Eu sou tenkuma, o urso mais legal que existiu nesse mundo (não mesmo). Tipo, sério (não é não!). Eu nem gosto de fazer piadas, tudo o que eu disse é verdade (CARA PARA DE APAGAR MEU TEXTO VC NÃO É LEGAL). Estou no último ano do ensino médio, também estudando informática. Às vezes eu não sou ninguém; às vezes eu sou programador, músico (marcado como: forçando a barra) ou estou fazendo selfhosting. Mas sempre estou contra a oligarquía das big-techs. - `, - homeAboutMeParagraphTwo: `Tenkuma, ou 天くま em japonês, significa urso celestial e foi um nome dado a mim por um amigo que eu já perdi contato há muito tempo. Sakata se foi, mas o nome ficou e se tornou parte integral da personalidade do meu eu digital até hoje.`, - homeSocialsAndContactParagraph: ` - Estou publicamente disponível no Mastodon (${globalValues.mastodon.username}), - GitHub (${globalValues.github.username}), - Disroot Git (${globalValues.disrootGit.username}), - Discord (${globalValues.discord.username}), - YouTube (${globalValues.youtube.username}), - BitView (${globalValues.bitview.username}), - Modrinth (${globalValues.modrinth.username}) - e XMPP (${globalValues.xmpp.username}). - `, - homeSocialsAndContactParagraphTwo: `Você pode enviar um correio eletrônico para (${globalValues.email}) ou me contactar por qualquer outro meio citado acima. Para assuntos relativos a projetos específicos, verifique o campo de contato do projeto, caso não haja um adicione +nomedoprojeto ao meu endereço de E-mail (exemplo: adrianvictor+projetolegal@disroot.org).`, - homeMyMusicParagraph: `Eu aaaaaamo música. De verdade. Você pode encontrar um monte das minhas playlists aqui, junto com o que eu mais escuto recentemente. Minhas músicas podem ser encontradas em qualquer dos streamings mais conhecidos.`, - homeMyMusicParagraphTwo: `Você sabia que, ao invés de usar o dinheiro da sua assinatura pra pagar artistas, o Spotify está pagando pouco para os artistas e investindo em inteligência artificial para a guerra?`, - homeMyVideoParagraph: "De vez enquando eu faço vídeos para o YouTube. Não tenho nenhum compromisso com constância, os vídeos são feitos por diversão.", - homeMyVideoRandomVideoParagraph: "Aqui está um vídeo aleatório que eu me orgulho de ter postado:", - homeVideoTitle: "Como instalar o FL Studio no Linux?", - homeMySoftwareParagraph: `Todos meus projetos públicos estão disponíveis no meu perfil do GitHub.`, - pestoWikiLogoAlt: "Um desenho digital do topo de um garfo com uma borda preta, à direita um texto branco diz 'Pesto Wiki'", - homeMySoftwareNotableProjects: "Esses são meus projetos mais notáveis:", - blogTitle: "Listando postagens do blog:", - eyeofnemesisProjectDesctiption: "Eye of Nemesis é um plugin que permite aos administradores de servidores escrever políticas que negarão ou permitirão (lista negra/branca) que os jogadores façam coisas específicas com base no valor dos nós.", - jamfishProjectDesctiption: "Reprodutor de música nativo para dispositivos Android que se conecta a servidores de mídia Jellyfin. O código é baseado no repositório arquivado do Gelli, que por sua vez se baseia em uma versão antiga do Phonograph.", - pestoProjectDesctiption: "Cliente personalizável multiplataforma para wikis escrito em Python usando PySide6 (QT).", - itemeconomyProjectDesctiption: "Este plugin PaperMC integra-se ao VaultUnlocked para fornecer um sistema de economia único baseado em itens para o seu servidor Minecraft. Em vez de depender apenas de saldos virtuais, os jogadores usam itens do jogo como moeda física, adicionando uma camada de imersão e realismo à sua economia.", - by: "por", - back: "voltar", - hideBackground: "Esconder imagem de fundo", - disableSoundEffects: "Desabilitar efeitos sonoros", - options: "Opções", - alsoAvailableAsVideo: "Também disponível em vídeo", - websiteDescription: "Website/blog pessoal de Adrian Victor.", - miscellaneous: "Miscelâneo", - i88x31hover: "Clique para expandir", - lastEditedIn: "editado por último em", - 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" - } -}; \ No newline at end of file diff --git a/site/_data/languages.cjs b/site/_data/languages.cjs deleted file mode 100644 index 322d425..0000000 --- a/site/_data/languages.cjs +++ /dev/null @@ -1 +0,0 @@ -module.exports = ["en", "pt"]; \ No newline at end of file diff --git a/site/_includes/base.njk b/site/_includes/base.njk deleted file mode 100644 index 27cee06..0000000 --- a/site/_includes/base.njk +++ /dev/null @@ -1,63 +0,0 @@ - - - - - - - Adrian Victor{% if pageTitle or postTitle %} - {{ pageTitle or postTitle }}{% endif %} - - - - - - - - - - - - - - - - - - - - {% poison %} - - - - - - -

    - {{ i18n[langKey].bearAlt }} - - {% include "header.njk" %} - -
    - {{ content | safe }} -
    -
    - - \ No newline at end of file diff --git a/site/_includes/header.njk b/site/_includes/header.njk deleted file mode 100644 index a99e89c..0000000 --- a/site/_includes/header.njk +++ /dev/null @@ -1,53 +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/macros.njk b/site/_includes/macros.njk deleted file mode 100644 index 72dee07..0000000 --- a/site/_includes/macros.njk +++ /dev/null @@ -1,62 +0,0 @@ -{% macro i88x31(link, alt=link, interactive=true) %} - = -{% endmacro %} - -{% macro videoCard(videoLink, videoTitle, videoImage, videoWebsite, videoDuration, videoAccent, imageAlt = i18n[langKey].videoArtworkAlt) %} -
    -
    - -
    - {{ imageAlt }} -
    - {#

    {{ i18n[langKey].alsoAvailableAsVideo }}:

    #} -

    - {{ videoTitle }} -

    -

    {{ videoWebsite }}{% if videoDuration %} ({{ videoDuration }}){% endif %}

    -
    - {#

    ir

    #} -
    -
    -
    -
    -{% endmacro %} - -{% macro projectCard(projectName, projectDescription, projectLink, projectImage, projectImageAlt) %} -
    -
    -
    - {{ projectImageAlt or projectName }} -
    - - - -
    -
    -

    {{ projectDescription | safe }}

    -
    -
    -{% endmacro %} - -{% macro webring(opts) %} -
    -

    {{ opts.text }}

    -
    - {% for link in opts.links %} - {{ link | safe }} - {% endfor %} -
    -
    -{% endmacro %} \ No newline at end of file diff --git a/site/_includes/post.njk b/site/_includes/post.njk deleted file mode 100644 index 217cd1c..0000000 --- a/site/_includes/post.njk +++ /dev/null @@ -1,32 +0,0 @@ ---- -layout: base.njk -title: Adrian Victor:Blog -headerLink: blog ---- -{% set altLanguages = collections.post | alternateLanguages(postId, langKey) %} -{% from "macros.njk" import videoCard with context %} - -
    -
    -
    -

    {{ 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 }}: - {% for alt in altLanguages %} -
  • - - {{ i18n[alt.lang].language }} - -
  • - {% endfor %} - {% endif %} -
    - {% if postVideoLink and postVideoImage and postVideoTitle and postVideoWebsite %} - {{ videoCard(postVideoLink, postVideoTitle, postVideoImage, postVideoWebsite, postVideoDuration) }} - {% 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/blog.njk b/site/blog.njk deleted file mode 100644 index 678d0ea..0000000 --- a/site/blog.njk +++ /dev/null @@ -1,24 +0,0 @@ ---- -pagination: - data: i18n - size: 1 - alias: langKey -permalink: "/{{ langKey }}/blog/index.html" -layout: base.njk -title: Adrian Victor:Blog -headerLink: blog ---- - -
    -

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

    - -
    \ 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 b6748fb..0000000 --- a/site/index.njk +++ /dev/null @@ -1,309 +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/languages.njk b/site/languages.njk deleted file mode 100644 index 7d82b75..0000000 --- a/site/languages.njk +++ /dev/null @@ -1,18 +0,0 @@ ---- -permalink: "/index.html" -layout: base.njk -langKey: "en" ---- - - -
    -

    Pick a language

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

    {{ i18n[langKey].miscellaneous }}

    - - -
    \ No newline at end of file diff --git a/site/misc/88x31/en.json b/site/misc/88x31/en.json deleted file mode 100644 index 2149d7d..0000000 --- a/site/misc/88x31/en.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "pageDescription": "My collection of 88x31 GIFs and images.", - "intro": "This is the collection of 88x31 GIFs and images I've downloaded across the web.", - "others": "Others", - "me": "Made by me" -} \ No newline at end of file diff --git a/site/misc/88x31/index.njk b/site/misc/88x31/index.njk deleted file mode 100644 index 62e3492..0000000 --- a/site/misc/88x31/index.njk +++ /dev/null @@ -1,32 +0,0 @@ ---- -layout: base.njk -pagination: - data: languages - size: 1 - alias: langKey - -pageTitle: 88x31 -tags: misc ---- -{% from "macros.njk" import i88x31 with context %} - -
    -
    -

    88x31

    -

    {{ t.intro }}

    -
    -
    -

    {{ t.me }}

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

    {{ t.others }}

    -
    - {% for image in collections.88x31 %} - {{ i88x31(image.fileSlug) }} - {% endfor %} -
    -
    \ No newline at end of file diff --git a/site/misc/88x31/pt.json b/site/misc/88x31/pt.json deleted file mode 100644 index 9beb933..0000000 --- a/site/misc/88x31/pt.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "pageDescription": "Minha coleção de GIFs e imagens 88x31.", - "intro": "Essa é uma coleção de GIFs e imagens 88x31 que eu baixei pela internet.", - "others": "Outros", - "me": "Feitos por mim" -} \ No newline at end of file diff --git a/site/misc/about/en.json b/site/misc/about/en.json deleted file mode 100644 index b427774..0000000 --- a/site/misc/about/en.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "pageTitle": "About this website", - "pageDescription": "Information, attributions and credits about this website.", - "introText1": "This website and blog is a project of Adrian Victor, made using the Eleventy static website generator. It's source code is available ", - "introRepoLinkText": "on this repository", - "introText2": " under the ", - "introLicenseLinkText": "Apache license", - "privacyText1": "The scripts loaded inside the website do save the preferences you set in the settings page", - "privacyText2": "and the music player status", - "privacyText3": "in your browser's local storage. External servers are queried exclusively for loading content used to display the current page. JavaScript is only used to enhance the navigation experience and is totally optional.", - "attributionsHeading": "Attributions", - "bgImageLabel": "Background image (bear.png)", - "bgImageCredit": "Abenakis @ Pixbay", - "badges88x31Label": "88x31 images", - "neocitiesCommunity": "Neocities community", - "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." -} \ 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/about/pt.json b/site/misc/about/pt.json deleted file mode 100644 index 867c07d..0000000 --- a/site/misc/about/pt.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "pageTitle": "Sobre o website", - "pageDescription": "Informações, atribuições e créditos sobre esse website.", - "introText1": "Esse website e blog é um projeto de Adrian Victor, feito com a tecnologia do gerador de sites estáticos Eleventy. O código fonte está disponível", - "introRepoLinkText": "nesse repositório", - "introText2": "sob", - "introLicenseLinkText": "a licensa de código aberto Apache", - "privacyText1": "Os scripts carregados dentro do website salvam suas preferências indicadas na área de configuração", - "privacyText2": "e status do player de música", - "privacyText3": "no armazenamento local do seu navegador. Servidores externos são acessados exclusivamente para carregar conteúdo utilizado na exibição da página. JavaScript é usado apenas para melhorar a experiência de navegação e é totalmente opcional.", - "attributionsHeading": "Atribuições", - "bgImageLabel": "Imagem de fundo (bear.png)", - "bgImageCredit": "Abenakis @ Pixbay", - "badges88x31Label": "Imagens 88x31", - "neocitiesCommunity": "Comunidade do Neocities", - "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." -} \ No newline at end of file diff --git a/site/misc/bookmarks/common.json b/site/misc/bookmarks/common.json deleted file mode 100644 index 77b67d6..0000000 --- a/site/misc/bookmarks/common.json +++ /dev/null @@ -1,178 +0,0 @@ -{ - "links": { - "downloads": { - "88x31": [ - "iglooftp.gif", - "eftpbutton.gif" - ], - "links": [ - { - "name": "MalwareWatch", - "link": "https://malwarewatch.org/", - "description": { - "pt": "Website do Enderman. Tem download de vários softwares úteis, imagens de sistemas operacionais e malware.", - "en": "Enderman's website. Provides download to various useful softwares, operating system images and malware." - } - }, - { - "name": "Free Images", - "link": "https://free-images.com/", - "description": { - "pt": "Pesquise por milhões de imagens, artes e vetores. Todas as imagens são de domínio público ou sobre CC0. Livre para baixar e livre para usar.", - "en": "Search through millions of free stock photos, art and vector images. Every image is Public Domain or CC0. Free to Download and Free to Use." - } - }, - { - "name": "88x31", - "link": "https://88x31.nl/", - "description": { - "pt": "Essa é uma coleção de mais de 6500 GIFs e PNGs no formato 88x31. No final dos anos 1990 e começo dos 2000 era muito comum usar essas imagens no seu site pessoal.", - "en": "This website is a collection with over 6500 GIF's and PNG's in 88x31 format. In the late 1990 and begin of the 2000's it was very common to use these pictures on your personal website." - }, - "88x31": [ - "WEBP.gif", - "blank.gif" - ] - } - ] - }, - "profiles": { - "links": [ - { - "name": "Mr. Nando", - "link": "https://www.youtube.com/@mrnandokk", - "description": { - "pt": "Meu amigo Fernando, ele faz músicas e vídeos de Minecraft e speedrun.", - "en": "My friend Fernando, he makes music and YouTube videos of Minecraft and speedrun." - } - }, - { - "name": "Endermanch", - "link": "https://enderman.ch/", - "description": { - "pt": "Andrew é um engenheiro de software, entusiasta de malware e, mais importante, uma estranha e alta criatura. Cresci com os seus videos e ele é uma grande inspiração para mim.", - "en": "Andrew is a software engineer, a malware enthusiast and most importantly, a weird tall creature. I've grown up with his videos and he's a great inspiration for me." - } - } - ] - }, - "tools": { - "links": [ - { - "name": "Excalidraw", - "link": "https://excalidraw.com/", - "description": { - "pt": "Quadro branco sem distrações.", - "en": "Whiteboard with no bloat." - } - }, - { - "name": "Postimages", - "link": "https://postimages.org/", - "description": { - "pt": "Gere links permantes de suas imagens para forums, blogs e redes sociais.", - "en": "Get permanent links of your images for forums, blogs, and social media." - } - }, - { - "name": "uBlock Origin", - "link": "https://github.com/gorhill/uBlock#ublock-origin", - "description": { - "pt": "Um bloqueador eficiente para Chromium e Firefox. Rápido e pequeno.", - "en": "An efficient blocker for Chromium and Firefox. Fast and lean." - }, - "88x31": ["ublock-now.png"] - } - ] - }, - "games": { - "88x31": [ - "gb.gif", - "amd_powered.gif" - ], - "links": [ - { - "name": "SteamGridDB", - "link": "https://www.steamgriddb.com/", - "description": { - "pt": "Baixe e compartilhe recursos visuais de jogos e personalize sua biblioteca de jogos.", - "en": "Download and share custom video game assets and personalize your gaming library." - } - } - ] - }, - "music": { - "88x31": [ - "rave.gif", - "2014-rave.gif", - "wmpfree.gif", - "wmp.gif", - "wmp9.gif", - "wmp10.gif", - "wmp11.gif", - "ffmpeg.gif", - "ymusic.gif" - ], - "links": [ - { - "name": "CVGM Radio", - "link": "https://radio.cvgm.net/demovibes/", - "description": { - "pt": "Seu lar para música relacionada a video games, demo scene e computadores.", - "en": "Your home for video game, demo scene and computer related music." - } - } - ] - }, - "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": [ - { - "name": "Nyaa", - "link": "https://nyaa.si/", - "description": { - "pt": "Um tracker de animes, mangás e coisas relacionadas.", - "en": "A tracker of animes, mangas and related stuff." - }, - "88x31": ["rukia.gif"] - }, - { - "name": "Lucida", - "link": "https://lucida.to/", - "description": { - "pt": "Com Lucida, você pode baixar musica diretamente de Qobuz, Tidal, Soundcloud, Deezer, Amazon Music, e Yandex Music em alta qualidade de graça. Sem pegadinhas, sem anúncios obrigatórios, sem enrolação. Como que funciona?", - "en": "With Lucida, you can download music directly from Qobuz, Tidal, Soundcloud, Deezer, Amazon Music, and Yandex Music in high quality for free. No catches, no mandatory ads, no BS. How does it work?" - } - }, - { - "name": "DoubleDouble", - "link": "https://doubledouble.top/", - "description": { - "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." - } - } - ] - } - } -} \ No newline at end of file diff --git a/site/misc/bookmarks/en.json b/site/misc/bookmarks/en.json deleted file mode 100644 index 6b0cc31..0000000 --- a/site/misc/bookmarks/en.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "pageTitle": "Bookmarks", - "pageDescription": "My collection of interesting websites/pages.", - "intro": "A list of useful or cool websites/pages curated by me. Divided in sections for an easier navigation.", - "profiles": "Profiles", - "downloads": "Downloads", - "games": "Games", - "tools": "Tools", - "music": "Music", - "piracy": "Piracy", - "services": "Services" -} \ No newline at end of file diff --git a/site/misc/bookmarks/index.njk b/site/misc/bookmarks/index.njk deleted file mode 100644 index 343695b..0000000 --- a/site/misc/bookmarks/index.njk +++ /dev/null @@ -1,49 +0,0 @@ ---- -layout: base.njk -pagination: - data: languages - size: 1 - alias: langKey -tags: misc -background: towers.jpg -backgroundOpacity: .2 ---- -{% from "macros.njk" import i88x31 with context %} - -
    -
    -

    {{ t.pageTitle }}

    -

    {{ t.intro }}

    - {{ i88x31("BOOKMARKthispageNOW.png") }} -
    -
    - {% for sectionName, section in c.links %} -
    -

    {{ t[sectionName] }}

    - {% if section.88x31 %} -
    - {% for 88x31 in section.88x31 %} - {{ i88x31(88x31) }} - {% endfor %} -
    - {% endif %} -
    - {% for link in section.links %} -
    -
    {% ai link.link %}{{ link.name }}{% endai %}
    -
    -
    - {{ link.description[langKey] }} -
    - {% if link.88x31 %} - {% for 88x31 in link.88x31 %} - {{ i88x31(88x31) }} - {% endfor %} - {% endif %} -
    -
    -
    - {% endfor %} -
    - {% endfor %} -
    \ No newline at end of file diff --git a/site/misc/bookmarks/pt.json b/site/misc/bookmarks/pt.json deleted file mode 100644 index acff116..0000000 --- a/site/misc/bookmarks/pt.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "pageTitle": "Favoritos", - "pageDescription": "Minha coleção de sites e páginas interessantes.", - "intro": "Essa é a lista de links favoritos curada por mim, dividida em seções para facilitar a navegação ;-)", - "profiles": "Perfis", - "downloads": "Downloads", - "games": "Jogos", - "tools": "Ferramentas", - "music": "Música", - "piracy": "Pirataria", - "services": "Serviços" -} \ 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/misc.11tydata.cjs b/site/misc/misc.11tydata.cjs deleted file mode 100644 index ecd6f5f..0000000 --- a/site/misc/misc.11tydata.cjs +++ /dev/null @@ -1,32 +0,0 @@ -const fs = require("fs"); -const path = require("path"); - -module.exports = { - eleventyComputed: { - t: (data) => { - const dir = path.dirname(data.page.inputPath); - - const file = path.join(dir, `${data.langKey}.json`); - if (fs.existsSync(file)) { - return JSON.parse(fs.readFileSync(file, "utf-8")); - } - - return {}; - }, - c: (data) => { - const dir = path.dirname(data.page.inputPath); - - const file = path.join(dir, `common.json`); - if (fs.existsSync(file)) { - return JSON.parse(fs.readFileSync(file, "utf-8")); - } - - return {}; - } - }, - permalink: data => { - return `/${data.langKey}/misc/${data.page.fileSlug}/`; - }, - tags: "misc", - headerLink: "misc" -}; 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 09a24f1..0000000 --- a/site/misc/webresources/index.njk +++ /dev/null @@ -1,121 +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 -*/{% 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 -*/{% 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

    - - -

    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/posts/posts.11tydata.cjs b/site/posts/posts.11tydata.cjs deleted file mode 100644 index 6dd7a73..0000000 --- a/site/posts/posts.11tydata.cjs +++ /dev/null @@ -1,13 +0,0 @@ -let data = { - layout: "_includes/post.njk", - headerLink: "blog", - eleventyComputed: { - lastModified: function(data) { - const fs = require('fs'); - const stats = fs.statSync(data.page.inputPath); - return stats.mtime; - } - } -}; - -module.exports = data; diff --git a/site/school/school.json b/site/school/school.json deleted file mode 100644 index 2d173c2..0000000 --- a/site/school/school.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "layout": "base.njk", - "title": "Adrian Victor:Trabalhos", - "langKey": "pt" -} \ No newline at end of file diff --git a/site/site.webmanifest.njk b/site/site.webmanifest.njk deleted file mode 100644 index 42ed39d..0000000 --- a/site/site.webmanifest.njk +++ /dev/null @@ -1,23 +0,0 @@ ---- -permalink: /static/site.webmanifest ---- - -{ - "name": "", - "short_name": "", - "icons": [ - { - "src": "{{ '/static/android-chrome-192x192.png' | url }}", - "sizes": "192x192", - "type": "image/png" - }, - { - "src": "{{ '/static/android-chrome-512x512.png' | url }}", - "sizes": "512x512", - "type": "image/png" - } - ], - "theme_color": "#ffffff", - "background_color": "#ffffff", - "display": "standalone" -} \ 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 }}

    - -
    \ No newline at end of file diff --git a/static/LICENSE.txt b/static/LICENSE.txt deleted file mode 100644 index f49a4e1..0000000 --- a/static/LICENSE.txt +++ /dev/null @@ -1,201 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. \ No newline at end of file diff --git a/static/audio/click.ogg b/static/audio/click.ogg deleted file mode 100644 index c0c8461..0000000 Binary files a/static/audio/click.ogg and /dev/null differ diff --git a/static/audio/hover.ogg b/static/audio/hover.ogg deleted file mode 100644 index 45a0cc1..0000000 Binary files a/static/audio/hover.ogg and /dev/null differ 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/bugdroidspin.gif b/static/images/88x31/bugdroidspin.gif deleted file mode 100644 index 9869b55..0000000 Binary files a/static/images/88x31/bugdroidspin.gif and /dev/null differ diff --git a/static/images/88x31/button-droid-pack.png b/static/images/88x31/button-droid-pack.png deleted file mode 100644 index b8ba363..0000000 Binary files a/static/images/88x31/button-droid-pack.png 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/droidringbutton.png b/static/images/88x31/droidringbutton.png deleted file mode 100644 index 4a98460..0000000 Binary files a/static/images/88x31/droidringbutton.png 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/bear2.jpg b/static/images/bear2.jpg deleted file mode 100644 index 2753acb..0000000 Binary files a/static/images/bear2.jpg and /dev/null differ diff --git a/static/images/bear3.jpg b/static/images/bear3.jpg deleted file mode 100644 index 43fb07d..0000000 Binary files a/static/images/bear3.jpg 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/polar_bear_white_bear.jpg b/static/images/polar_bear_white_bear.jpg deleted file mode 100644 index 2753acb..0000000 Binary files a/static/images/polar_bear_white_bear.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 edbd982..5db40e4 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,64 +210,8 @@ 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; -} - -.noWrap { - text-wrap-mode: nowrap; -} - -.lineHeight { - 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 +248,6 @@ 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 { - margin-bottom: 1em; -} - -.negativeMargin { - /* to make a text container merge to a hr below it */ - margin-bottom: -.2em; -} - .pageHeaderBox { border-bottom: 0; } @@ -377,10 +255,10 @@ li.inlineList { .headerSquare, #defaultSquare { transition: 0.4s; - border: thick solid rgba(255, 255, 255, 0.2); - height: 3vw; + border: medium solid white; + height: 7vh; overflow: hidden; - width: 6vw; + width: 10vh; opacity: 0.4; padding: 0.4em; cursor: pointer; @@ -401,10 +279,9 @@ li.inlineList { .headerSquare.selected, #defaultSquare.selected { opacity: 1; - height: 6vw; + height: 10vh; 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 +505,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 +598,6 @@ article { height: 1.4em; margin-top: auto; opacity: 0.6; - margin: auto; } #music:hover { @@ -735,7 +606,6 @@ article { #everythingHelper { position: relative; - margin-bottom: var(--header-height, 0); } #everythingHelper .bg { @@ -759,68 +629,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 +710,8 @@ header div:first-child { transition: 0.4s; width: fit-content; height: fit-content; + margin-right: 3vw; + margin-bottom: 3rem; gap: 10px; } @@ -914,51 +727,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 +782,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 +821,6 @@ header div:first-child { opacity: 1; } -.postLink { - color: white; -} - #postHeader * { margin-bottom: 0; } @@ -1066,11 +829,6 @@ header div:first-child { margin-bottom: 1em; } -#miscList dt { - color: var(--theme-color-lighter); - font-weight: bolder; -} - /* Page: misc/favorites */ .favoritesTextBox { @@ -1112,98 +870,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; -} - -.tnkm { - font-family: monospace; -} - /* Animations */ @keyframes ellipsis-loader { @@ -1237,109 +903,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; } @@ -1357,18 +937,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/ccd.js b/static/scripts/ccd.js index e1c694d..62ae5a1 100644 --- a/static/scripts/ccd.js +++ b/static/scripts/ccd.js @@ -5,7 +5,7 @@ document.addEventListener('keydown', function(event) { if (event.code === konamiCode[keyIndex]) { keyIndex++; if (keyIndex === konamiCode.length) { - window.location.href = `${rootPrefix}static/toyourdreams.txt` + window.location.href = '/static/toyourdreams.txt' keyIndex = 0; } } else { diff --git a/static/scripts/click.js b/static/scripts/click.js deleted file mode 100644 index 2fc6cc1..0000000 --- a/static/scripts/click.js +++ /dev/null @@ -1,26 +0,0 @@ -/* -This script plays a sound when user clicks on the page. -*/ - -const click = new Audio(`${rootPrefix}static/audio/click.ogg`); -const hover = new Audio(`${rootPrefix}static/audio/hover.ogg`); -click.preload = "auto"; -hover.preload = "auto"; -click.volume = 0.5; -hover.volume = 0.5; - - -document.body.addEventListener("click", () => { - 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(() => {}); - }) -}) diff --git a/static/scripts/home.js b/static/scripts/home.js index 9afa929..a7bdfd1 100644 --- a/static/scripts/home.js +++ b/static/scripts/home.js @@ -9,7 +9,7 @@ let info = [ ] info.forEach(square => { - let rawHTML = `
    ${square[3]}
    `; + let rawHTML = `
    ${square[3]}
    `; _homeSquares.innerHTML += rawHTML; }); @@ -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..0aedc43 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,11 @@ optionsAside.classList.add("metromenu");

    Volume

    - +

    ${headeri18n.hideBackground}

    - -
    -
    -

    ${headeri18n.disableSoundEffects}

    - +
    ` @@ -80,12 +76,6 @@ function toggleBG() { localStorage.setItem("bgHidden", bg.classList.contains("invisible")) } -const disableSFX = document.querySelector("input#soundEffects"); -if (localStorage.getItem("disablesfx") === "true") disableSFX.checked = true; -disableSFX.addEventListener("click", () => { - localStorage.setItem("disablesfx", disableSFX.checked) -}) - const songsDrawer = document.querySelector("#songDrawer"); const drawerSongs = []; const playlist = document.querySelector("#playlist"); @@ -99,8 +89,7 @@ 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}`; + songImage.src = `/static/images/songs/${song.artwork}`; songElement.appendChild(songImage); songElement.addEventListener('click', () => { changeSong(song.file); @@ -157,7 +146,7 @@ optionsButton.forEach(button => { }); // Create the audio object using the current select value -let audio = new Audio(`${rootPrefix}static/music/${audioSelect.value}`); +let audio = new Audio(`/static/music/${audioSelect.value}`); const savedTime = localStorage.getItem("audioTime"); const savedVolume = localStorage.getItem("volume"); @@ -177,16 +166,14 @@ function play() { showNotification(headeri18n.permissionIssue, headeri18n.permissionIssueNotificationContent, 5000); });; localStorage.setItem("audioPlaying", "true") - toggleIMG.src = `${rootPrefix}static/images/sound-on.png` - toggleIMG.alt = headeri18n.soundOnAlt; + toggleIMG.src = "/static/images/sound-on.png" console.log(`[Music Player] playing ${audioSelect.value}`) } function stop() { audio.pause(); localStorage.setItem("audioPlaying", "false") - toggleIMG.src = `${rootPrefix}static/images/sound-off.png` - toggleIMG.alt = headeri18n.soundOffAlt; + toggleIMG.src = "/static/images/sound-off.png" } function setVolume(volume) { @@ -211,7 +198,7 @@ function changeSong(song) { const wasPlaying = !audio.paused; stop(); localStorage.removeItem("audioTime"); - audio = new Audio(`${rootPrefix}static/music/${song}`); + audio = new Audio(`/static/music/${song}`); if (savedVolume) setVolume(savedVolume); console.log(`[Music Player] changing song to ${song}`) localStorage.setItem("song", song); 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(); diff --git a/static/site.webmanifest b/static/site.webmanifest new file mode 100644 index 0000000..258ecd0 --- /dev/null +++ b/static/site.webmanifest @@ -0,0 +1 @@ +{"name":"","short_name":"","icons":[{"src":"/static/android-chrome-192x192.png","sizes":"192x192","type":"image/png"},{"src":"/static/android-chrome-512x512.png","sizes":"512x512","type":"image/png"}],"theme_color":"#ffffff","background_color":"#ffffff","display":"standalone"} \ No newline at end of file