diff --git a/.forgejo/workflows/build_preview.yml b/.forgejo/workflows/build_preview.yml index c0bdca4..5adfa81 100644 --- a/.forgejo/workflows/build_preview.yml +++ b/.forgejo/workflows/build_preview.yml @@ -40,13 +40,14 @@ jobs: runs-on: docker steps: - name: Release New Version - uses: actions/forgejo-release@v1 + uses: https://code.forgejo.org/actions/forgejo-release@v1 with: direction: upload url: https://forgejo.neshweb.net release-dir: release token: ${{ secrets.FORGEJO_TOKEN }} tag: ${{ github.ref_name }} + prerelease: true # doesn't work atm # unlighthouse: diff --git a/.forgejo/workflows/build_release.yml b/.forgejo/workflows/build_release.yml index 258869a..0d46014 100644 --- a/.forgejo/workflows/build_release.yml +++ b/.forgejo/workflows/build_release.yml @@ -2,9 +2,6 @@ on: push: tags: - '[0-9]+\.[0-9]+\.[0-9]+' - - '[0-9]+\.[0-9]+\.[0-9]+a[0-9]+' - - '[0-9]+\.[0-9]+\.[0-9]+b[0-9]+' - - '[0-9]+\.[0-9]+\.[0-9]+rc[0-9]+' jobs: checking: @@ -17,7 +14,6 @@ jobs: run: npm install - name: Run astro check (linting + static analysis) run: npm run astro check - run: npm run astro check build-site: needs: [checking] @@ -44,7 +40,7 @@ jobs: runs-on: docker steps: - name: Release New Version - uses: actions/forgejo-release@v1 + uses: https://code.forgejo.org/actions/forgejo-release@v1 with: direction: upload url: https://forgejo.neshweb.net diff --git a/.forgejo/workflows/unlighthouse.yml b/.forgejo/workflows/unlighthouse.yml index e459b71..3c45612 100644 --- a/.forgejo/workflows/unlighthouse.yml +++ b/.forgejo/workflows/unlighthouse.yml @@ -7,7 +7,7 @@ on: jobs: unlighthouse: runs-on: docker - container: forgejo.neshweb.net/firq/unlighthouse-docker:latest + container: forgejo.neshweb.net/ci-docker-images/unlighthouse:latest steps: - name: Checkout repository uses: https://code.forgejo.org/actions/checkout@v3 @@ -23,6 +23,7 @@ jobs: deploy-unlighthouse-files: needs: [ unlighthouse ] + if: success() runs-on: docker env: DEPLOY_USER: ${{ secrets.DEPLOY_USER }} @@ -63,10 +64,11 @@ jobs: key: ${{ secrets.SSH_PRIVATE_KEY }} script: | cd firq_dev - find public -maxdepth 1 -printf "%p\n" + find unlighthouse -maxdepth 1 -printf "%p\n" deploy-unlighthouse-site: needs: [ deploy-unlighthouse-files ] + if: success() runs-on: docker env: DEPLOY_USER: ${{ secrets.DEPLOY_USER }} @@ -91,5 +93,6 @@ jobs: key: ${{ secrets.SSH_PRIVATE_KEY }} script: | PATH="$HOME/.local/bin:$PATH" - cd fgo-firq_dev + screen -ls | grep 'firq_dev-unlighthouse' | awk '{print $1}' | xargs -I % -t screen -X -S % quit + cd firq_dev screen -S firq_dev-unlighthouse -dm serve unlighthouse/ -p ${{ secrets.UNLIGHTHOUSE_DEPLOY_PORT }} diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..ff5ea15 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,12 @@ +{ + "files.exclude": { + "**/.git": true, + "**/.svn": true, + "**/.hg": true, + "**/CVS": true, + "**/.DS_Store": true, + "**/Thumbs.db": true, + "**/__pycache__": true + }, + "hide-files.files": [] +} \ No newline at end of file diff --git a/Dockerfile b/Dockerfile index e3fd1ee..1d81c70 100644 --- a/Dockerfile +++ b/Dockerfile @@ -4,12 +4,11 @@ COPY . . RUN npm i RUN npm run build -FROM node:lts AS runtime -RUN npm install --global "@warren-bank/serve" +FROM forgejo.neshweb.net/ci-docker-images/website-serve:latest AS runtime COPY --from=build /app/dist /public COPY --from=build /app/serve.json /public/serve.json -RUN rm -r /public/assets/data/ +RUN rm -r /public/data/ ENV PORT 8081 EXPOSE 8081 diff --git a/astro.config.mjs b/astro.config.mjs index cf40f4f..4313843 100644 --- a/astro.config.mjs +++ b/astro.config.mjs @@ -1,7 +1,7 @@ import { defineConfig } from 'astro/config'; -// https://astro.build/config import sitemap from "@astrojs/sitemap"; +import mdx from "@astrojs/mdx"; // https://astro.build/config export default defineConfig({ @@ -10,5 +10,5 @@ export default defineConfig({ outDir: 'dist', publicDir: 'static', site: 'https://firq.dev/', - integrations: [sitemap()] + integrations: [sitemap(), mdx()] }); \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 331a458..ae02b32 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,17 +1,21 @@ { "name": "@firq/fgosite", - "version": "0.1.6", + "version": "0.1.27", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@firq/fgosite", - "version": "0.1.6", + "version": "0.1.27", "dependencies": { + "@astro-community/astro-embed-youtube": "^0.4.3", "@astrojs/check": "^0.3.3", + "@astrojs/mdx": "^2.0.3", "@astrojs/sitemap": "^3.0.3", - "astro": "^4.0.7", - "iconoir": "^6.1.0", + "astro": "^4.2.1", + "autoprefixer": "^10.4.16", + "iconoir": "^7.2.0", + "postcss-preset-env": "^9.3.0", "typescript": "^5.3.3" } }, @@ -27,6 +31,17 @@ "node": ">=6.0.0" } }, + "node_modules/@astro-community/astro-embed-youtube": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@astro-community/astro-embed-youtube/-/astro-embed-youtube-0.4.3.tgz", + "integrity": "sha512-zXtPmR9yxrTo6cuLhH8v+r62bsXbsLJgsU2FiZalPr4bXJxAUQEIlG46S/qK0AEXi9uNShKqy4+zBaJ98xTVEg==", + "dependencies": { + "lite-youtube-embed": "^0.2.0" + }, + "peerDependencies": { + "astro": "^2.0.0 || ^3.0.0-beta || ^4.0.0-beta" + } + }, "node_modules/@astrojs/check": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/@astrojs/check/-/check-0.3.3.tgz", @@ -121,6 +136,34 @@ "vfile": "^6.0.1" } }, + "node_modules/@astrojs/mdx": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@astrojs/mdx/-/mdx-2.0.3.tgz", + "integrity": "sha512-wFjQX5CihU5B4UAQNwc2R48ph0flpc6/yvDCFANE0agtgI2+BaVcAjuW0EhGOQCZ65dQDqnFKE0lvGs7EADYpg==", + "dependencies": { + "@astrojs/markdown-remark": "4.0.1", + "@mdx-js/mdx": "^3.0.0", + "acorn": "^8.11.2", + "es-module-lexer": "^1.4.1", + "estree-util-visit": "^2.0.0", + "github-slugger": "^2.0.0", + "gray-matter": "^4.0.3", + "hast-util-to-html": "^9.0.0", + "kleur": "^4.1.4", + "rehype-raw": "^7.0.0", + "remark-gfm": "^4.0.0", + "remark-smartypants": "^2.0.0", + "source-map": "^0.7.4", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.1" + }, + "engines": { + "node": ">=18.14.1" + }, + "peerDependencies": { + "astro": "^4.0.0" + } + }, "node_modules/@astrojs/prism": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@astrojs/prism/-/prism-3.0.0.tgz", @@ -506,6 +549,867 @@ "node": ">=6.9.0" } }, + "node_modules/@csstools/cascade-layer-name-parser": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@csstools/cascade-layer-name-parser/-/cascade-layer-name-parser-1.0.6.tgz", + "integrity": "sha512-HkxRNs6ZIV0VjLFw6k5G8K35vd9r+O8B1Vr+QVD8M5Y44eQxyHtc42BdF74FQatXACPnitOR1+sRx2oWdnKTQw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^2.4.0", + "@csstools/css-tokenizer": "^2.2.2" + } + }, + "node_modules/@csstools/color-helpers": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-4.0.0.tgz", + "integrity": "sha512-wjyXB22/h2OvxAr3jldPB7R7kjTUEzopvjitS8jWtyd8fN6xJ8vy1HnHu0ZNfEkqpBJgQ76Q+sBDshWcMvTa/w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "engines": { + "node": "^14 || ^16 || >=18" + } + }, + "node_modules/@csstools/css-calc": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-1.1.5.tgz", + "integrity": "sha512-UhI5oSRAUtTHY3MyGahqn0ZzQOHVoPpfvUcOmYipAZ1rILAvCBoyiLSsa/clv1Xxct0SMKIq93KO5Bfl1cb6tQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^2.4.0", + "@csstools/css-tokenizer": "^2.2.2" + } + }, + "node_modules/@csstools/css-color-parser": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-1.5.0.tgz", + "integrity": "sha512-PUhSg1MgU2sjYhA6moOmxYesqVqYTJwcVw12boTNbDX7Af+VK02MkgvmBBY2Z2qU6UN5HOQ+wrF0qQJGsTFY7w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "@csstools/color-helpers": "^4.0.0", + "@csstools/css-calc": "^1.1.5" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^2.4.0", + "@csstools/css-tokenizer": "^2.2.2" + } + }, + "node_modules/@csstools/css-parser-algorithms": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.4.0.tgz", + "integrity": "sha512-/PPLr2g5PAUCKAPEbfyk6/baZA+WJHQtUhPkoCQMpyRE8I0lXrG1QFRN8e5s3ZYxM8d/g5BZc6lH3s8Op7/VEg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "@csstools/css-tokenizer": "^2.2.2" + } + }, + "node_modules/@csstools/css-tokenizer": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-2.2.2.tgz", + "integrity": "sha512-wCDUe/MAw7npAHFLyW3QjSyLA66S5QFaV1jIXlNQvdJ8RzXDSgALa49eWcUO6P55ARQaz0TsDdAgdRgkXFYY8g==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "engines": { + "node": "^14 || ^16 || >=18" + } + }, + "node_modules/@csstools/media-query-list-parser": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-2.1.6.tgz", + "integrity": "sha512-R6AKl9vaU0It7D7TR2lQn0pre5aQfdeqHRePlaRCY8rHL3l9eVlNRpsEVDKFi/zAjzv68CxH2M5kqbhPFPKjvw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^2.4.0", + "@csstools/css-tokenizer": "^2.2.2" + } + }, + "node_modules/@csstools/postcss-cascade-layers": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@csstools/postcss-cascade-layers/-/postcss-cascade-layers-4.0.2.tgz", + "integrity": "sha512-PqM+jvg5T2tB4FHX+akrMGNWAygLupD4FNUjcv4PSvtVuWZ6ISxuo37m4jFGU7Jg3rCfloGzKd0+xfr5Ec3vZQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "@csstools/selector-specificity": "^3.0.1", + "postcss-selector-parser": "^6.0.13" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-color-function": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@csstools/postcss-color-function/-/postcss-color-function-3.0.8.tgz", + "integrity": "sha512-jvbF7eCRbIcxWqby0kk2Mt85QtGzRRpFFYdlJCJ80Tuiv43PY+auS/nBl8pDQQ4Ndm4vsm4IC/wCZDcJUmpJmg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "@csstools/css-color-parser": "^1.5.0", + "@csstools/css-parser-algorithms": "^2.4.0", + "@csstools/css-tokenizer": "^2.2.2", + "@csstools/postcss-progressive-custom-properties": "^3.0.3" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-color-mix-function": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/@csstools/postcss-color-mix-function/-/postcss-color-mix-function-2.0.8.tgz", + "integrity": "sha512-sGhk+TdZ2TeXspc6LSYSYC8WgzLlxoknUaObKgB0mk+dNjRQgSSIeCU+qrCwvHmwM+uTNKtiS8mntDzyQLHTTA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "@csstools/css-color-parser": "^1.5.0", + "@csstools/css-parser-algorithms": "^2.4.0", + "@csstools/css-tokenizer": "^2.2.2", + "@csstools/postcss-progressive-custom-properties": "^3.0.3" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-exponential-functions": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@csstools/postcss-exponential-functions/-/postcss-exponential-functions-1.0.2.tgz", + "integrity": "sha512-VRIYrwNCkZRqzsGB4jGT+XcNXsoiwyqy0Vf7C3I/5OPcf7WcWK3G1sBYFqqgWLGtpwc7m1m8TcorGY1xdh5abg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "@csstools/css-calc": "^1.1.5", + "@csstools/css-parser-algorithms": "^2.4.0", + "@csstools/css-tokenizer": "^2.2.2" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-font-format-keywords": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-font-format-keywords/-/postcss-font-format-keywords-3.0.1.tgz", + "integrity": "sha512-D1lcG2sfotTq6yBEOMV3myFxJLT10F3DLYZJMbiny5YToqzHWodZen8WId3UTimm0mEHitXqAUNL5jdd6RzVdA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-gamut-mapping": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-gamut-mapping/-/postcss-gamut-mapping-1.0.1.tgz", + "integrity": "sha512-GDVzfNbnc7x3GusFklvt0mYXIWVzxEtEtTFEW664NgZh/5V7Z89hZKBMl9piOAHXuxijfHtE+kul/ShfeLUvcA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "@csstools/css-color-parser": "^1.5.0", + "@csstools/css-parser-algorithms": "^2.4.0", + "@csstools/css-tokenizer": "^2.2.2" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-gradients-interpolation-method": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/@csstools/postcss-gradients-interpolation-method/-/postcss-gradients-interpolation-method-4.0.8.tgz", + "integrity": "sha512-bmvCNzuUvWPPdgASh0T14ffTay/FdzXsXfp0wXT1pYoUPmkH9M6yyxwPEkHq5djjzSb2jiLl4Ta3XM1uOREQ2w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "@csstools/css-color-parser": "^1.5.0", + "@csstools/css-parser-algorithms": "^2.4.0", + "@csstools/css-tokenizer": "^2.2.2", + "@csstools/postcss-progressive-custom-properties": "^3.0.3" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-hwb-function": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@csstools/postcss-hwb-function/-/postcss-hwb-function-3.0.7.tgz", + "integrity": "sha512-iXs1gxKtev8YNP5bOF26TAsnMfcxnCRLpKItQ067RphYECKEK/xWm4Z0r4ChmV1U1eq+lbdH5ZIb2cju4o5akA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "@csstools/css-color-parser": "^1.5.0", + "@csstools/css-parser-algorithms": "^2.4.0", + "@csstools/css-tokenizer": "^2.2.2" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-ic-unit": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@csstools/postcss-ic-unit/-/postcss-ic-unit-3.0.3.tgz", + "integrity": "sha512-MpcmIL0/uMm/cFWh5V/9nbKKJ7jRr2qTYW5Q6zoE6HZ6uzOBJr2KRERv5/x8xzEBQ1MthDT7iP1EBp9luSQy7g==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "@csstools/postcss-progressive-custom-properties": "^3.0.3", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-initial": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-initial/-/postcss-initial-1.0.1.tgz", + "integrity": "sha512-wtb+IbUIrIf8CrN6MLQuFR7nlU5C7PwuebfeEXfjthUha1+XZj2RVi+5k/lukToA24sZkYAiSJfHM8uG/UZIdg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-is-pseudo-class": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@csstools/postcss-is-pseudo-class/-/postcss-is-pseudo-class-4.0.4.tgz", + "integrity": "sha512-vTVO/uZixpTVAOQt3qZRUFJ/K1L03OfNkeJ8sFNDVNdVy/zW0h1L5WT7HIPMDUkvSrxQkFaCCybTZkUP7UESlQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "@csstools/selector-specificity": "^3.0.1", + "postcss-selector-parser": "^6.0.13" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-logical-float-and-clear": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-logical-float-and-clear/-/postcss-logical-float-and-clear-2.0.1.tgz", + "integrity": "sha512-SsrWUNaXKr+e/Uo4R/uIsqJYt3DaggIh/jyZdhy/q8fECoJSKsSMr7nObSLdvoULB69Zb6Bs+sefEIoMG/YfOA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-logical-overflow": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-logical-overflow/-/postcss-logical-overflow-1.0.1.tgz", + "integrity": "sha512-Kl4lAbMg0iyztEzDhZuQw8Sj9r2uqFDcU1IPl+AAt2nue8K/f1i7ElvKtXkjhIAmKiy5h2EY8Gt/Cqg0pYFDCw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-logical-overscroll-behavior": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-logical-overscroll-behavior/-/postcss-logical-overscroll-behavior-1.0.1.tgz", + "integrity": "sha512-+kHamNxAnX8ojPCtV8WPcUP3XcqMFBSDuBuvT6MHgq7oX4IQxLIXKx64t7g9LiuJzE7vd06Q9qUYR6bh4YnGpQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-logical-resize": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-logical-resize/-/postcss-logical-resize-2.0.1.tgz", + "integrity": "sha512-W5Gtwz7oIuFcKa5SmBjQ2uxr8ZoL7M2bkoIf0T1WeNqljMkBrfw1DDA8/J83k57NQ1kcweJEjkJ04pUkmyee3A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-logical-viewport-units": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@csstools/postcss-logical-viewport-units/-/postcss-logical-viewport-units-2.0.4.tgz", + "integrity": "sha512-jetp/ArGAniWbjWBh5UQ07ztawfSbqCFd0QelX4R4pVIxrXahUEhz5VZHebMPVCg02J8GsQn0br6fdRpY6t7lw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "@csstools/css-tokenizer": "^2.2.2" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-media-minmax": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-media-minmax/-/postcss-media-minmax-1.1.1.tgz", + "integrity": "sha512-mBY46/Hr+A8cDjoX0OoPRBOVrkANym9540dSB9rN3dllPZdM1E112i/tVxWsrR1s1yE9gfF0pk+7lf9l+qSeHA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "@csstools/css-calc": "^1.1.5", + "@csstools/css-parser-algorithms": "^2.4.0", + "@csstools/css-tokenizer": "^2.2.2", + "@csstools/media-query-list-parser": "^2.1.6" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-media-queries-aspect-ratio-number-values": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@csstools/postcss-media-queries-aspect-ratio-number-values/-/postcss-media-queries-aspect-ratio-number-values-2.0.4.tgz", + "integrity": "sha512-IaIZZhH0Qy9UDn7u+N3cuwwPG0Po3ZKOdDh+ClR7xvisSqniG+PuVrOEWYJrFKOt2//UHLhd7KHDqr2u9LKS9Q==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "@csstools/css-parser-algorithms": "^2.4.0", + "@csstools/css-tokenizer": "^2.2.2", + "@csstools/media-query-list-parser": "^2.1.6" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-nested-calc": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-nested-calc/-/postcss-nested-calc-3.0.1.tgz", + "integrity": "sha512-bwwababZpWRm0ByHaWBxTsDGTMhZKmtUNl3Wt0Eom8AY7ORgXx5qF9SSk1vEFrCi+HOfJT6M6W5KPgzXuQNRwQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-normalize-display-values": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@csstools/postcss-normalize-display-values/-/postcss-normalize-display-values-3.0.2.tgz", + "integrity": "sha512-fCapyyT/dUdyPtrelQSIV+d5HqtTgnNP/BEG9IuhgXHt93Wc4CfC1bQ55GzKAjWrZbgakMQ7MLfCXEf3rlZJOw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-oklab-function": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@csstools/postcss-oklab-function/-/postcss-oklab-function-3.0.8.tgz", + "integrity": "sha512-L4xrwbgg+k08v+a88LDxJeIM6+kqaBJlYb/QgmEMfQpUbrfXTp87DuRc7utcRdDvY+qWK5vqz3h1xUtceB5LJQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "@csstools/css-color-parser": "^1.5.0", + "@csstools/css-parser-algorithms": "^2.4.0", + "@csstools/css-tokenizer": "^2.2.2", + "@csstools/postcss-progressive-custom-properties": "^3.0.3" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-progressive-custom-properties": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@csstools/postcss-progressive-custom-properties/-/postcss-progressive-custom-properties-3.0.3.tgz", + "integrity": "sha512-WipTVh6JTMQfeIrzDV4wEPsV9NTzMK2jwXxyH6CGBktuWdivHnkioP/smp1x/0QDPQyx7NTS14RB+GV3zZZYEw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-relative-color-syntax": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/@csstools/postcss-relative-color-syntax/-/postcss-relative-color-syntax-2.0.8.tgz", + "integrity": "sha512-wu/Oh7QKINpRXnmLMUbObVNlqwr843PSF4a3x3fMC0I+vUeoGqMfZuSPFtT+NnYYxfzUjEZ091GURPxee22VLQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "@csstools/css-color-parser": "^1.5.0", + "@csstools/css-parser-algorithms": "^2.4.0", + "@csstools/css-tokenizer": "^2.2.2", + "@csstools/postcss-progressive-custom-properties": "^3.0.3" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-scope-pseudo-class": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-scope-pseudo-class/-/postcss-scope-pseudo-class-3.0.1.tgz", + "integrity": "sha512-3ZFonK2gfgqg29gUJ2w7xVw2wFJ1eNWVDONjbzGkm73gJHVCYK5fnCqlLr+N+KbEfv2XbWAO0AaOJCFB6Fer6A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "postcss-selector-parser": "^6.0.13" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-stepped-value-functions": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@csstools/postcss-stepped-value-functions/-/postcss-stepped-value-functions-3.0.3.tgz", + "integrity": "sha512-hzo9Wr3u7JJiM65/EyHgE/gJpBzhDwBSGOobFs2YQ0ZNTywUliYQoYJud1KKlByMRuhqvDLh9V95eIkLf/fZTQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "@csstools/css-calc": "^1.1.5", + "@csstools/css-parser-algorithms": "^2.4.0", + "@csstools/css-tokenizer": "^2.2.2" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-text-decoration-shorthand": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@csstools/postcss-text-decoration-shorthand/-/postcss-text-decoration-shorthand-3.0.4.tgz", + "integrity": "sha512-yUZmbnUemgQmja7SpOZeU45+P49wNEgQguRdyTktFkZsHf7Gof+ZIYfvF6Cm+LsU1PwSupy4yUeEKKjX5+k6cQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "@csstools/color-helpers": "^4.0.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-trigonometric-functions": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@csstools/postcss-trigonometric-functions/-/postcss-trigonometric-functions-3.0.3.tgz", + "integrity": "sha512-T/npTbDuMZ3vktEMuA05p1oeVd12Sy47qZP1vFhzNMUOdXGCK9vlm0tUSIlV5DdlbTJqKqq9FhGitZH9VTKrfQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "@csstools/css-calc": "^1.1.5", + "@csstools/css-parser-algorithms": "^2.4.0", + "@csstools/css-tokenizer": "^2.2.2" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-unset-value": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-unset-value/-/postcss-unset-value-3.0.1.tgz", + "integrity": "sha512-dbDnZ2ja2U8mbPP0Hvmt2RMEGBiF1H7oY6HYSpjteXJGihYwgxgTr6KRbbJ/V6c+4wd51M+9980qG4gKVn5ttg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/selector-specificity": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-3.0.1.tgz", + "integrity": "sha512-NPljRHkq4a14YzZ3YD406uaxh7s0g6eAq3L9aLOWywoqe8PkYamAvtsh7KNX6c++ihDrJ0RiU+/z7rGnhlZ5ww==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss-selector-parser": "^6.0.13" + } + }, "node_modules/@emmetio/abbreviation": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/@emmetio/abbreviation/-/abbreviation-2.3.3.tgz", @@ -915,6 +1819,40 @@ "@jridgewell/sourcemap-codec": "1.4.14" } }, + "node_modules/@mdx-js/mdx": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-3.0.0.tgz", + "integrity": "sha512-Icm0TBKBLYqroYbNW3BPnzMGn+7mwpQOK310aZ7+fkCtiU3aqv2cdcX+nd0Ydo3wI5Rx8bX2Z2QmGb/XcAClCw==", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdx": "^2.0.0", + "collapse-white-space": "^2.0.0", + "devlop": "^1.0.0", + "estree-util-build-jsx": "^3.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "estree-util-to-js": "^2.0.0", + "estree-walker": "^3.0.0", + "hast-util-to-estree": "^3.0.0", + "hast-util-to-jsx-runtime": "^2.0.0", + "markdown-extensions": "^2.0.0", + "periscopic": "^3.0.0", + "remark-mdx": "^3.0.0", + "remark-parse": "^11.0.0", + "remark-rehype": "^11.0.0", + "source-map": "^0.7.0", + "unified": "^11.0.0", + "unist-util-position-from-estree": "^2.0.0", + "unist-util-stringify-position": "^4.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -948,9 +1886,9 @@ } }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.9.1.tgz", - "integrity": "sha512-6vMdBZqtq1dVQ4CWdhFwhKZL6E4L1dV6jUjuBvsavvNJSppzi6dLBbuV+3+IyUREaj9ZFvQefnQm28v4OCXlig==", + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.18.0.tgz", + "integrity": "sha512-Tya6xypR10giZV1XzxmH5wr25VcZSncG0pZIjfePT0OVBvqNEurzValetGNarVrGiq66EBVAFn15iYX4w6FKgQ==", "cpu": [ "arm" ], @@ -960,9 +1898,9 @@ ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.9.1.tgz", - "integrity": "sha512-Jto9Fl3YQ9OLsTDWtLFPtaIMSL2kwGyGoVCmPC8Gxvym9TCZm4Sie+cVeblPO66YZsYH8MhBKDMGZ2NDxuk/XQ==", + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.18.0.tgz", + "integrity": "sha512-avCea0RAP03lTsDhEyfy+hpfr85KfyTctMADqHVhLAF3MlIkq83CP8UfAHUssgXTYd+6er6PaAhx/QGv4L1EiA==", "cpu": [ "arm64" ], @@ -972,9 +1910,9 @@ ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.9.1.tgz", - "integrity": "sha512-LtYcLNM+bhsaKAIGwVkh5IOWhaZhjTfNOkGzGqdHvhiCUVuJDalvDxEdSnhFzAn+g23wgsycmZk1vbnaibZwwA==", + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.18.0.tgz", + "integrity": "sha512-IWfdwU7KDSm07Ty0PuA/W2JYoZ4iTj3TUQjkVsO/6U+4I1jN5lcR71ZEvRh52sDOERdnNhhHU57UITXz5jC1/w==", "cpu": [ "arm64" ], @@ -984,9 +1922,9 @@ ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.9.1.tgz", - "integrity": "sha512-KyP/byeXu9V+etKO6Lw3E4tW4QdcnzDG/ake031mg42lob5tN+5qfr+lkcT/SGZaH2PdW4Z1NX9GHEkZ8xV7og==", + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.18.0.tgz", + "integrity": "sha512-n2LMsUz7Ynu7DoQrSQkBf8iNrjOGyPLrdSg802vk6XT3FtsgX6JbE8IHRvposskFm9SNxzkLYGSq9QdpLYpRNA==", "cpu": [ "x64" ], @@ -996,9 +1934,21 @@ ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.9.1.tgz", - "integrity": "sha512-Yqz/Doumf3QTKplwGNrCHe/B2p9xqDghBZSlAY0/hU6ikuDVQuOUIpDP/YcmoT+447tsZTmirmjgG3znvSCR0Q==", + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.18.0.tgz", + "integrity": "sha512-C/zbRYRXFjWvz9Z4haRxcTdnkPt1BtCkz+7RtBSuNmKzMzp3ZxdM28Mpccn6pt28/UWUCTXa+b0Mx1k3g6NOMA==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.18.0.tgz", + "integrity": "sha512-l3m9ewPgjQSXrUMHg93vt0hYCGnrMOcUpTz6FLtbwljo2HluS4zTXFy2571YQbisTnfTKPZ01u/ukJdQTLGh9A==", "cpu": [ "arm" ], @@ -1008,9 +1958,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.9.1.tgz", - "integrity": "sha512-u3XkZVvxcvlAOlQJ3UsD1rFvLWqu4Ef/Ggl40WAVCuogf4S1nJPHh5RTgqYFpCOvuGJ7H5yGHabjFKEZGExk5Q==", + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.18.0.tgz", + "integrity": "sha512-rJ5D47d8WD7J+7STKdCUAgmQk49xuFrRi9pZkWoRD1UeSMakbcepWXPF8ycChBoAqs1pb2wzvbY6Q33WmN2ftw==", "cpu": [ "arm64" ], @@ -1020,9 +1970,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.9.1.tgz", - "integrity": "sha512-0XSYN/rfWShW+i+qjZ0phc6vZ7UWI8XWNz4E/l+6edFt+FxoEghrJHjX1EY/kcUGCnZzYYRCl31SNdfOi450Aw==", + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.18.0.tgz", + "integrity": "sha512-be6Yx37b24ZwxQ+wOQXXLZqpq4jTckJhtGlWGZs68TgdKXJgw54lUUoFYrg6Zs/kjzAQwEwYbp8JxZVzZLRepQ==", "cpu": [ "arm64" ], @@ -1031,10 +1981,22 @@ "linux" ] }, + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.18.0.tgz", + "integrity": "sha512-hNVMQK+qrA9Todu9+wqrXOHxFiD5YmdEi3paj6vP02Kx1hjd2LLYR2eaN7DsEshg09+9uzWi2W18MJDlG0cxJA==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "linux" + ] + }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.9.1.tgz", - "integrity": "sha512-LmYIO65oZVfFt9t6cpYkbC4d5lKHLYv5B4CSHRpnANq0VZUQXGcCPXHzbCXCz4RQnx7jvlYB1ISVNCE/omz5cw==", + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.18.0.tgz", + "integrity": "sha512-ROCM7i+m1NfdrsmvwSzoxp9HFtmKGHEqu5NNDiZWQtXLA8S5HBCkVvKAxJ8U+CVctHwV2Gb5VUaK7UAkzhDjlg==", "cpu": [ "riscv64" ], @@ -1043,10 +2005,22 @@ "linux" ] }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.18.0.tgz", + "integrity": "sha512-0UyyRHyDN42QL+NbqevXIIUnKA47A+45WyasO+y2bGJ1mhQrfrtXUpTxCOrfxCR4esV3/RLYyucGVPiUsO8xjg==", + "cpu": [ + "s390x" + ], + "optional": true, + "os": [ + "linux" + ] + }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.9.1.tgz", - "integrity": "sha512-kr8rEPQ6ns/Lmr/hiw8sEVj9aa07gh1/tQF2Y5HrNCCEPiCBGnBUt9tVusrcBBiJfIt1yNaXN6r1CCmpbFEDpg==", + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.18.0.tgz", + "integrity": "sha512-xuglR2rBVHA5UsI8h8UbX4VJ470PtGCf5Vpswh7p2ukaqBGFTnsfzxUBetoWBWymHMxbIG0Cmx7Y9qDZzr648w==", "cpu": [ "x64" ], @@ -1056,9 +2030,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.9.1.tgz", - "integrity": "sha512-t4QSR7gN+OEZLG0MiCgPqMWZGwmeHhsM4AkegJ0Kiy6TnJ9vZ8dEIwHw1LcZKhbHxTY32hp9eVCMdR3/I8MGRw==", + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.18.0.tgz", + "integrity": "sha512-LKaqQL9osY/ir2geuLVvRRs+utWUNilzdE90TpyoX0eNqPzWjRm14oMEE+YLve4k/NAqCdPkGYDaDF5Sw+xBfg==", "cpu": [ "x64" ], @@ -1068,9 +2042,9 @@ ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.9.1.tgz", - "integrity": "sha512-7XI4ZCBN34cb+BH557FJPmh0kmNz2c25SCQeT9OiFWEgf8+dL6ZwJ8f9RnUIit+j01u07Yvrsuu1rZGxJCc51g==", + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.18.0.tgz", + "integrity": "sha512-7J6TkZQFGo9qBKH0pk2cEVSRhJbL6MtfWxth7Y5YmZs57Pi+4x6c2dStAUvaQkHQLnEQv1jzBUW43GvZW8OFqA==", "cpu": [ "arm64" ], @@ -1080,9 +2054,9 @@ ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.9.1.tgz", - "integrity": "sha512-yE5c2j1lSWOH5jp+Q0qNL3Mdhr8WuqCNVjc6BxbVfS5cAS6zRmdiw7ktb8GNpDCEUJphILY6KACoFoRtKoqNQg==", + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.18.0.tgz", + "integrity": "sha512-Txjh+IxBPbkUB9+SXZMpv+b/vnTEtFyfWZgJ6iyCmt2tdx0OF5WhFowLmnh8ENGNpfUlUZkdI//4IEmhwPieNg==", "cpu": [ "ia32" ], @@ -1092,9 +2066,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.9.1.tgz", - "integrity": "sha512-PyJsSsafjmIhVgaI1Zdj7m8BB8mMckFah/xbpplObyHfiXzKcI5UOUXRyOdHW7nz4DpMCuzLnF7v5IWHenCwYA==", + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.18.0.tgz", + "integrity": "sha512-UOo5FdvOL0+eIVTgS4tIdbW+TtnBLWg1YBCcU2KWM7nuNwRz9bksDX1bekJJCpu25N1DVWaCwnT39dVQxzqS8g==", "cpu": [ "x64" ], @@ -1103,6 +2077,14 @@ "win32" ] }, + "node_modules/@types/acorn": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/@types/acorn/-/acorn-4.0.6.tgz", + "integrity": "sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==", + "dependencies": { + "@types/estree": "*" + } + }, "node_modules/@types/babel__core": { "version": "7.20.5", "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", @@ -1153,6 +2135,14 @@ "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==" }, + "node_modules/@types/estree-jsx": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@types/estree-jsx/-/estree-jsx-1.0.3.tgz", + "integrity": "sha512-pvQ+TKeRHeiUGRhvYwRrQ/ISnohKkSJR14fT2yqyZ4e9K5vqc7hrtY2Y1Dw0ZwAzQ6DQsxsaCUuSIIi8v0Cq6w==", + "dependencies": { + "@types/estree": "*" + } + }, "node_modules/@types/hast": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.3.tgz", @@ -1169,6 +2159,11 @@ "@types/unist": "*" } }, + "node_modules/@types/mdx": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@types/mdx/-/mdx-2.0.10.tgz", + "integrity": "sha512-Rllzc5KHk0Al5/WANwgSPl1/CwjqCy+AZrGd78zuK+jO9aDM6ffblZ+zIjgPNAaEBmlO0RYDvLNh7wD0zKVgEg==" + }, "node_modules/@types/ms": { "version": "0.7.34", "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.34.tgz", @@ -1311,6 +2306,14 @@ "node": ">=0.4.0" } }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, "node_modules/ansi-align": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", @@ -1403,6 +2406,14 @@ "sprintf-js": "~1.0.2" } }, + "node_modules/aria-query": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", + "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", + "dependencies": { + "dequal": "^2.0.3" + } + }, "node_modules/array-iterate": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/array-iterate/-/array-iterate-2.0.1.tgz", @@ -1412,14 +2423,22 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/astring": { + "version": "1.8.6", + "resolved": "https://registry.npmjs.org/astring/-/astring-1.8.6.tgz", + "integrity": "sha512-ISvCdHdlTDlH5IpxQJIex7BWBywFWgjJSVdwst+/iQCoEYnyOaQ95+X1JGshuBjGp6nxKUy1jMgE3zPqN7fQdg==", + "bin": { + "astring": "bin/astring" + } + }, "node_modules/astro": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/astro/-/astro-4.0.7.tgz", - "integrity": "sha512-K+Ms2AAQvi6yERPuglcI69tnHyTT44JCjzqprSjw3uOwFX7N9obpLgbhmLMH1fPFTgzt3ZD7APjmtDPN51makw==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/astro/-/astro-4.2.1.tgz", + "integrity": "sha512-TcrveW2/lohmljrbTUgcDxajEdF1yK+zBvb7SXroloGix/d4jkegO6GANFgvyy0zprMyajW7qgJEFyhWUX86Vw==", "dependencies": { "@astrojs/compiler": "^2.3.4", "@astrojs/internal-helpers": "0.2.1", - "@astrojs/markdown-remark": "4.0.1", + "@astrojs/markdown-remark": "4.1.0", "@astrojs/telemetry": "3.0.4", "@babel/core": "^7.23.3", "@babel/generator": "^7.23.3", @@ -1429,6 +2448,8 @@ "@babel/types": "^7.23.3", "@types/babel__core": "^7.20.4", "acorn": "^8.11.2", + "aria-query": "^5.3.0", + "axobject-query": "^4.0.0", "boxen": "^7.1.1", "chokidar": "^3.5.3", "ci-info": "^4.0.0", @@ -1467,7 +2488,7 @@ "resolve": "^1.22.4", "semver": "^7.5.4", "server-destroy": "^1.0.1", - "shikiji": "^0.6.13", + "shikiji": "^0.9.18", "string-width": "^7.0.0", "strip-ansi": "^7.1.0", "tsconfck": "^3.0.0", @@ -1487,7 +2508,28 @@ "npm": ">=6.14.0" }, "optionalDependencies": { - "sharp": "^0.32.5" + "sharp": "^0.32.6" + } + }, + "node_modules/astro/node_modules/@astrojs/markdown-remark": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@astrojs/markdown-remark/-/markdown-remark-4.1.0.tgz", + "integrity": "sha512-JnIy6zk+6f/SgSVMZecZFxQt0faT1uBckwYCuBxKH1hYYJsal8OOe+tx6JxfnyaV+xViyjUvQ28mmn+p/F5LkQ==", + "dependencies": { + "@astrojs/prism": "^3.0.0", + "github-slugger": "^2.0.0", + "import-meta-resolve": "^4.0.0", + "mdast-util-definitions": "^6.0.0", + "rehype-raw": "^7.0.0", + "rehype-stringify": "^10.0.0", + "remark-gfm": "^4.0.0", + "remark-parse": "^11.0.0", + "remark-rehype": "^11.0.0", + "remark-smartypants": "^2.0.0", + "shikiji": "^0.9.18", + "unified": "^11.0.4", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.1" } }, "node_modules/astro/node_modules/argparse": { @@ -1506,6 +2548,58 @@ "js-yaml": "bin/js-yaml.js" } }, + "node_modules/astro/node_modules/shikiji": { + "version": "0.9.19", + "resolved": "https://registry.npmjs.org/shikiji/-/shikiji-0.9.19.tgz", + "integrity": "sha512-Kw2NHWktdcdypCj1GkKpXH4o6Vxz8B8TykPlPuLHOGSV8VkhoCLcFOH4k19K4LXAQYRQmxg+0X/eM+m2sLhAkg==", + "dependencies": { + "shikiji-core": "0.9.19" + } + }, + "node_modules/autoprefixer": { + "version": "10.4.16", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.16.tgz", + "integrity": "sha512-7vd3UC6xKp0HLfua5IjZlcXvGAGy7cBAXTg2lyQ/8WpNhd6SiZ8Be+xm3FyBSYJx5GKcpRCzBh7RH4/0dnY+uQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "browserslist": "^4.21.10", + "caniuse-lite": "^1.0.30001538", + "fraction.js": "^4.3.6", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.0", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/axobject-query": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.0.0.tgz", + "integrity": "sha512-+60uv1hiVFhHZeO+Lz0RYzsVHy5Wr1ayX0mwda9KPDVLNJgZ1T9Ny7VmFbLDzxsH0D87I86vgj3gFrjTJUYznw==", + "dependencies": { + "dequal": "^2.0.3" + } + }, "node_modules/b4a": { "version": "1.6.4", "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.4.tgz", @@ -1617,11 +2711,11 @@ } }, "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dependencies": { - "fill-range": "^7.0.1" + "fill-range": "^7.1.1" }, "engines": { "node": ">=8" @@ -1693,9 +2787,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001570", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001570.tgz", - "integrity": "sha512-+3e0ASu4sw1SWaoCtvPeyXp+5PsjigkSt8OXZbF9StH5pQWbxEjLAZE3n8Aup5udop1uRiKA7a4utUk/uoSpUw==", + "version": "1.0.30001634", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001634.tgz", + "integrity": "sha512-fbBYXQ9q3+yp1q1gBk86tOFs4pyn/yxFm5ZNP18OXJDfA3txImOY9PhfxVggZ4vRHDqoU8NrKU81eN0OtzOgRA==", "funding": [ { "type": "opencollective", @@ -1760,6 +2854,15 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/character-reference-invalid": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz", + "integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/chokidar": { "version": "3.5.3", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", @@ -1946,6 +3049,15 @@ "node": ">=6" } }, + "node_modules/collapse-white-space": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-2.1.0.tgz", + "integrity": "sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/color": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", @@ -2040,6 +3152,103 @@ "node": ">= 8" } }, + "node_modules/css-blank-pseudo": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-6.0.1.tgz", + "integrity": "sha512-goSnEITByxTzU4Oh5oJZrEWudxTqk7L6IXj1UW69pO6Hv0UdX+Vsrt02FFu5DweRh2bLu6WpX/+zsQCu5O1gKw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "postcss-selector-parser": "^6.0.13" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/css-has-pseudo": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-6.0.1.tgz", + "integrity": "sha512-WwoVKqNxApfEI7dWFyaHoeFCcUPD+lPyjL6lNpRUNX7IyIUuVpawOTwwA5D0ZR6V2xQZonNPVj8kEcxzEaAQfQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "@csstools/selector-specificity": "^3.0.1", + "postcss-selector-parser": "^6.0.13", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/css-prefers-color-scheme": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-9.0.1.tgz", + "integrity": "sha512-iFit06ochwCKPRiWagbTa1OAWCvWWVdEnIFd8BaRrgO8YrrNh4RAWUQTFcYX5tdFZgFl1DJ3iiULchZyEbnF4g==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/cssdb": { + "version": "7.10.0", + "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-7.10.0.tgz", + "integrity": "sha512-yGZ5tmA57gWh/uvdQBHs45wwFY0IBh3ypABk5sEubPBPSzXzkNgsWReqx7gdx6uhC+QoFBe+V8JwBB9/hQ6cIA==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + } + ] + }, + "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==", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/debug": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", @@ -2272,6 +3481,69 @@ "node": ">=4" } }, + "node_modules/estree-util-attach-comments": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/estree-util-attach-comments/-/estree-util-attach-comments-3.0.0.tgz", + "integrity": "sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw==", + "dependencies": { + "@types/estree": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-build-jsx": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/estree-util-build-jsx/-/estree-util-build-jsx-3.0.1.tgz", + "integrity": "sha512-8U5eiL6BTrPxp/CHbs2yMgP8ftMhR5ww1eIKoWRMlqvltHF8fZn5LRDvTKuxD3DUn+shRbLGqXemcP51oFCsGQ==", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "estree-walker": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-is-identifier-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-3.0.0.tgz", + "integrity": "sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-to-js": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/estree-util-to-js/-/estree-util-to-js-2.0.0.tgz", + "integrity": "sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg==", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "astring": "^1.8.0", + "source-map": "^0.7.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-visit": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/estree-util-visit/-/estree-util-visit-2.0.0.tgz", + "integrity": "sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/estree-walker": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", @@ -2362,9 +3634,9 @@ } }, "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dependencies": { "to-regex-range": "^5.0.1" }, @@ -2404,6 +3676,18 @@ "node": ">=8" } }, + "node_modules/fraction.js": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", + "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", + "engines": { + "node": "*" + }, + "funding": { + "type": "patreon", + "url": "https://github.com/sponsors/rawify" + } + }, "node_modules/fs-constants": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", @@ -2609,6 +3893,33 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/hast-util-to-estree": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hast-util-to-estree/-/hast-util-to-estree-3.1.0.tgz", + "integrity": "sha512-lfX5g6hqVh9kjS/B9E2gSkvHH4SZNiQFiqWS0x9fENzEl+8W12RqdRxX6d/Cwxi30tPQs3bIO+aolQJNp1bIyw==", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "devlop": "^1.0.0", + "estree-util-attach-comments": "^3.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "hast-util-whitespace": "^3.0.0", + "mdast-util-mdx-expression": "^2.0.0", + "mdast-util-mdx-jsx": "^3.0.0", + "mdast-util-mdxjs-esm": "^2.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0", + "style-to-object": "^0.4.0", + "unist-util-position": "^5.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/hast-util-to-html": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-9.0.0.tgz", @@ -2632,6 +3943,45 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/hast-util-to-jsx-runtime": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/hast-util-to-jsx-runtime/-/hast-util-to-jsx-runtime-2.3.0.tgz", + "integrity": "sha512-H/y0+IWPdsLLS738P8tDnrQ8Z+dj12zQQ6WC11TIM21C8WFVoIxcqWXf2H3hiTVZjF1AWqoimGwrTWecWrnmRQ==", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "hast-util-whitespace": "^3.0.0", + "mdast-util-mdx-expression": "^2.0.0", + "mdast-util-mdx-jsx": "^3.0.0", + "mdast-util-mdxjs-esm": "^2.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0", + "style-to-object": "^1.0.0", + "unist-util-position": "^5.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-jsx-runtime/node_modules/inline-style-parser": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.2.2.tgz", + "integrity": "sha512-EcKzdTHVe8wFVOGEYXiW9WmJXPjqi1T+234YpJr98RiFYKHV3cdy1+3mkTE+KHTHxFFLH51SfaGOoUdW+v7ViQ==" + }, + "node_modules/hast-util-to-jsx-runtime/node_modules/style-to-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-1.0.5.tgz", + "integrity": "sha512-rDRwHtoDD3UMMrmZ6BzOW0naTjMsVZLIjsGleSKS/0Oz+cgCfAPRspaqJuE8rDzpKha/nEvnM0IF4seEAZUTKQ==", + "dependencies": { + "inline-style-parser": "0.2.2" + } + }, "node_modules/hast-util-to-parse5": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-8.0.0.tgz", @@ -2706,9 +4056,13 @@ } }, "node_modules/iconoir": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/iconoir/-/iconoir-6.1.0.tgz", - "integrity": "sha512-K8Jrqkp51MdcDBzfiSY2vt9gHsujwEmoOHlWI2Wk++cgVvR1bP+fMLFmwBTPHduZ3aOK95snE6rUmlLPH7Yhnw==" + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/iconoir/-/iconoir-7.2.0.tgz", + "integrity": "sha512-uGaTCzdvQUAfNMDM2yJieGVM2KbW+8/8nkyLVtvXX+79tHQWxgPhpvk9g7rnZcbQuZ/YFAdP+0HB3eAmk+l2qw==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/iconoir" + } }, "node_modules/iconv-lite": { "version": "0.4.24", @@ -2760,6 +4114,33 @@ "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", "optional": true }, + "node_modules/inline-style-parser": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.1.1.tgz", + "integrity": "sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==" + }, + "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==", + "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==", + "dependencies": { + "is-alphabetical": "^2.0.0", + "is-decimal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/is-arrayish": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", @@ -2810,6 +4191,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "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==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/is-docker": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", @@ -2859,6 +4249,15 @@ "node": ">=0.10.0" } }, + "node_modules/is-hexadecimal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz", + "integrity": "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/is-inside-container": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", @@ -2906,6 +4305,14 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/is-reference": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.2.tgz", + "integrity": "sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==", + "dependencies": { + "@types/estree": "*" + } + }, "node_modules/is-stream": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", @@ -3007,6 +4414,11 @@ "node": ">=6" } }, + "node_modules/lite-youtube-embed": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/lite-youtube-embed/-/lite-youtube-embed-0.2.0.tgz", + "integrity": "sha512-XXXAk5sbvtjjwbie3XG+6HppgTm1HTGL/Uk9z9NkJH53o7puZLur434heHzAjkS60hZB3vT4ls25zl5rMiX4EA==" + }, "node_modules/load-yaml-file": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/load-yaml-file/-/load-yaml-file-0.2.0.tgz", @@ -3099,6 +4511,17 @@ "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" }, + "node_modules/markdown-extensions": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/markdown-extensions/-/markdown-extensions-2.0.0.tgz", + "integrity": "sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/markdown-table": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.3.tgz", @@ -3266,6 +4689,80 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/mdast-util-mdx": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-mdx/-/mdast-util-mdx-3.0.0.tgz", + "integrity": "sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w==", + "dependencies": { + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-mdx-expression": "^2.0.0", + "mdast-util-mdx-jsx": "^3.0.0", + "mdast-util-mdxjs-esm": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx-expression": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-2.0.0.tgz", + "integrity": "sha512-fGCu8eWdKUKNu5mohVGkhBXCXGnOTLuFqOvGMvdikr+J1w7lDJgxThOKpwRWzzbyXAU2hhSwsmssOY4yTokluw==", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx-jsx": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.0.0.tgz", + "integrity": "sha512-XZuPPzQNBPAlaqsTTgRrcJnyFbSOBovSadFgbFu8SnuNgm+6Bdx1K+IWoitsmj6Lq6MNtI+ytOqwN70n//NaBA==", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "ccount": "^2.0.0", + "devlop": "^1.1.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "parse-entities": "^4.0.0", + "stringify-entities": "^4.0.0", + "unist-util-remove-position": "^5.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdxjs-esm": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-2.0.1.tgz", + "integrity": "sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/mdast-util-phrasing": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-4.0.0.tgz", @@ -3523,6 +5020,103 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/micromark-extension-mdx-expression": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-expression/-/micromark-extension-mdx-expression-3.0.0.tgz", + "integrity": "sha512-sI0nwhUDz97xyzqJAbHQhp5TfaxEvZZZ2JDqUo+7NvyIYG6BZ5CPPqj2ogUoPJlmXHBnyZUzISg9+oUmU6tUjQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-mdx-expression": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-mdx-jsx": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-jsx/-/micromark-extension-mdx-jsx-3.0.0.tgz", + "integrity": "sha512-uvhhss8OGuzR4/N17L1JwvmJIpPhAd8oByMawEKx6NVdBCbesjH4t+vjEp3ZXft9DwvlKSD07fCeI44/N0Vf2w==", + "dependencies": { + "@types/acorn": "^4.0.0", + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "micromark-factory-mdx-expression": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-mdx-md": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-md/-/micromark-extension-mdx-md-2.0.0.tgz", + "integrity": "sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ==", + "dependencies": { + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-mdxjs": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs/-/micromark-extension-mdxjs-3.0.0.tgz", + "integrity": "sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ==", + "dependencies": { + "acorn": "^8.0.0", + "acorn-jsx": "^5.0.0", + "micromark-extension-mdx-expression": "^3.0.0", + "micromark-extension-mdx-jsx": "^3.0.0", + "micromark-extension-mdx-md": "^2.0.0", + "micromark-extension-mdxjs-esm": "^3.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-mdxjs-esm": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs-esm/-/micromark-extension-mdxjs-esm-3.0.0.tgz", + "integrity": "sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A==", + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-position-from-estree": "^2.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/micromark-factory-destination": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.0.tgz", @@ -3564,6 +5158,31 @@ "micromark-util-types": "^2.0.0" } }, + "node_modules/micromark-factory-mdx-expression": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-mdx-expression/-/micromark-factory-mdx-expression-2.0.1.tgz", + "integrity": "sha512-F0ccWIUHRLRrYp5TC9ZYXmZo+p2AM13ggbsW4T0b5CRKP8KHVRB8t4pwtBgTxtjRmwrK0Irwm7vs2JOZabHZfg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-position-from-estree": "^2.0.0", + "vfile-message": "^4.0.0" + } + }, "node_modules/micromark-factory-space": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz", @@ -3755,6 +5374,31 @@ } ] }, + "node_modules/micromark-util-events-to-acorn": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/micromark-util-events-to-acorn/-/micromark-util-events-to-acorn-2.0.2.tgz", + "integrity": "sha512-Fk+xmBrOv9QZnEDguL9OI9/NQQp6Hz4FuQ4YmCb/5V7+9eAh1s6AYSvL20kHkD67YIg7EpE54TiSlcsf3vyZgA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "@types/acorn": "^4.0.0", + "@types/estree": "^1.0.0", + "@types/unist": "^3.0.0", + "devlop": "^1.0.0", + "estree-util-visit": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "vfile-message": "^4.0.0" + } + }, "node_modules/micromark-util-html-tag-name": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.0.tgz", @@ -4008,9 +5652,9 @@ } }, "node_modules/node-abi": { - "version": "3.52.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.52.0.tgz", - "integrity": "sha512-JJ98b02z16ILv7859irtXn4oUaFWADtvkzy2c0IAatNVX2Mc9Yoh8z6hZInn3QwvMEYhHuQloYi+TTQy67SIdQ==", + "version": "3.54.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.54.0.tgz", + "integrity": "sha512-p7eGEiQil0YUV3ItH4/tBb781L5impVmmx2E9FRKF7d18XXzp4PGT2tdYMFY6wQqgxD0IwNZOiSJ0/K0fSi/OA==", "optional": true, "dependencies": { "semver": "^7.3.5" @@ -4038,6 +5682,14 @@ "node": ">=0.10.0" } }, + "node_modules/normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/npm-run-path": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz", @@ -4222,6 +5874,30 @@ "node": ">=6" } }, + "node_modules/parse-entities": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.1.tgz", + "integrity": "sha512-SWzvYcSJh4d/SGLIOQfZ/CoNv6BTlI6YEQ7Nj82oDVnRpwe/Z/F1EMx42x3JAOwGBlCjeCH0BRJQbQ/opHL17w==", + "dependencies": { + "@types/unist": "^2.0.0", + "character-entities": "^2.0.0", + "character-entities-legacy": "^3.0.0", + "character-reference-invalid": "^2.0.0", + "decode-named-character-reference": "^1.0.0", + "is-alphanumerical": "^2.0.0", + "is-decimal": "^2.0.0", + "is-hexadecimal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/parse-entities/node_modules/@types/unist": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz", + "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==" + }, "node_modules/parse-latin": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/parse-latin/-/parse-latin-5.0.1.tgz", @@ -4278,6 +5954,16 @@ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.1.tgz", "integrity": "sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw==" }, + "node_modules/periscopic": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/periscopic/-/periscopic-3.1.0.tgz", + "integrity": "sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==", + "dependencies": { + "@types/estree": "^1.0.0", + "estree-walker": "^3.0.0", + "is-reference": "^3.0.0" + } + }, "node_modules/picocolors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", @@ -4362,9 +6048,9 @@ } }, "node_modules/postcss": { - "version": "8.4.32", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.32.tgz", - "integrity": "sha512-D/kj5JNu6oo2EIy+XL/26JEDTlIbB8hw85G8StOE6L74RQAVVP5rej6wxCNqyMbR4RkPfqvezVbPw81Ngd6Kcw==", + "version": "8.4.38", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz", + "integrity": "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==", "funding": [ { "type": "opencollective", @@ -4382,12 +6068,653 @@ "dependencies": { "nanoid": "^3.3.7", "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" + "source-map-js": "^1.2.0" }, "engines": { "node": "^10 || ^12 || >=14" } }, + "node_modules/postcss-attribute-case-insensitive": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-6.0.2.tgz", + "integrity": "sha512-IRuCwwAAQbgaLhxQdQcIIK0dCVXg3XDUnzgKD8iwdiYdwU4rMWRWyl/W9/0nA4ihVpq5pyALiHB2veBJ0292pw==", + "dependencies": { + "postcss-selector-parser": "^6.0.10" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-clamp": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/postcss-clamp/-/postcss-clamp-4.1.0.tgz", + "integrity": "sha512-ry4b1Llo/9zz+PKC+030KUnPITTJAHeOwjfAyyB60eT0AorGLdzp52s31OsPRHRf8NchkgFoG2y6fCfn1IV1Ow==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=7.6.0" + }, + "peerDependencies": { + "postcss": "^8.4.6" + } + }, + "node_modules/postcss-color-functional-notation": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-6.0.3.tgz", + "integrity": "sha512-2jBr3H0sk3qGh/3BkmLsOKcYyVfSlM1K2QQYVU7eW5mkg7ZOQ4aU/Rtbh7vJ9FxAfgf8iHRwXBsQkHqUxzTkXw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "@csstools/css-color-parser": "^1.5.0", + "@csstools/css-parser-algorithms": "^2.4.0", + "@csstools/css-tokenizer": "^2.2.2", + "@csstools/postcss-progressive-custom-properties": "^3.0.3" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-color-hex-alpha": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/postcss-color-hex-alpha/-/postcss-color-hex-alpha-9.0.3.tgz", + "integrity": "sha512-7sEHU4tAS6htlxun8AB9LDrCXoljxaC34tFVRlYKcvO+18r5fvGiXgv5bQzN40+4gXLCyWSMRK5FK31244WcCA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-color-rebeccapurple": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-9.0.2.tgz", + "integrity": "sha512-f+RDEAPW2m8UbJWkSpRfV+QxhSaQhDMihI75DVGJJh4oRIoegjheeRtINFJum9D8BqGJcvD4GLjggTvCwZ4zuA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-custom-media": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-10.0.2.tgz", + "integrity": "sha512-zcEFNRmDm2fZvTPdI1pIW3W//UruMcLosmMiCdpQnrCsTRzWlKQPYMa1ud9auL0BmrryKK1+JjIGn19K0UjO/w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "@csstools/cascade-layer-name-parser": "^1.0.5", + "@csstools/css-parser-algorithms": "^2.3.2", + "@csstools/css-tokenizer": "^2.2.1", + "@csstools/media-query-list-parser": "^2.1.5" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-custom-properties": { + "version": "13.3.3", + "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-13.3.3.tgz", + "integrity": "sha512-xLmILb2R83aG4X++iVFg8TWadOlc45xiyFHRZD6Yhhu2igrTHXL6C75AEWqx6k9lxrr9sK5rcfUI9JvTCxBTvA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "@csstools/cascade-layer-name-parser": "^1.0.6", + "@csstools/css-parser-algorithms": "^2.4.0", + "@csstools/css-tokenizer": "^2.2.2", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-custom-selectors": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-7.1.6.tgz", + "integrity": "sha512-svsjWRaxqL3vAzv71dV0/65P24/FB8TbPX+lWyyf9SZ7aZm4S4NhCn7N3Bg+Z5sZunG3FS8xQ80LrCU9hb37cw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "@csstools/cascade-layer-name-parser": "^1.0.5", + "@csstools/css-parser-algorithms": "^2.3.2", + "@csstools/css-tokenizer": "^2.2.1", + "postcss-selector-parser": "^6.0.13" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-dir-pseudo-class": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-8.0.1.tgz", + "integrity": "sha512-uULohfWBBVoFiZXgsQA24JV6FdKIidQ+ZqxOouhWwdE+qJlALbkS5ScB43ZTjPK+xUZZhlaO/NjfCt5h4IKUfw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "postcss-selector-parser": "^6.0.13" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-double-position-gradients": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-5.0.3.tgz", + "integrity": "sha512-QKYpwmaSm6HcdS0ndAuWSNNMv78R1oSySoh3mYBmctHWr2KWcwPJVakdOyU4lvFVW0GRu9wfIQwGeM4p3xU9ow==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "@csstools/postcss-progressive-custom-properties": "^3.0.3", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-focus-visible": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/postcss-focus-visible/-/postcss-focus-visible-9.0.1.tgz", + "integrity": "sha512-N2VQ5uPz3Z9ZcqI5tmeholn4d+1H14fKXszpjogZIrFbhaq0zNAtq8sAnw6VLiqGbL8YBzsnu7K9bBkTqaRimQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "postcss-selector-parser": "^6.0.13" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-focus-within": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/postcss-focus-within/-/postcss-focus-within-8.0.1.tgz", + "integrity": "sha512-NFU3xcY/xwNaapVb+1uJ4n23XImoC86JNwkY/uduytSl2s9Ekc2EpzmRR63+ExitnW3Mab3Fba/wRPCT5oDILA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "postcss-selector-parser": "^6.0.13" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-font-variant": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-5.0.0.tgz", + "integrity": "sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA==", + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-gap-properties": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-5.0.1.tgz", + "integrity": "sha512-k2z9Cnngc24c0KF4MtMuDdToROYqGMMUQGcE6V0odwjHyOHtaDBlLeRBV70y9/vF7KIbShrTRZ70JjsI1BZyWw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-image-set-function": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-image-set-function/-/postcss-image-set-function-6.0.2.tgz", + "integrity": "sha512-/O1xwqpJiz/apxGQi7UUfv1xUcorvkHZfvCYHPpRxxZj2WvjD0rg0+/+c+u5/Do5CpUg3XvfYxMrhcnjW1ArDQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-lab-function": { + "version": "6.0.8", + "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-6.0.8.tgz", + "integrity": "sha512-agYs7R9Z5gnX837fCkH8TEQIHdhyDsMPPnpuuENt/dxoDVAykBaqbdxIN4DagOj+ZQo20iRNNJeY3MsFcdI6Sg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "@csstools/css-color-parser": "^1.5.0", + "@csstools/css-parser-algorithms": "^2.4.0", + "@csstools/css-tokenizer": "^2.2.2", + "@csstools/postcss-progressive-custom-properties": "^3.0.3" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-logical": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-logical/-/postcss-logical-7.0.1.tgz", + "integrity": "sha512-8GwUQZE0ri0K0HJHkDv87XOLC8DE0msc+HoWLeKdtjDZEwpZ5xuK3QdV6FhmHSQW40LPkg43QzvATRAI3LsRkg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-nesting": { + "version": "12.0.2", + "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-12.0.2.tgz", + "integrity": "sha512-63PpJHSeNs93S3ZUIyi+7kKx4JqOIEJ6QYtG3x+0qA4J03+4n0iwsyA1GAHyWxsHYljQS4/4ZK1o2sMi70b5wQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "@csstools/selector-specificity": "^3.0.1", + "postcss-selector-parser": "^6.0.13" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-opacity-percentage": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postcss-opacity-percentage/-/postcss-opacity-percentage-2.0.0.tgz", + "integrity": "sha512-lyDrCOtntq5Y1JZpBFzIWm2wG9kbEdujpNt4NLannF+J9c8CgFIzPa80YQfdza+Y+yFfzbYj/rfoOsYsooUWTQ==", + "funding": [ + { + "type": "kofi", + "url": "https://ko-fi.com/mrcgrtz" + }, + { + "type": "liberapay", + "url": "https://liberapay.com/mrcgrtz" + } + ], + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-overflow-shorthand": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-5.0.1.tgz", + "integrity": "sha512-XzjBYKLd1t6vHsaokMV9URBt2EwC9a7nDhpQpjoPk2HRTSQfokPfyAS/Q7AOrzUu6q+vp/GnrDBGuj/FCaRqrQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-page-break": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/postcss-page-break/-/postcss-page-break-3.0.4.tgz", + "integrity": "sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ==", + "peerDependencies": { + "postcss": "^8" + } + }, + "node_modules/postcss-place": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/postcss-place/-/postcss-place-9.0.1.tgz", + "integrity": "sha512-JfL+paQOgRQRMoYFc2f73pGuG/Aw3tt4vYMR6UA3cWVMxivviPTnMFnFTczUJOA4K2Zga6xgQVE+PcLs64WC8Q==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-preset-env": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-9.3.0.tgz", + "integrity": "sha512-ycw6doPrqV6QxDCtgiyGDef61bEfiSc59HGM4gOw/wxQxmKnhuEery61oOC/5ViENz/ycpRsuhTexs1kUBTvVw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "@csstools/postcss-cascade-layers": "^4.0.1", + "@csstools/postcss-color-function": "^3.0.7", + "@csstools/postcss-color-mix-function": "^2.0.7", + "@csstools/postcss-exponential-functions": "^1.0.1", + "@csstools/postcss-font-format-keywords": "^3.0.0", + "@csstools/postcss-gamut-mapping": "^1.0.0", + "@csstools/postcss-gradients-interpolation-method": "^4.0.7", + "@csstools/postcss-hwb-function": "^3.0.6", + "@csstools/postcss-ic-unit": "^3.0.2", + "@csstools/postcss-initial": "^1.0.0", + "@csstools/postcss-is-pseudo-class": "^4.0.3", + "@csstools/postcss-logical-float-and-clear": "^2.0.0", + "@csstools/postcss-logical-overflow": "^1.0.0", + "@csstools/postcss-logical-overscroll-behavior": "^1.0.0", + "@csstools/postcss-logical-resize": "^2.0.0", + "@csstools/postcss-logical-viewport-units": "^2.0.3", + "@csstools/postcss-media-minmax": "^1.1.0", + "@csstools/postcss-media-queries-aspect-ratio-number-values": "^2.0.3", + "@csstools/postcss-nested-calc": "^3.0.0", + "@csstools/postcss-normalize-display-values": "^3.0.1", + "@csstools/postcss-oklab-function": "^3.0.7", + "@csstools/postcss-progressive-custom-properties": "^3.0.2", + "@csstools/postcss-relative-color-syntax": "^2.0.7", + "@csstools/postcss-scope-pseudo-class": "^3.0.0", + "@csstools/postcss-stepped-value-functions": "^3.0.2", + "@csstools/postcss-text-decoration-shorthand": "^3.0.3", + "@csstools/postcss-trigonometric-functions": "^3.0.2", + "@csstools/postcss-unset-value": "^3.0.0", + "autoprefixer": "^10.4.16", + "browserslist": "^4.22.1", + "css-blank-pseudo": "^6.0.0", + "css-has-pseudo": "^6.0.0", + "css-prefers-color-scheme": "^9.0.0", + "cssdb": "^7.9.0", + "postcss-attribute-case-insensitive": "^6.0.2", + "postcss-clamp": "^4.1.0", + "postcss-color-functional-notation": "^6.0.2", + "postcss-color-hex-alpha": "^9.0.2", + "postcss-color-rebeccapurple": "^9.0.1", + "postcss-custom-media": "^10.0.2", + "postcss-custom-properties": "^13.3.2", + "postcss-custom-selectors": "^7.1.6", + "postcss-dir-pseudo-class": "^8.0.0", + "postcss-double-position-gradients": "^5.0.2", + "postcss-focus-visible": "^9.0.0", + "postcss-focus-within": "^8.0.0", + "postcss-font-variant": "^5.0.0", + "postcss-gap-properties": "^5.0.0", + "postcss-image-set-function": "^6.0.1", + "postcss-lab-function": "^6.0.7", + "postcss-logical": "^7.0.0", + "postcss-nesting": "^12.0.1", + "postcss-opacity-percentage": "^2.0.0", + "postcss-overflow-shorthand": "^5.0.0", + "postcss-page-break": "^3.0.4", + "postcss-place": "^9.0.0", + "postcss-pseudo-class-any-link": "^9.0.0", + "postcss-replace-overflow-wrap": "^4.0.0", + "postcss-selector-not": "^7.0.1", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-pseudo-class-any-link": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-9.0.1.tgz", + "integrity": "sha512-cKYGGZ9yzUZi+dZd7XT2M8iSDfo+T2Ctbpiizf89uBTBfIpZpjvTavzIJXpCReMVXSKROqzpxClNu6fz4DHM0Q==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "postcss-selector-parser": "^6.0.13" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-replace-overflow-wrap": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-4.0.0.tgz", + "integrity": "sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw==", + "peerDependencies": { + "postcss": "^8.0.3" + } + }, + "node_modules/postcss-selector-not": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-7.0.1.tgz", + "integrity": "sha512-1zT5C27b/zeJhchN7fP0kBr16Cc61mu7Si9uWWLoA3Px/D9tIJPKchJCkUH3tPO5D0pCFmGeApAv8XpXBQJ8SQ==", + "dependencies": { + "postcss-selector-parser": "^6.0.10" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.0.15", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.15.tgz", + "integrity": "sha512-rEYkQOMUCEMhsKbK66tbEU9QVIxbhN18YiniAwA7XQYTVBqrBy+P2p5JcdqsHgKM2zWylp8d7J6eszocfds5Sw==", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" + }, "node_modules/prebuild-install": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.1.tgz", @@ -4698,6 +7025,19 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/remark-mdx": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-3.0.0.tgz", + "integrity": "sha512-O7yfjuC6ra3NHPbRVxfflafAj3LTwx3b73aBvkEFU5z4PsD6FD4vrqJAkE5iNGLz71GdjXfgRqm3SQ0h0VuE7g==", + "dependencies": { + "mdast-util-mdx": "^3.0.0", + "micromark-extension-mdxjs": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/remark-parse": { "version": "11.0.0", "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-11.0.0.tgz", @@ -5231,9 +7571,12 @@ } }, "node_modules/rollup": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.9.1.tgz", - "integrity": "sha512-pgPO9DWzLoW/vIhlSoDByCzcpX92bKEorbgXuZrqxByte3JFk2xSW2JEeAcyLc9Ru9pqcNNW+Ob7ntsk2oT/Xw==", + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.18.0.tgz", + "integrity": "sha512-QmJz14PX3rzbJCN1SG4Xe/bAAX2a6NpCP8ab2vfu2GiUr8AQcr2nCV/oEO3yneFarB67zk8ShlIyWb2LGTb3Sg==", + "dependencies": { + "@types/estree": "1.0.5" + }, "bin": { "rollup": "dist/bin/rollup" }, @@ -5242,19 +7585,22 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.9.1", - "@rollup/rollup-android-arm64": "4.9.1", - "@rollup/rollup-darwin-arm64": "4.9.1", - "@rollup/rollup-darwin-x64": "4.9.1", - "@rollup/rollup-linux-arm-gnueabihf": "4.9.1", - "@rollup/rollup-linux-arm64-gnu": "4.9.1", - "@rollup/rollup-linux-arm64-musl": "4.9.1", - "@rollup/rollup-linux-riscv64-gnu": "4.9.1", - "@rollup/rollup-linux-x64-gnu": "4.9.1", - "@rollup/rollup-linux-x64-musl": "4.9.1", - "@rollup/rollup-win32-arm64-msvc": "4.9.1", - "@rollup/rollup-win32-ia32-msvc": "4.9.1", - "@rollup/rollup-win32-x64-msvc": "4.9.1", + "@rollup/rollup-android-arm-eabi": "4.18.0", + "@rollup/rollup-android-arm64": "4.18.0", + "@rollup/rollup-darwin-arm64": "4.18.0", + "@rollup/rollup-darwin-x64": "4.18.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.18.0", + "@rollup/rollup-linux-arm-musleabihf": "4.18.0", + "@rollup/rollup-linux-arm64-gnu": "4.18.0", + "@rollup/rollup-linux-arm64-musl": "4.18.0", + "@rollup/rollup-linux-powerpc64le-gnu": "4.18.0", + "@rollup/rollup-linux-riscv64-gnu": "4.18.0", + "@rollup/rollup-linux-s390x-gnu": "4.18.0", + "@rollup/rollup-linux-x64-gnu": "4.18.0", + "@rollup/rollup-linux-x64-musl": "4.18.0", + "@rollup/rollup-win32-arm64-msvc": "4.18.0", + "@rollup/rollup-win32-ia32-msvc": "4.18.0", + "@rollup/rollup-win32-x64-msvc": "4.18.0", "fsevents": "~2.3.2" } }, @@ -5406,6 +7752,11 @@ "hast-util-to-html": "^9.0.0" } }, + "node_modules/shikiji-core": { + "version": "0.9.19", + "resolved": "https://registry.npmjs.org/shikiji-core/-/shikiji-core-0.9.19.tgz", + "integrity": "sha512-AFJu/vcNT21t0e6YrfadZ+9q86gvPum6iywRyt1OtIPjPFe25RQnYJyxHQPMLKCCWA992TPxmEmbNcOZCAJclw==" + }, "node_modules/signal-exit": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", @@ -5499,10 +7850,18 @@ "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.45.tgz", "integrity": "sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==" }, + "node_modules/source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "engines": { + "node": ">= 8" + } + }, "node_modules/source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", + "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", "engines": { "node": ">=0.10.0" } @@ -5653,6 +8012,14 @@ "node": ">=0.10.0" } }, + "node_modules/style-to-object": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-0.4.4.tgz", + "integrity": "sha512-HYNoHZa2GorYNyqiCaBgsxvcJIn7OHq6inEga+E6Ke3m5JkoqpQbnFssk4jwe+K7AhGa2fcha4wSOf1Kn01dMg==", + "dependencies": { + "inline-style-parser": "0.1.1" + } + }, "node_modules/supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", @@ -5870,6 +8237,31 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/unist-util-position-from-estree": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position-from-estree/-/unist-util-position-from-estree-2.0.0.tgz", + "integrity": "sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ==", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-remove-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-5.0.0.tgz", + "integrity": "sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q==", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-visit": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/unist-util-stringify-position": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", @@ -6001,13 +8393,13 @@ } }, "node_modules/vite": { - "version": "5.0.10", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.0.10.tgz", - "integrity": "sha512-2P8J7WWgmc355HUMlFrwofacvr98DAjoE52BfdbwQtyLH06XKwaL/FMnmKM2crF0iX4MpmMKoDlNCB1ok7zHCw==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.3.1.tgz", + "integrity": "sha512-XBmSKRLXLxiaPYamLv3/hnP/KXDai1NDexN0FpkTaZXTfycHvkRHoenpgl/fvuK/kPbB6xAgoyiryAhQNxYmAQ==", "dependencies": { - "esbuild": "^0.19.3", - "postcss": "^8.4.32", - "rollup": "^4.2.0" + "esbuild": "^0.21.3", + "postcss": "^8.4.38", + "rollup": "^4.13.0" }, "bin": { "vite": "bin/vite.js" @@ -6054,6 +8446,388 @@ } } }, + "node_modules/vite/node_modules/@esbuild/aix-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", + "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/android-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", + "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/android-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", + "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/android-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", + "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/darwin-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", + "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/darwin-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", + "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/freebsd-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", + "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/freebsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", + "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", + "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", + "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", + "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-loong64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", + "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", + "cpu": [ + "loong64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-mips64el": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", + "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", + "cpu": [ + "mips64el" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", + "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-riscv64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", + "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", + "cpu": [ + "riscv64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-s390x": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", + "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", + "cpu": [ + "s390x" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", + "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/netbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", + "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/openbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", + "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/sunos-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", + "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/win32-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", + "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/win32-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", + "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/win32-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", + "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/esbuild": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", + "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.21.5", + "@esbuild/android-arm": "0.21.5", + "@esbuild/android-arm64": "0.21.5", + "@esbuild/android-x64": "0.21.5", + "@esbuild/darwin-arm64": "0.21.5", + "@esbuild/darwin-x64": "0.21.5", + "@esbuild/freebsd-arm64": "0.21.5", + "@esbuild/freebsd-x64": "0.21.5", + "@esbuild/linux-arm": "0.21.5", + "@esbuild/linux-arm64": "0.21.5", + "@esbuild/linux-ia32": "0.21.5", + "@esbuild/linux-loong64": "0.21.5", + "@esbuild/linux-mips64el": "0.21.5", + "@esbuild/linux-ppc64": "0.21.5", + "@esbuild/linux-riscv64": "0.21.5", + "@esbuild/linux-s390x": "0.21.5", + "@esbuild/linux-x64": "0.21.5", + "@esbuild/netbsd-x64": "0.21.5", + "@esbuild/openbsd-x64": "0.21.5", + "@esbuild/sunos-x64": "0.21.5", + "@esbuild/win32-arm64": "0.21.5", + "@esbuild/win32-ia32": "0.21.5", + "@esbuild/win32-x64": "0.21.5" + } + }, "node_modules/vitefu": { "version": "0.2.5", "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-0.2.5.tgz", @@ -6486,6 +9260,14 @@ "@jridgewell/trace-mapping": "^0.3.9" } }, + "@astro-community/astro-embed-youtube": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@astro-community/astro-embed-youtube/-/astro-embed-youtube-0.4.3.tgz", + "integrity": "sha512-zXtPmR9yxrTo6cuLhH8v+r62bsXbsLJgsU2FiZalPr4bXJxAUQEIlG46S/qK0AEXi9uNShKqy4+zBaJ98xTVEg==", + "requires": { + "lite-youtube-embed": "^0.2.0" + } + }, "@astrojs/check": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/@astrojs/check/-/check-0.3.3.tgz", @@ -6561,6 +9343,28 @@ "vfile": "^6.0.1" } }, + "@astrojs/mdx": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@astrojs/mdx/-/mdx-2.0.3.tgz", + "integrity": "sha512-wFjQX5CihU5B4UAQNwc2R48ph0flpc6/yvDCFANE0agtgI2+BaVcAjuW0EhGOQCZ65dQDqnFKE0lvGs7EADYpg==", + "requires": { + "@astrojs/markdown-remark": "4.0.1", + "@mdx-js/mdx": "^3.0.0", + "acorn": "^8.11.2", + "es-module-lexer": "^1.4.1", + "estree-util-visit": "^2.0.0", + "github-slugger": "^2.0.0", + "gray-matter": "^4.0.3", + "hast-util-to-html": "^9.0.0", + "kleur": "^4.1.4", + "rehype-raw": "^7.0.0", + "remark-gfm": "^4.0.0", + "remark-smartypants": "^2.0.0", + "source-map": "^0.7.4", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.1" + } + }, "@astrojs/prism": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@astrojs/prism/-/prism-3.0.0.tgz", @@ -6840,6 +9644,303 @@ "to-fast-properties": "^2.0.0" } }, + "@csstools/cascade-layer-name-parser": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@csstools/cascade-layer-name-parser/-/cascade-layer-name-parser-1.0.6.tgz", + "integrity": "sha512-HkxRNs6ZIV0VjLFw6k5G8K35vd9r+O8B1Vr+QVD8M5Y44eQxyHtc42BdF74FQatXACPnitOR1+sRx2oWdnKTQw==", + "requires": {} + }, + "@csstools/color-helpers": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-4.0.0.tgz", + "integrity": "sha512-wjyXB22/h2OvxAr3jldPB7R7kjTUEzopvjitS8jWtyd8fN6xJ8vy1HnHu0ZNfEkqpBJgQ76Q+sBDshWcMvTa/w==" + }, + "@csstools/css-calc": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-1.1.5.tgz", + "integrity": "sha512-UhI5oSRAUtTHY3MyGahqn0ZzQOHVoPpfvUcOmYipAZ1rILAvCBoyiLSsa/clv1Xxct0SMKIq93KO5Bfl1cb6tQ==", + "requires": {} + }, + "@csstools/css-color-parser": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-1.5.0.tgz", + "integrity": "sha512-PUhSg1MgU2sjYhA6moOmxYesqVqYTJwcVw12boTNbDX7Af+VK02MkgvmBBY2Z2qU6UN5HOQ+wrF0qQJGsTFY7w==", + "requires": { + "@csstools/color-helpers": "^4.0.0", + "@csstools/css-calc": "^1.1.5" + } + }, + "@csstools/css-parser-algorithms": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.4.0.tgz", + "integrity": "sha512-/PPLr2g5PAUCKAPEbfyk6/baZA+WJHQtUhPkoCQMpyRE8I0lXrG1QFRN8e5s3ZYxM8d/g5BZc6lH3s8Op7/VEg==", + "requires": {} + }, + "@csstools/css-tokenizer": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-2.2.2.tgz", + "integrity": "sha512-wCDUe/MAw7npAHFLyW3QjSyLA66S5QFaV1jIXlNQvdJ8RzXDSgALa49eWcUO6P55ARQaz0TsDdAgdRgkXFYY8g==" + }, + "@csstools/media-query-list-parser": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-2.1.6.tgz", + "integrity": "sha512-R6AKl9vaU0It7D7TR2lQn0pre5aQfdeqHRePlaRCY8rHL3l9eVlNRpsEVDKFi/zAjzv68CxH2M5kqbhPFPKjvw==", + "requires": {} + }, + "@csstools/postcss-cascade-layers": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@csstools/postcss-cascade-layers/-/postcss-cascade-layers-4.0.2.tgz", + "integrity": "sha512-PqM+jvg5T2tB4FHX+akrMGNWAygLupD4FNUjcv4PSvtVuWZ6ISxuo37m4jFGU7Jg3rCfloGzKd0+xfr5Ec3vZQ==", + "requires": { + "@csstools/selector-specificity": "^3.0.1", + "postcss-selector-parser": "^6.0.13" + } + }, + "@csstools/postcss-color-function": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@csstools/postcss-color-function/-/postcss-color-function-3.0.8.tgz", + "integrity": "sha512-jvbF7eCRbIcxWqby0kk2Mt85QtGzRRpFFYdlJCJ80Tuiv43PY+auS/nBl8pDQQ4Ndm4vsm4IC/wCZDcJUmpJmg==", + "requires": { + "@csstools/css-color-parser": "^1.5.0", + "@csstools/css-parser-algorithms": "^2.4.0", + "@csstools/css-tokenizer": "^2.2.2", + "@csstools/postcss-progressive-custom-properties": "^3.0.3" + } + }, + "@csstools/postcss-color-mix-function": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/@csstools/postcss-color-mix-function/-/postcss-color-mix-function-2.0.8.tgz", + "integrity": "sha512-sGhk+TdZ2TeXspc6LSYSYC8WgzLlxoknUaObKgB0mk+dNjRQgSSIeCU+qrCwvHmwM+uTNKtiS8mntDzyQLHTTA==", + "requires": { + "@csstools/css-color-parser": "^1.5.0", + "@csstools/css-parser-algorithms": "^2.4.0", + "@csstools/css-tokenizer": "^2.2.2", + "@csstools/postcss-progressive-custom-properties": "^3.0.3" + } + }, + "@csstools/postcss-exponential-functions": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@csstools/postcss-exponential-functions/-/postcss-exponential-functions-1.0.2.tgz", + "integrity": "sha512-VRIYrwNCkZRqzsGB4jGT+XcNXsoiwyqy0Vf7C3I/5OPcf7WcWK3G1sBYFqqgWLGtpwc7m1m8TcorGY1xdh5abg==", + "requires": { + "@csstools/css-calc": "^1.1.5", + "@csstools/css-parser-algorithms": "^2.4.0", + "@csstools/css-tokenizer": "^2.2.2" + } + }, + "@csstools/postcss-font-format-keywords": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-font-format-keywords/-/postcss-font-format-keywords-3.0.1.tgz", + "integrity": "sha512-D1lcG2sfotTq6yBEOMV3myFxJLT10F3DLYZJMbiny5YToqzHWodZen8WId3UTimm0mEHitXqAUNL5jdd6RzVdA==", + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "@csstools/postcss-gamut-mapping": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-gamut-mapping/-/postcss-gamut-mapping-1.0.1.tgz", + "integrity": "sha512-GDVzfNbnc7x3GusFklvt0mYXIWVzxEtEtTFEW664NgZh/5V7Z89hZKBMl9piOAHXuxijfHtE+kul/ShfeLUvcA==", + "requires": { + "@csstools/css-color-parser": "^1.5.0", + "@csstools/css-parser-algorithms": "^2.4.0", + "@csstools/css-tokenizer": "^2.2.2" + } + }, + "@csstools/postcss-gradients-interpolation-method": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/@csstools/postcss-gradients-interpolation-method/-/postcss-gradients-interpolation-method-4.0.8.tgz", + "integrity": "sha512-bmvCNzuUvWPPdgASh0T14ffTay/FdzXsXfp0wXT1pYoUPmkH9M6yyxwPEkHq5djjzSb2jiLl4Ta3XM1uOREQ2w==", + "requires": { + "@csstools/css-color-parser": "^1.5.0", + "@csstools/css-parser-algorithms": "^2.4.0", + "@csstools/css-tokenizer": "^2.2.2", + "@csstools/postcss-progressive-custom-properties": "^3.0.3" + } + }, + "@csstools/postcss-hwb-function": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@csstools/postcss-hwb-function/-/postcss-hwb-function-3.0.7.tgz", + "integrity": "sha512-iXs1gxKtev8YNP5bOF26TAsnMfcxnCRLpKItQ067RphYECKEK/xWm4Z0r4ChmV1U1eq+lbdH5ZIb2cju4o5akA==", + "requires": { + "@csstools/css-color-parser": "^1.5.0", + "@csstools/css-parser-algorithms": "^2.4.0", + "@csstools/css-tokenizer": "^2.2.2" + } + }, + "@csstools/postcss-ic-unit": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@csstools/postcss-ic-unit/-/postcss-ic-unit-3.0.3.tgz", + "integrity": "sha512-MpcmIL0/uMm/cFWh5V/9nbKKJ7jRr2qTYW5Q6zoE6HZ6uzOBJr2KRERv5/x8xzEBQ1MthDT7iP1EBp9luSQy7g==", + "requires": { + "@csstools/postcss-progressive-custom-properties": "^3.0.3", + "postcss-value-parser": "^4.2.0" + } + }, + "@csstools/postcss-initial": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-initial/-/postcss-initial-1.0.1.tgz", + "integrity": "sha512-wtb+IbUIrIf8CrN6MLQuFR7nlU5C7PwuebfeEXfjthUha1+XZj2RVi+5k/lukToA24sZkYAiSJfHM8uG/UZIdg==", + "requires": {} + }, + "@csstools/postcss-is-pseudo-class": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@csstools/postcss-is-pseudo-class/-/postcss-is-pseudo-class-4.0.4.tgz", + "integrity": "sha512-vTVO/uZixpTVAOQt3qZRUFJ/K1L03OfNkeJ8sFNDVNdVy/zW0h1L5WT7HIPMDUkvSrxQkFaCCybTZkUP7UESlQ==", + "requires": { + "@csstools/selector-specificity": "^3.0.1", + "postcss-selector-parser": "^6.0.13" + } + }, + "@csstools/postcss-logical-float-and-clear": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-logical-float-and-clear/-/postcss-logical-float-and-clear-2.0.1.tgz", + "integrity": "sha512-SsrWUNaXKr+e/Uo4R/uIsqJYt3DaggIh/jyZdhy/q8fECoJSKsSMr7nObSLdvoULB69Zb6Bs+sefEIoMG/YfOA==", + "requires": {} + }, + "@csstools/postcss-logical-overflow": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-logical-overflow/-/postcss-logical-overflow-1.0.1.tgz", + "integrity": "sha512-Kl4lAbMg0iyztEzDhZuQw8Sj9r2uqFDcU1IPl+AAt2nue8K/f1i7ElvKtXkjhIAmKiy5h2EY8Gt/Cqg0pYFDCw==", + "requires": {} + }, + "@csstools/postcss-logical-overscroll-behavior": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-logical-overscroll-behavior/-/postcss-logical-overscroll-behavior-1.0.1.tgz", + "integrity": "sha512-+kHamNxAnX8ojPCtV8WPcUP3XcqMFBSDuBuvT6MHgq7oX4IQxLIXKx64t7g9LiuJzE7vd06Q9qUYR6bh4YnGpQ==", + "requires": {} + }, + "@csstools/postcss-logical-resize": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-logical-resize/-/postcss-logical-resize-2.0.1.tgz", + "integrity": "sha512-W5Gtwz7oIuFcKa5SmBjQ2uxr8ZoL7M2bkoIf0T1WeNqljMkBrfw1DDA8/J83k57NQ1kcweJEjkJ04pUkmyee3A==", + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "@csstools/postcss-logical-viewport-units": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@csstools/postcss-logical-viewport-units/-/postcss-logical-viewport-units-2.0.4.tgz", + "integrity": "sha512-jetp/ArGAniWbjWBh5UQ07ztawfSbqCFd0QelX4R4pVIxrXahUEhz5VZHebMPVCg02J8GsQn0br6fdRpY6t7lw==", + "requires": { + "@csstools/css-tokenizer": "^2.2.2" + } + }, + "@csstools/postcss-media-minmax": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-media-minmax/-/postcss-media-minmax-1.1.1.tgz", + "integrity": "sha512-mBY46/Hr+A8cDjoX0OoPRBOVrkANym9540dSB9rN3dllPZdM1E112i/tVxWsrR1s1yE9gfF0pk+7lf9l+qSeHA==", + "requires": { + "@csstools/css-calc": "^1.1.5", + "@csstools/css-parser-algorithms": "^2.4.0", + "@csstools/css-tokenizer": "^2.2.2", + "@csstools/media-query-list-parser": "^2.1.6" + } + }, + "@csstools/postcss-media-queries-aspect-ratio-number-values": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@csstools/postcss-media-queries-aspect-ratio-number-values/-/postcss-media-queries-aspect-ratio-number-values-2.0.4.tgz", + "integrity": "sha512-IaIZZhH0Qy9UDn7u+N3cuwwPG0Po3ZKOdDh+ClR7xvisSqniG+PuVrOEWYJrFKOt2//UHLhd7KHDqr2u9LKS9Q==", + "requires": { + "@csstools/css-parser-algorithms": "^2.4.0", + "@csstools/css-tokenizer": "^2.2.2", + "@csstools/media-query-list-parser": "^2.1.6" + } + }, + "@csstools/postcss-nested-calc": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-nested-calc/-/postcss-nested-calc-3.0.1.tgz", + "integrity": "sha512-bwwababZpWRm0ByHaWBxTsDGTMhZKmtUNl3Wt0Eom8AY7ORgXx5qF9SSk1vEFrCi+HOfJT6M6W5KPgzXuQNRwQ==", + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "@csstools/postcss-normalize-display-values": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@csstools/postcss-normalize-display-values/-/postcss-normalize-display-values-3.0.2.tgz", + "integrity": "sha512-fCapyyT/dUdyPtrelQSIV+d5HqtTgnNP/BEG9IuhgXHt93Wc4CfC1bQ55GzKAjWrZbgakMQ7MLfCXEf3rlZJOw==", + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "@csstools/postcss-oklab-function": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@csstools/postcss-oklab-function/-/postcss-oklab-function-3.0.8.tgz", + "integrity": "sha512-L4xrwbgg+k08v+a88LDxJeIM6+kqaBJlYb/QgmEMfQpUbrfXTp87DuRc7utcRdDvY+qWK5vqz3h1xUtceB5LJQ==", + "requires": { + "@csstools/css-color-parser": "^1.5.0", + "@csstools/css-parser-algorithms": "^2.4.0", + "@csstools/css-tokenizer": "^2.2.2", + "@csstools/postcss-progressive-custom-properties": "^3.0.3" + } + }, + "@csstools/postcss-progressive-custom-properties": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@csstools/postcss-progressive-custom-properties/-/postcss-progressive-custom-properties-3.0.3.tgz", + "integrity": "sha512-WipTVh6JTMQfeIrzDV4wEPsV9NTzMK2jwXxyH6CGBktuWdivHnkioP/smp1x/0QDPQyx7NTS14RB+GV3zZZYEw==", + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "@csstools/postcss-relative-color-syntax": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/@csstools/postcss-relative-color-syntax/-/postcss-relative-color-syntax-2.0.8.tgz", + "integrity": "sha512-wu/Oh7QKINpRXnmLMUbObVNlqwr843PSF4a3x3fMC0I+vUeoGqMfZuSPFtT+NnYYxfzUjEZ091GURPxee22VLQ==", + "requires": { + "@csstools/css-color-parser": "^1.5.0", + "@csstools/css-parser-algorithms": "^2.4.0", + "@csstools/css-tokenizer": "^2.2.2", + "@csstools/postcss-progressive-custom-properties": "^3.0.3" + } + }, + "@csstools/postcss-scope-pseudo-class": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-scope-pseudo-class/-/postcss-scope-pseudo-class-3.0.1.tgz", + "integrity": "sha512-3ZFonK2gfgqg29gUJ2w7xVw2wFJ1eNWVDONjbzGkm73gJHVCYK5fnCqlLr+N+KbEfv2XbWAO0AaOJCFB6Fer6A==", + "requires": { + "postcss-selector-parser": "^6.0.13" + } + }, + "@csstools/postcss-stepped-value-functions": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@csstools/postcss-stepped-value-functions/-/postcss-stepped-value-functions-3.0.3.tgz", + "integrity": "sha512-hzo9Wr3u7JJiM65/EyHgE/gJpBzhDwBSGOobFs2YQ0ZNTywUliYQoYJud1KKlByMRuhqvDLh9V95eIkLf/fZTQ==", + "requires": { + "@csstools/css-calc": "^1.1.5", + "@csstools/css-parser-algorithms": "^2.4.0", + "@csstools/css-tokenizer": "^2.2.2" + } + }, + "@csstools/postcss-text-decoration-shorthand": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@csstools/postcss-text-decoration-shorthand/-/postcss-text-decoration-shorthand-3.0.4.tgz", + "integrity": "sha512-yUZmbnUemgQmja7SpOZeU45+P49wNEgQguRdyTktFkZsHf7Gof+ZIYfvF6Cm+LsU1PwSupy4yUeEKKjX5+k6cQ==", + "requires": { + "@csstools/color-helpers": "^4.0.0", + "postcss-value-parser": "^4.2.0" + } + }, + "@csstools/postcss-trigonometric-functions": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@csstools/postcss-trigonometric-functions/-/postcss-trigonometric-functions-3.0.3.tgz", + "integrity": "sha512-T/npTbDuMZ3vktEMuA05p1oeVd12Sy47qZP1vFhzNMUOdXGCK9vlm0tUSIlV5DdlbTJqKqq9FhGitZH9VTKrfQ==", + "requires": { + "@csstools/css-calc": "^1.1.5", + "@csstools/css-parser-algorithms": "^2.4.0", + "@csstools/css-tokenizer": "^2.2.2" + } + }, + "@csstools/postcss-unset-value": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-unset-value/-/postcss-unset-value-3.0.1.tgz", + "integrity": "sha512-dbDnZ2ja2U8mbPP0Hvmt2RMEGBiF1H7oY6HYSpjteXJGihYwgxgTr6KRbbJ/V6c+4wd51M+9980qG4gKVn5ttg==", + "requires": {} + }, + "@csstools/selector-specificity": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-3.0.1.tgz", + "integrity": "sha512-NPljRHkq4a14YzZ3YD406uaxh7s0g6eAq3L9aLOWywoqe8PkYamAvtsh7KNX6c++ihDrJ0RiU+/z7rGnhlZ5ww==", + "requires": {} + }, "@emmetio/abbreviation": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/@emmetio/abbreviation/-/abbreviation-2.3.3.tgz", @@ -7033,6 +10134,36 @@ "@jridgewell/sourcemap-codec": "1.4.14" } }, + "@mdx-js/mdx": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-3.0.0.tgz", + "integrity": "sha512-Icm0TBKBLYqroYbNW3BPnzMGn+7mwpQOK310aZ7+fkCtiU3aqv2cdcX+nd0Ydo3wI5Rx8bX2Z2QmGb/XcAClCw==", + "requires": { + "@types/estree": "^1.0.0", + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdx": "^2.0.0", + "collapse-white-space": "^2.0.0", + "devlop": "^1.0.0", + "estree-util-build-jsx": "^3.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "estree-util-to-js": "^2.0.0", + "estree-walker": "^3.0.0", + "hast-util-to-estree": "^3.0.0", + "hast-util-to-jsx-runtime": "^2.0.0", + "markdown-extensions": "^2.0.0", + "periscopic": "^3.0.0", + "remark-mdx": "^3.0.0", + "remark-parse": "^11.0.0", + "remark-rehype": "^11.0.0", + "source-map": "^0.7.0", + "unified": "^11.0.0", + "unist-util-position-from-estree": "^2.0.0", + "unist-util-stringify-position": "^4.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0" + } + }, "@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -7057,83 +10188,109 @@ } }, "@rollup/rollup-android-arm-eabi": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.9.1.tgz", - "integrity": "sha512-6vMdBZqtq1dVQ4CWdhFwhKZL6E4L1dV6jUjuBvsavvNJSppzi6dLBbuV+3+IyUREaj9ZFvQefnQm28v4OCXlig==", + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.18.0.tgz", + "integrity": "sha512-Tya6xypR10giZV1XzxmH5wr25VcZSncG0pZIjfePT0OVBvqNEurzValetGNarVrGiq66EBVAFn15iYX4w6FKgQ==", "optional": true }, "@rollup/rollup-android-arm64": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.9.1.tgz", - "integrity": "sha512-Jto9Fl3YQ9OLsTDWtLFPtaIMSL2kwGyGoVCmPC8Gxvym9TCZm4Sie+cVeblPO66YZsYH8MhBKDMGZ2NDxuk/XQ==", + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.18.0.tgz", + "integrity": "sha512-avCea0RAP03lTsDhEyfy+hpfr85KfyTctMADqHVhLAF3MlIkq83CP8UfAHUssgXTYd+6er6PaAhx/QGv4L1EiA==", "optional": true }, "@rollup/rollup-darwin-arm64": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.9.1.tgz", - "integrity": "sha512-LtYcLNM+bhsaKAIGwVkh5IOWhaZhjTfNOkGzGqdHvhiCUVuJDalvDxEdSnhFzAn+g23wgsycmZk1vbnaibZwwA==", + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.18.0.tgz", + "integrity": "sha512-IWfdwU7KDSm07Ty0PuA/W2JYoZ4iTj3TUQjkVsO/6U+4I1jN5lcR71ZEvRh52sDOERdnNhhHU57UITXz5jC1/w==", "optional": true }, "@rollup/rollup-darwin-x64": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.9.1.tgz", - "integrity": "sha512-KyP/byeXu9V+etKO6Lw3E4tW4QdcnzDG/ake031mg42lob5tN+5qfr+lkcT/SGZaH2PdW4Z1NX9GHEkZ8xV7og==", + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.18.0.tgz", + "integrity": "sha512-n2LMsUz7Ynu7DoQrSQkBf8iNrjOGyPLrdSg802vk6XT3FtsgX6JbE8IHRvposskFm9SNxzkLYGSq9QdpLYpRNA==", "optional": true }, "@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.9.1.tgz", - "integrity": "sha512-Yqz/Doumf3QTKplwGNrCHe/B2p9xqDghBZSlAY0/hU6ikuDVQuOUIpDP/YcmoT+447tsZTmirmjgG3znvSCR0Q==", + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.18.0.tgz", + "integrity": "sha512-C/zbRYRXFjWvz9Z4haRxcTdnkPt1BtCkz+7RtBSuNmKzMzp3ZxdM28Mpccn6pt28/UWUCTXa+b0Mx1k3g6NOMA==", + "optional": true + }, + "@rollup/rollup-linux-arm-musleabihf": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.18.0.tgz", + "integrity": "sha512-l3m9ewPgjQSXrUMHg93vt0hYCGnrMOcUpTz6FLtbwljo2HluS4zTXFy2571YQbisTnfTKPZ01u/ukJdQTLGh9A==", "optional": true }, "@rollup/rollup-linux-arm64-gnu": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.9.1.tgz", - "integrity": "sha512-u3XkZVvxcvlAOlQJ3UsD1rFvLWqu4Ef/Ggl40WAVCuogf4S1nJPHh5RTgqYFpCOvuGJ7H5yGHabjFKEZGExk5Q==", + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.18.0.tgz", + "integrity": "sha512-rJ5D47d8WD7J+7STKdCUAgmQk49xuFrRi9pZkWoRD1UeSMakbcepWXPF8ycChBoAqs1pb2wzvbY6Q33WmN2ftw==", "optional": true }, "@rollup/rollup-linux-arm64-musl": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.9.1.tgz", - "integrity": "sha512-0XSYN/rfWShW+i+qjZ0phc6vZ7UWI8XWNz4E/l+6edFt+FxoEghrJHjX1EY/kcUGCnZzYYRCl31SNdfOi450Aw==", + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.18.0.tgz", + "integrity": "sha512-be6Yx37b24ZwxQ+wOQXXLZqpq4jTckJhtGlWGZs68TgdKXJgw54lUUoFYrg6Zs/kjzAQwEwYbp8JxZVzZLRepQ==", + "optional": true + }, + "@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.18.0.tgz", + "integrity": "sha512-hNVMQK+qrA9Todu9+wqrXOHxFiD5YmdEi3paj6vP02Kx1hjd2LLYR2eaN7DsEshg09+9uzWi2W18MJDlG0cxJA==", "optional": true }, "@rollup/rollup-linux-riscv64-gnu": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.9.1.tgz", - "integrity": "sha512-LmYIO65oZVfFt9t6cpYkbC4d5lKHLYv5B4CSHRpnANq0VZUQXGcCPXHzbCXCz4RQnx7jvlYB1ISVNCE/omz5cw==", + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.18.0.tgz", + "integrity": "sha512-ROCM7i+m1NfdrsmvwSzoxp9HFtmKGHEqu5NNDiZWQtXLA8S5HBCkVvKAxJ8U+CVctHwV2Gb5VUaK7UAkzhDjlg==", + "optional": true + }, + "@rollup/rollup-linux-s390x-gnu": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.18.0.tgz", + "integrity": "sha512-0UyyRHyDN42QL+NbqevXIIUnKA47A+45WyasO+y2bGJ1mhQrfrtXUpTxCOrfxCR4esV3/RLYyucGVPiUsO8xjg==", "optional": true }, "@rollup/rollup-linux-x64-gnu": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.9.1.tgz", - "integrity": "sha512-kr8rEPQ6ns/Lmr/hiw8sEVj9aa07gh1/tQF2Y5HrNCCEPiCBGnBUt9tVusrcBBiJfIt1yNaXN6r1CCmpbFEDpg==", + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.18.0.tgz", + "integrity": "sha512-xuglR2rBVHA5UsI8h8UbX4VJ470PtGCf5Vpswh7p2ukaqBGFTnsfzxUBetoWBWymHMxbIG0Cmx7Y9qDZzr648w==", "optional": true }, "@rollup/rollup-linux-x64-musl": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.9.1.tgz", - "integrity": "sha512-t4QSR7gN+OEZLG0MiCgPqMWZGwmeHhsM4AkegJ0Kiy6TnJ9vZ8dEIwHw1LcZKhbHxTY32hp9eVCMdR3/I8MGRw==", + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.18.0.tgz", + "integrity": "sha512-LKaqQL9osY/ir2geuLVvRRs+utWUNilzdE90TpyoX0eNqPzWjRm14oMEE+YLve4k/NAqCdPkGYDaDF5Sw+xBfg==", "optional": true }, "@rollup/rollup-win32-arm64-msvc": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.9.1.tgz", - "integrity": "sha512-7XI4ZCBN34cb+BH557FJPmh0kmNz2c25SCQeT9OiFWEgf8+dL6ZwJ8f9RnUIit+j01u07Yvrsuu1rZGxJCc51g==", + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.18.0.tgz", + "integrity": "sha512-7J6TkZQFGo9qBKH0pk2cEVSRhJbL6MtfWxth7Y5YmZs57Pi+4x6c2dStAUvaQkHQLnEQv1jzBUW43GvZW8OFqA==", "optional": true }, "@rollup/rollup-win32-ia32-msvc": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.9.1.tgz", - "integrity": "sha512-yE5c2j1lSWOH5jp+Q0qNL3Mdhr8WuqCNVjc6BxbVfS5cAS6zRmdiw7ktb8GNpDCEUJphILY6KACoFoRtKoqNQg==", + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.18.0.tgz", + "integrity": "sha512-Txjh+IxBPbkUB9+SXZMpv+b/vnTEtFyfWZgJ6iyCmt2tdx0OF5WhFowLmnh8ENGNpfUlUZkdI//4IEmhwPieNg==", "optional": true }, "@rollup/rollup-win32-x64-msvc": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.9.1.tgz", - "integrity": "sha512-PyJsSsafjmIhVgaI1Zdj7m8BB8mMckFah/xbpplObyHfiXzKcI5UOUXRyOdHW7nz4DpMCuzLnF7v5IWHenCwYA==", + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.18.0.tgz", + "integrity": "sha512-UOo5FdvOL0+eIVTgS4tIdbW+TtnBLWg1YBCcU2KWM7nuNwRz9bksDX1bekJJCpu25N1DVWaCwnT39dVQxzqS8g==", "optional": true }, + "@types/acorn": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/@types/acorn/-/acorn-4.0.6.tgz", + "integrity": "sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==", + "requires": { + "@types/estree": "*" + } + }, "@types/babel__core": { "version": "7.20.5", "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", @@ -7184,6 +10341,14 @@ "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==" }, + "@types/estree-jsx": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@types/estree-jsx/-/estree-jsx-1.0.3.tgz", + "integrity": "sha512-pvQ+TKeRHeiUGRhvYwRrQ/ISnohKkSJR14fT2yqyZ4e9K5vqc7hrtY2Y1Dw0ZwAzQ6DQsxsaCUuSIIi8v0Cq6w==", + "requires": { + "@types/estree": "*" + } + }, "@types/hast": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.3.tgz", @@ -7200,6 +10365,11 @@ "@types/unist": "*" } }, + "@types/mdx": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@types/mdx/-/mdx-2.0.10.tgz", + "integrity": "sha512-Rllzc5KHk0Al5/WANwgSPl1/CwjqCy+AZrGd78zuK+jO9aDM6ffblZ+zIjgPNAaEBmlO0RYDvLNh7wD0zKVgEg==" + }, "@types/ms": { "version": "0.7.34", "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.34.tgz", @@ -7337,6 +10507,12 @@ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz", "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==" }, + "acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "requires": {} + }, "ansi-align": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", @@ -7410,19 +10586,32 @@ "sprintf-js": "~1.0.2" } }, + "aria-query": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", + "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", + "requires": { + "dequal": "^2.0.3" + } + }, "array-iterate": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/array-iterate/-/array-iterate-2.0.1.tgz", "integrity": "sha512-I1jXZMjAgCMmxT4qxXfPXa6SthSoE8h6gkSI9BGGNv8mP8G/v0blc+qFnZu6K42vTOiuME596QaLO0TP3Lk0xg==" }, + "astring": { + "version": "1.8.6", + "resolved": "https://registry.npmjs.org/astring/-/astring-1.8.6.tgz", + "integrity": "sha512-ISvCdHdlTDlH5IpxQJIex7BWBywFWgjJSVdwst+/iQCoEYnyOaQ95+X1JGshuBjGp6nxKUy1jMgE3zPqN7fQdg==" + }, "astro": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/astro/-/astro-4.0.7.tgz", - "integrity": "sha512-K+Ms2AAQvi6yERPuglcI69tnHyTT44JCjzqprSjw3uOwFX7N9obpLgbhmLMH1fPFTgzt3ZD7APjmtDPN51makw==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/astro/-/astro-4.2.1.tgz", + "integrity": "sha512-TcrveW2/lohmljrbTUgcDxajEdF1yK+zBvb7SXroloGix/d4jkegO6GANFgvyy0zprMyajW7qgJEFyhWUX86Vw==", "requires": { "@astrojs/compiler": "^2.3.4", "@astrojs/internal-helpers": "0.2.1", - "@astrojs/markdown-remark": "4.0.1", + "@astrojs/markdown-remark": "4.1.0", "@astrojs/telemetry": "3.0.4", "@babel/core": "^7.23.3", "@babel/generator": "^7.23.3", @@ -7432,6 +10621,8 @@ "@babel/types": "^7.23.3", "@types/babel__core": "^7.20.4", "acorn": "^8.11.2", + "aria-query": "^5.3.0", + "axobject-query": "^4.0.0", "boxen": "^7.1.1", "chokidar": "^3.5.3", "ci-info": "^4.0.0", @@ -7470,8 +10661,8 @@ "resolve": "^1.22.4", "semver": "^7.5.4", "server-destroy": "^1.0.1", - "sharp": "^0.32.5", - "shikiji": "^0.6.13", + "sharp": "^0.32.6", + "shikiji": "^0.9.18", "string-width": "^7.0.0", "strip-ansi": "^7.1.0", "tsconfck": "^3.0.0", @@ -7484,6 +10675,27 @@ "zod": "^3.22.4" }, "dependencies": { + "@astrojs/markdown-remark": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@astrojs/markdown-remark/-/markdown-remark-4.1.0.tgz", + "integrity": "sha512-JnIy6zk+6f/SgSVMZecZFxQt0faT1uBckwYCuBxKH1hYYJsal8OOe+tx6JxfnyaV+xViyjUvQ28mmn+p/F5LkQ==", + "requires": { + "@astrojs/prism": "^3.0.0", + "github-slugger": "^2.0.0", + "import-meta-resolve": "^4.0.0", + "mdast-util-definitions": "^6.0.0", + "rehype-raw": "^7.0.0", + "rehype-stringify": "^10.0.0", + "remark-gfm": "^4.0.0", + "remark-parse": "^11.0.0", + "remark-rehype": "^11.0.0", + "remark-smartypants": "^2.0.0", + "shikiji": "^0.9.18", + "unified": "^11.0.4", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.1" + } + }, "argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", @@ -7496,9 +10708,38 @@ "requires": { "argparse": "^2.0.1" } + }, + "shikiji": { + "version": "0.9.19", + "resolved": "https://registry.npmjs.org/shikiji/-/shikiji-0.9.19.tgz", + "integrity": "sha512-Kw2NHWktdcdypCj1GkKpXH4o6Vxz8B8TykPlPuLHOGSV8VkhoCLcFOH4k19K4LXAQYRQmxg+0X/eM+m2sLhAkg==", + "requires": { + "shikiji-core": "0.9.19" + } } } }, + "autoprefixer": { + "version": "10.4.16", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.16.tgz", + "integrity": "sha512-7vd3UC6xKp0HLfua5IjZlcXvGAGy7cBAXTg2lyQ/8WpNhd6SiZ8Be+xm3FyBSYJx5GKcpRCzBh7RH4/0dnY+uQ==", + "requires": { + "browserslist": "^4.21.10", + "caniuse-lite": "^1.0.30001538", + "fraction.js": "^4.3.6", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.0", + "postcss-value-parser": "^4.2.0" + } + }, + "axobject-query": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.0.0.tgz", + "integrity": "sha512-+60uv1hiVFhHZeO+Lz0RYzsVHy5Wr1ayX0mwda9KPDVLNJgZ1T9Ny7VmFbLDzxsH0D87I86vgj3gFrjTJUYznw==", + "requires": { + "dequal": "^2.0.3" + } + }, "b4a": { "version": "1.6.4", "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.4.tgz", @@ -7573,11 +10814,11 @@ } }, "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "requires": { - "fill-range": "^7.0.1" + "fill-range": "^7.1.1" } }, "browserslist": { @@ -7606,9 +10847,9 @@ "integrity": "sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==" }, "caniuse-lite": { - "version": "1.0.30001570", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001570.tgz", - "integrity": "sha512-+3e0ASu4sw1SWaoCtvPeyXp+5PsjigkSt8OXZbF9StH5pQWbxEjLAZE3n8Aup5udop1uRiKA7a4utUk/uoSpUw==" + "version": "1.0.30001634", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001634.tgz", + "integrity": "sha512-fbBYXQ9q3+yp1q1gBk86tOFs4pyn/yxFm5ZNP18OXJDfA3txImOY9PhfxVggZ4vRHDqoU8NrKU81eN0OtzOgRA==" }, "ccount": { "version": "2.0.1", @@ -7640,6 +10881,11 @@ "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==" }, + "character-reference-invalid": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz", + "integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==" + }, "chokidar": { "version": "3.5.3", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", @@ -7760,6 +11006,11 @@ "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.0.0.tgz", "integrity": "sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==" }, + "collapse-white-space": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-2.1.0.tgz", + "integrity": "sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==" + }, "color": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", @@ -7840,6 +11091,40 @@ "which": "^2.0.1" } }, + "css-blank-pseudo": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-6.0.1.tgz", + "integrity": "sha512-goSnEITByxTzU4Oh5oJZrEWudxTqk7L6IXj1UW69pO6Hv0UdX+Vsrt02FFu5DweRh2bLu6WpX/+zsQCu5O1gKw==", + "requires": { + "postcss-selector-parser": "^6.0.13" + } + }, + "css-has-pseudo": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-6.0.1.tgz", + "integrity": "sha512-WwoVKqNxApfEI7dWFyaHoeFCcUPD+lPyjL6lNpRUNX7IyIUuVpawOTwwA5D0ZR6V2xQZonNPVj8kEcxzEaAQfQ==", + "requires": { + "@csstools/selector-specificity": "^3.0.1", + "postcss-selector-parser": "^6.0.13", + "postcss-value-parser": "^4.2.0" + } + }, + "css-prefers-color-scheme": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-9.0.1.tgz", + "integrity": "sha512-iFit06ochwCKPRiWagbTa1OAWCvWWVdEnIFd8BaRrgO8YrrNh4RAWUQTFcYX5tdFZgFl1DJ3iiULchZyEbnF4g==", + "requires": {} + }, + "cssdb": { + "version": "7.10.0", + "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-7.10.0.tgz", + "integrity": "sha512-yGZ5tmA57gWh/uvdQBHs45wwFY0IBh3ypABk5sEubPBPSzXzkNgsWReqx7gdx6uhC+QoFBe+V8JwBB9/hQ6cIA==" + }, + "cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==" + }, "debug": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", @@ -8006,6 +11291,49 @@ "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" }, + "estree-util-attach-comments": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/estree-util-attach-comments/-/estree-util-attach-comments-3.0.0.tgz", + "integrity": "sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw==", + "requires": { + "@types/estree": "^1.0.0" + } + }, + "estree-util-build-jsx": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/estree-util-build-jsx/-/estree-util-build-jsx-3.0.1.tgz", + "integrity": "sha512-8U5eiL6BTrPxp/CHbs2yMgP8ftMhR5ww1eIKoWRMlqvltHF8fZn5LRDvTKuxD3DUn+shRbLGqXemcP51oFCsGQ==", + "requires": { + "@types/estree-jsx": "^1.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "estree-walker": "^3.0.0" + } + }, + "estree-util-is-identifier-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-3.0.0.tgz", + "integrity": "sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==" + }, + "estree-util-to-js": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/estree-util-to-js/-/estree-util-to-js-2.0.0.tgz", + "integrity": "sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg==", + "requires": { + "@types/estree-jsx": "^1.0.0", + "astring": "^1.8.0", + "source-map": "^0.7.0" + } + }, + "estree-util-visit": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/estree-util-visit/-/estree-util-visit-2.0.0.tgz", + "integrity": "sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==", + "requires": { + "@types/estree-jsx": "^1.0.0", + "@types/unist": "^3.0.0" + } + }, "estree-walker": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", @@ -8081,9 +11409,9 @@ } }, "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "requires": { "to-regex-range": "^5.0.1" } @@ -8111,6 +11439,11 @@ "resolved": "https://registry.npmjs.org/flattie/-/flattie-1.1.0.tgz", "integrity": "sha512-xU99gDEnciIwJdGcBmNHnzTJ/w5AT+VFJOu6sTB6WM8diOYNA3Sa+K1DiEBQ7XH4QikQq3iFW1U+jRVcotQnBw==" }, + "fraction.js": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", + "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==" + }, "fs-constants": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", @@ -8257,6 +11590,29 @@ "zwitch": "^2.0.0" } }, + "hast-util-to-estree": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hast-util-to-estree/-/hast-util-to-estree-3.1.0.tgz", + "integrity": "sha512-lfX5g6hqVh9kjS/B9E2gSkvHH4SZNiQFiqWS0x9fENzEl+8W12RqdRxX6d/Cwxi30tPQs3bIO+aolQJNp1bIyw==", + "requires": { + "@types/estree": "^1.0.0", + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "devlop": "^1.0.0", + "estree-util-attach-comments": "^3.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "hast-util-whitespace": "^3.0.0", + "mdast-util-mdx-expression": "^2.0.0", + "mdast-util-mdx-jsx": "^3.0.0", + "mdast-util-mdxjs-esm": "^2.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0", + "style-to-object": "^0.4.0", + "unist-util-position": "^5.0.0", + "zwitch": "^2.0.0" + } + }, "hast-util-to-html": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-9.0.0.tgz", @@ -8276,6 +11632,43 @@ "zwitch": "^2.0.4" } }, + "hast-util-to-jsx-runtime": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/hast-util-to-jsx-runtime/-/hast-util-to-jsx-runtime-2.3.0.tgz", + "integrity": "sha512-H/y0+IWPdsLLS738P8tDnrQ8Z+dj12zQQ6WC11TIM21C8WFVoIxcqWXf2H3hiTVZjF1AWqoimGwrTWecWrnmRQ==", + "requires": { + "@types/estree": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "hast-util-whitespace": "^3.0.0", + "mdast-util-mdx-expression": "^2.0.0", + "mdast-util-mdx-jsx": "^3.0.0", + "mdast-util-mdxjs-esm": "^2.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0", + "style-to-object": "^1.0.0", + "unist-util-position": "^5.0.0", + "vfile-message": "^4.0.0" + }, + "dependencies": { + "inline-style-parser": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.2.2.tgz", + "integrity": "sha512-EcKzdTHVe8wFVOGEYXiW9WmJXPjqi1T+234YpJr98RiFYKHV3cdy1+3mkTE+KHTHxFFLH51SfaGOoUdW+v7ViQ==" + }, + "style-to-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-1.0.5.tgz", + "integrity": "sha512-rDRwHtoDD3UMMrmZ6BzOW0naTjMsVZLIjsGleSKS/0Oz+cgCfAPRspaqJuE8rDzpKha/nEvnM0IF4seEAZUTKQ==", + "requires": { + "inline-style-parser": "0.2.2" + } + } + } + }, "hast-util-to-parse5": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-8.0.0.tgz", @@ -8331,9 +11724,9 @@ "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==" }, "iconoir": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/iconoir/-/iconoir-6.1.0.tgz", - "integrity": "sha512-K8Jrqkp51MdcDBzfiSY2vt9gHsujwEmoOHlWI2Wk++cgVvR1bP+fMLFmwBTPHduZ3aOK95snE6rUmlLPH7Yhnw==" + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/iconoir/-/iconoir-7.2.0.tgz", + "integrity": "sha512-uGaTCzdvQUAfNMDM2yJieGVM2KbW+8/8nkyLVtvXX+79tHQWxgPhpvk9g7rnZcbQuZ/YFAdP+0HB3eAmk+l2qw==" }, "iconv-lite": { "version": "0.4.24", @@ -8364,6 +11757,25 @@ "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", "optional": true }, + "inline-style-parser": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.1.1.tgz", + "integrity": "sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==" + }, + "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==" + }, + "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==", + "requires": { + "is-alphabetical": "^2.0.0", + "is-decimal": "^2.0.0" + } + }, "is-arrayish": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", @@ -8391,6 +11803,11 @@ "hasown": "^2.0.0" } }, + "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==" + }, "is-docker": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", @@ -8419,6 +11836,11 @@ "is-extglob": "^2.1.1" } }, + "is-hexadecimal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz", + "integrity": "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==" + }, "is-inside-container": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", @@ -8442,6 +11864,14 @@ "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==" }, + "is-reference": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.2.tgz", + "integrity": "sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==", + "requires": { + "@types/estree": "*" + } + }, "is-stream": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", @@ -8504,6 +11934,11 @@ "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==" }, + "lite-youtube-embed": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/lite-youtube-embed/-/lite-youtube-embed-0.2.0.tgz", + "integrity": "sha512-XXXAk5sbvtjjwbie3XG+6HppgTm1HTGL/Uk9z9NkJH53o7puZLur434heHzAjkS60hZB3vT4ls25zl5rMiX4EA==" + }, "load-yaml-file": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/load-yaml-file/-/load-yaml-file-0.2.0.tgz", @@ -8572,6 +12007,11 @@ } } }, + "markdown-extensions": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/markdown-extensions/-/markdown-extensions-2.0.0.tgz", + "integrity": "sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==" + }, "markdown-table": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.3.tgz", @@ -8695,6 +12135,64 @@ "mdast-util-to-markdown": "^2.0.0" } }, + "mdast-util-mdx": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-mdx/-/mdast-util-mdx-3.0.0.tgz", + "integrity": "sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w==", + "requires": { + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-mdx-expression": "^2.0.0", + "mdast-util-mdx-jsx": "^3.0.0", + "mdast-util-mdxjs-esm": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + } + }, + "mdast-util-mdx-expression": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-2.0.0.tgz", + "integrity": "sha512-fGCu8eWdKUKNu5mohVGkhBXCXGnOTLuFqOvGMvdikr+J1w7lDJgxThOKpwRWzzbyXAU2hhSwsmssOY4yTokluw==", + "requires": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + } + }, + "mdast-util-mdx-jsx": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.0.0.tgz", + "integrity": "sha512-XZuPPzQNBPAlaqsTTgRrcJnyFbSOBovSadFgbFu8SnuNgm+6Bdx1K+IWoitsmj6Lq6MNtI+ytOqwN70n//NaBA==", + "requires": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "ccount": "^2.0.0", + "devlop": "^1.1.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "parse-entities": "^4.0.0", + "stringify-entities": "^4.0.0", + "unist-util-remove-position": "^5.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + } + }, + "mdast-util-mdxjs-esm": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-2.0.1.tgz", + "integrity": "sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==", + "requires": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + } + }, "mdast-util-phrasing": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-4.0.0.tgz", @@ -8885,6 +12383,77 @@ "micromark-util-types": "^2.0.0" } }, + "micromark-extension-mdx-expression": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-expression/-/micromark-extension-mdx-expression-3.0.0.tgz", + "integrity": "sha512-sI0nwhUDz97xyzqJAbHQhp5TfaxEvZZZ2JDqUo+7NvyIYG6BZ5CPPqj2ogUoPJlmXHBnyZUzISg9+oUmU6tUjQ==", + "requires": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-mdx-expression": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "micromark-extension-mdx-jsx": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-jsx/-/micromark-extension-mdx-jsx-3.0.0.tgz", + "integrity": "sha512-uvhhss8OGuzR4/N17L1JwvmJIpPhAd8oByMawEKx6NVdBCbesjH4t+vjEp3ZXft9DwvlKSD07fCeI44/N0Vf2w==", + "requires": { + "@types/acorn": "^4.0.0", + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "micromark-factory-mdx-expression": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "vfile-message": "^4.0.0" + } + }, + "micromark-extension-mdx-md": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-md/-/micromark-extension-mdx-md-2.0.0.tgz", + "integrity": "sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ==", + "requires": { + "micromark-util-types": "^2.0.0" + } + }, + "micromark-extension-mdxjs": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs/-/micromark-extension-mdxjs-3.0.0.tgz", + "integrity": "sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ==", + "requires": { + "acorn": "^8.0.0", + "acorn-jsx": "^5.0.0", + "micromark-extension-mdx-expression": "^3.0.0", + "micromark-extension-mdx-jsx": "^3.0.0", + "micromark-extension-mdx-md": "^2.0.0", + "micromark-extension-mdxjs-esm": "^3.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "micromark-extension-mdxjs-esm": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs-esm/-/micromark-extension-mdxjs-esm-3.0.0.tgz", + "integrity": "sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A==", + "requires": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-position-from-estree": "^2.0.0", + "vfile-message": "^4.0.0" + } + }, "micromark-factory-destination": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.0.tgz", @@ -8906,6 +12475,21 @@ "micromark-util-types": "^2.0.0" } }, + "micromark-factory-mdx-expression": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-mdx-expression/-/micromark-factory-mdx-expression-2.0.1.tgz", + "integrity": "sha512-F0ccWIUHRLRrYp5TC9ZYXmZo+p2AM13ggbsW4T0b5CRKP8KHVRB8t4pwtBgTxtjRmwrK0Irwm7vs2JOZabHZfg==", + "requires": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-position-from-estree": "^2.0.0", + "vfile-message": "^4.0.0" + } + }, "micromark-factory-space": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz", @@ -8997,6 +12581,21 @@ "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.0.tgz", "integrity": "sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==" }, + "micromark-util-events-to-acorn": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/micromark-util-events-to-acorn/-/micromark-util-events-to-acorn-2.0.2.tgz", + "integrity": "sha512-Fk+xmBrOv9QZnEDguL9OI9/NQQp6Hz4FuQ4YmCb/5V7+9eAh1s6AYSvL20kHkD67YIg7EpE54TiSlcsf3vyZgA==", + "requires": { + "@types/acorn": "^4.0.0", + "@types/estree": "^1.0.0", + "@types/unist": "^3.0.0", + "devlop": "^1.0.0", + "estree-util-visit": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "vfile-message": "^4.0.0" + } + }, "micromark-util-html-tag-name": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.0.tgz", @@ -9136,9 +12735,9 @@ } }, "node-abi": { - "version": "3.52.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.52.0.tgz", - "integrity": "sha512-JJ98b02z16ILv7859irtXn4oUaFWADtvkzy2c0IAatNVX2Mc9Yoh8z6hZInn3QwvMEYhHuQloYi+TTQy67SIdQ==", + "version": "3.54.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.54.0.tgz", + "integrity": "sha512-p7eGEiQil0YUV3ItH4/tBb781L5impVmmx2E9FRKF7d18XXzp4PGT2tdYMFY6wQqgxD0IwNZOiSJ0/K0fSi/OA==", "optional": true, "requires": { "semver": "^7.3.5" @@ -9160,6 +12759,11 @@ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" }, + "normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==" + }, "npm-run-path": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz", @@ -9275,6 +12879,28 @@ "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" }, + "parse-entities": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.1.tgz", + "integrity": "sha512-SWzvYcSJh4d/SGLIOQfZ/CoNv6BTlI6YEQ7Nj82oDVnRpwe/Z/F1EMx42x3JAOwGBlCjeCH0BRJQbQ/opHL17w==", + "requires": { + "@types/unist": "^2.0.0", + "character-entities": "^2.0.0", + "character-entities-legacy": "^3.0.0", + "character-reference-invalid": "^2.0.0", + "decode-named-character-reference": "^1.0.0", + "is-alphanumerical": "^2.0.0", + "is-decimal": "^2.0.0", + "is-hexadecimal": "^2.0.0" + }, + "dependencies": { + "@types/unist": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz", + "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==" + } + } + }, "parse-latin": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/parse-latin/-/parse-latin-5.0.1.tgz", @@ -9318,6 +12944,16 @@ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.1.tgz", "integrity": "sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw==" }, + "periscopic": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/periscopic/-/periscopic-3.1.0.tgz", + "integrity": "sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==", + "requires": { + "@types/estree": "^1.0.0", + "estree-walker": "^3.0.0", + "is-reference": "^3.0.0" + } + }, "picocolors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", @@ -9377,15 +13013,303 @@ } }, "postcss": { - "version": "8.4.32", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.32.tgz", - "integrity": "sha512-D/kj5JNu6oo2EIy+XL/26JEDTlIbB8hw85G8StOE6L74RQAVVP5rej6wxCNqyMbR4RkPfqvezVbPw81Ngd6Kcw==", + "version": "8.4.38", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz", + "integrity": "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==", "requires": { "nanoid": "^3.3.7", "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" + "source-map-js": "^1.2.0" } }, + "postcss-attribute-case-insensitive": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-6.0.2.tgz", + "integrity": "sha512-IRuCwwAAQbgaLhxQdQcIIK0dCVXg3XDUnzgKD8iwdiYdwU4rMWRWyl/W9/0nA4ihVpq5pyALiHB2veBJ0292pw==", + "requires": { + "postcss-selector-parser": "^6.0.10" + } + }, + "postcss-clamp": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/postcss-clamp/-/postcss-clamp-4.1.0.tgz", + "integrity": "sha512-ry4b1Llo/9zz+PKC+030KUnPITTJAHeOwjfAyyB60eT0AorGLdzp52s31OsPRHRf8NchkgFoG2y6fCfn1IV1Ow==", + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-color-functional-notation": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-6.0.3.tgz", + "integrity": "sha512-2jBr3H0sk3qGh/3BkmLsOKcYyVfSlM1K2QQYVU7eW5mkg7ZOQ4aU/Rtbh7vJ9FxAfgf8iHRwXBsQkHqUxzTkXw==", + "requires": { + "@csstools/css-color-parser": "^1.5.0", + "@csstools/css-parser-algorithms": "^2.4.0", + "@csstools/css-tokenizer": "^2.2.2", + "@csstools/postcss-progressive-custom-properties": "^3.0.3" + } + }, + "postcss-color-hex-alpha": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/postcss-color-hex-alpha/-/postcss-color-hex-alpha-9.0.3.tgz", + "integrity": "sha512-7sEHU4tAS6htlxun8AB9LDrCXoljxaC34tFVRlYKcvO+18r5fvGiXgv5bQzN40+4gXLCyWSMRK5FK31244WcCA==", + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-color-rebeccapurple": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-9.0.2.tgz", + "integrity": "sha512-f+RDEAPW2m8UbJWkSpRfV+QxhSaQhDMihI75DVGJJh4oRIoegjheeRtINFJum9D8BqGJcvD4GLjggTvCwZ4zuA==", + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-custom-media": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-10.0.2.tgz", + "integrity": "sha512-zcEFNRmDm2fZvTPdI1pIW3W//UruMcLosmMiCdpQnrCsTRzWlKQPYMa1ud9auL0BmrryKK1+JjIGn19K0UjO/w==", + "requires": { + "@csstools/cascade-layer-name-parser": "^1.0.5", + "@csstools/css-parser-algorithms": "^2.3.2", + "@csstools/css-tokenizer": "^2.2.1", + "@csstools/media-query-list-parser": "^2.1.5" + } + }, + "postcss-custom-properties": { + "version": "13.3.3", + "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-13.3.3.tgz", + "integrity": "sha512-xLmILb2R83aG4X++iVFg8TWadOlc45xiyFHRZD6Yhhu2igrTHXL6C75AEWqx6k9lxrr9sK5rcfUI9JvTCxBTvA==", + "requires": { + "@csstools/cascade-layer-name-parser": "^1.0.6", + "@csstools/css-parser-algorithms": "^2.4.0", + "@csstools/css-tokenizer": "^2.2.2", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-custom-selectors": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-7.1.6.tgz", + "integrity": "sha512-svsjWRaxqL3vAzv71dV0/65P24/FB8TbPX+lWyyf9SZ7aZm4S4NhCn7N3Bg+Z5sZunG3FS8xQ80LrCU9hb37cw==", + "requires": { + "@csstools/cascade-layer-name-parser": "^1.0.5", + "@csstools/css-parser-algorithms": "^2.3.2", + "@csstools/css-tokenizer": "^2.2.1", + "postcss-selector-parser": "^6.0.13" + } + }, + "postcss-dir-pseudo-class": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-8.0.1.tgz", + "integrity": "sha512-uULohfWBBVoFiZXgsQA24JV6FdKIidQ+ZqxOouhWwdE+qJlALbkS5ScB43ZTjPK+xUZZhlaO/NjfCt5h4IKUfw==", + "requires": { + "postcss-selector-parser": "^6.0.13" + } + }, + "postcss-double-position-gradients": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-5.0.3.tgz", + "integrity": "sha512-QKYpwmaSm6HcdS0ndAuWSNNMv78R1oSySoh3mYBmctHWr2KWcwPJVakdOyU4lvFVW0GRu9wfIQwGeM4p3xU9ow==", + "requires": { + "@csstools/postcss-progressive-custom-properties": "^3.0.3", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-focus-visible": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/postcss-focus-visible/-/postcss-focus-visible-9.0.1.tgz", + "integrity": "sha512-N2VQ5uPz3Z9ZcqI5tmeholn4d+1H14fKXszpjogZIrFbhaq0zNAtq8sAnw6VLiqGbL8YBzsnu7K9bBkTqaRimQ==", + "requires": { + "postcss-selector-parser": "^6.0.13" + } + }, + "postcss-focus-within": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/postcss-focus-within/-/postcss-focus-within-8.0.1.tgz", + "integrity": "sha512-NFU3xcY/xwNaapVb+1uJ4n23XImoC86JNwkY/uduytSl2s9Ekc2EpzmRR63+ExitnW3Mab3Fba/wRPCT5oDILA==", + "requires": { + "postcss-selector-parser": "^6.0.13" + } + }, + "postcss-font-variant": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-5.0.0.tgz", + "integrity": "sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA==", + "requires": {} + }, + "postcss-gap-properties": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-5.0.1.tgz", + "integrity": "sha512-k2z9Cnngc24c0KF4MtMuDdToROYqGMMUQGcE6V0odwjHyOHtaDBlLeRBV70y9/vF7KIbShrTRZ70JjsI1BZyWw==", + "requires": {} + }, + "postcss-image-set-function": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-image-set-function/-/postcss-image-set-function-6.0.2.tgz", + "integrity": "sha512-/O1xwqpJiz/apxGQi7UUfv1xUcorvkHZfvCYHPpRxxZj2WvjD0rg0+/+c+u5/Do5CpUg3XvfYxMrhcnjW1ArDQ==", + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-lab-function": { + "version": "6.0.8", + "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-6.0.8.tgz", + "integrity": "sha512-agYs7R9Z5gnX837fCkH8TEQIHdhyDsMPPnpuuENt/dxoDVAykBaqbdxIN4DagOj+ZQo20iRNNJeY3MsFcdI6Sg==", + "requires": { + "@csstools/css-color-parser": "^1.5.0", + "@csstools/css-parser-algorithms": "^2.4.0", + "@csstools/css-tokenizer": "^2.2.2", + "@csstools/postcss-progressive-custom-properties": "^3.0.3" + } + }, + "postcss-logical": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-logical/-/postcss-logical-7.0.1.tgz", + "integrity": "sha512-8GwUQZE0ri0K0HJHkDv87XOLC8DE0msc+HoWLeKdtjDZEwpZ5xuK3QdV6FhmHSQW40LPkg43QzvATRAI3LsRkg==", + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-nesting": { + "version": "12.0.2", + "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-12.0.2.tgz", + "integrity": "sha512-63PpJHSeNs93S3ZUIyi+7kKx4JqOIEJ6QYtG3x+0qA4J03+4n0iwsyA1GAHyWxsHYljQS4/4ZK1o2sMi70b5wQ==", + "requires": { + "@csstools/selector-specificity": "^3.0.1", + "postcss-selector-parser": "^6.0.13" + } + }, + "postcss-opacity-percentage": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postcss-opacity-percentage/-/postcss-opacity-percentage-2.0.0.tgz", + "integrity": "sha512-lyDrCOtntq5Y1JZpBFzIWm2wG9kbEdujpNt4NLannF+J9c8CgFIzPa80YQfdza+Y+yFfzbYj/rfoOsYsooUWTQ==", + "requires": {} + }, + "postcss-overflow-shorthand": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-5.0.1.tgz", + "integrity": "sha512-XzjBYKLd1t6vHsaokMV9URBt2EwC9a7nDhpQpjoPk2HRTSQfokPfyAS/Q7AOrzUu6q+vp/GnrDBGuj/FCaRqrQ==", + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-page-break": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/postcss-page-break/-/postcss-page-break-3.0.4.tgz", + "integrity": "sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ==", + "requires": {} + }, + "postcss-place": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/postcss-place/-/postcss-place-9.0.1.tgz", + "integrity": "sha512-JfL+paQOgRQRMoYFc2f73pGuG/Aw3tt4vYMR6UA3cWVMxivviPTnMFnFTczUJOA4K2Zga6xgQVE+PcLs64WC8Q==", + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-preset-env": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-9.3.0.tgz", + "integrity": "sha512-ycw6doPrqV6QxDCtgiyGDef61bEfiSc59HGM4gOw/wxQxmKnhuEery61oOC/5ViENz/ycpRsuhTexs1kUBTvVw==", + "requires": { + "@csstools/postcss-cascade-layers": "^4.0.1", + "@csstools/postcss-color-function": "^3.0.7", + "@csstools/postcss-color-mix-function": "^2.0.7", + "@csstools/postcss-exponential-functions": "^1.0.1", + "@csstools/postcss-font-format-keywords": "^3.0.0", + "@csstools/postcss-gamut-mapping": "^1.0.0", + "@csstools/postcss-gradients-interpolation-method": "^4.0.7", + "@csstools/postcss-hwb-function": "^3.0.6", + "@csstools/postcss-ic-unit": "^3.0.2", + "@csstools/postcss-initial": "^1.0.0", + "@csstools/postcss-is-pseudo-class": "^4.0.3", + "@csstools/postcss-logical-float-and-clear": "^2.0.0", + "@csstools/postcss-logical-overflow": "^1.0.0", + "@csstools/postcss-logical-overscroll-behavior": "^1.0.0", + "@csstools/postcss-logical-resize": "^2.0.0", + "@csstools/postcss-logical-viewport-units": "^2.0.3", + "@csstools/postcss-media-minmax": "^1.1.0", + "@csstools/postcss-media-queries-aspect-ratio-number-values": "^2.0.3", + "@csstools/postcss-nested-calc": "^3.0.0", + "@csstools/postcss-normalize-display-values": "^3.0.1", + "@csstools/postcss-oklab-function": "^3.0.7", + "@csstools/postcss-progressive-custom-properties": "^3.0.2", + "@csstools/postcss-relative-color-syntax": "^2.0.7", + "@csstools/postcss-scope-pseudo-class": "^3.0.0", + "@csstools/postcss-stepped-value-functions": "^3.0.2", + "@csstools/postcss-text-decoration-shorthand": "^3.0.3", + "@csstools/postcss-trigonometric-functions": "^3.0.2", + "@csstools/postcss-unset-value": "^3.0.0", + "autoprefixer": "^10.4.16", + "browserslist": "^4.22.1", + "css-blank-pseudo": "^6.0.0", + "css-has-pseudo": "^6.0.0", + "css-prefers-color-scheme": "^9.0.0", + "cssdb": "^7.9.0", + "postcss-attribute-case-insensitive": "^6.0.2", + "postcss-clamp": "^4.1.0", + "postcss-color-functional-notation": "^6.0.2", + "postcss-color-hex-alpha": "^9.0.2", + "postcss-color-rebeccapurple": "^9.0.1", + "postcss-custom-media": "^10.0.2", + "postcss-custom-properties": "^13.3.2", + "postcss-custom-selectors": "^7.1.6", + "postcss-dir-pseudo-class": "^8.0.0", + "postcss-double-position-gradients": "^5.0.2", + "postcss-focus-visible": "^9.0.0", + "postcss-focus-within": "^8.0.0", + "postcss-font-variant": "^5.0.0", + "postcss-gap-properties": "^5.0.0", + "postcss-image-set-function": "^6.0.1", + "postcss-lab-function": "^6.0.7", + "postcss-logical": "^7.0.0", + "postcss-nesting": "^12.0.1", + "postcss-opacity-percentage": "^2.0.0", + "postcss-overflow-shorthand": "^5.0.0", + "postcss-page-break": "^3.0.4", + "postcss-place": "^9.0.0", + "postcss-pseudo-class-any-link": "^9.0.0", + "postcss-replace-overflow-wrap": "^4.0.0", + "postcss-selector-not": "^7.0.1", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-pseudo-class-any-link": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-9.0.1.tgz", + "integrity": "sha512-cKYGGZ9yzUZi+dZd7XT2M8iSDfo+T2Ctbpiizf89uBTBfIpZpjvTavzIJXpCReMVXSKROqzpxClNu6fz4DHM0Q==", + "requires": { + "postcss-selector-parser": "^6.0.13" + } + }, + "postcss-replace-overflow-wrap": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-4.0.0.tgz", + "integrity": "sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw==", + "requires": {} + }, + "postcss-selector-not": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-7.0.1.tgz", + "integrity": "sha512-1zT5C27b/zeJhchN7fP0kBr16Cc61mu7Si9uWWLoA3Px/D9tIJPKchJCkUH3tPO5D0pCFmGeApAv8XpXBQJ8SQ==", + "requires": { + "postcss-selector-parser": "^6.0.10" + } + }, + "postcss-selector-parser": { + "version": "6.0.15", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.15.tgz", + "integrity": "sha512-rEYkQOMUCEMhsKbK66tbEU9QVIxbhN18YiniAwA7XQYTVBqrBy+P2p5JcdqsHgKM2zWylp8d7J6eszocfds5Sw==", + "requires": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + } + }, + "postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" + }, "prebuild-install": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.1.tgz", @@ -9617,6 +13541,15 @@ "unified": "^11.0.0" } }, + "remark-mdx": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-3.0.0.tgz", + "integrity": "sha512-O7yfjuC6ra3NHPbRVxfflafAj3LTwx3b73aBvkEFU5z4PsD6FD4vrqJAkE5iNGLz71GdjXfgRqm3SQ0h0VuE7g==", + "requires": { + "mdast-util-mdx": "^3.0.0", + "micromark-extension-mdxjs": "^3.0.0" + } + }, "remark-parse": { "version": "11.0.0", "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-11.0.0.tgz", @@ -10015,23 +13948,27 @@ "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==" }, "rollup": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.9.1.tgz", - "integrity": "sha512-pgPO9DWzLoW/vIhlSoDByCzcpX92bKEorbgXuZrqxByte3JFk2xSW2JEeAcyLc9Ru9pqcNNW+Ob7ntsk2oT/Xw==", + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.18.0.tgz", + "integrity": "sha512-QmJz14PX3rzbJCN1SG4Xe/bAAX2a6NpCP8ab2vfu2GiUr8AQcr2nCV/oEO3yneFarB67zk8ShlIyWb2LGTb3Sg==", "requires": { - "@rollup/rollup-android-arm-eabi": "4.9.1", - "@rollup/rollup-android-arm64": "4.9.1", - "@rollup/rollup-darwin-arm64": "4.9.1", - "@rollup/rollup-darwin-x64": "4.9.1", - "@rollup/rollup-linux-arm-gnueabihf": "4.9.1", - "@rollup/rollup-linux-arm64-gnu": "4.9.1", - "@rollup/rollup-linux-arm64-musl": "4.9.1", - "@rollup/rollup-linux-riscv64-gnu": "4.9.1", - "@rollup/rollup-linux-x64-gnu": "4.9.1", - "@rollup/rollup-linux-x64-musl": "4.9.1", - "@rollup/rollup-win32-arm64-msvc": "4.9.1", - "@rollup/rollup-win32-ia32-msvc": "4.9.1", - "@rollup/rollup-win32-x64-msvc": "4.9.1", + "@rollup/rollup-android-arm-eabi": "4.18.0", + "@rollup/rollup-android-arm64": "4.18.0", + "@rollup/rollup-darwin-arm64": "4.18.0", + "@rollup/rollup-darwin-x64": "4.18.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.18.0", + "@rollup/rollup-linux-arm-musleabihf": "4.18.0", + "@rollup/rollup-linux-arm64-gnu": "4.18.0", + "@rollup/rollup-linux-arm64-musl": "4.18.0", + "@rollup/rollup-linux-powerpc64le-gnu": "4.18.0", + "@rollup/rollup-linux-riscv64-gnu": "4.18.0", + "@rollup/rollup-linux-s390x-gnu": "4.18.0", + "@rollup/rollup-linux-x64-gnu": "4.18.0", + "@rollup/rollup-linux-x64-musl": "4.18.0", + "@rollup/rollup-win32-arm64-msvc": "4.18.0", + "@rollup/rollup-win32-ia32-msvc": "4.18.0", + "@rollup/rollup-win32-x64-msvc": "4.18.0", + "@types/estree": "1.0.5", "fsevents": "~2.3.2" } }, @@ -10132,6 +14069,11 @@ "hast-util-to-html": "^9.0.0" } }, + "shikiji-core": { + "version": "0.9.19", + "resolved": "https://registry.npmjs.org/shikiji-core/-/shikiji-core-0.9.19.tgz", + "integrity": "sha512-AFJu/vcNT21t0e6YrfadZ+9q86gvPum6iywRyt1OtIPjPFe25RQnYJyxHQPMLKCCWA992TPxmEmbNcOZCAJclw==" + }, "signal-exit": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", @@ -10186,10 +14128,15 @@ } } }, + "source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==" + }, "source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==" + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", + "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==" }, "space-separated-tokens": { "version": "2.0.2", @@ -10298,6 +14245,14 @@ "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", "optional": true }, + "style-to-object": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-0.4.4.tgz", + "integrity": "sha512-HYNoHZa2GorYNyqiCaBgsxvcJIn7OHq6inEga+E6Ke3m5JkoqpQbnFssk4jwe+K7AhGa2fcha4wSOf1Kn01dMg==", + "requires": { + "inline-style-parser": "0.1.1" + } + }, "supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", @@ -10445,6 +14400,23 @@ "@types/unist": "^3.0.0" } }, + "unist-util-position-from-estree": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position-from-estree/-/unist-util-position-from-estree-2.0.0.tgz", + "integrity": "sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ==", + "requires": { + "@types/unist": "^3.0.0" + } + }, + "unist-util-remove-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-5.0.0.tgz", + "integrity": "sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q==", + "requires": { + "@types/unist": "^3.0.0", + "unist-util-visit": "^5.0.0" + } + }, "unist-util-stringify-position": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", @@ -10530,14 +14502,184 @@ } }, "vite": { - "version": "5.0.10", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.0.10.tgz", - "integrity": "sha512-2P8J7WWgmc355HUMlFrwofacvr98DAjoE52BfdbwQtyLH06XKwaL/FMnmKM2crF0iX4MpmMKoDlNCB1ok7zHCw==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.3.1.tgz", + "integrity": "sha512-XBmSKRLXLxiaPYamLv3/hnP/KXDai1NDexN0FpkTaZXTfycHvkRHoenpgl/fvuK/kPbB6xAgoyiryAhQNxYmAQ==", "requires": { - "esbuild": "^0.19.3", + "esbuild": "^0.21.3", "fsevents": "~2.3.3", - "postcss": "^8.4.32", - "rollup": "^4.2.0" + "postcss": "^8.4.38", + "rollup": "^4.13.0" + }, + "dependencies": { + "@esbuild/aix-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", + "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", + "optional": true + }, + "@esbuild/android-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", + "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", + "optional": true + }, + "@esbuild/android-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", + "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", + "optional": true + }, + "@esbuild/android-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", + "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", + "optional": true + }, + "@esbuild/darwin-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", + "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", + "optional": true + }, + "@esbuild/darwin-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", + "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", + "optional": true + }, + "@esbuild/freebsd-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", + "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", + "optional": true + }, + "@esbuild/freebsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", + "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", + "optional": true + }, + "@esbuild/linux-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", + "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", + "optional": true + }, + "@esbuild/linux-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", + "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", + "optional": true + }, + "@esbuild/linux-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", + "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", + "optional": true + }, + "@esbuild/linux-loong64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", + "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", + "optional": true + }, + "@esbuild/linux-mips64el": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", + "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", + "optional": true + }, + "@esbuild/linux-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", + "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", + "optional": true + }, + "@esbuild/linux-riscv64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", + "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", + "optional": true + }, + "@esbuild/linux-s390x": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", + "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", + "optional": true + }, + "@esbuild/linux-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", + "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", + "optional": true + }, + "@esbuild/netbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", + "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", + "optional": true + }, + "@esbuild/openbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", + "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", + "optional": true + }, + "@esbuild/sunos-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", + "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", + "optional": true + }, + "@esbuild/win32-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", + "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", + "optional": true + }, + "@esbuild/win32-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", + "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", + "optional": true + }, + "@esbuild/win32-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", + "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", + "optional": true + }, + "esbuild": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", + "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", + "requires": { + "@esbuild/aix-ppc64": "0.21.5", + "@esbuild/android-arm": "0.21.5", + "@esbuild/android-arm64": "0.21.5", + "@esbuild/android-x64": "0.21.5", + "@esbuild/darwin-arm64": "0.21.5", + "@esbuild/darwin-x64": "0.21.5", + "@esbuild/freebsd-arm64": "0.21.5", + "@esbuild/freebsd-x64": "0.21.5", + "@esbuild/linux-arm": "0.21.5", + "@esbuild/linux-arm64": "0.21.5", + "@esbuild/linux-ia32": "0.21.5", + "@esbuild/linux-loong64": "0.21.5", + "@esbuild/linux-mips64el": "0.21.5", + "@esbuild/linux-ppc64": "0.21.5", + "@esbuild/linux-riscv64": "0.21.5", + "@esbuild/linux-s390x": "0.21.5", + "@esbuild/linux-x64": "0.21.5", + "@esbuild/netbsd-x64": "0.21.5", + "@esbuild/openbsd-x64": "0.21.5", + "@esbuild/sunos-x64": "0.21.5", + "@esbuild/win32-arm64": "0.21.5", + "@esbuild/win32-ia32": "0.21.5", + "@esbuild/win32-x64": "0.21.5" + } + } } }, "vitefu": { diff --git a/package.json b/package.json index 37bdf2d..9efae23 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "@firq/fgosite", "type": "module", - "version": "0.1.7", + "version": "0.1.27", "private": true, "scripts": { "dev": "astro dev", @@ -11,10 +11,18 @@ "astro": "astro" }, "dependencies": { + "@astro-community/astro-embed-youtube": "^0.4.3", "@astrojs/check": "^0.3.3", + "@astrojs/mdx": "^2.0.3", "@astrojs/sitemap": "^3.0.3", - "astro": "^4.0.7", - "iconoir": "^6.1.0", + "astro": "^4.2.1", + "autoprefixer": "^10.4.16", + "iconoir": "^7.2.0", + "postcss-preset-env": "^9.3.0", "typescript": "^5.3.3" - } + }, + "browserslist": [ + "last 2 versions", + ">0.5% and not dead" + ] } diff --git a/postcss.config.cjs b/postcss.config.cjs new file mode 100644 index 0000000..5fd8746 --- /dev/null +++ b/postcss.config.cjs @@ -0,0 +1,13 @@ +module.exports = { + plugins: { + "postcss-preset-env": { + autoprefixer: { flexbox: "no-2009" }, + stage: 2, + features: { + "custom-properties": false, + "custom-media-queries": true, + "nesting-rules": true + } + } + } +}; \ No newline at end of file diff --git a/serve.json b/serve.json index 6f9caef..06f578d 100644 --- a/serve.json +++ b/serve.json @@ -14,14 +14,14 @@ "source" : "**/*.css", "headers" : [{ "key" : "Cache-Control", - "value" : "max-age=86400" + "value" : "max-age=31536000" }] }, { "source" : "**/*.@(jpg|jpeg|gif|png|webp|svg)", "headers" : [{ "key" : "Cache-Control", - "value" : "max-age=86400" + "value" : "max-age=31536000" }] } ] diff --git a/static/assets/atlas.png b/src/assets/atlas.png similarity index 100% rename from static/assets/atlas.png rename to src/assets/atlas.png diff --git a/src/assets/ce/2030.png b/src/assets/ce/2030.png new file mode 100644 index 0000000..e9fae8f Binary files /dev/null and b/src/assets/ce/2030.png differ diff --git a/src/assets/ce/500.png b/src/assets/ce/500.png new file mode 100644 index 0000000..9f5623c Binary files /dev/null and b/src/assets/ce/500.png differ diff --git a/src/assets/ce/black_grail.png b/src/assets/ce/black_grail.png new file mode 100644 index 0000000..990ba68 Binary files /dev/null and b/src/assets/ce/black_grail.png differ diff --git a/src/assets/ce/bond-ce/bride.png b/src/assets/ce/bond-ce/bride.png new file mode 100644 index 0000000..06e7ac1 Binary files /dev/null and b/src/assets/ce/bond-ce/bride.png differ diff --git a/src/assets/ce/bond-ce/castoria.png b/src/assets/ce/bond-ce/castoria.png new file mode 100644 index 0000000..2b2875e Binary files /dev/null and b/src/assets/ce/bond-ce/castoria.png differ diff --git a/src/assets/ce/bond-ce/chiron.png b/src/assets/ce/bond-ce/chiron.png new file mode 100644 index 0000000..4380a67 Binary files /dev/null and b/src/assets/ce/bond-ce/chiron.png differ diff --git a/src/assets/ce/bond-ce/crane.png b/src/assets/ce/bond-ce/crane.png new file mode 100644 index 0000000..f90cc92 Binary files /dev/null and b/src/assets/ce/bond-ce/crane.png differ diff --git a/src/assets/ce/bond-ce/douman.png b/src/assets/ce/bond-ce/douman.png new file mode 100644 index 0000000..b44f694 Binary files /dev/null and b/src/assets/ce/bond-ce/douman.png differ diff --git a/src/assets/ce/bond-ce/gogh.png b/src/assets/ce/bond-ce/gogh.png new file mode 100644 index 0000000..e6f5f61 Binary files /dev/null and b/src/assets/ce/bond-ce/gogh.png differ diff --git a/src/assets/ce/bond-ce/himiko.png b/src/assets/ce/bond-ce/himiko.png new file mode 100644 index 0000000..1d5dcc2 Binary files /dev/null and b/src/assets/ce/bond-ce/himiko.png differ diff --git a/src/assets/ce/bond-ce/ibaraki.png b/src/assets/ce/bond-ce/ibaraki.png new file mode 100644 index 0000000..805175f Binary files /dev/null and b/src/assets/ce/bond-ce/ibaraki.png differ diff --git a/src/assets/ce/bond-ce/jane.png b/src/assets/ce/bond-ce/jane.png new file mode 100644 index 0000000..8a54d14 Binary files /dev/null and b/src/assets/ce/bond-ce/jane.png differ diff --git a/src/assets/ce/bond-ce/koyanlight.png b/src/assets/ce/bond-ce/koyanlight.png new file mode 100644 index 0000000..b5a9e61 Binary files /dev/null and b/src/assets/ce/bond-ce/koyanlight.png differ diff --git a/src/assets/ce/bond-ce/liz.png b/src/assets/ce/bond-ce/liz.png new file mode 100644 index 0000000..495d708 Binary files /dev/null and b/src/assets/ce/bond-ce/liz.png differ diff --git a/src/assets/ce/bond-ce/merlin.png b/src/assets/ce/bond-ce/merlin.png new file mode 100644 index 0000000..d3f492f Binary files /dev/null and b/src/assets/ce/bond-ce/merlin.png differ diff --git a/src/assets/ce/bond-ce/oberon.png b/src/assets/ce/bond-ce/oberon.png new file mode 100644 index 0000000..b836b58 Binary files /dev/null and b/src/assets/ce/bond-ce/oberon.png differ diff --git a/src/assets/ce/bond-ce/reines.png b/src/assets/ce/bond-ce/reines.png new file mode 100644 index 0000000..8cdea85 Binary files /dev/null and b/src/assets/ce/bond-ce/reines.png differ diff --git a/src/assets/ce/bond-ce/santagale.png b/src/assets/ce/bond-ce/santagale.png new file mode 100644 index 0000000..0163273 Binary files /dev/null and b/src/assets/ce/bond-ce/santagale.png differ diff --git a/src/assets/ce/bond-ce/scathach.png b/src/assets/ce/bond-ce/scathach.png new file mode 100644 index 0000000..5238bed Binary files /dev/null and b/src/assets/ce/bond-ce/scathach.png differ diff --git a/src/assets/ce/bond-ce/sherlock.png b/src/assets/ce/bond-ce/sherlock.png new file mode 100644 index 0000000..cfe78fa Binary files /dev/null and b/src/assets/ce/bond-ce/sherlock.png differ diff --git a/src/assets/ce/bond-ce/skadi.png b/src/assets/ce/bond-ce/skadi.png new file mode 100644 index 0000000..a2d445d Binary files /dev/null and b/src/assets/ce/bond-ce/skadi.png differ diff --git a/src/assets/ce/bond-ce/taigong.png b/src/assets/ce/bond-ce/taigong.png new file mode 100644 index 0000000..11820a3 Binary files /dev/null and b/src/assets/ce/bond-ce/taigong.png differ diff --git a/src/assets/ce/bond-ce/tamamo.png b/src/assets/ce/bond-ce/tamamo.png new file mode 100644 index 0000000..03cac41 Binary files /dev/null and b/src/assets/ce/bond-ce/tamamo.png differ diff --git a/src/assets/ce/bond-ce/waver.png b/src/assets/ce/bond-ce/waver.png new file mode 100644 index 0000000..aafd1da Binary files /dev/null and b/src/assets/ce/bond-ce/waver.png differ diff --git a/src/assets/ce/bond-ce/wu.png b/src/assets/ce/bond-ce/wu.png new file mode 100644 index 0000000..cfc46a5 Binary files /dev/null and b/src/assets/ce/bond-ce/wu.png differ diff --git a/src/assets/ce/devilish_bodhisattva.png b/src/assets/ce/devilish_bodhisattva.png new file mode 100644 index 0000000..e466954 Binary files /dev/null and b/src/assets/ce/devilish_bodhisattva.png differ diff --git a/src/assets/ce/kaleidoscope.png b/src/assets/ce/kaleidoscope.png new file mode 100644 index 0000000..351d722 Binary files /dev/null and b/src/assets/ce/kaleidoscope.png differ diff --git a/src/assets/ce/maidens_teachings.png b/src/assets/ce/maidens_teachings.png new file mode 100644 index 0000000..9d520a5 Binary files /dev/null and b/src/assets/ce/maidens_teachings.png differ diff --git a/src/assets/ce/merciless_one.png b/src/assets/ce/merciless_one.png new file mode 100644 index 0000000..5645c4b Binary files /dev/null and b/src/assets/ce/merciless_one.png differ diff --git a/src/assets/ce/mlb.png b/src/assets/ce/mlb.png new file mode 100644 index 0000000..19e92b5 Binary files /dev/null and b/src/assets/ce/mlb.png differ diff --git a/static/assets/ce/mlb.webp b/src/assets/ce/mlb.webp similarity index 100% rename from static/assets/ce/mlb.webp rename to src/assets/ce/mlb.webp diff --git a/src/assets/ce/outrage.png b/src/assets/ce/outrage.png new file mode 100644 index 0000000..2cf3b1a Binary files /dev/null and b/src/assets/ce/outrage.png differ diff --git a/src/assets/ce/ox-demon.png b/src/assets/ce/ox-demon.png new file mode 100644 index 0000000..df903c0 Binary files /dev/null and b/src/assets/ce/ox-demon.png differ diff --git a/src/assets/ce/prisma_cosmos.png b/src/assets/ce/prisma_cosmos.png new file mode 100644 index 0000000..7604f00 Binary files /dev/null and b/src/assets/ce/prisma_cosmos.png differ diff --git a/src/assets/ce/vessel.png b/src/assets/ce/vessel.png new file mode 100644 index 0000000..8b267b4 Binary files /dev/null and b/src/assets/ce/vessel.png differ diff --git a/static/assets/embed.png b/src/assets/embed.png similarity index 100% rename from static/assets/embed.png rename to src/assets/embed.png diff --git a/src/assets/favourites/scathach.png b/src/assets/favourites/scathach.png new file mode 100644 index 0000000..e2325f7 Binary files /dev/null and b/src/assets/favourites/scathach.png differ diff --git a/src/assets/favourites/skadi.png b/src/assets/favourites/skadi.png new file mode 100644 index 0000000..1585b7f Binary files /dev/null and b/src/assets/favourites/skadi.png differ diff --git a/static/assets/fedora.png b/src/assets/fedora.png similarity index 100% rename from static/assets/fedora.png rename to src/assets/fedora.png diff --git a/static/assets/logo.svg b/src/assets/logo.svg similarity index 100% rename from static/assets/logo.svg rename to src/assets/logo.svg diff --git a/static/assets/lurker.png b/src/assets/lurker.png similarity index 100% rename from static/assets/lurker.png rename to src/assets/lurker.png diff --git a/src/assets/okita.png b/src/assets/okita.png new file mode 100644 index 0000000..47c739d Binary files /dev/null and b/src/assets/okita.png differ diff --git a/static/assets/old.logo.svg b/src/assets/old.logo.svg similarity index 100% rename from static/assets/old.logo.svg rename to src/assets/old.logo.svg diff --git a/static/assets/padoru.png b/src/assets/padoru.png similarity index 100% rename from static/assets/padoru.png rename to src/assets/padoru.png diff --git a/src/assets/servant/bride_03.png b/src/assets/servant/bride_03.png new file mode 100644 index 0000000..78ac024 Binary files /dev/null and b/src/assets/servant/bride_03.png differ diff --git a/src/assets/servant/castoria_01.png b/src/assets/servant/castoria_01.png new file mode 100644 index 0000000..0e5967b Binary files /dev/null and b/src/assets/servant/castoria_01.png differ diff --git a/src/assets/servant/castoria_02.png b/src/assets/servant/castoria_02.png new file mode 100644 index 0000000..8ac5d39 Binary files /dev/null and b/src/assets/servant/castoria_02.png differ diff --git a/src/assets/servant/chiron_01.png b/src/assets/servant/chiron_01.png new file mode 100644 index 0000000..ee9ae6a Binary files /dev/null and b/src/assets/servant/chiron_01.png differ diff --git a/src/assets/servant/crane_01.png b/src/assets/servant/crane_01.png new file mode 100644 index 0000000..24473f3 Binary files /dev/null and b/src/assets/servant/crane_01.png differ diff --git a/src/assets/servant/douman_01.png b/src/assets/servant/douman_01.png new file mode 100644 index 0000000..53cdeeb Binary files /dev/null and b/src/assets/servant/douman_01.png differ diff --git a/src/assets/servant/gogh_01.png b/src/assets/servant/gogh_01.png new file mode 100644 index 0000000..db0cc6c Binary files /dev/null and b/src/assets/servant/gogh_01.png differ diff --git a/src/assets/servant/himiko_03.png b/src/assets/servant/himiko_03.png new file mode 100644 index 0000000..e9a73df Binary files /dev/null and b/src/assets/servant/himiko_03.png differ diff --git a/src/assets/servant/ibaraki_02.png b/src/assets/servant/ibaraki_02.png new file mode 100644 index 0000000..01e43ab Binary files /dev/null and b/src/assets/servant/ibaraki_02.png differ diff --git a/src/assets/servant/jane_02.png b/src/assets/servant/jane_02.png new file mode 100644 index 0000000..f65d96d Binary files /dev/null and b/src/assets/servant/jane_02.png differ diff --git a/src/assets/servant/koyanlight_01.png b/src/assets/servant/koyanlight_01.png new file mode 100644 index 0000000..7fe8bbd Binary files /dev/null and b/src/assets/servant/koyanlight_01.png differ diff --git a/src/assets/servant/liz_01.png b/src/assets/servant/liz_01.png new file mode 100644 index 0000000..c1d83d8 Binary files /dev/null and b/src/assets/servant/liz_01.png differ diff --git a/src/assets/servant/merlin_01.png b/src/assets/servant/merlin_01.png new file mode 100644 index 0000000..8e8ffc5 Binary files /dev/null and b/src/assets/servant/merlin_01.png differ diff --git a/src/assets/servant/merlin_03.png b/src/assets/servant/merlin_03.png new file mode 100644 index 0000000..565563a Binary files /dev/null and b/src/assets/servant/merlin_03.png differ diff --git a/src/assets/servant/oberon_02.png b/src/assets/servant/oberon_02.png new file mode 100644 index 0000000..59bb4bc Binary files /dev/null and b/src/assets/servant/oberon_02.png differ diff --git a/src/assets/servant/reines_01.png b/src/assets/servant/reines_01.png new file mode 100644 index 0000000..e2ebfd2 Binary files /dev/null and b/src/assets/servant/reines_01.png differ diff --git a/src/assets/servant/santagale_01.png b/src/assets/servant/santagale_01.png new file mode 100644 index 0000000..7a1e541 Binary files /dev/null and b/src/assets/servant/santagale_01.png differ diff --git a/src/assets/servant/scathach_03.png b/src/assets/servant/scathach_03.png new file mode 100644 index 0000000..3b1dd8b Binary files /dev/null and b/src/assets/servant/scathach_03.png differ diff --git a/src/assets/servant/sherlock_03.png b/src/assets/servant/sherlock_03.png new file mode 100644 index 0000000..072e233 Binary files /dev/null and b/src/assets/servant/sherlock_03.png differ diff --git a/src/assets/servant/skadi_01.png b/src/assets/servant/skadi_01.png new file mode 100644 index 0000000..dfd43f3 Binary files /dev/null and b/src/assets/servant/skadi_01.png differ diff --git a/src/assets/servant/skadi_02.png b/src/assets/servant/skadi_02.png new file mode 100644 index 0000000..3218553 Binary files /dev/null and b/src/assets/servant/skadi_02.png differ diff --git a/src/assets/servant/skadi_03.png b/src/assets/servant/skadi_03.png new file mode 100644 index 0000000..a9687e6 Binary files /dev/null and b/src/assets/servant/skadi_03.png differ diff --git a/src/assets/servant/taigong_03.png b/src/assets/servant/taigong_03.png new file mode 100644 index 0000000..8c025e3 Binary files /dev/null and b/src/assets/servant/taigong_03.png differ diff --git a/src/assets/servant/tamamo_03.png b/src/assets/servant/tamamo_03.png new file mode 100644 index 0000000..167e061 Binary files /dev/null and b/src/assets/servant/tamamo_03.png differ diff --git a/src/assets/servant/waver_02.png b/src/assets/servant/waver_02.png new file mode 100644 index 0000000..1860bc6 Binary files /dev/null and b/src/assets/servant/waver_02.png differ diff --git a/src/assets/servant/wu_01.png b/src/assets/servant/wu_01.png new file mode 100644 index 0000000..6c8b774 Binary files /dev/null and b/src/assets/servant/wu_01.png differ diff --git a/static/assets/shishousad.webp b/src/assets/shishousad.webp similarity index 100% rename from static/assets/shishousad.webp rename to src/assets/shishousad.webp diff --git a/static/assets/social/custom-fgo.webp b/src/assets/social/custom-fgo.webp similarity index 100% rename from static/assets/social/custom-fgo.webp rename to src/assets/social/custom-fgo.webp diff --git a/static/assets/social/discord.webp b/src/assets/social/discord.webp similarity index 100% rename from static/assets/social/discord.webp rename to src/assets/social/discord.webp diff --git a/static/assets/social/reddit.webp b/src/assets/social/reddit.webp similarity index 100% rename from static/assets/social/reddit.webp rename to src/assets/social/reddit.webp diff --git a/static/assets/social/twitch.webp b/src/assets/social/twitch.webp similarity index 100% rename from static/assets/social/twitch.webp rename to src/assets/social/twitch.webp diff --git a/static/assets/social/twitter.webp b/src/assets/social/twitter.webp similarity index 100% rename from static/assets/social/twitter.webp rename to src/assets/social/twitter.webp diff --git a/static/assets/social/youtube.webp b/src/assets/social/youtube.webp similarity index 100% rename from static/assets/social/youtube.webp rename to src/assets/social/youtube.webp diff --git a/static/assets/ta_icons/___albion.webp b/src/assets/ta_icons/___albion.webp similarity index 100% rename from static/assets/ta_icons/___albion.webp rename to src/assets/ta_icons/___albion.webp diff --git a/static/assets/ta_icons/__albion.webp b/src/assets/ta_icons/__albion.webp similarity index 100% rename from static/assets/ta_icons/__albion.webp rename to src/assets/ta_icons/__albion.webp diff --git a/src/assets/ta_icons/abyssalworm.webp b/src/assets/ta_icons/abyssalworm.webp new file mode 100644 index 0000000..dd73854 Binary files /dev/null and b/src/assets/ta_icons/abyssalworm.webp differ diff --git a/static/assets/ta_icons/albion.webp b/src/assets/ta_icons/albion.webp similarity index 100% rename from static/assets/ta_icons/albion.webp rename to src/assets/ta_icons/albion.webp diff --git a/static/assets/ta_icons/arthur.webp b/src/assets/ta_icons/arthur.webp similarity index 100% rename from static/assets/ta_icons/arthur.webp rename to src/assets/ta_icons/arthur.webp diff --git a/static/assets/ta_icons/barghest.webp b/src/assets/ta_icons/barghest.webp similarity index 100% rename from static/assets/ta_icons/barghest.webp rename to src/assets/ta_icons/barghest.webp diff --git a/src/assets/ta_icons/beast_4_l.png b/src/assets/ta_icons/beast_4_l.png new file mode 100644 index 0000000..59b3af1 Binary files /dev/null and b/src/assets/ta_icons/beast_4_l.png differ diff --git a/static/assets/ta_icons/caenis.webp b/src/assets/ta_icons/caenis.webp similarity index 100% rename from static/assets/ta_icons/caenis.webp rename to src/assets/ta_icons/caenis.webp diff --git a/static/assets/ta_icons/calamityofnorwich.webp b/src/assets/ta_icons/calamityofnorwich.webp similarity index 100% rename from static/assets/ta_icons/calamityofnorwich.webp rename to src/assets/ta_icons/calamityofnorwich.webp diff --git a/src/assets/ta_icons/cernnunos.webp b/src/assets/ta_icons/cernnunos.webp new file mode 100644 index 0000000..55ef9e4 Binary files /dev/null and b/src/assets/ta_icons/cernnunos.webp differ diff --git a/static/assets/ta_icons/db.webp b/src/assets/ta_icons/db.webp similarity index 100% rename from static/assets/ta_icons/db.webp rename to src/assets/ta_icons/db.webp diff --git a/static/assets/ta_icons/dioscuri.webp b/src/assets/ta_icons/dioscuri.webp similarity index 100% rename from static/assets/ta_icons/dioscuri.webp rename to src/assets/ta_icons/dioscuri.webp diff --git a/static/assets/ta_icons/douman.webp b/src/assets/ta_icons/douman.webp similarity index 100% rename from static/assets/ta_icons/douman.webp rename to src/assets/ta_icons/douman.webp diff --git a/static/assets/ta_icons/erice.webp b/src/assets/ta_icons/erice.webp similarity index 100% rename from static/assets/ta_icons/erice.webp rename to src/assets/ta_icons/erice.webp diff --git a/static/assets/ta_icons/fuuma.webp b/src/assets/ta_icons/fuuma.webp similarity index 100% rename from static/assets/ta_icons/fuuma.webp rename to src/assets/ta_icons/fuuma.webp diff --git a/static/assets/ta_icons/galatea.webp b/src/assets/ta_icons/galatea.webp similarity index 100% rename from static/assets/ta_icons/galatea.webp rename to src/assets/ta_icons/galatea.webp diff --git a/static/assets/ta_icons/goetia.webp b/src/assets/ta_icons/goetia.webp similarity index 100% rename from static/assets/ta_icons/goetia.webp rename to src/assets/ta_icons/goetia.webp diff --git a/static/assets/ta_icons/ibuki.webp b/src/assets/ta_icons/ibuki.webp similarity index 100% rename from static/assets/ta_icons/ibuki.webp rename to src/assets/ta_icons/ibuki.webp diff --git a/src/assets/ta_icons/izumo.webp b/src/assets/ta_icons/izumo.webp new file mode 100644 index 0000000..4f62fc2 Binary files /dev/null and b/src/assets/ta_icons/izumo.webp differ diff --git a/src/assets/ta_icons/kamasummer.webp b/src/assets/ta_icons/kamasummer.webp new file mode 100644 index 0000000..3f6e012 Binary files /dev/null and b/src/assets/ta_icons/kamasummer.webp differ diff --git a/static/assets/ta_icons/kingprotea.webp b/src/assets/ta_icons/kingprotea.webp similarity index 100% rename from static/assets/ta_icons/kingprotea.webp rename to src/assets/ta_icons/kingprotea.webp diff --git a/static/assets/ta_icons/kirschtaria.webp b/src/assets/ta_icons/kirschtaria.webp similarity index 100% rename from static/assets/ta_icons/kirschtaria.webp rename to src/assets/ta_icons/kirschtaria.webp diff --git a/static/assets/ta_icons/kiyohime.webp b/src/assets/ta_icons/kiyohime.webp similarity index 100% rename from static/assets/ta_icons/kiyohime.webp rename to src/assets/ta_icons/kiyohime.webp diff --git a/src/assets/ta_icons/koyanskayaofdark.png b/src/assets/ta_icons/koyanskayaofdark.png new file mode 100644 index 0000000..ce1fba7 Binary files /dev/null and b/src/assets/ta_icons/koyanskayaofdark.png differ diff --git a/src/assets/ta_icons/koyo.webp b/src/assets/ta_icons/koyo.webp new file mode 100644 index 0000000..22e45f6 Binary files /dev/null and b/src/assets/ta_icons/koyo.webp differ diff --git a/static/assets/ta_icons/melusine.webp b/src/assets/ta_icons/melusine.webp similarity index 100% rename from static/assets/ta_icons/melusine.webp rename to src/assets/ta_icons/melusine.webp diff --git a/static/assets/ta_icons/mhxx.webp b/src/assets/ta_icons/mhxx.webp similarity index 100% rename from static/assets/ta_icons/mhxx.webp rename to src/assets/ta_icons/mhxx.webp diff --git a/static/assets/ta_icons/morgan.webp b/src/assets/ta_icons/morgan.webp similarity index 100% rename from static/assets/ta_icons/morgan.webp rename to src/assets/ta_icons/morgan.webp diff --git a/static/assets/ta_icons/moriarty.webp b/src/assets/ta_icons/moriarty.webp similarity index 100% rename from static/assets/ta_icons/moriarty.webp rename to src/assets/ta_icons/moriarty.webp diff --git a/static/assets/ta_icons/nobunaga.webp b/src/assets/ta_icons/nobunaga.webp similarity index 100% rename from static/assets/ta_icons/nobunaga.webp rename to src/assets/ta_icons/nobunaga.webp diff --git a/static/assets/ta_icons/odysseus.webp b/src/assets/ta_icons/odysseus.webp similarity index 100% rename from static/assets/ta_icons/odysseus.webp rename to src/assets/ta_icons/odysseus.webp diff --git a/static/assets/ta_icons/orion.webp b/src/assets/ta_icons/orion.webp similarity index 100% rename from static/assets/ta_icons/orion.webp rename to src/assets/ta_icons/orion.webp diff --git a/static/assets/ta_icons/penth.webp b/src/assets/ta_icons/penth.webp similarity index 100% rename from static/assets/ta_icons/penth.webp rename to src/assets/ta_icons/penth.webp diff --git a/static/assets/ta_icons/reddragon.webp b/src/assets/ta_icons/reddragon.webp similarity index 100% rename from static/assets/ta_icons/reddragon.webp rename to src/assets/ta_icons/reddragon.webp diff --git a/static/assets/ta_icons/santagale.webp b/src/assets/ta_icons/santagale.webp similarity index 100% rename from static/assets/ta_icons/santagale.webp rename to src/assets/ta_icons/santagale.webp diff --git a/static/assets/ta_icons/sei.webp b/src/assets/ta_icons/sei.webp similarity index 100% rename from static/assets/ta_icons/sei.webp rename to src/assets/ta_icons/sei.webp diff --git a/static/assets/ta_icons/shibata.webp b/src/assets/ta_icons/shibata.webp similarity index 100% rename from static/assets/ta_icons/shibata.webp rename to src/assets/ta_icons/shibata.webp diff --git a/src/assets/ta_icons/skadi.webp b/src/assets/ta_icons/skadi.webp new file mode 100644 index 0000000..dd88e3d Binary files /dev/null and b/src/assets/ta_icons/skadi.webp differ diff --git a/static/assets/ta_icons/solomon.webp b/src/assets/ta_icons/solomon.webp similarity index 100% rename from static/assets/ta_icons/solomon.webp rename to src/assets/ta_icons/solomon.webp diff --git a/src/assets/ta_icons/ta_servants/caren.png b/src/assets/ta_icons/ta_servants/caren.png new file mode 100644 index 0000000..e7cedcd Binary files /dev/null and b/src/assets/ta_icons/ta_servants/caren.png differ diff --git a/src/assets/ta_icons/ta_servants/jalter.png b/src/assets/ta_icons/ta_servants/jalter.png new file mode 100644 index 0000000..cf91568 Binary files /dev/null and b/src/assets/ta_icons/ta_servants/jalter.png differ diff --git a/src/assets/ta_icons/ta_servants/kama.png b/src/assets/ta_icons/ta_servants/kama.png new file mode 100644 index 0000000..3a24974 Binary files /dev/null and b/src/assets/ta_icons/ta_servants/kama.png differ diff --git a/src/assets/ta_icons/ta_servants/musashi.png b/src/assets/ta_icons/ta_servants/musashi.png new file mode 100644 index 0000000..0166148 Binary files /dev/null and b/src/assets/ta_icons/ta_servants/musashi.png differ diff --git a/src/assets/ta_icons/ta_servants/saberalter.png b/src/assets/ta_icons/ta_servants/saberalter.png new file mode 100644 index 0000000..a93e190 Binary files /dev/null and b/src/assets/ta_icons/ta_servants/saberalter.png differ diff --git a/src/assets/ta_icons/ta_servants/shishou.png b/src/assets/ta_icons/ta_servants/shishou.png new file mode 100644 index 0000000..9485dd9 Binary files /dev/null and b/src/assets/ta_icons/ta_servants/shishou.png differ diff --git a/src/assets/ta_icons/ta_servants/skadi.png b/src/assets/ta_icons/ta_servants/skadi.png new file mode 100644 index 0000000..c09fc84 Binary files /dev/null and b/src/assets/ta_icons/ta_servants/skadi.png differ diff --git a/src/assets/ta_icons/ta_servants/summerjalter.png b/src/assets/ta_icons/ta_servants/summerjalter.png new file mode 100644 index 0000000..3c896b4 Binary files /dev/null and b/src/assets/ta_icons/ta_servants/summerjalter.png differ diff --git a/src/assets/ta_icons/ta_servants/summermusashi.png b/src/assets/ta_icons/ta_servants/summermusashi.png new file mode 100644 index 0000000..23fa917 Binary files /dev/null and b/src/assets/ta_icons/ta_servants/summermusashi.png differ diff --git a/src/assets/ta_icons/ta_servants/summershishou.png b/src/assets/ta_icons/ta_servants/summershishou.png new file mode 100644 index 0000000..0dc2c16 Binary files /dev/null and b/src/assets/ta_icons/ta_servants/summershishou.png differ diff --git a/src/assets/ta_icons/ta_servants/tamamocat.png b/src/assets/ta_icons/ta_servants/tamamocat.png new file mode 100644 index 0000000..da03fe6 Binary files /dev/null and b/src/assets/ta_icons/ta_servants/tamamocat.png differ diff --git a/src/assets/ta_icons/ta_servants/tomoe.png b/src/assets/ta_icons/ta_servants/tomoe.png new file mode 100644 index 0000000..b4df46e Binary files /dev/null and b/src/assets/ta_icons/ta_servants/tomoe.png differ diff --git a/src/assets/ta_icons/ta_servants/tomoesummer.png b/src/assets/ta_icons/ta_servants/tomoesummer.png new file mode 100644 index 0000000..ab72529 Binary files /dev/null and b/src/assets/ta_icons/ta_servants/tomoesummer.png differ diff --git a/static/assets/ta_icons/taira.webp b/src/assets/ta_icons/taira.webp similarity index 100% rename from static/assets/ta_icons/taira.webp rename to src/assets/ta_icons/taira.webp diff --git a/static/assets/ta_icons/woodwose.webp b/src/assets/ta_icons/woodwose.webp similarity index 100% rename from static/assets/ta_icons/woodwose.webp rename to src/assets/ta_icons/woodwose.webp diff --git a/src/assets/ta_icons/zenobia.webp b/src/assets/ta_icons/zenobia.webp new file mode 100644 index 0000000..7d65cd1 Binary files /dev/null and b/src/assets/ta_icons/zenobia.webp differ diff --git a/src/assets/technologies/astro.webp b/src/assets/technologies/astro.webp new file mode 100644 index 0000000..c3b4e49 Binary files /dev/null and b/src/assets/technologies/astro.webp differ diff --git a/src/assets/technologies/docker.webp b/src/assets/technologies/docker.webp new file mode 100644 index 0000000..5471bd0 Binary files /dev/null and b/src/assets/technologies/docker.webp differ diff --git a/src/assets/technologies/dockge.png b/src/assets/technologies/dockge.png new file mode 100644 index 0000000..695aeb7 Binary files /dev/null and b/src/assets/technologies/dockge.png differ diff --git a/src/assets/technologies/forgejo.webp b/src/assets/technologies/forgejo.webp new file mode 100644 index 0000000..a9822c3 Binary files /dev/null and b/src/assets/technologies/forgejo.webp differ diff --git a/src/assets/technologies/nodejs.webp b/src/assets/technologies/nodejs.webp new file mode 100644 index 0000000..90c48f8 Binary files /dev/null and b/src/assets/technologies/nodejs.webp differ diff --git a/src/assets/technologies/serve.webp b/src/assets/technologies/serve.webp new file mode 100644 index 0000000..3d49da1 Binary files /dev/null and b/src/assets/technologies/serve.webp differ diff --git a/static/assets/technologies/typescript.webp b/src/assets/technologies/typescript.webp similarity index 100% rename from static/assets/technologies/typescript.webp rename to src/assets/technologies/typescript.webp diff --git a/src/assets/technologies/unlighthouse.webp b/src/assets/technologies/unlighthouse.webp new file mode 100644 index 0000000..91a9365 Binary files /dev/null and b/src/assets/technologies/unlighthouse.webp differ diff --git a/src/assets/thumbnails/O1f-go7uJQM.jpg b/src/assets/thumbnails/O1f-go7uJQM.jpg new file mode 100644 index 0000000..833fdc1 Binary files /dev/null and b/src/assets/thumbnails/O1f-go7uJQM.jpg differ diff --git a/src/assets/thumbnails/UwbNp_dB_VU.jpg b/src/assets/thumbnails/UwbNp_dB_VU.jpg new file mode 100644 index 0000000..2236df5 Binary files /dev/null and b/src/assets/thumbnails/UwbNp_dB_VU.jpg differ diff --git a/src/assets/thumbnails/WrHudtdfivA.jpg b/src/assets/thumbnails/WrHudtdfivA.jpg new file mode 100644 index 0000000..100f38a Binary files /dev/null and b/src/assets/thumbnails/WrHudtdfivA.jpg differ diff --git a/src/components/ceCard.astro b/src/components/ceCard.astro index 5d154d4..51786f0 100644 --- a/src/components/ceCard.astro +++ b/src/components/ceCard.astro @@ -1,27 +1,29 @@ --- +import { Image } from 'astro:assets' +import mlb_ce from '../assets/ce/mlb.webp' +import type { GlobImage } from '../types/generic' +import { plsLoadImage } from '../utils/tools' + export interface Props { name: string - link: string - mlb: string + imageFile: string + mlb: boolean } -const { mlb, link, name } = Astro.props +const { mlb, imageFile, name } = Astro.props +const imagePath = `/src/assets/ce/${imageFile}` +const images_ces = import.meta.glob<GlobImage>('/src/assets/ce/*.png') +const loadedCEImage = plsLoadImage(images_ces, imagePath) -const ce_img: string = `/assets/ce/${link}.webp` -const mlb_ce: string = `/assets/ce/mlb.webp` -let mlb_image: string = 'mlbalign' - -if (mlb === 'false') { - mlb_image = 'hidemlb' -} +const mlb_image = mlb ? 'mlbalign' : 'hidemlb' --- <article> <div> - <img class="ce-crop" src={ce_img} alt={name} /> + <Image src={loadedCEImage} alt={name} class="ce-crop" /> </div> <div class={mlb_image}> - <img class="mlb" src={mlb_ce} alt="Max-limit broken" /> + <Image src={mlb_ce} alt="Max-limit broken" class="mlb" /> </div> </article> @@ -86,6 +88,7 @@ if (mlb === 'false') { .mlb { width: 5.5rem; + height: auto; margin-left: auto; margin-right: auto; } diff --git a/src/components/contactCard.astro b/src/components/contactCard.astro index 1317487..93772f5 100644 --- a/src/components/contactCard.astro +++ b/src/components/contactCard.astro @@ -1,22 +1,36 @@ --- +import { Image } from 'astro:assets' +import type { GlobImage } from '../types/generic' +import { plsLoadImage } from '../utils/tools' + export interface Props { site: string link: string - image: string + imageFile: string } -const { image, link, site } = Astro.props -const icon: string = `background-image: url('/assets/social/${image}.webp')` +const { imageFile, link, site } = Astro.props +const logoAltText = `${site} Logo` +const imagePath = `/src/assets/social/${imageFile}` +const images_logos = import.meta.glob<GlobImage>( + '/src/assets/social/*.{png,webp}' +) +const loadedLogoImage = plsLoadImage(images_logos, imagePath) --- -<a href={link} target="_blank" rel="noopener noreferrer" aria-label={site}> +<a + href={link} + target="_blank" + rel="noopener noreferrer" + aria-label=`${site} - new window` +> <article class="contact do-hover"> - <div style={icon}> - <span> - <h2>{site}</h2> - </span> + <Image src={loadedLogoImage} alt={logoAltText} /> + <div> + <h2>{site}</h2> </div> </article> + <span class="visually-hidden">{logoAltText}</span> </a> <style> @@ -24,18 +38,29 @@ const icon: string = `background-image: url('/assets/social/${image}.webp')` text-decoration: none; } - article div { - border-radius: 1.25rem; - background-size: contain; - display: flex; - align-items: center; - justify-content: center; + article { --size-value: 6.25rem; + border-radius: 1.25rem; + display: flex; + justify-content: center; + align-items: center; + background-color: var(--c-darkergray); + border-color: var(--c-darkgray); + padding: 10px; + text-align: center; + transition: transform var(--speed) var(--ease); + height: auto; + width: auto; + position: relative; + } + + article img { + border-radius: 1.25rem; width: var(--size-value); height: var(--size-value); } - article:hover span { + article:hover div { border-radius: 1.25rem; padding: 0 0.5rem; display: flex; @@ -43,9 +68,11 @@ const icon: string = `background-image: url('/assets/social/${image}.webp')` justify-content: center; text-align: center; background-color: var(--c-darkgray); - height: calc(var(--size-value) + 0.1rem); - width: calc(var(--size-value) + 0.1rem); + height: calc(var(--size-value)); + width: calc(var(--size-value) - 1rem); opacity: 90%; + z-index: 100; + position: absolute; } article:hover h2 { @@ -57,25 +84,14 @@ const icon: string = `background-image: url('/assets/social/${image}.webp')` } article h2 { + position: absolute; display: none; } - article span { + article div { display: none; } - article { - border-radius: 1.25rem; - display: flex; - align-items: center; - justify-content: center; - background-color: var(--c-darkergray); - border-color: var(--c-darkgray); - padding: 10px; - text-align: center; - transition: transform var(--speed) var(--ease); - height: auto; - width: auto; - } + a:hover { transform: scale(var(--hover-scale)); } diff --git a/src/components/favouriteCard.astro b/src/components/favouriteCard.astro index 9cf6c4b..83b2a87 100644 --- a/src/components/favouriteCard.astro +++ b/src/components/favouriteCard.astro @@ -1,19 +1,31 @@ --- +import { Image } from 'astro:assets' +import type { GlobImage } from '../types/generic' +import { plsLoadImage } from '../utils/tools' + export interface Props { name: string origin: string - image: string + imageFile: string link: string } -const { link, image, origin, name } = Astro.props - -const img: string = `/assets/favourites/${image}.webp` +const { link, imageFile, origin, name } = Astro.props +const imagePath = `/src/assets/favourites/${imageFile}` +const images = import.meta.glob<GlobImage>( + '/src/assets/favourites/*.{png,webp}' +) +const loadedImage = plsLoadImage(images, imagePath) --- -<a href={link} target="_blank" rel="noopener noreferrer"> +<a + href={link} + target="_blank" + rel="noopener noreferrer" + aria-label=`${name} - new window` +> <div class="heading">{name}</div> - <img src={img} alt={name} /> + <Image src={loadedImage} alt={name} /> <h2 class="subtext"> {origin} </h2> @@ -33,10 +45,6 @@ const img: string = `/assets/favourites/${image}.webp` align-items: center; } - a:hover { - transform: scale(var(--hover-scale)); - } - a { border-radius: 1rem; display: flex; @@ -52,12 +60,16 @@ const img: string = `/assets/favourites/${image}.webp` text-align: center; transition: transform var(--speed) var(--ease); text-decoration: none; - } - a > img { - padding: 0px 0.25em; - width: 90%; - height: auto; + &:hover { + transform: scale(var(--hover-scale)); + } + + img { + padding: 0px 0.25em; + width: 90%; + height: auto; + } } @media (min-width: 512px) { @@ -65,12 +77,10 @@ const img: string = `/assets/favourites/${image}.webp` padding: 10px 10px; width: auto; height: auto; - } - - a > img { - padding: 0px 1.5em; - width: 200px; - height: auto; + img { + padding: 0px 1.5em; + width: 200px; + } } } diff --git a/src/components/fgotaHero.astro b/src/components/fgotaHero.astro new file mode 100644 index 0000000..a7bee13 --- /dev/null +++ b/src/components/fgotaHero.astro @@ -0,0 +1,27 @@ +--- +--- + +<div> + <span> + I am currently working on a site to catalogue past and future TAs.<br/> + Check it out at <a href="https://fgo-ta.com">fgo-ta.com</a> + </span> +</div> + +<style> + div { + display: flex; + width: 100%; + height: 5em; + background-color: var(--c-gray); + text-align: center; + align-items: center; + justify-content: center; + color: white; + font-size: 1.5em; + } + a { + color: var(--c-darkpurple); + text-decoration: none; + } +</style> diff --git a/src/components/navbar.astro b/src/components/navbar.astro index bed56e2..3266ad5 100644 --- a/src/components/navbar.astro +++ b/src/components/navbar.astro @@ -1,23 +1,28 @@ --- +import { Image } from 'astro:assets'; +import logo from '../assets/logo.svg' +import hamburger from 'iconoir/icons/menu.svg' +const hamburger_src_url = `url("${hamburger.src}")`; --- <header> - <a href="/" rel="noopener noreferrer" aria-label="Home"> - <img src="/assets/logo.svg" alt="" /> + <a href="/" rel="noopener noreferrer" aria-label="Home" role="navigation"> + <Image src={logo} alt="Firq Website Logo"/> + <span class="visually-hidden">Firq Website Logo</span> </a> <ul class="desktop"> - <slot /> + <slot name="desktop"/> </ul> - <button class="mobile" aria-label="Navigation Button" tabindex="0" onclick="this.focus()"> + <button class="mobile" aria-label="Navigation Button" tabindex="0" onclick="this.focus()" role="navigation"> <ul> - <slot /> + <slot name="mobile"/> </ul> <div class="placeholder"></div> - <i class="iconoir-menu"></i> + <div class="hamburger-menu" role="navigation"></div> </button> </header> -<style> +<style define:vars={{ hamburger_src_url }}> header { z-index: 1000; position: sticky; @@ -30,7 +35,7 @@ line-height: 1.5em; } header > a { - padding-left: 16px; + margin-left: 16px; padding-top: 8px; display: block; height: 48px; @@ -79,16 +84,6 @@ height: 64px; } - .mobile > i { - position: static; - color: white; - font-weight: bold; - font-size: 2em; - align-self: flex-start; - padding-right: 1em; - padding-top: 1.15rem; - } - .mobile > ul { display: none; padding: 0px; @@ -111,6 +106,17 @@ justify-self: top; } + .hamburger-menu { + mask: var(--hamburger_src_url) no-repeat center; + background-color: white; + width: 2rem; + height: 2rem; + position: static; + align-self: flex-start; + margin-right: 1rem; + margin-top: 1rem; + } + @media (min-width: 1140px) { .mobile { display: none; diff --git a/src/components/navbarEntry.astro b/src/components/navbarEntry.astro index 71c8165..715a4dc 100644 --- a/src/components/navbarEntry.astro +++ b/src/components/navbarEntry.astro @@ -1,12 +1,13 @@ --- export interface Props { currentPage?: string + navtype: "mobile" | "desktop" link: string text: string - icon: string + icon: ImageMetadata } -const { icon, text, link, currentPage } = Astro.props +const { icon, text, link, navtype, currentPage } = Astro.props let currPage = '' const slug = link.replace(new RegExp('/', 'g'), '') @@ -17,7 +18,10 @@ if (currentPage === slug) { currPage = 'current' } +const icon_src_url = `url("${icon.src}")`; const fulllink = `/${slug}` + +let extraattributes = navtype === "mobile" ? { tabindex: "0"} : {} --- <li> @@ -26,14 +30,15 @@ const fulllink = `/${slug}` rel="noopener noreferrer" aria-label={text} class={currPage} - tabindex="0" + role="navigation" + {...extraattributes} > - <i class={icon}></i> + <div class="icon"></div> {text} </a> </li> -<style> +<style define:vars={{ icon_src_url }}> li { align-items: center; justify-content: center; @@ -41,6 +46,7 @@ const fulllink = `/${slug}` display: flex; width: 200px; } + li > a { display: inline-flex; color: white; @@ -52,10 +58,27 @@ const fulllink = `/${slug}` font-weight: bold; gap: 0.2em; } + li > a:hover { color: var(--c-purplepink); } + + li > a:hover > .icon { + background-color: var(--c-purplepink); + } + .current { color: var(--c-darkpurple) !important; } + + .current > .icon { + background-color: var(--c-darkpurple) !important; + } + + .icon { + mask: var(--icon_src_url) no-repeat center; + background-color: white; + width: 1.4em; + height: 1.4em; + } </style> diff --git a/src/components/servantCard.astro b/src/components/servantCard.astro index 8151cb2..34abab5 100644 --- a/src/components/servantCard.astro +++ b/src/components/servantCard.astro @@ -1,36 +1,43 @@ --- +import { Image } from 'astro:assets'; +import type { GlobImage } from '../types/generic' +import { plsLoadImage } from '../utils/tools' + export interface Props { name: string level: string skills: string np: string - image_servant: string - image_bond: string + servantImageFile: string + bondceImageFile: string ml: string - bond10: string + bond10: boolean } -const { bond10, ml, image_bond, image_servant, np, skills, level, name } = - Astro.props +const { bond10, ml, bondceImageFile, servantImageFile, np, skills, level, name } = Astro.props +const servantImagePath = `/src/assets/servant/${servantImageFile}` +const bondceImagePath = `/src/assets/ce/bond-ce/${bondceImageFile}` +const images_servants = import.meta.glob<GlobImage>('/src/assets/servant/*.{png,webp}') +const images_bond_ces = import.meta.glob<GlobImage>('/src/assets/ce/bond-ce/*.{png,webp}') +const loadedServantImage = plsLoadImage(images_servants, servantImagePath) +const loadedBondCEImage = plsLoadImage(images_bond_ces, bondceImagePath) -const servant_img: string = `/assets/servant/${image_servant}.webp` -const bondce_img: string = `/assets/ce/bond-ce/${image_bond}.webp` let bondce_css: string = 'bond-ce' -if (bond10 === 'false') { +if (bond10 === false) { bondce_css += ' unobtained' } --- <article> - <img src={servant_img} alt={name} /> + <Image src={loadedServantImage} alt={name} /> <h2 class="subtext"> Level {level}<br /> {skills}<br /> NP {np} </h2> <div class="expand-on-hover"> - <img class={bondce_css} src={bondce_img} alt="" /> + <Image src={loadedBondCEImage} alt="" class={bondce_css}/> <h2 class="subtext">Mana Loading: {ml === 'Not Unlocked' && <br />}{ml}</h2> </div> </article> @@ -110,6 +117,7 @@ if (bond10 === 'false') { .bond-ce { padding-top: 0.75rem; + width: auto; height: 3rem; } diff --git a/src/components/taCard.astro b/src/components/taCard.astro index 9733b9d..be4659d 100644 --- a/src/components/taCard.astro +++ b/src/components/taCard.astro @@ -1,15 +1,20 @@ --- +import { Image } from 'astro:assets' +import type { GlobImage } from '../types/generic' +import { plsLoadImage } from '../utils/tools' + export interface Props { date: string title: string link: string - image: string + targetImageFile: string user?: string - ta_servant?: string + servantImageFile?: string turns?: string } -const { turns, ta_servant, user, date, image, link, title } = Astro.props +const { turns, targetImageFile, user, date, servantImageFile, link, title } = + Astro.props const options_date: Intl.DateTimeFormatOptions = { year: 'numeric', @@ -17,9 +22,19 @@ const options_date: Intl.DateTimeFormatOptions = { day: '2-digit', } +const targetImagePath = `/src/assets/ta_icons/${targetImageFile}` +const servantImagePath = `/src/assets/ta_icons/ta_servants/${servantImageFile}` + const formatted_date = new Date(date).toLocaleDateString('de-DE', options_date) -const icon: string = `background-image: url('/assets/ta_icons/${image}.webp')` -const servant: string = `/assets/ta_icons/ta_servants/${ta_servant}.webp` +const target_images = import.meta.glob<GlobImage>( + '/src/assets/ta_icons/*.{png,webp}' +) +const servant_images = import.meta.glob<GlobImage>( + '/src/assets/ta_icons/ta_servants/*.{png,webp}' +) + +const loadedServantImage = plsLoadImage(servant_images, servantImagePath) +const loadedTargetImage = plsLoadImage(target_images, targetImagePath) let hasuser = '' if (user !== undefined) { @@ -29,10 +44,9 @@ if (user !== undefined) { <a href={link} target="_blank" rel="noopener noreferrer" aria-label={title}> <article> - <div class="icon" style={icon}> - <span> - <h2>{title}</h2> - </span> + <Image src={loadedTargetImage} alt={title} class="icon" /> + <div class="title"> + <h2>{title}</h2> </div> <p> <span class={hasuser}> @@ -41,22 +55,29 @@ if (user !== undefined) { {formatted_date} </p> <div class="expand-on-hover"> - <img src={servant} alt="" /> + <Image src={loadedServantImage} alt="" /> <h2>{turns}</h2> </div> </article> </a> <style> + div { + display: none; + } + span { display: none; } + .hasuser { display: flex; } + a { text-decoration: none; } + article { background-color: var(--c-darkergray); border-color: var(--c-darkgray); @@ -65,23 +86,28 @@ if (user !== undefined) { transition: transform var(--speed) var(--ease); height: auto; width: auto; + max-width: 8rem; border-radius: 1.25rem; padding-bottom: 1.5rem; + --size-value: 7rem; + display: flex; + justify-content: center; + align-items: center; + flex-direction: column; } + article:hover { transform: scale(var(--hover-scale)); } + article > .icon { border-radius: 1.25rem; - --size-value: 7rem; width: var(--size-value); height: var(--size-value); margin: 0.5rem; - background-size: var(--size-value); - background-position: center center; } - article:hover .icon span { + article:hover .title { display: flex; position: absolute; align-items: center; @@ -92,9 +118,10 @@ if (user !== undefined) { width: calc(var(--size-value) + 0.1rem); opacity: 90%; border-radius: 1.25rem; + top: 1.1em; } - article:hover span h2 { + article:hover .title h2 { margin: 0; display: inline-flex; font-weight: bold; @@ -104,11 +131,11 @@ if (user !== undefined) { padding: 0.5rem; } - article span h2 { + article .title h2 { display: none; } - article .icon span { + article .title { display: none; } diff --git a/src/components/technologyCard.astro b/src/components/technologyCard.astro index 55f2e8d..bee5474 100644 --- a/src/components/technologyCard.astro +++ b/src/components/technologyCard.astro @@ -1,23 +1,31 @@ --- +import { Image } from 'astro:assets' +import type { GlobImage } from '../types/generic' +import { plsLoadImage } from '../utils/tools' + export interface Props { title: string link: string - image: string + imageFile: string } -const { image, link, title } = Astro.props - -const icon: string = `background-image: url('/assets/technologies/${image}.webp')` +const { imageFile, link, title } = Astro.props +const logoAltText = `${title} Logo` +const imagePath = `/src/assets/technologies/${imageFile}` +const images_logos = import.meta.glob<GlobImage>( + '/src/assets/technologies/*.{png,webp}' +) +const loadedImage = plsLoadImage(images_logos, imagePath) --- <a href={link} target="_blank" rel="noopener noreferrer" aria-label={title}> <article> - <div style={icon}> - <span> - <h2>{title}</h2> - </span> + <Image src={loadedImage} alt={logoAltText} /> + <div> + <h2>{title}</h2> </div> </article> + <span class="visually-hidden">{logoAltText}</span> </a> <style> @@ -25,31 +33,31 @@ const icon: string = `background-image: url('/assets/technologies/${image}.webp' text-decoration: none; } article { + --size-value: 6.25rem; background-color: var(--c-darkergray); border-color: var(--c-darkgray); padding: 10px; + display: flex; + justify-content: center; + align-items: center; text-align: center; transition: transform var(--speed) var(--ease); height: auto; width: auto; line-height: 100px; border-radius: 1.25rem; + position: relative; } article:hover { transform: scale(var(--hover-scale)); } - article > div { + article > img { border-radius: 1.25rem; - display: flex; - justify-content: center; - align-items: center; - background-size: contain; - --size-value: 6.25rem; width: var(--size-value); height: var(--size-value); } - article:hover span { + article:hover div { border-radius: 1.25rem; padding: 0 0.5rem; display: flex; @@ -57,13 +65,16 @@ const icon: string = `background-image: url('/assets/technologies/${image}.webp' justify-content: center; text-align: center; background-color: var(--c-darkgray); - height: calc(var(--size-value) + 0.1rem); - width: calc(var(--size-value) + 0.1rem); + height: calc(var(--size-value)); + width: calc(var(--size-value) - 1rem); opacity: 90%; + z-index: 100; + position: absolute; } article:hover h2 { margin: 0; + position: absolute; display: inline-flex; font-weight: bold; color: white; @@ -75,7 +86,7 @@ const icon: string = `background-image: url('/assets/technologies/${image}.webp' display: none; } - article span { + article div { display: none; } </style> diff --git a/src/components/youtubeEmbed.astro b/src/components/youtubeEmbed.astro new file mode 100644 index 0000000..e0a99fa --- /dev/null +++ b/src/components/youtubeEmbed.astro @@ -0,0 +1,61 @@ +--- +import { YouTube } from '@astro-community/astro-embed-youtube' +export interface Props { + id: string + thumbnail: string +} + +const { id, thumbnail } = Astro.props +--- + +<div class="youtube-center"> + <noscript style="display: flex; justify-content: center;"> + <style> + lite-youtube { + display: none; + } + </style> + <div class="warningtext"> + <span> + To view the video, enable JavaScript or<br /><a + href=`https://www.youtube.com/watch?v=${id}` + target="_blank" + rel="noopener noreferrer">watch it on YouTube</a + > + </span> + </div> + </noscript> + <YouTube id={id} poster={thumbnail} /> +</div> + +<style> + .youtube-center { + width: 100%; + display: flex; + justify-content: center; + } + + lite-youtube { + width: 100%; + max-height: 360px; + max-width: 640px; + } + + .warningtext { + display: flex; + justify-content: center; + background-color: var(--c-darkgray); + width: 640px; + height: 360px; + } + + span { + text-align: center; + margin-top: 20%; + } + + span > a { + font-style: unset; + font-weight: bold; + } +</style> diff --git a/src/layouts/Layout.astro b/src/layouts/Layout.astro index 8c385ba..09d6182 100644 --- a/src/layouts/Layout.astro +++ b/src/layouts/Layout.astro @@ -1,7 +1,14 @@ --- import Navbar from '../components/navbar.astro' import NavbarEntry from '../components/navbarEntry.astro' -import navdata from '../../static/assets/data/_navdata.json' +import navdata from '../../static/data/_navdata.json' +import embed from '../assets/embed.png' + +import home from 'iconoir/icons/home.svg' +import servants from 'iconoir/icons/task-list.svg' +import ta_collection from 'iconoir/icons/database.svg' +import blog from 'iconoir/icons/bookmark-book.svg' +import about from 'iconoir/icons/mail.svg' export interface Props { title: string @@ -9,6 +16,18 @@ export interface Props { descriptionOverride?: string } +interface IconsLookup { + [key: string]: ImageMetadata +} + +const icons: IconsLookup = { + home: home, + servants: servants, + ta_collection: ta_collection, + blog: blog, + about: about, +} + const { descriptionOverride, currentpage, title } = Astro.props let description @@ -22,9 +41,14 @@ let currPage = 'https://firq.dev/' if (currentpage !== 'home') { currPage += currentpage } + +const mapped_navdata = navdata.map((item) => ({ + ...item, + ...{ icon: icons[item.icon] }, +})) --- -<!DOCTYPE html> +<!doctype html> <html lang="en"> <head> <title>{title}</title> @@ -36,7 +60,7 @@ if (currentpage !== 'home') { <meta property="og:title" content={title} /> <meta property="og:url" content={currPage} /> <meta property="og:description" content={description} /> - <meta property="og:image" content="/assets/embed.png" /> + <meta property="og:image" content={embed.src} /> <meta property="og:type" content="website" /> <meta property="og:locale" content="en_US" /> <meta name="theme-color" content="#b86cff" /> @@ -45,19 +69,20 @@ if (currentpage !== 'home') { content="SmcWcewh7DCANcLeTe3ntU0R-LESbo_bsolICJnmulE" /> <!-- Links --> - <link rel="icon" type="image/ico" href="/assets/favicon.ico" /> + <link rel="icon" type="image/ico" href="/favicon.ico" /> <link rel="sitemap" href="/sitemap-index.xml" /> <link href="https://mastodon.neshweb.net/@Firq" rel="me" /> - <link - rel="stylesheet" - href="https://cdn.jsdelivr.net/gh/iconoir-icons/iconoir@main/css/iconoir.css" - /> </head> <body> <Navbar> { - navdata.map((item) => ( - <NavbarEntry currentPage={currentpage} {...item} /> + mapped_navdata.map((item) => ( + <NavbarEntry currentPage={currentpage} navtype="desktop" {...item} slot="desktop"/> + )) + } + { + mapped_navdata.map((item) => ( + <NavbarEntry currentPage={currentpage} navtype="mobile" {...item} slot="mobile"/> )) } </Navbar> @@ -82,4 +107,15 @@ if (currentpage !== 'home') { background: var(--c-lightgray); margin: 0px; } + + .visually-hidden { + border: 0; + clip: rect(0 0 0 0); + height: 1px; + margin: -1px; + overflow: hidden; + padding: 0; + position: absolute; + width: 1px; +} </style> diff --git a/src/layouts/aboutSection.astro b/src/layouts/aboutSection.astro index cd89b5e..04465ad 100644 --- a/src/layouts/aboutSection.astro +++ b/src/layouts/aboutSection.astro @@ -15,15 +15,19 @@ const { title } = Astro.props <style> h1 { - font-size: 26px; - line-height: 32px; + font-size: 40px; + line-height: 48px; letter-spacing: -1px; color: white; - margin: 0.5rem 0.75rem 0.5rem 0.75rem; + font-size: 2.25rem; + margin-top: 1rem; + margin-bottom: 0; + margin-left: auto; + margin-right: auto; padding: 0.25rem 0.75rem; - width: max-content; + max-width: max-content; background-color: var(--c-darkgray); - padding: 0.25rem 1rem; + padding: 0.25rem 1.5rem; border-radius: 0.5rem; padding-bottom: 0.5rem; } @@ -61,4 +65,10 @@ const { title } = Astro.props justify-content: left; } } + + @media (min-width: 520px) { + h1 { + margin: 0.5rem 0.75rem 0.5rem 0.75rem; + } + } </style> diff --git a/src/layouts/blogSection.astro b/src/layouts/blogSection.astro index 9855446..f6084bc 100644 --- a/src/layouts/blogSection.astro +++ b/src/layouts/blogSection.astro @@ -83,6 +83,9 @@ const { title } = Astro.props .line { margin-left: 2.1rem; } + h1 { + margin-left: 3rem; + } } @media (min-width: 1500px) { .wrapper { diff --git a/src/layouts/customFooter.astro b/src/layouts/customFooter.astro index fefa3cd..d0732ec 100644 --- a/src/layouts/customFooter.astro +++ b/src/layouts/customFooter.astro @@ -1,20 +1,29 @@ --- +import okita from '../assets/okita.png' +import atlas from '../assets/atlas.png' +import foxcat from '../assets/lurker.png' +import padoru from '../assets/padoru.png' +import { Image } from 'astro:assets' + +import packagejson from '../../package.json' +const version = packagejson.version +const release = `https://forgejo.neshweb.net/Firq/firq-dev-website/releases/tag/${version}` --- <footer> <div> - “Fate/Grand Order” is a trademark of Notes Co., Ltd. | Game Assets © Aniplex - Inc. used under fair use. | View <a + “Fate/Grand Order” is a trademark of Notes Co., Ltd. | Game Assets © + Aniplex Inc. used under fair use. | View <a class="linker" href="https://fate-go.us" target="_blank" rel="noopener noreferrer">the official website</a > for more information.<br /> - I am in no way affiliated with Fate/Grand Order, Aniplex, Type Moon or Lasengle. - I claim no ownership of any of the assets used that are created by any of the - mentioned companies.<br /> - All of the opinions expressed are my own and may not reflect those of the asset - providers. + I am in no way affiliated with Fate/Grand Order, Aniplex, Type Moon or + Lasengle. I claim no ownership of any of the assets used that are created by + any of the mentioned companies.<br /> + All of the opinions expressed are my own and may not reflect those of the + asset providers. </div> <br /> <div> @@ -24,7 +33,7 @@ rel="noopener noreferrer">Atlas Academy</a > for providing the servant and ce images. <div class="sticky-image-wrapper"> - <img src="/assets/atlas.png" alt="" /> + <Image src={atlas} alt="Icon of Atlas Academy" /> </div> </div> <br /> @@ -33,14 +42,14 @@ href="https://mitsunee.com" target="_blank" rel="noopener noreferrer">Mitsunee</a - > for the support when building this site. I could not have done it without you - 🧡 Check out <a + > for the support when building this site. I could not have done it without + you 🧡 Check out <a href="https://fgo.mitsunee.com" target="_blank" rel="noopener noreferrer">FGO Timers here</a > <div class="sticky-image-wrapper"> - <img src="/assets/lurker.png" alt="" /> + <Image src={foxcat} alt="Best Foxcat" /> </div> </div> <br /> @@ -49,12 +58,13 @@ href="https://mastodon.neshweb.net/@neshura" target="_blank" rel="noopener noreferrer">Neshura</a - > for providing me with a place to develop, store and host this site. Check out + > for providing me with a place to develop, store and host this site. Check + out <a href="https://www.neshweb.net" target="_blank" rel="noopener noreferrer" >his site here</a > <div class="sticky-image-wrapper"> - <img src="/assets/okita.png" alt="" style="height:60px" /> + <Image src={okita} alt="" style="height:60px" /> </div> </div> <br /> @@ -65,9 +75,15 @@ rel="noopener noreferrer">AnthonyJ</a > for providing me with the custom Shishou favicon. <div class="sticky-image-wrapper"> - <img src="/assets/padoru.png" alt="" /> + <Image src={padoru} alt="Hashire sori yo ..." /> </div> </div> + <br /> + <div> + Website version: <a href={release} target="_blank" rel="noopener noreferrer" + >{version}</a + > + </div> </footer> <style> diff --git a/src/pages/404.astro b/src/pages/404.astro index 1d9071f..2793078 100644 --- a/src/pages/404.astro +++ b/src/pages/404.astro @@ -1,6 +1,8 @@ --- +import { Image } from 'astro:assets' import Layout from '../layouts/Layout.astro' import BaseSection from '../layouts/baseSection.astro' +import sadshishou from '../assets/shishousad.webp' const description = "Error. This shouldn't happen :/" --- @@ -12,10 +14,10 @@ const description = "Error. This shouldn't happen :/" > <BaseSection title="FirqhundredandFirq - Not Found"> <div> - <img src="/assets/shishousad.webp" alt="Sad Shishou" /> + <Image src={sadshishou} alt="Sad Shishou" /> <h2>Well ... you were not supposed to end up here.</h2> <a href="/" aria-label="Home" rel="noopener noreferrer"> - <i class="iconoir-fast-arrow-left"></i>Go back home + << Go back home </a> </div> </BaseSection> @@ -48,10 +50,10 @@ const description = "Error. This shouldn't happen :/" text-decoration: none; font-size: 1.5rem; font-weight: bold; - } - a:hover { - color: var(--c-darkpurple); + &:hover { + color: var(--c-darkpurple); + } } img { diff --git a/src/pages/index.astro.old b/src/pages/_index.astro.old similarity index 100% rename from src/pages/index.astro.old rename to src/pages/_index.astro.old diff --git a/src/pages/about.astro b/src/pages/about.astro index 10051ec..bc59882 100644 --- a/src/pages/about.astro +++ b/src/pages/about.astro @@ -4,11 +4,11 @@ import AboutSection from '../layouts/aboutSection.astro' import ContactSection from '../layouts/contactSection.astro' import ContactCard from '../components/contactCard.astro' -import contactdata from '../../static/assets/data/_contactdata.json' +import contactdata from '../../static/data/_contactdata.json' import CustomFooter from '../layouts/customFooter.astro' import TechnologyCard from '../components/technologyCard.astro' -import technologydata from '../../static/assets/data/_technologydata.json' +import technologydata from '../../static/data/_technologydata.json' const description = "A summary of the technologies used as well as my contact information. You'll also find disclaimers and thank you notes for the people that helped me." @@ -23,15 +23,15 @@ const description = This is a small sideproject that I'm creating. First time doing webdev in general, and first project using Typescript. </AboutSection> - <AboutSection title="Technologies used"> + <ContactSection title="Technologies used"> {technologydata.map((item) => <TechnologyCard {...item} />)} - </AboutSection> + </ContactSection> <ContactSection title="Contact me"> {contactdata.map((item) => <ContactCard {...item} />)} </ContactSection> - <AboutSection title="Disclaimers"> + <ContactSection title="Disclaimers"> <CustomFooter /> - </AboutSection> + </ContactSection> </Layout> <style></style> diff --git a/src/pages/blog.astro b/src/pages/blog.astro index 4764d8e..884afd0 100644 --- a/src/pages/blog.astro +++ b/src/pages/blog.astro @@ -5,7 +5,7 @@ import BlogSection from '../layouts/blogSection.astro' const description = 'My own small blog. Topics include FGO, TA, Programming, web technologies and more!' -const allPosts = await Astro.glob('../pages/blog/*.md') +const allPosts = await Astro.glob('../pages/blog/*.{md,mdx}') allPosts.sort( (a, b) => Date.parse(b.frontmatter.pubDate) - Date.parse(a.frontmatter.pubDate) diff --git a/src/pages/blog/cernunnos-with-requiem.md b/src/pages/blog/cernunnos-with-requiem.mdx similarity index 78% rename from src/pages/blog/cernunnos-with-requiem.md rename to src/pages/blog/cernunnos-with-requiem.mdx index 6a2e7da..7848a1e 100644 --- a/src/pages/blog/cernunnos-with-requiem.md +++ b/src/pages/blog/cernunnos-with-requiem.mdx @@ -6,6 +6,9 @@ description: 'A handful of observations from the cernunnos fight' author: 'Requiem & Firq' tags: ['fgo', 'lostbelt 6', 'cernunnos'] --- +import thumbnail_firq from "../../assets/thumbnails/WrHudtdfivA.jpg" +import thumbnail_requiem from "../../assets/thumbnails/O1f-go7uJQM.jpg" +import YoutubeEmbed from "../../components/youtubeEmbed.astro" ## Foreword @@ -45,3 +48,19 @@ On the first break Cernunnos skill seals your servants. This means on turn 2 you As an example: Let's say I used Alteras third skill turn 1. She has to wait 5 turns to reuse it and on turn 3 Vitch gives her 2 times cooldown reduction. Ideally you would be able to reuse her third skill on turn 4 but because she gets skill sealed she can't do it. + +## Resulting runs + +Both Requiem and I managed to get unique TAs done with Scathach (Requiem even with more servants). Those runs are embedded here: + +### Firq + +This run doesn't use the support Castoria provided by the game and instead makes use of Sherlock instead. + +<YoutubeEmbed id="WrHudtdfivA" thumbnail={thumbnail_firq.src}/> + +### Requiem + +A frontline only run with double Castoria + +<YoutubeEmbed id="O1f-go7uJQM" thumbnail={thumbnail_requiem.src}/> diff --git a/src/pages/blog/deploying-this-round-2.md b/src/pages/blog/deploying-this-round-2.md new file mode 100644 index 0000000..b3a67b9 --- /dev/null +++ b/src/pages/blog/deploying-this-round-2.md @@ -0,0 +1,164 @@ +--- +layout: ../../layouts/blogPost.astro +title: 'Migrating to Forgejo' +pubDate: 2023-12-23 +description: 'My short recollection of migrating this site + CI to Forgejo' +author: 'Firq' +tags: ['astro', 'docker', 'forgejo'] +--- + +Before I begin this, I want to give a shoutout to Neshura - without him, I would never have had the opportunity to actually create and host my website. I also want to thank him for his patience when I was stuck multiple times during the migration process, as my experience with Forgejo and its CI was really limited. + +## Migrating Git - Gitlab to Forgejo + +The migration of the git files themselves went a lot smoother than expected. Main reason for this was Forgejos built-in migration tool suite, which lets you migrate external repositories with ease. + +Generally, the workflow was as follows: + +1. Open Forgejo and start a new migration +2. Select GitLab from the list +3. Fill the details of the migration: Repository URL, Access token, etc. +4. Hit Migrate + +And voila: The repository with all extra features like the wiki is getting migrated automatically. + +In total, I did this for 7 repositories without issues. Afterwards, it was just a matter of updating the remote repository url for my local clones: + +```shell +git remote set-url origin https://forgejo.neshweb.net/Firq/firq-dev-website.git +``` + +Since the underlying git repository didn't change, migration was painless on the client side of things. + +## Reworking CI + +One of the major parts of the migration was to port my working GitLab-CI to Forgejo Actions. As I never worked with this before (or with Github Actions, which is the basis of Forgejo), it was ... interesting to say the least. + +I stumbled over multiple issues while transforming my old `.gitlab-ci.yml` file into a new `build_release.yml`, but in the end I got there. My main issue was that I imagined the CI just to work like GitLab - but I was mistaken. + +My main points of confusion were: + +- Files are not checked out automatically - A manual run of the checkout action is necessary, otherwise the files will just be missing +- The working directory is not preserved between different run commands (made apparent early on) + +But after around 2 hours of tinkering, I managed to get everything working (and even improved some steps, such as automatically getting the known_hosts instead of hardcoding it into the secrets). But still, it felt a bit unsatisfying, as I was still relying on a ssh-connection with rsync to deploy the files. Unbeknownst to me, this was about to change drastically ... + +## Such Innovation: Moving from dedicated website server to docker containers + +After migrating and finishing up, Neshura showed me how he deploys the main website of his server: With a docker container. After seeing how much easier this would be in the long run, I decided to just go for it and switch from building the static files and syncing them to a webserver to just build my own container. + +Generally, this turned out to be a lot easier than expected: I added a Dockerfile to my repo and switched the CI to build a container based on that, which then would get published to the Forgejo registry. + +The `Dockerfile` itself is rather simple: + +```dockerfile +FROM node:lts AS build +WORKDIR /app +COPY . . +RUN npm i +RUN npm run build + +FROM forgejo.neshweb.net/ci-docker-images/website-serve:latest AS runtime + +COPY --from=build /app/dist /public +COPY --from=build /app/serve.json /public/serve.json +RUN rm -r /public/assets/data/ + +ENV PORT 8081 +EXPOSE 8081 + +CMD [ "serve", "public/", "-p", "8081" ] +``` + +As you can see, I am using a custom container for the runtime stage, which will be explained in the next section. + +### Custom serve docker - My new goto for static site serving + +When starting out with the `Dockerfile`, I first used the standard `node:lts` image for the runtime. This meant I also had to install the `serve` package by `@warren-bank` each time I built the container. Since this takes extra time and resources each run, I decided to create a pre-configured docker container that can be used for this instead. + +The `Dockerfile` for that one is laughable simple: + +```dockerfile +FROM node:lts +RUN npm install --global "@warren-bank/serve" +``` + +The container is also published to the docker registry that the Forgejo instance provides, which allows referencing it easily during runs. + +## Deployments using Dockge + +Since my website is now using a docker container instead of the previous `rsync` + `screen` approach, a new deployment solution was needed. + +In the end, Neshura proposed to use <a href="https://github.com/louislam/dockge" target="_blank" rel="noopener noreferrer" style="font-style: unset">Dockge</a>, a new, simple container management tool build by the developer of the beloved uptime-kuma. With that set up, getting the website only was really really easy: + +1. Create a new stack +2. Add a container entry +3. Fill the new entry with the url of the website container on the registry +4. Configure the ports +5. Hit start + +After that, it was just a matter of pointing nginx to the new IP address and port that Dockge uses. Just like that, the website was online. + +But this still wasn't the end of my migration tasks. + +## Unlighthouse - Implementing website testing without worries + +Before I even planned to migrate to Forgejo, I had long implemented some simple site benchmarking using the `Unlighthouse` package. This required a separate instance of my site to be running for benchmarking, as I wanted to test the site before pushing any changes to the main domain. + +The same principle now applies here: I can push changes to my dev branch and build a preview container by pushing a preview tag. Once that's build, I can deploy the preview using Dockge to a staging environment. + +With that set up, I can push a new tag with a keyword for unlighthouse to run. The reports will then be uploaded onto the old webserver, as I don't want to build extra containers just for the reports. + +Implementing this proved a lot easier than expected, but sadly I got disappointed when trying to circumvent the staging environment, as the container wouldn't work as a service in Forgejo actions. + +### Dedicated unlighthouse docker + +One last hurdle was, ironically, Gitlab. Specifically, it was their `lighthouse` container I used for testing. The main issue was that this container is run as a non-privileged user. In general, this is not a problem. However, this prevented me from actually cloning my repository using Forgejo actions. + +After some testing, I decided to just make my own version of the `lighthouse` container, without the user but with `unlighthouse` preinstalled (this also helps with processing times, as puppeteer takes a good amount of time to install each run). + +The `Dockerfile` can be found below (really simple again): + +```dockerfile +FROM node:20.10.0-bookworm +LABEL authorname="firq" +WORKDIR /unlighthouse + +ENV CHROMIUM_VERSION="120.0.6099.109-1~deb12u1" +ENV NODE_ENV='production' +ENV PATH="/unlighthouse/node_modules/.bin:${PATH}" + +RUN apt-get update && apt-get -y install --no-install-recommends chromium=${CHROMIUM_VERSION} procps && rm -rf /var/lib/apt/lists/* +RUN npm install @unlighthouse/cli puppeteer +``` + +With this container, the CI step to actually run the tests became a lot easier: + +```yaml +jobs: + unlighthouse: + runs-on: docker + container: forgejo.neshweb.net/ci-docker-images/unlighthouse:latest + steps: + - name: Checkout repository + uses: https://code.forgejo.org/actions/checkout@v3 + - name: Run unlighthouse + run: unlighthouse-ci --site "https://preview.firq.dev/" + - name: Prepare artifacts + run: cp serve.json unlighthouse-reports + - name: Upload reports + uses: actions/upload-artifact@v3 + with: + name: unlighthouse-reports + path: unlighthouse-reports/ +``` + +Once the tests ran, the artifacts would be uploaded to the website-server for the time being. + +## Conclusion + +In the end, I must say migrating was a lot more painless than expected. Sure, Forgejo is missing some of the features that Gitlab offers (mainly YAML anchors and manual CI actions, which hopefully will be implemented in the near future). But at the end of the day, it actually feels refreshing to now have a stable and independent CI to deploy this site, without having to construct weird solutions to self-inflicted problems. + +I also updated my about page to now reflect the migration, as the old technologies weren't up-to-date anymore. + +If you want to check out the repository by yourself, feel free to do so. <a href="https://forgejo.neshweb.net/Firq/firq-dev-website" target="_blank" rel="noopener noreferrer" style="font-style: unset">It is available on Neshuras Forgejo instance</a> diff --git a/src/pages/blog/instant-death.md b/src/pages/blog/instant-death.mdx similarity index 93% rename from src/pages/blog/instant-death.md rename to src/pages/blog/instant-death.mdx index 7a4d732..454d0c6 100644 --- a/src/pages/blog/instant-death.md +++ b/src/pages/blog/instant-death.mdx @@ -6,8 +6,10 @@ description: 'Blog post talking about instant death in FGO, how you can take adv author: 'Firq' tags: ['fgo', 'games'] --- +import thumbnail from "../../assets/thumbnails/UwbNp_dB_VU.jpg" +import YoutubeEmbed from "../../components/youtubeEmbed.astro" -> **Disclaimer**<br> +> **Disclaimer**<br/> > While writing this, Requiem and I faced a bit of a challenge concerning death rate calculations. Case in point is the passive "Item Construction" and its interaction with Instant Kill, as we could not reach a final verdict if it affects Instant Kill Hit rate or not. In case of this article, I will assume it doesn't interact with the hitrate, but if you have proof that this is different, I will gladly incorporate this in the article. @@ -103,9 +105,8 @@ For other skill levels, this looks like this (_Her S1 scales from 50% to 100%_) In the end, this resulted in the following comp that worked like a charm. -<div style="width: 100%; display: flex; justify-content: center; padding-top: 0.75rem"> -<iframe width="640" height="360" src="https://www.youtube-nocookie.com/embed/UwbNp_dB_VU" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe> -</div> +<YoutubeEmbed id="UwbNp_dB_VU" thumbnail={thumbnail.src}/> + ## Conclusion diff --git a/src/pages/index.astro b/src/pages/index.astro index 2701e3d..a4b98c4 100644 --- a/src/pages/index.astro +++ b/src/pages/index.astro @@ -3,7 +3,7 @@ import Layout from '../layouts/Layout.astro' import Hero from '../components/hero.astro' import BaseSection from '../layouts/baseSection.astro' import FavouriteCard from '../components/favouriteCard.astro' -import favouritesdata from '../../static/assets/data/_favouritesdata.json' +import favouritesdata from '../../static/data/_favouritesdata.json' const description = 'The very own page of Firq for providing informating about TA servants, listing past TA achievements and hosting a blog for talking about FGO, Programming and other stuff' diff --git a/src/pages/servants.astro b/src/pages/servants.astro index 61cacac..ab405a9 100644 --- a/src/pages/servants.astro +++ b/src/pages/servants.astro @@ -3,10 +3,10 @@ import Layout from '../layouts/Layout.astro' import BaseSection from '../layouts/baseSection.astro' import ServantCard from '../components/servantCard.astro' -import servantdata from '../../static/assets/data/_servantdata.json' +import servantdata from '../../static/data/_servantdata.json' import CeCard from '../components/ceCard.astro' -import cedata from '../../static/assets/data/_cedata.json' +import cedata from '../../static/data/_cedata.json' const description = 'A list of all the servants and ces that Firq can offer up on support for TA.' diff --git a/src/pages/ta-collection.astro b/src/pages/ta-collection.astro index f6cc6f9..bf3799b 100644 --- a/src/pages/ta-collection.astro +++ b/src/pages/ta-collection.astro @@ -9,8 +9,9 @@ import Layout from '../layouts/Layout.astro' import TaSection from '../layouts/taSection.astro' import TaCard from '../components/taCard.astro' -import tadata from '../../static/assets/data/_tadata.json' -import featured_data from '../../static/assets/data/_featureddata.json' +import tadata from '../../static/data/_tadata.json' +import featured_data from '../../static/data/_featureddata.json' +import FgotaHero from '../components/fgotaHero.astro' const important_data = tadata.filter(function (el) { return [ @@ -19,7 +20,8 @@ const important_data = tadata.filter(function (el) { 'Kingprotea 1T', 'Goetia Memorial Quest 2T', 'Morgan 3T (LB 6) Skadi', - 'Albion 3T (LB 6) Skadi' + 'Albion 3T (LB 6) Skadi', + 'Cernunnos 4T (No Castoria)', ].includes(el.title) }) @@ -35,7 +37,8 @@ const description = 'A collection of TAs previously completed be Firq.' currentpage="ta-collection" descriptionOverride={description} > - <TaSection title="Notable TAs" abovetext=""> + <FgotaHero /> + <TaSection title="Notable TAs" abovetext="My most notable TAs"> {important_data.map((item) => <TaCard {...item} />)} </TaSection> <TaSection title="Completed TAs"> diff --git a/src/types/generic.ts b/src/types/generic.ts new file mode 100644 index 0000000..65db641 --- /dev/null +++ b/src/types/generic.ts @@ -0,0 +1,10 @@ +export interface IconsLookup { + [key: string]: ImageMetadata +} + +interface GlobGeneric<T> { + default: T +} + +export type GlobAny = GlobGeneric<any> +export type GlobImage = GlobGeneric<ImageMetadata> diff --git a/src/utils/tools.ts b/src/utils/tools.ts new file mode 100644 index 0000000..4dc88c9 --- /dev/null +++ b/src/utils/tools.ts @@ -0,0 +1,5 @@ +export function plsLoadImage(record: Record<string, () => Promise<{default: ImageMetadata}>>, path: string) { + const loadedImage = record[path]?.(); + if (!loadedImage) throw new Error("Asset was not found:" + path); + return loadedImage; +} diff --git a/static/assets/ce/2030.webp b/static/assets/ce/2030.webp deleted file mode 100644 index 42f9f02..0000000 Binary files a/static/assets/ce/2030.webp and /dev/null differ diff --git a/static/assets/ce/500.webp b/static/assets/ce/500.webp deleted file mode 100644 index 9f030df..0000000 Binary files a/static/assets/ce/500.webp and /dev/null differ diff --git a/static/assets/ce/bg.webp b/static/assets/ce/bg.webp deleted file mode 100644 index 133183c..0000000 Binary files a/static/assets/ce/bg.webp and /dev/null differ diff --git a/static/assets/ce/bond-ce/bride.webp b/static/assets/ce/bond-ce/bride.webp deleted file mode 100644 index 7642c43..0000000 Binary files a/static/assets/ce/bond-ce/bride.webp and /dev/null differ diff --git a/static/assets/ce/bond-ce/castoria.webp b/static/assets/ce/bond-ce/castoria.webp deleted file mode 100644 index fbe04b1..0000000 Binary files a/static/assets/ce/bond-ce/castoria.webp and /dev/null differ diff --git a/static/assets/ce/bond-ce/gogh.webp b/static/assets/ce/bond-ce/gogh.webp deleted file mode 100644 index 0167200..0000000 Binary files a/static/assets/ce/bond-ce/gogh.webp and /dev/null differ diff --git a/static/assets/ce/bond-ce/ibaraki.webp b/static/assets/ce/bond-ce/ibaraki.webp deleted file mode 100644 index 3d5637e..0000000 Binary files a/static/assets/ce/bond-ce/ibaraki.webp and /dev/null differ diff --git a/static/assets/ce/bond-ce/jane.webp b/static/assets/ce/bond-ce/jane.webp deleted file mode 100644 index 921ca9b..0000000 Binary files a/static/assets/ce/bond-ce/jane.webp and /dev/null differ diff --git a/static/assets/ce/bond-ce/liz.webp b/static/assets/ce/bond-ce/liz.webp deleted file mode 100644 index e91f5ef..0000000 Binary files a/static/assets/ce/bond-ce/liz.webp and /dev/null differ diff --git a/static/assets/ce/bond-ce/merlin.webp b/static/assets/ce/bond-ce/merlin.webp deleted file mode 100644 index 363713a..0000000 Binary files a/static/assets/ce/bond-ce/merlin.webp and /dev/null differ diff --git a/static/assets/ce/bond-ce/reines.webp b/static/assets/ce/bond-ce/reines.webp deleted file mode 100644 index b9f4032..0000000 Binary files a/static/assets/ce/bond-ce/reines.webp and /dev/null differ diff --git a/static/assets/ce/bond-ce/santagale.webp b/static/assets/ce/bond-ce/santagale.webp deleted file mode 100644 index c55b578..0000000 Binary files a/static/assets/ce/bond-ce/santagale.webp and /dev/null differ diff --git a/static/assets/ce/bond-ce/skadi.webp b/static/assets/ce/bond-ce/skadi.webp deleted file mode 100644 index 4eb28de..0000000 Binary files a/static/assets/ce/bond-ce/skadi.webp and /dev/null differ diff --git a/static/assets/ce/bond-ce/tamamo.webp b/static/assets/ce/bond-ce/tamamo.webp deleted file mode 100644 index 07ea177..0000000 Binary files a/static/assets/ce/bond-ce/tamamo.webp and /dev/null differ diff --git a/static/assets/ce/bond-ce/waver.webp b/static/assets/ce/bond-ce/waver.webp deleted file mode 100644 index d2f31ae..0000000 Binary files a/static/assets/ce/bond-ce/waver.webp and /dev/null differ diff --git a/static/assets/ce/bond-ce/wu.webp b/static/assets/ce/bond-ce/wu.webp deleted file mode 100644 index 114a7e1..0000000 Binary files a/static/assets/ce/bond-ce/wu.webp and /dev/null differ diff --git a/static/assets/ce/db.webp b/static/assets/ce/db.webp deleted file mode 100644 index d702ac9..0000000 Binary files a/static/assets/ce/db.webp and /dev/null differ diff --git a/static/assets/ce/kaleidoscope.webp b/static/assets/ce/kaleidoscope.webp deleted file mode 100644 index ecf2659..0000000 Binary files a/static/assets/ce/kaleidoscope.webp and /dev/null differ diff --git a/static/assets/ce/maidensteachings.webp b/static/assets/ce/maidensteachings.webp deleted file mode 100644 index de565fb..0000000 Binary files a/static/assets/ce/maidensteachings.webp and /dev/null differ diff --git a/static/assets/ce/merciless_one.webp b/static/assets/ce/merciless_one.webp deleted file mode 100644 index 6122a5e..0000000 Binary files a/static/assets/ce/merciless_one.webp and /dev/null differ diff --git a/static/assets/ce/outrage.webp b/static/assets/ce/outrage.webp deleted file mode 100644 index f3a3bea..0000000 Binary files a/static/assets/ce/outrage.webp and /dev/null differ diff --git a/static/assets/ce/oxdemon.webp b/static/assets/ce/oxdemon.webp deleted file mode 100644 index 11c1301..0000000 Binary files a/static/assets/ce/oxdemon.webp and /dev/null differ diff --git a/static/assets/ce/prisma.webp b/static/assets/ce/prisma.webp deleted file mode 100644 index 482a32d..0000000 Binary files a/static/assets/ce/prisma.webp and /dev/null differ diff --git a/static/assets/ce/vessel.webp b/static/assets/ce/vessel.webp deleted file mode 100644 index 9272769..0000000 Binary files a/static/assets/ce/vessel.webp and /dev/null differ diff --git a/static/assets/data/_cedata.json b/static/assets/data/_cedata.json deleted file mode 100644 index 53ed7a8..0000000 --- a/static/assets/data/_cedata.json +++ /dev/null @@ -1,57 +0,0 @@ -[ - { - "name": "The Merciless One", - "link": "merciless_one", - "mlb": "true" - }, - { - "name": "Ox-Demon King", - "link": "oxdemon", - "mlb": "true" - }, - { - "name": "Holy Maiden's Teachings", - "link": "maidensteachings", - "mlb": "true" - }, - { - "name": "Kaleidoscope", - "link": "kaleidoscope", - "mlb": "true" - }, - { - "name": "The Black Grail", - "link": "bg", - "mlb": "true" - }, - { - "name": "A Fragment Of 2030", - "link": "2030", - "mlb": "true" - }, - { - "name": "Outrage", - "link": "outrage", - "mlb": "false" - }, - { - "name": "Vessel of the Saint", - "link": "vessel", - "mlb": "false" - }, - { - "name": "Devilish Bodhisattva", - "link": "db", - "mlb": "true" - }, - { - "name": "500-Year Obsession", - "link": "500", - "mlb": "true" - }, - { - "name": "Prisma Cosmos", - "link": "prisma", - "mlb": "true" - } -] diff --git a/static/assets/data/_servantdata.json b/static/assets/data/_servantdata.json deleted file mode 100644 index 834b0d7..0000000 --- a/static/assets/data/_servantdata.json +++ /dev/null @@ -1,162 +0,0 @@ -[ - { - "name": "Skadi", - "level": "120", - "np": "4", - "skills": "10 / 10 / 10 ", - "ml": "10", - "image_servant": "skadi_03", - "image_bond": "skadi", - "bond10": "true" - }, - { - "name": "Skadi", - "level": "70", - "np": "1", - "skills": "10 / 10 / 10 ", - "ml": "1", - "image_servant": "skadi_01", - "image_bond": "skadi", - "bond10": "true" - }, - { - "name": "Castoria", - "level": "90", - "np": "1", - "skills": "10 / 10 / 10 ", - "ml": "7", - "image_servant": "castoria_02", - "image_bond": "castoria", - "bond10": "true" - }, - { - "name": "Castoria", - "level": "70", - "np": "1", - "skills": "10 / 10 / 10 ", - "ml": "1", - "image_servant": "castoria_01", - "image_bond": "castoria", - "bond10": "true" - }, - { - "name": "Merlin", - "level": "90", - "np": "1", - "skills": "10 / 10 / 10 ", - "ml": "Not Unlocked", - "image_servant": "merlin_03", - "image_bond": "merlin", - "bond10": "true" - }, - { - "name": "Waver", - "level": "90", - "np": "1", - "skills": "10 / 10 / 10 ", - "ml": "Not Unlocked", - "image_servant": "waver_02", - "image_bond": "waver", - "bond10": "true" - }, - { - "name": "Reines", - "level": "90", - "np": "1", - "skills": "10 / 10 / 10 ", - "ml": "9", - "image_servant": "reines_01", - "image_bond": "reines", - "bond10": "true" - }, - { - "name": "Tamamo-no-Mae", - "level": "90", - "np": "2", - "skills": "10 / 10 / 10 ", - "ml": "Not Unlocked", - "image_servant": "tamamo_03", - "image_bond": "tamamo", - "bond10": "true" - }, - { - "name": "Van Gogh", - "level": "90", - "np": "1", - "skills": "10 / 10 / 10 ", - "ml": "10", - "image_servant": "gogh_01", - "image_bond": "gogh", - "bond10": "false" - }, - { - "name": "Nero (Bride)", - "level": "90", - "np": "1", - "skills": "10 / 10 / 9 ", - "ml": "Not Unlocked", - "image_servant": "bride_03", - "image_bond": "bride", - "bond10": "false" - }, - { - "name": "Nightingale (Santa)", - "level": "80", - "np": "5", - "skills": "9 / 10 / 10 ", - "ml": "Not Unlocked", - "image_servant": "santagale_01", - "image_bond": "santagale", - "bond10": "true" - }, - { - "name": "Nightingale (Santa)", - "level": "60", - "np": "1", - "skills": "1 / 10 / 10 ", - "ml": "Not Unlocked", - "image_servant": "santagale_01", - "image_bond": "santagale", - "bond10": "true" - }, - { - "name": "Elisabeth Báthory", - "level": "40", - "np": "1", - "skills": "9 / 9 / X ", - "ml": "Not Unlocked", - "image_servant": "liz_01", - "image_bond": "liz", - "bond10": "false" - }, - { - "name": "Wu Zetian", - "level": "60", - "np": "1", - "skills": "9 / 1 / 9 ", - "ml": "Not Unlocked", - "image_servant": "wu_01", - "image_bond": "wu", - "bond10": "true" - }, - { - "name": "Ibaraki-Douji", - "level": "40", - "np": "1", - "skills": "8 / 8 / X ", - "ml": "Not Unlocked", - "image_servant": "ibaraki_02", - "image_bond": "ibaraki", - "bond10": "false" - }, - { - "name": "Calamity Jane", - "level": "60", - "np": "1", - "skills": "1 / 9 / 9 ", - "ml": "Not Unlocked", - "image_servant": "jane_03", - "image_bond": "jane", - "bond10": "false" - } -] diff --git a/static/assets/data/_tadata.json b/static/assets/data/_tadata.json deleted file mode 100644 index 0716048..0000000 --- a/static/assets/data/_tadata.json +++ /dev/null @@ -1,258 +0,0 @@ -[ - { - "title": "DB 7T (No Duplicates)", - "link": "https://www.youtube.com/watch?v=d1ftVeitR6c", - "image": "db", - "date": "2022-07-09", - "ta_servant": "shishou", - "turns": "7T" - }, - { - "title": "Kingprotea 1T", - "link": "https://www.youtube.com/watch?v=m3SATSOfpt4", - "image": "kingprotea", - "date": "2022-06-21", - "ta_servant": "shishou", - "turns": "1T" - }, - { - "title": "Solomon 1T (No NP)", - "link": "https://www.youtube.com/watch?v=01Qx4Hs-X4M", - "image": "solomon", - "date": "2022-06-28", - "ta_servant": "shishou", - "turns": "1T" - }, - { - "title": "Ibuki 3T (LB 5.5)", - "link": "https://www.youtube.com/watch?v=AaqRN73dO5k", - "image": "ibuki", - "date": "2022-11-22", - "ta_servant": "shishou", - "turns": "3T" - }, - { - "title": "Boxing 3T (Xmas 5)", - "link": "https://www.youtube.com/watch?v=S8OQ7yWldJY", - "image": "dioscuri", - "date": "2022-12-24", - "ta_servant": "shishou", - "turns": "3T" - }, - { - "title": "MHXX 2T (No DMG CE)", - "link": "https://www.youtube.com/watch?v=lz6iBZvoDuw", - "image": "mhxx", - "date": "2023-01-12", - "ta_servant": "shishou", - "turns": "2T" - }, - { - "title": "Taira 3T (LB 5.5)", - "link": "https://www.youtube.com/watch?v=YtRvahqFA0Y", - "image": "taira", - "date": "2022-11-22", - "ta_servant": "shishou", - "turns": "3T" - }, - { - "title": "Douman 3T (LB 5.5)", - "link": "https://www.youtube.com/watch?v=6cstr3vTd8Y", - "image": "douman", - "date": "2022-11-23", - "ta_servant": "shishou", - "turns": "3T" - }, - { - "title": "Christmas 2021 Rerun CQ 5T", - "link": "https://www.youtube.com/watch?v=cpqhx9dUgTU", - "image": "santagale", - "date": "2022-10-15", - "ta_servant": "shishou", - "turns": "5T" - }, - { - "title": "Summer 4 Rerun CQ 3T", - "link": "https://www.youtube.com/watch?v=u72o7PDBtks", - "image": "fuuma", - "date": "2022-06-04", - "ta_servant": "shishou", - "turns": "3T" - }, - { - "title": "Fate/Requiem CQ 3T", - "link": "https://www.youtube.com/watch?v=k7vGC4kpEFg", - "image": "erice", - "date": "2022-05-11", - "ta_servant": "shishou", - "turns": "3T" - }, - { - "title": "Kirschtaria 3T (LB 5)", - "link": "https://www.youtube.com/watch?v=aYlyfAzuFw0", - "image": "kirschtaria", - "date": "2022-04-04", - "ta_servant": "shishou", - "turns": "3T" - }, - { - "title": "Aeaean Spring Breeze CQ 3T", - "link": "https://www.youtube.com/watch?v=uo3jI9xuVwI", - "image": "odysseus", - "date": "2022-03-06", - "ta_servant": "shishou", - "turns": "3T" - }, - { - "title": "Valentines 2022 CQ 4T", - "link": "https://www.youtube.com/watch?v=MOCMXZ17FkU", - "image": "sei", - "date": "2022-02-09", - "ta_servant": "shishou", - "turns": "4T" - }, - { - "title": "Amazoness 2021 CQ 3T", - "link": "https://www.youtube.com/watch?v=MU_Hw2KKYRU", - "image": "penth", - "date": "2022-01-23", - "ta_servant": "shishou", - "turns": "3T" - }, - { - "title": "Valentines 2023 CQ 4T", - "link": "https://www.youtube.com/watch?v=fwCmEiaocQo", - "image": "orion", - "date": "2023-02-25", - "ta_servant": "shishou", - "turns": "4T" - }, - { - "title": "Slapstick Museum CQ 5T", - "link": "https://www.youtube.com/watch?v=fQImgJirFeo", - "image": "moriarty", - "date": "2023-03-10", - "ta_servant": "shishou", - "turns": "5T" - }, - { - "title": "GudaGuda 5 CQ 4T", - "link": "https://www.youtube.com/watch?v=3scILqsgobU", - "image": "nobunaga", - "date": "2022-09-21", - "ta_servant": "shishou", - "turns": "4T" - }, - { - "title": "GudaGuda 4 CQ 3T [No DMG CE]", - "link": "https://www.youtube.com/watch?v=HY95cWsjC08", - "image": "shibata", - "date": "2022-04-30", - "ta_servant": "shishou", - "turns": "3T" - }, - { - "title": "GudaGuda 4 CQ 3T", - "link": "https://www.youtube.com/watch?v=7iO2WQt64-8", - "image": "shibata", - "date": "2022-04-26", - "ta_servant": "shishou", - "turns": "3T" - }, - { - "title": "Top of Tower 3T", - "link": "https://www.youtube.com/watch?v=gUtBYNxH4Ck", - "image": "galatea", - "date": "2023-03-20", - "ta_servant": "shishou", - "turns": "3T" - }, - { - "title": "Goetia Memorial Quest 2T", - "link": "https://www.youtube.com/watch?v=lZHgSVpPv24", - "image": "goetia", - "date": "2023-07-04", - "ta_servant": "skadi", - "turns": "2T" - }, - { - "title": "Melusine 3T (LB 6)", - "link": "https://www.youtube.com/watch?v=f35hlBXuR3w", - "image": "melusine", - "date": "2023-06-26", - "ta_servant": "shishou", - "turns": "3T" - }, - { - "title": "Morgan 3T (LB 6) Shishou", - "link": "https://www.youtube.com/watch?v=7wQ6iabqgEc", - "image": "morgan", - "date": "2023-06-26", - "ta_servant": "shishou", - "turns": "3T" - }, - { - "title": "Morgan 3T (LB 6) Skadi", - "link": "https://www.youtube.com/watch?v=sQ7HHl1Pb3c", - "image": "morgan", - "date": "2023-06-25", - "ta_servant": "skadi", - "turns": "3T" - }, - { - "title": "Woodwose 3T (LB 6)", - "link": "https://www.youtube.com/watch?v=ZPgIDZjrGA0", - "image": "woodwose", - "date": "2023-06-23", - "ta_servant": "shishou", - "turns": "3T" - }, - { - "title": "Barghest 2T (LB 6)", - "link": "https://www.youtube.com/watch?v=kjMAccbq7-A", - "image": "barghest", - "date": "2023-06-21", - "ta_servant": "tomoe", - "turns": "2T" - }, - { - "title": "Calamity of Norwich 3T (LB 6)", - "link": "https://www.youtube.com/watch?v=IwkCnVej_PY", - "image": "calamityofnorwich", - "date": "2023-06-08", - "ta_servant": "shishou", - "turns": "3T" - }, - { - "title": "Red Dragon 1T (LB 6)", - "link": "https://www.youtube.com/watch?v=MKhkvG0CHko", - "image": "reddragon", - "date": "2023-07-10", - "ta_servant": "tomoesummer", - "turns": "1T" - }, - { - "title": "Albion 3T (LB 6) Skadi", - "link": "https://www.youtube.com/watch?v=tejeiYpzfqo", - "image": "albion", - "date": "2023-07-11", - "ta_servant": "skadi", - "turns": "3T" - }, - { - "title": "Albion 3T (LB 6) Shishou", - "link": "https://www.youtube.com/watch?v=E8fjEYFqrWI", - "image": "albion", - "date": "2023-07-12", - "ta_servant": "shishou", - "turns": "3T" - }, - { - "title": "Albion 3T (LB 6) Salter", - "link": "https://www.youtube.com/watch?v=5U42nu-vPnk", - "image": "albion", - "date": "2023-07-12", - "ta_servant": "saberalter", - "turns": "3T" - } -] diff --git a/static/assets/data/_technologydata.json b/static/assets/data/_technologydata.json deleted file mode 100644 index 3b46e3c..0000000 --- a/static/assets/data/_technologydata.json +++ /dev/null @@ -1,27 +0,0 @@ -[ - { - "title": "Astro", - "link": "https://astro.build", - "image": "astro" - }, - { - "title": "GitLab", - "link": "https://gitlab.io", - "image": "gitlab" - }, - { - "title": "Typescript", - "link": "https://www.typescriptlang.org/", - "image": "typescript" - }, - { - "title": "Alpine Linux", - "link": "https://alpinelinux.org/", - "image": "alpine-linux" - }, - { - "title": "Ubuntu", - "link": "https://ubuntu.com/", - "image": "ubuntu" - } - ] \ No newline at end of file diff --git a/static/assets/favourites/scathach.webp b/static/assets/favourites/scathach.webp deleted file mode 100644 index 707b0f8..0000000 Binary files a/static/assets/favourites/scathach.webp and /dev/null differ diff --git a/static/assets/favourites/skadi.webp b/static/assets/favourites/skadi.webp deleted file mode 100644 index 1ba9410..0000000 Binary files a/static/assets/favourites/skadi.webp and /dev/null differ diff --git a/static/assets/okita.png b/static/assets/okita.png deleted file mode 100644 index f82cbaf..0000000 Binary files a/static/assets/okita.png and /dev/null differ diff --git a/static/assets/servant/bride_03.webp b/static/assets/servant/bride_03.webp deleted file mode 100644 index d152a3f..0000000 Binary files a/static/assets/servant/bride_03.webp and /dev/null differ diff --git a/static/assets/servant/castoria_01.webp b/static/assets/servant/castoria_01.webp deleted file mode 100644 index 17d3452..0000000 Binary files a/static/assets/servant/castoria_01.webp and /dev/null differ diff --git a/static/assets/servant/castoria_02.webp b/static/assets/servant/castoria_02.webp deleted file mode 100644 index f7dd16b..0000000 Binary files a/static/assets/servant/castoria_02.webp and /dev/null differ diff --git a/static/assets/servant/gogh_01.webp b/static/assets/servant/gogh_01.webp deleted file mode 100644 index 2a88189..0000000 Binary files a/static/assets/servant/gogh_01.webp and /dev/null differ diff --git a/static/assets/servant/ibaraki_02.webp b/static/assets/servant/ibaraki_02.webp deleted file mode 100644 index f4c6568..0000000 Binary files a/static/assets/servant/ibaraki_02.webp and /dev/null differ diff --git a/static/assets/servant/jane_03.webp b/static/assets/servant/jane_03.webp deleted file mode 100644 index 56dcd72..0000000 Binary files a/static/assets/servant/jane_03.webp and /dev/null differ diff --git a/static/assets/servant/liz_01.webp b/static/assets/servant/liz_01.webp deleted file mode 100644 index 9689253..0000000 Binary files a/static/assets/servant/liz_01.webp and /dev/null differ diff --git a/static/assets/servant/merlin_03.webp b/static/assets/servant/merlin_03.webp deleted file mode 100644 index ac25d75..0000000 Binary files a/static/assets/servant/merlin_03.webp and /dev/null differ diff --git a/static/assets/servant/reines_01.webp b/static/assets/servant/reines_01.webp deleted file mode 100644 index fd7ba15..0000000 Binary files a/static/assets/servant/reines_01.webp and /dev/null differ diff --git a/static/assets/servant/santagale_01.webp b/static/assets/servant/santagale_01.webp deleted file mode 100644 index 337a44e..0000000 Binary files a/static/assets/servant/santagale_01.webp and /dev/null differ diff --git a/static/assets/servant/skadi_01.webp b/static/assets/servant/skadi_01.webp deleted file mode 100644 index 225d8ad..0000000 Binary files a/static/assets/servant/skadi_01.webp and /dev/null differ diff --git a/static/assets/servant/skadi_03.webp b/static/assets/servant/skadi_03.webp deleted file mode 100644 index 7ef4c40..0000000 Binary files a/static/assets/servant/skadi_03.webp and /dev/null differ diff --git a/static/assets/servant/tamamo_03.webp b/static/assets/servant/tamamo_03.webp deleted file mode 100644 index 07cd425..0000000 Binary files a/static/assets/servant/tamamo_03.webp and /dev/null differ diff --git a/static/assets/servant/waver_02.webp b/static/assets/servant/waver_02.webp deleted file mode 100644 index 7477af3..0000000 Binary files a/static/assets/servant/waver_02.webp and /dev/null differ diff --git a/static/assets/servant/wu_01.webp b/static/assets/servant/wu_01.webp deleted file mode 100644 index ba89ca9..0000000 Binary files a/static/assets/servant/wu_01.webp and /dev/null differ diff --git a/static/assets/ta_icons/ta_servants/caren.webp b/static/assets/ta_icons/ta_servants/caren.webp deleted file mode 100644 index eb7c227..0000000 Binary files a/static/assets/ta_icons/ta_servants/caren.webp and /dev/null differ diff --git a/static/assets/ta_icons/ta_servants/jalter.webp b/static/assets/ta_icons/ta_servants/jalter.webp deleted file mode 100644 index c4e6307..0000000 Binary files a/static/assets/ta_icons/ta_servants/jalter.webp and /dev/null differ diff --git a/static/assets/ta_icons/ta_servants/kama.webp b/static/assets/ta_icons/ta_servants/kama.webp deleted file mode 100644 index 83e28cf..0000000 Binary files a/static/assets/ta_icons/ta_servants/kama.webp and /dev/null differ diff --git a/static/assets/ta_icons/ta_servants/musashi.webp b/static/assets/ta_icons/ta_servants/musashi.webp deleted file mode 100644 index 37aa905..0000000 Binary files a/static/assets/ta_icons/ta_servants/musashi.webp and /dev/null differ diff --git a/static/assets/ta_icons/ta_servants/saberalter.webp b/static/assets/ta_icons/ta_servants/saberalter.webp deleted file mode 100644 index 55481e0..0000000 Binary files a/static/assets/ta_icons/ta_servants/saberalter.webp and /dev/null differ diff --git a/static/assets/ta_icons/ta_servants/shishou.webp b/static/assets/ta_icons/ta_servants/shishou.webp deleted file mode 100644 index 5b0dea3..0000000 Binary files a/static/assets/ta_icons/ta_servants/shishou.webp and /dev/null differ diff --git a/static/assets/ta_icons/ta_servants/skadi.webp b/static/assets/ta_icons/ta_servants/skadi.webp deleted file mode 100644 index 7292349..0000000 Binary files a/static/assets/ta_icons/ta_servants/skadi.webp and /dev/null differ diff --git a/static/assets/ta_icons/ta_servants/summerjalter.webp b/static/assets/ta_icons/ta_servants/summerjalter.webp deleted file mode 100644 index e4b8ca2..0000000 Binary files a/static/assets/ta_icons/ta_servants/summerjalter.webp and /dev/null differ diff --git a/static/assets/ta_icons/ta_servants/summermusashi.webp b/static/assets/ta_icons/ta_servants/summermusashi.webp deleted file mode 100644 index 963a6c7..0000000 Binary files a/static/assets/ta_icons/ta_servants/summermusashi.webp and /dev/null differ diff --git a/static/assets/ta_icons/ta_servants/summershishou.webp b/static/assets/ta_icons/ta_servants/summershishou.webp deleted file mode 100644 index 5d07b5b..0000000 Binary files a/static/assets/ta_icons/ta_servants/summershishou.webp and /dev/null differ diff --git a/static/assets/ta_icons/ta_servants/tamamocat.webp b/static/assets/ta_icons/ta_servants/tamamocat.webp deleted file mode 100644 index ad8ea94..0000000 Binary files a/static/assets/ta_icons/ta_servants/tamamocat.webp and /dev/null differ diff --git a/static/assets/ta_icons/ta_servants/tomoe.webp b/static/assets/ta_icons/ta_servants/tomoe.webp deleted file mode 100644 index 6fb6bae..0000000 Binary files a/static/assets/ta_icons/ta_servants/tomoe.webp and /dev/null differ diff --git a/static/assets/ta_icons/ta_servants/tomoesummer.webp b/static/assets/ta_icons/ta_servants/tomoesummer.webp deleted file mode 100644 index 5dbd588..0000000 Binary files a/static/assets/ta_icons/ta_servants/tomoesummer.webp and /dev/null differ diff --git a/static/assets/technologies/alpine-linux.webp b/static/assets/technologies/alpine-linux.webp deleted file mode 100644 index 61a52cc..0000000 Binary files a/static/assets/technologies/alpine-linux.webp and /dev/null differ diff --git a/static/assets/technologies/astro.webp b/static/assets/technologies/astro.webp deleted file mode 100644 index 000203b..0000000 Binary files a/static/assets/technologies/astro.webp and /dev/null differ diff --git a/static/assets/technologies/gitlab.webp b/static/assets/technologies/gitlab.webp deleted file mode 100644 index 9112b9d..0000000 Binary files a/static/assets/technologies/gitlab.webp and /dev/null differ diff --git a/static/assets/technologies/ubuntu.webp b/static/assets/technologies/ubuntu.webp deleted file mode 100644 index a78f23e..0000000 Binary files a/static/assets/technologies/ubuntu.webp and /dev/null differ diff --git a/static/data/_cedata.json b/static/data/_cedata.json new file mode 100644 index 0000000..c40f365 --- /dev/null +++ b/static/data/_cedata.json @@ -0,0 +1,57 @@ +[ + { + "name": "The Merciless One", + "imageFile": "merciless_one.png", + "mlb": true + }, + { + "name": "Ox-Demon King", + "imageFile": "ox-demon.png", + "mlb": true + }, + { + "name": "Holy Maiden's Teachings", + "imageFile": "maidens_teachings.png", + "mlb": true + }, + { + "name": "Kaleidoscope", + "imageFile": "kaleidoscope.png", + "mlb": true + }, + { + "name": "The Black Grail", + "imageFile": "black_grail.png", + "mlb": true + }, + { + "name": "A Fragment Of 2030", + "imageFile": "2030.png", + "mlb": true + }, + { + "name": "Outrage", + "imageFile": "outrage.png", + "mlb": false + }, + { + "name": "Vessel of the Saint", + "imageFile": "vessel.png", + "mlb": false + }, + { + "name": "Devilish Bodhisattva", + "imageFile": "devilish_bodhisattva.png", + "mlb": true + }, + { + "name": "500-Year Obsession", + "imageFile": "500.png", + "mlb": true + }, + { + "name": "Prisma Cosmos", + "imageFile": "prisma_cosmos.png", + "mlb": true + } +] diff --git a/static/assets/data/_contactdata.json b/static/data/_contactdata.json similarity index 73% rename from static/assets/data/_contactdata.json rename to static/data/_contactdata.json index 2ca9903..ce6e643 100644 --- a/static/assets/data/_contactdata.json +++ b/static/data/_contactdata.json @@ -2,31 +2,31 @@ { "site": "Youtube: @Firq_", "link": "https://www.youtube.com/@Firq_", - "image": "youtube" + "imageFile": "youtube.webp" }, { "site": "Twitch: Firq", "link": "https://www.twitch.tv/firq", - "image": "twitch" + "imageFile": "twitch.webp" }, { "site": "Discord: firq", "link": "https://discord.com/users/186014064835690496", - "image": "discord" + "imageFile": "discord.webp" }, { "site": "Twitter: Firq_ow", "link": "https://twitter.com/firq_ow", - "image": "twitter" + "imageFile": "twitter.webp" }, { "site": "Reddit: u/Firq_ow", "link": "https://www.reddit.com/user/firq_ow", - "image": "reddit" + "imageFile": "reddit.webp" }, { "site": "Support Setup on Rayshift", "link": "https://rayshift.io/na/firq", - "image": "custom-fgo" + "imageFile": "custom-fgo.webp" } ] diff --git a/static/assets/data/_favouritesdata.json b/static/data/_favouritesdata.json similarity index 80% rename from static/assets/data/_favouritesdata.json rename to static/data/_favouritesdata.json index dc7aa60..d3554d8 100644 --- a/static/assets/data/_favouritesdata.json +++ b/static/data/_favouritesdata.json @@ -2,13 +2,13 @@ { "name": "Scathach", "origin": "Fate/Grand Order", - "image": "scathach", + "imageFile": "scathach.png", "link": "https://twitter.com/firq_ow/status/1541064034618904578" }, { "name": "Skadi", "origin": "Fate/Grand Order", - "image": "skadi", + "imageFile": "skadi.png", "link": "https://twitter.com/firq_ow/status/1544321985995489280" } ] \ No newline at end of file diff --git a/static/assets/data/_featureddata.json b/static/data/_featureddata.json similarity index 68% rename from static/assets/data/_featureddata.json rename to static/data/_featureddata.json index 68ba17e..eccb8ea 100644 --- a/static/assets/data/_featureddata.json +++ b/static/data/_featureddata.json @@ -2,226 +2,226 @@ { "title": "DB 7T", "link": "https://www.youtube.com/watch?v=nYV4jwgpuR0", - "image": "db", + "targetImageFile": "db.webp", "date": "2022-07-14", "user": "KOG", - "ta_servant": "shishou", + "servantImageFile": "shishou.png", "turns": "7T" }, { "title": "DB 7T", "link": "https://www.youtube.com/watch?v=jKoSw1XM6-c", - "image": "db", + "targetImageFile": "db.webp", "date": "2022-07-07", "user": "Requiem", - "ta_servant": "shishou", + "servantImageFile": "shishou.png", "turns": "7T" }, { "title": "Valentines 2023 CQ 5T SC", "link": "https://www.youtube.com/watch?v=AkDFyJ98GDQ", - "image": "orion", + "targetImageFile": "orion.webp", "date": "2023-02-23", "user": "Requiem", - "ta_servant": "shishou", + "servantImageFile": "shishou.png", "turns": "5T" }, { "title": "Ibuki 3T (Lostbelt 5.5)", "link": "https://www.youtube.com/watch?v=zHGvHC0CUu0", - "image": "ibuki", + "targetImageFile": "ibuki.webp", "date": "2022-11-22", "user": "Requiem", - "ta_servant": "shishou", + "servantImageFile": "shishou.png", "turns": "3T" }, { "title": "Kingprotea 1T", "link": "https://www.youtube.com/watch?v=iAhwqIGWsG4", - "image": "kingprotea", + "targetImageFile": "kingprotea.webp", "date": "2022-09-13", "user": "Requiem", - "ta_servant": "shishou", + "servantImageFile": "shishou.png", "turns": "1T" }, { "title": "Golden Caenis 3T (LB5.2)", "link": "https://www.youtube.com/watch?v=_yZYgdr6XA4", - "image": "caenis", + "targetImageFile": "caenis.webp", "date": "2022-04-22", "user": "Requiem", - "ta_servant": "shishou", + "servantImageFile": "shishou.png", "turns": "3T" }, { "title": "GudaGuda 4 CQ 3T [No DMG CE]", "link": "https://www.youtube.com/watch?v=oCT7ngip82U", - "image": "shibata", + "targetImageFile": "shibata.webp", "date": "2022-04-26", "user": "Requiem", - "ta_servant": "shishou", + "servantImageFile": "shishou.png", "turns": "3T" }, { "title": "Valentines 2023 CQ 4T", "link": "https://www.youtube.com/watch?v=6WyPFYT8h1c", - "image": "orion", + "targetImageFile": "orion.webp", "date": "2023-02-25", "user": "KOG", - "ta_servant": "summershishou", + "servantImageFile": "summershishou.png", "turns": "4T" }, { "title": "Ooku Rerun CQ 4T", "link": "https://www.youtube.com/watch?v=EU2THj6GnhQ", - "image": "kiyohime", + "targetImageFile": "kiyohime.webp", "date": "2022-08-12", "user": "KOG", - "ta_servant": "summershishou", + "servantImageFile": "summershishou.png", "turns": "4T" }, { "title": "Amazoness 2021 CQ 3T", "link": "https://www.youtube.com/watch?v=l2cmlS9LKSU", - "image": "penth", + "targetImageFile": "penth.webp", "date": "2022-01-22", "user": "KOG", - "ta_servant": "shishou", + "servantImageFile": "shishou.png", "turns": "3T" }, { "title": "Christmas 2021 CQ 4T", "link": "https://www.youtube.com/watch?v=PrJvjo3fvVc", - "image": "santagale", + "targetImageFile": "santagale.webp", "date": "2021-12-20", "user": "KOG", - "ta_servant": "summershishou", + "servantImageFile": "summershishou.png", "turns": "4T" }, { "title": "GudaGuda 4 CQ 3T", "link": "https://www.youtube.com/watch?v=e9H37cnW160", - "image": "shibata", + "targetImageFile": "shibata.webp", "date": "2021-06-29", "user": "KOG", - "ta_servant": "shishou", + "servantImageFile": "shishou.png", "turns": "3T" }, { "title": "GudaGuda 5 CQ 4T", "link": "https://www.youtube.com/watch?v=HmrWnxp8Qz0", - "image": "nobunaga", + "targetImageFile": "nobunaga.webp", "date": "2022-09-24", "user": "Ray", - "ta_servant": "jalter", + "servantImageFile": "jalter.png", "turns": "4T" }, { "title": "GudaGuda 5 CQ 4T", "link": "https://www.youtube.com/watch?v=pcvhCQq5gFE", - "image": "nobunaga", + "targetImageFile": "nobunaga.webp", "date": "2022-09-23", "user": "Ray", - "ta_servant": "summerjalter", + "servantImageFile": "summerjalter.png", "turns": "4T" }, { "title": "Ibuki 3T (Lostbelt 5.5)", "link": "https://www.youtube.com/watch?v=4NgfXE1WY5I", - "image": "ibuki", + "targetImageFile": "ibuki.webp", "date": "2022-11-26", "user": "Ray", - "ta_servant": "jalter", + "servantImageFile": "jalter.png", "turns": "3T" }, { "title": "Douman 3T (Lostbelt 5.5)", "link": "https://www.youtube.com/watch?v=CIoNRC4tDrY", - "image": "douman", + "targetImageFile": "douman.webp", "date": "2022-11-27", "user": "Ray", - "ta_servant": "musashi", + "servantImageFile": "musashi.png", "turns": "3T" }, { "title": "Boxing 3T (Xmas 5)", "link": "https://www.youtube.com/watch?v=0ErT8Qbzuw8", - "image": "dioscuri", + "targetImageFile": "dioscuri.webp", "date": "2022-12-18", "user": "Ray", - "ta_servant": "jalter", + "servantImageFile": "jalter.png", "turns": "3T" }, { "title": "Slapstick Museum CQ 5T", "link": "https://www.youtube.com/watch?v=QtthHB6rk7k", - "image": "moriarty", + "targetImageFile": "moriarty.webp", "date": "2023-03-10", "user": "Ray", - "ta_servant": "jalter", + "servantImageFile": "jalter.png", "turns": "5T" }, { "title": "Little Big Tengu CQ 4T", "link": "https://www.youtube.com/watch?v=50Adjx4owhg", - "image": "taira", + "targetImageFile": "taira.webp", "date": "2023-01-29", "user": "Ray", - "ta_servant": "jalter", + "servantImageFile": "jalter.png", "turns": "4T" }, { "title": "DB 7T (No Duplicates)", "link": "https://www.youtube.com/watch?v=U5wsl09_VVQ", - "image": "db", + "targetImageFile": "db.webp", "date": "2023-03-21", "user": "Ray", - "ta_servant": "jalter", + "servantImageFile": "jalter.png", "turns": "7T" }, { "title": "Top of Tower 3T", "link": "https://www.youtube.com/watch?v=s_KRHpq_634", - "image": "galatea", + "targetImageFile": "galatea.webp", "date": "2023-03-20", "user": "Requiem", - "ta_servant": "skadi", + "servantImageFile": "skadi.png", "turns": "3T" }, { "title": "Grail Live 4T", "link": "https://drive.google.com/file/d/11spwhurDXFkWl3sHc2ghH5nFMW9-UwrR/view?usp=sharing", - "image": "arthur", + "targetImageFile": "arthur.webp", "date": "2023-04-26", "user": "Roz", - "ta_servant": "caren", + "servantImageFile": "caren.png", "turns": "4T" }, { "title": "DB 7T", "link": "https://drive.google.com/file/d/15TNT1HfYQioH7lRI5kvGChzElw6fz4-f/view?usp=sharing", - "image": "db", + "targetImageFile": "db.webp", "date": "2023-01-13", "user": "Roz", - "ta_servant": "kama", + "servantImageFile": "kama.png", "turns": "7T" }, { "title": "Grail Live 4T", "link": "https://www.youtube.com/watch?v=HIFYCvD6YhM", - "image": "arthur", + "targetImageFile": "arthur.webp", "date": "2023-04-26", "user": "Ray", - "ta_servant": "jalter", + "servantImageFile": "jalter.png", "turns": "6T" }, { "title": "Grail Live 4T", "link": "https://www.youtube.com/watch?v=jT8NEHvZ6Yg", - "image": "arthur", + "targetImageFile": "arthur.webp", "date": "2023-04-25", "user": "Requiem", - "ta_servant": "tamamocat", + "servantImageFile": "tamamocat.png", "turns": "4T" } ] diff --git a/static/assets/data/_navdata.json b/static/data/_navdata.json similarity index 64% rename from static/assets/data/_navdata.json rename to static/data/_navdata.json index bf03d7f..9397c84 100644 --- a/static/assets/data/_navdata.json +++ b/static/data/_navdata.json @@ -2,26 +2,26 @@ { "link": "/", "text": "Home", - "icon": "iconoir-home" + "icon": "home" }, { "link": "/servants", "text": "Servants", - "icon": "iconoir-task-list" + "icon": "servants" }, { "link": "/ta-collection", "text": "TA Collection", - "icon": "iconoir-database" + "icon": "ta_collection" }, { "link": "/blog", "text": "Blog", - "icon": "iconoir-bookmark-book" + "icon": "blog" }, { "link": "/about", "text": "About", - "icon": "iconoir-mail" + "icon": "about" } ] \ No newline at end of file diff --git a/static/data/_servantdata.json b/static/data/_servantdata.json new file mode 100644 index 0000000..339940a --- /dev/null +++ b/static/data/_servantdata.json @@ -0,0 +1,272 @@ +[ + { + "name": "Scathach", + "level": "120", + "np": "5", + "skills": "10 / 10 / 10", + "ml": "10", + "servantImageFile": "scathach_03.png", + "bondceImageFile": "scathach.png", + "bond10": true + }, + { + "name": "Skadi", + "level": "120", + "np": "5", + "skills": "10 / 10 / 10", + "ml": "10", + "servantImageFile": "skadi_03.png", + "bondceImageFile": "skadi.png", + "bond10": true + }, + { + "name": "Skadi", + "level": "70", + "np": "1", + "skills": "10 / 10 / 10", + "ml": "1", + "servantImageFile": "skadi_02.png", + "bondceImageFile": "skadi.png", + "bond10": true + }, + { + "name": "Skadi", + "level": "1", + "np": "1", + "skills": "10 / X / X", + "ml": "1", + "servantImageFile": "skadi_01.png", + "bondceImageFile": "skadi.png", + "bond10": true + }, + { + "name": "Koyanskaya of Light", + "level": "90", + "np": "1", + "skills": "10 / 10 / 10", + "ml": "Not Unlocked", + "servantImageFile": "koyanlight_01.png", + "bondceImageFile": "koyanlight.png", + "bond10": true + }, + { + "name": "Castoria", + "level": "90", + "np": "1", + "skills": "10 / 10 / 10", + "ml": "10", + "servantImageFile": "castoria_02.png", + "bondceImageFile": "castoria.png", + "bond10": true + }, + { + "name": "Castoria", + "level": "70", + "np": "1", + "skills": "10 / 10 / 10", + "ml": "1", + "servantImageFile": "castoria_01.png", + "bondceImageFile": "castoria.png", + "bond10": true + }, + { + "name": "Oberon", + "level": "90", + "np": "1", + "skills": "10 / 10 / 10", + "ml": "1", + "servantImageFile": "oberon_02.png", + "bondceImageFile": "oberon.png", + "bond10": true + }, + { + "name": "Merlin", + "level": "90", + "np": "1", + "skills": "10 / 10 / 10", + "ml": "Not Unlocked", + "servantImageFile": "merlin_03.png", + "bondceImageFile": "merlin.png", + "bond10": true + }, + { + "name": "Merlin", + "level": "70", + "np": "1", + "skills": "9 / 1 / 9", + "ml": "Not Unlocked", + "servantImageFile": "merlin_01.png", + "bondceImageFile": "merlin.png", + "bond10": true + }, + { + "name": "Waver", + "level": "90", + "np": "1", + "skills": "10 / 10 / 10", + "ml": "Not Unlocked", + "servantImageFile": "waver_02.png", + "bondceImageFile": "waver.png", + "bond10": true + }, + { + "name": "Reines", + "level": "90", + "np": "1", + "skills": "10 / 10 / 10", + "ml": "9", + "servantImageFile": "reines_01.png", + "bondceImageFile": "reines.png", + "bond10": true + }, + { + "name": "Tamamo-no-Mae", + "level": "90", + "np": "2", + "skills": "10 / 10 / 10", + "ml": "Not Unlocked", + "servantImageFile": "tamamo_03.png", + "bondceImageFile": "tamamo.png", + "bond10": true + }, + { + "name": "Van Gogh", + "level": "90", + "np": "1", + "skills": "10 / 10 / 10", + "ml": "10", + "servantImageFile": "gogh_01.png", + "bondceImageFile": "gogh.png", + "bond10": true + }, + { + "name": "Miss Crane", + "level": "90", + "np": "1", + "skills": "10 / 10 / 10", + "ml": "Not Unlocked", + "servantImageFile": "crane_01.png", + "bondceImageFile": "crane.png", + "bond10": false + }, + { + "name": "Ashiya Douman", + "level": "90", + "np": "1", + "skills": "9 / 9 / 10", + "ml": "10", + "servantImageFile": "douman_01.png", + "bondceImageFile": "douman.png", + "bond10": false + }, + { + "name": "Himiko", + "level": "90", + "np": "1", + "skills": "9 / 9 / 9", + "ml": "Not Unlocked", + "servantImageFile": "himiko_03.png", + "bondceImageFile": "himiko.png", + "bond10": false + }, + { + "name": "Sherlock Holmes", + "level": "90", + "np": "1", + "skills": "9 / 10 / 9", + "ml": "Not Unlocked", + "servantImageFile": "sherlock_03.png", + "bondceImageFile": "sherlock.png", + "bond10": false + }, + { + "name": "Nero (Bride)", + "level": "90", + "np": "1", + "skills": "10 / 10 / 10", + "ml": "Not Unlocked", + "servantImageFile": "bride_03.png", + "bondceImageFile": "bride.png", + "bond10": false + }, + { + "name": "Taigon Wang", + "level": "70", + "np": "1", + "skills": "10 / 9 / 10", + "ml": "Not Unlocked", + "servantImageFile": "taigong_03.png", + "bondceImageFile": "taigong.png", + "bond10": false + }, + { + "name": "Nightingale (Santa)", + "level": "80", + "np": "5", + "skills": "9 / 10 / 9", + "ml": "Not Unlocked", + "servantImageFile": "santagale_01.png", + "bondceImageFile": "santagale.png", + "bond10": true + }, + { + "name": "Nightingale (Santa)", + "level": "60", + "np": "1", + "skills": "1 / 10 / 10", + "ml": "Not Unlocked", + "servantImageFile": "santagale_01.png", + "bondceImageFile": "santagale.png", + "bond10": true + }, + { + "name": "Elisabeth Báthory", + "level": "40", + "np": "1", + "skills": "9 / 9 / X", + "ml": "Not Unlocked", + "servantImageFile": "liz_01.png", + "bondceImageFile": "liz.png", + "bond10": false + }, + { + "name": "Wu Zetian", + "level": "60", + "np": "1", + "skills": "10 / 9 / 10", + "ml": "Not Unlocked", + "servantImageFile": "wu_01.png", + "bondceImageFile": "wu.png", + "bond10": true + }, + { + "name": "Ibaraki-Douji", + "level": "40", + "np": "1", + "skills": "9 / 10 / X ", + "ml": "Not Unlocked", + "servantImageFile": "ibaraki_02.png", + "bondceImageFile": "ibaraki.png", + "bond10": false + }, + { + "name": "Calamity Jane", + "level": "60", + "np": "1", + "skills": "1 / 9 / 9", + "ml": "Not Unlocked", + "servantImageFile": "jane_02.png", + "bondceImageFile": "jane.png", + "bond10": false + }, + { + "name": "Chiron", + "level": "60", + "np": "1", + "skills": "1 / 10 / 10", + "ml": "Not Unlocked", + "servantImageFile": "chiron_01.png", + "bondceImageFile": "chiron.png", + "bond10": false + } +] diff --git a/static/data/_tadata.json b/static/data/_tadata.json new file mode 100644 index 0000000..b09079a --- /dev/null +++ b/static/data/_tadata.json @@ -0,0 +1,330 @@ +[ + { + "title": "DB 7T (No Duplicates)", + "link": "https://www.youtube.com/watch?v=d1ftVeitR6c", + "targetImageFile": "db.webp", + "date": "2022-07-09", + "servantImageFile": "shishou.png", + "turns": "7T" + }, + { + "title": "Kingprotea 1T", + "link": "https://www.youtube.com/watch?v=m3SATSOfpt4", + "targetImageFile": "kingprotea.webp", + "date": "2022-06-21", + "servantImageFile": "shishou.png", + "turns": "1T" + }, + { + "title": "Solomon 1T (No NP)", + "link": "https://www.youtube.com/watch?v=01Qx4Hs-X4M", + "targetImageFile": "solomon.webp", + "date": "2022-06-28", + "servantImageFile": "shishou.png", + "turns": "1T" + }, + { + "title": "Ibuki 3T (LB 5.5)", + "link": "https://www.youtube.com/watch?v=AaqRN73dO5k", + "targetImageFile": "ibuki.webp", + "date": "2022-11-22", + "servantImageFile": "shishou.png", + "turns": "3T" + }, + { + "title": "Boxing 3T (Xmas 5)", + "link": "https://www.youtube.com/watch?v=S8OQ7yWldJY", + "targetImageFile": "dioscuri.webp", + "date": "2022-12-24", + "servantImageFile": "shishou.png", + "turns": "3T" + }, + { + "title": "MHXX 2T (No DMG CE)", + "link": "https://www.youtube.com/watch?v=lz6iBZvoDuw", + "targetImageFile": "mhxx.webp", + "date": "2023-01-12", + "servantImageFile": "shishou.png", + "turns": "2T" + }, + { + "title": "Taira 3T (LB 5.5)", + "link": "https://www.youtube.com/watch?v=YtRvahqFA0Y", + "targetImageFile": "taira.webp", + "date": "2022-11-22", + "servantImageFile": "shishou.png", + "turns": "3T" + }, + { + "title": "Douman 3T (LB 5.5)", + "link": "https://www.youtube.com/watch?v=6cstr3vTd8Y", + "targetImageFile": "douman.webp", + "date": "2022-11-23", + "servantImageFile": "shishou.png", + "turns": "3T" + }, + { + "title": "Christmas 2021 Rerun CQ 5T", + "link": "https://www.youtube.com/watch?v=cpqhx9dUgTU", + "targetImageFile": "santagale.webp", + "date": "2022-10-15", + "servantImageFile": "shishou.png", + "turns": "5T" + }, + { + "title": "Summer 4 Rerun CQ 3T", + "link": "https://www.youtube.com/watch?v=u72o7PDBtks", + "targetImageFile": "fuuma.webp", + "date": "2022-06-04", + "servantImageFile": "shishou.png", + "turns": "3T" + }, + { + "title": "Fate/ Requiem CQ 3T", + "link": "https://www.youtube.com/watch?v=k7vGC4kpEFg", + "targetImageFile": "erice.webp", + "date": "2022-05-11", + "servantImageFile": "shishou.png", + "turns": "3T" + }, + { + "title": "Kirschtaria 3T (LB 5)", + "link": "https://www.youtube.com/watch?v=aYlyfAzuFw0", + "targetImageFile": "kirschtaria.webp", + "date": "2022-04-04", + "servantImageFile": "shishou.png", + "turns": "3T" + }, + { + "title": "Aeaean Spring Breeze CQ 3T", + "link": "https://www.youtube.com/watch?v=uo3jI9xuVwI", + "targetImageFile": "odysseus.webp", + "date": "2022-03-06", + "servantImageFile": "shishou.png", + "turns": "3T" + }, + { + "title": "Valentines 2022 CQ 4T", + "link": "https://www.youtube.com/watch?v=MOCMXZ17FkU", + "targetImageFile": "sei.webp", + "date": "2022-02-09", + "servantImageFile": "shishou.png", + "turns": "4T" + }, + { + "title": "Amazoness 2021 CQ 3T", + "link": "https://www.youtube.com/watch?v=MU_Hw2KKYRU", + "targetImageFile": "penth.webp", + "date": "2022-01-23", + "servantImageFile": "shishou.png", + "turns": "3T" + }, + { + "title": "Valentines 2023 CQ 4T", + "link": "https://www.youtube.com/watch?v=fwCmEiaocQo", + "targetImageFile": "orion.webp", + "date": "2023-02-25", + "servantImageFile": "shishou.png", + "turns": "4T" + }, + { + "title": "Slapstick Museum CQ 5T", + "link": "https://www.youtube.com/watch?v=fQImgJirFeo", + "targetImageFile": "moriarty.webp", + "date": "2023-03-10", + "servantImageFile": "shishou.png", + "turns": "5T" + }, + { + "title": "GudaGuda 5 CQ 4T", + "link": "https://www.youtube.com/watch?v=3scILqsgobU", + "targetImageFile": "nobunaga.webp", + "date": "2022-09-21", + "servantImageFile": "shishou.png", + "turns": "4T" + }, + { + "title": "GudaGuda 4 CQ 3T (No DMG CE)", + "link": "https://www.youtube.com/watch?v=HY95cWsjC08", + "targetImageFile": "shibata.webp", + "date": "2022-04-30", + "servantImageFile": "shishou.png", + "turns": "3T" + }, + { + "title": "GudaGuda 4 CQ 3T", + "link": "https://www.youtube.com/watch?v=7iO2WQt64-8", + "targetImageFile": "shibata.webp", + "date": "2022-04-26", + "servantImageFile": "shishou.png", + "turns": "3T" + }, + { + "title": "Top of Tower 3T", + "link": "https://www.youtube.com/watch?v=gUtBYNxH4Ck", + "targetImageFile": "galatea.webp", + "date": "2023-03-20", + "servantImageFile": "shishou.png", + "turns": "3T" + }, + { + "title": "Goetia Memorial Quest 2T", + "link": "https://www.youtube.com/watch?v=lZHgSVpPv24", + "targetImageFile": "goetia.webp", + "date": "2023-07-04", + "servantImageFile": "skadi.png", + "turns": "2T" + }, + { + "title": "Melusine 3T (LB 6)", + "link": "https://www.youtube.com/watch?v=f35hlBXuR3w", + "targetImageFile": "melusine.webp", + "date": "2023-06-26", + "servantImageFile": "shishou.png", + "turns": "3T" + }, + { + "title": "Morgan 3T (LB 6) Shishou", + "link": "https://www.youtube.com/watch?v=7wQ6iabqgEc", + "targetImageFile": "morgan.webp", + "date": "2023-06-26", + "servantImageFile": "shishou.png", + "turns": "3T" + }, + { + "title": "Morgan 3T (LB 6) Skadi", + "link": "https://www.youtube.com/watch?v=sQ7HHl1Pb3c", + "targetImageFile": "morgan.webp", + "date": "2023-06-25", + "servantImageFile": "skadi.png", + "turns": "3T" + }, + { + "title": "Woodwose 3T (LB 6)", + "link": "https://www.youtube.com/watch?v=ZPgIDZjrGA0", + "targetImageFile": "woodwose.webp", + "date": "2023-06-23", + "servantImageFile": "shishou.png", + "turns": "3T" + }, + { + "title": "Barghest 2T (LB 6)", + "link": "https://www.youtube.com/watch?v=kjMAccbq7-A", + "targetImageFile": "barghest.webp", + "date": "2023-06-21", + "servantImageFile": "tomoe.png", + "turns": "2T" + }, + { + "title": "Calamity of Norwich 3T (LB 6)", + "link": "https://www.youtube.com/watch?v=IwkCnVej_PY", + "targetImageFile": "calamityofnorwich.webp", + "date": "2023-06-08", + "servantImageFile": "shishou.png", + "turns": "3T" + }, + { + "title": "Red Dragon 1T (LB 6)", + "link": "https://www.youtube.com/watch?v=MKhkvG0CHko", + "targetImageFile": "reddragon.webp", + "date": "2023-07-10", + "servantImageFile": "tomoesummer.png", + "turns": "1T" + }, + { + "title": "Albion 3T (LB 6) Skadi", + "link": "https://www.youtube.com/watch?v=tejeiYpzfqo", + "targetImageFile": "albion.webp", + "date": "2023-07-11", + "servantImageFile": "skadi.png", + "turns": "3T" + }, + { + "title": "Albion 3T (LB 6) Shishou", + "link": "https://www.youtube.com/watch?v=E8fjEYFqrWI", + "targetImageFile": "albion.webp", + "date": "2023-07-12", + "servantImageFile": "shishou.png", + "turns": "3T" + }, + { + "title": "Albion 3T (LB 6) Salter", + "link": "https://www.youtube.com/watch?v=5U42nu-vPnk", + "targetImageFile": "albion.webp", + "date": "2023-07-12", + "servantImageFile": "saberalter.png", + "turns": "3T" + }, + { + "title": "Cernunnos 4T (No Castoria)", + "link": "https://www.youtube.com/watch?v=WrHudtdfivA", + "targetImageFile": "cernnunos.webp", + "date": "2023-07-19", + "servantImageFile": "shishou.png", + "turns": "4T" + }, + { + "title": "Abyssal Worm 3T (LB 6)", + "link": "https://www.youtube.com/watch?v=i8LfxctXhlA", + "targetImageFile": "abyssalworm.webp", + "date": "2023-07-20", + "servantImageFile": "shishou.png", + "turns": "3T" + }, + { + "title": "Summer 6 CQ 3T", + "link": "https://www.youtube.com/watch?v=9db9BZ4ZzUo", + "targetImageFile": "koyo.webp", + "date": "2023-09-24", + "servantImageFile": "shishou.png", + "turns": "3T" + }, + { + "title": "Summer 6 Final Treasure 3T", + "link": "https://www.youtube.com/watch?v=u44lOISIpHo", + "targetImageFile": "kamasummer.webp", + "date": "2023-09-25", + "servantImageFile": "skadi.png", + "turns": "3T" + }, + { + "title": "Halloween CQ 3T (No DMG CE)", + "link": "https://www.youtube.com/watch?v=bgt6z0Sfpl8", + "targetImageFile": "zenobia.webp", + "date": "2023-10-26", + "servantImageFile": "shishou.png", + "turns": "3T" + }, + { + "title": "GudaGuda 6 CQ 3T", + "link": "https://www.youtube.com/watch?v=RWco4pduGUM", + "targetImageFile": "izumo.webp", + "date": "2023-11-27", + "servantImageFile": "shishou.png", + "turns": "3T" + }, + { + "title": "\"Hello, Joulupukki\" 3T (Xmas 6)", + "link": "https://www.youtube.com/watch?v=qEI8wZbnWww", + "targetImageFile": "skadi.webp", + "date": "2023-12-16", + "servantImageFile": "shishou.png", + "turns": "3T" + }, + { + "title": "Tunguska - Beast of Taming 4T (FLO)", + "link": "https://www.youtube.com/watch?v=g6aASJeL-ao", + "targetImageFile": "koyanskayaofdark.png", + "date": "2023-12-26", + "servantImageFile": "shishou.png", + "turns": "4T" + }, + { + "title": "Tunguska - Beast IV:L 4T", + "link": "https://www.youtube.com/watch?v=brz21NKMMsY", + "targetImageFile": "beast_4_l.png", + "date": "2023-12-31", + "servantImageFile": "shishou.png", + "turns": "4T" + } +] diff --git a/static/data/_technologydata.json b/static/data/_technologydata.json new file mode 100644 index 0000000..1a3f70a --- /dev/null +++ b/static/data/_technologydata.json @@ -0,0 +1,42 @@ +[ + { + "title": "Astro", + "link": "https://astro.build", + "imageFile": "astro.webp" + }, + { + "title": "Forgejo", + "link": "https://forgejo.org/", + "imageFile": "forgejo.webp" + }, + { + "title": "Docker", + "link": "https://www.docker.com/", + "imageFile": "docker.webp" + }, + { + "title": "Dockge", + "link": "https://github.com/louislam/dockge", + "imageFile": "dockge.png" + }, + { + "title": "Typescript", + "link": "https://www.typescriptlang.org/", + "imageFile": "typescript.webp" + }, + { + "title": "NodeJS", + "link": "https://nodejs.org/", + "imageFile": "nodejs.webp" + }, + { + "title": "serve by @warren-bank", + "link": "https://www.npmjs.com/package/@warren-bank/serve", + "imageFile": "serve.webp" + }, + { + "title": "Unlight-house", + "link": "https://unlighthouse.dev/", + "imageFile": "unlighthouse.webp" + } + ] \ No newline at end of file diff --git a/static/assets/favicon.ico b/static/favicon.ico similarity index 100% rename from static/assets/favicon.ico rename to static/favicon.ico diff --git a/unlighthouse.config.ts b/unlighthouse.config.ts index d289ab5..4d2881a 100644 --- a/unlighthouse.config.ts +++ b/unlighthouse.config.ts @@ -3,7 +3,7 @@ export default { args: ["--no-sandbox", "--disable-setuid-sandbox"], }, ci: { - budget: 90, + budget: 50, buildStatic: true }, outputPath: "unlighthouse-reports",