Compare changes

Choose any two refs to compare.

+3 -1
astro.config.mjs
··· 2 2 import { defineConfig } from "astro/config"; 3 3 4 4 // https://astro.build/config 5 - export default defineConfig({}); 5 + export default defineConfig({ 6 + site: "https://entomoviscera.online", 7 + });
+343 -109
package-lock.json
··· 8 8 "name": "personal-site", 9 9 "version": "0.0.1", 10 10 "dependencies": { 11 + "@astrojs/rss": "^4.0.13", 11 12 "astro": "^5.15.1" 12 13 }, 13 14 "devDependencies": { ··· 22 23 "license": "MIT" 23 24 }, 24 25 "node_modules/@astrojs/internal-helpers": { 25 - "version": "0.7.4", 26 - "resolved": "https://registry.npmjs.org/@astrojs/internal-helpers/-/internal-helpers-0.7.4.tgz", 27 - "integrity": "sha512-lDA9MqE8WGi7T/t2BMi+EAXhs4Vcvr94Gqx3q15cFEz8oFZMO4/SFBqYr/UcmNlvW+35alowkVj+w9VhLvs5Cw==", 26 + "version": "0.7.5", 27 + "resolved": "https://registry.npmjs.org/@astrojs/internal-helpers/-/internal-helpers-0.7.5.tgz", 28 + "integrity": "sha512-vreGnYSSKhAjFJCWAwe/CNhONvoc5lokxtRoZims+0wa3KbHBdPHSSthJsKxPd8d/aic6lWKpRTYGY/hsgK6EA==", 28 29 "license": "MIT" 29 30 }, 30 31 "node_modules/@astrojs/markdown-remark": { 31 - "version": "6.3.8", 32 - "resolved": "https://registry.npmjs.org/@astrojs/markdown-remark/-/markdown-remark-6.3.8.tgz", 33 - "integrity": "sha512-uFNyFWadnULWK2cOw4n0hLKeu+xaVWeuECdP10cQ3K2fkybtTlhb7J7TcScdjmS8Yps7oje9S/ehYMfZrhrgCg==", 32 + "version": "6.3.9", 33 + "resolved": "https://registry.npmjs.org/@astrojs/markdown-remark/-/markdown-remark-6.3.9.tgz", 34 + "integrity": "sha512-hX2cLC/KW74Io1zIbn92kI482j9J7LleBLGCVU9EP3BeH5MVrnFawOnqD0t/q6D1Z+ZNeQG2gNKMslCcO36wng==", 34 35 "license": "MIT", 35 36 "dependencies": { 36 - "@astrojs/internal-helpers": "0.7.4", 37 + "@astrojs/internal-helpers": "0.7.5", 37 38 "@astrojs/prism": "3.3.0", 38 39 "github-slugger": "^2.0.0", 39 40 "hast-util-from-html": "^2.0.3", ··· 52 53 "unified": "^11.0.5", 53 54 "unist-util-remove-position": "^5.0.0", 54 55 "unist-util-visit": "^5.0.0", 55 - "unist-util-visit-parents": "^6.0.1", 56 + "unist-util-visit-parents": "^6.0.2", 56 57 "vfile": "^6.0.3" 57 58 } 58 59 }, ··· 68 69 "node": "18.20.8 || ^20.3.0 || >=22.0.0" 69 70 } 70 71 }, 72 + "node_modules/@astrojs/rss": { 73 + "version": "4.0.13", 74 + "resolved": "https://registry.npmjs.org/@astrojs/rss/-/rss-4.0.13.tgz", 75 + "integrity": "sha512-ugW4DmGn8kgfl8/qecU3EcKCAuEBrZqY7eYfa6at0sY7HGEwRdzsOafLE437RwDMP2ZuxfKnCNABs99YVhX0kg==", 76 + "license": "MIT", 77 + "dependencies": { 78 + "fast-xml-parser": "^5.3.0", 79 + "picocolors": "^1.1.1" 80 + } 81 + }, 71 82 "node_modules/@astrojs/telemetry": { 72 83 "version": "3.3.0", 73 84 "resolved": "https://registry.npmjs.org/@astrojs/telemetry/-/telemetry-3.3.0.tgz", ··· 133 144 } 134 145 }, 135 146 "node_modules/@capsizecss/unpack": { 136 - "version": "3.0.0", 137 - "resolved": "https://registry.npmjs.org/@capsizecss/unpack/-/unpack-3.0.0.tgz", 138 - "integrity": "sha512-+ntATQe1AlL7nTOYjwjj6w3299CgRot48wL761TUGYpYgAou3AaONZazp0PKZyCyWhudWsjhq1nvRHOvbMzhTA==", 147 + "version": "3.0.1", 148 + "resolved": "https://registry.npmjs.org/@capsizecss/unpack/-/unpack-3.0.1.tgz", 149 + "integrity": "sha512-8XqW8xGn++Eqqbz3e9wKuK7mxryeRjs4LOHLxbh2lwKeSbuNR4NFifDZT4KzvjU6HMOPbiNTsWpniK5EJfTWkg==", 139 150 "license": "MIT", 140 151 "dependencies": { 141 152 "fontkit": "^2.0.2" ··· 1325 1336 ] 1326 1337 }, 1327 1338 "node_modules/@shikijs/core": { 1328 - "version": "3.14.0", 1329 - "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-3.14.0.tgz", 1330 - "integrity": "sha512-qRSeuP5vlYHCNUIrpEBQFO7vSkR7jn7Kv+5X3FO/zBKVDGQbcnlScD3XhkrHi/R8Ltz0kEjvFR9Szp/XMRbFMw==", 1339 + "version": "3.17.0", 1340 + "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-3.17.0.tgz", 1341 + "integrity": "sha512-/HjeOnbc62C+n33QFNFrAhUlIADKwfuoS50Ht0pxujxP4QjZAlFp5Q+OkDo531SCTzivx5T18khwyBdKoPdkuw==", 1331 1342 "license": "MIT", 1332 1343 "dependencies": { 1333 - "@shikijs/types": "3.14.0", 1344 + "@shikijs/types": "3.17.0", 1334 1345 "@shikijs/vscode-textmate": "^10.0.2", 1335 1346 "@types/hast": "^3.0.4", 1336 1347 "hast-util-to-html": "^9.0.5" 1337 1348 } 1338 1349 }, 1339 1350 "node_modules/@shikijs/engine-javascript": { 1340 - "version": "3.14.0", 1341 - "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-3.14.0.tgz", 1342 - "integrity": "sha512-3v1kAXI2TsWQuwv86cREH/+FK9Pjw3dorVEykzQDhwrZj0lwsHYlfyARaKmn6vr5Gasf8aeVpb8JkzeWspxOLQ==", 1351 + "version": "3.17.0", 1352 + "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-3.17.0.tgz", 1353 + "integrity": "sha512-WwF99xdP8KfuDrIbT4wxyypfhoIxMeeOCp1AiuvzzZ6JT5B3vIuoclL8xOuuydA6LBeeNXUF/XV5zlwwex1jlA==", 1343 1354 "license": "MIT", 1344 1355 "dependencies": { 1345 - "@shikijs/types": "3.14.0", 1356 + "@shikijs/types": "3.17.0", 1346 1357 "@shikijs/vscode-textmate": "^10.0.2", 1347 - "oniguruma-to-es": "^4.3.3" 1358 + "oniguruma-to-es": "^4.3.4" 1348 1359 } 1349 1360 }, 1350 1361 "node_modules/@shikijs/engine-oniguruma": { 1351 - "version": "3.14.0", 1352 - "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-3.14.0.tgz", 1353 - "integrity": "sha512-TNcYTYMbJyy+ZjzWtt0bG5y4YyMIWC2nyePz+CFMWqm+HnZZyy9SWMgo8Z6KBJVIZnx8XUXS8U2afO6Y0g1Oug==", 1362 + "version": "3.17.0", 1363 + "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-3.17.0.tgz", 1364 + "integrity": "sha512-flSbHZAiOZDNTrEbULY8DLWavu/TyVu/E7RChpLB4WvKX4iHMfj80C6Hi3TjIWaQtHOW0KC6kzMcuB5TO1hZ8Q==", 1354 1365 "license": "MIT", 1355 1366 "dependencies": { 1356 - "@shikijs/types": "3.14.0", 1367 + "@shikijs/types": "3.17.0", 1357 1368 "@shikijs/vscode-textmate": "^10.0.2" 1358 1369 } 1359 1370 }, 1360 1371 "node_modules/@shikijs/langs": { 1361 - "version": "3.14.0", 1362 - "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-3.14.0.tgz", 1363 - "integrity": "sha512-DIB2EQY7yPX1/ZH7lMcwrK5pl+ZkP/xoSpUzg9YC8R+evRCCiSQ7yyrvEyBsMnfZq4eBzLzBlugMyTAf13+pzg==", 1372 + "version": "3.17.0", 1373 + "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-3.17.0.tgz", 1374 + "integrity": "sha512-icmur2n5Ojb+HAiQu6NEcIIJ8oWDFGGEpiqSCe43539Sabpx7Y829WR3QuUW2zjTM4l6V8Sazgb3rrHO2orEAw==", 1364 1375 "license": "MIT", 1365 1376 "dependencies": { 1366 - "@shikijs/types": "3.14.0" 1377 + "@shikijs/types": "3.17.0" 1367 1378 } 1368 1379 }, 1369 1380 "node_modules/@shikijs/themes": { 1370 - "version": "3.14.0", 1371 - "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-3.14.0.tgz", 1372 - "integrity": "sha512-fAo/OnfWckNmv4uBoUu6dSlkcBc+SA1xzj5oUSaz5z3KqHtEbUypg/9xxgJARtM6+7RVm0Q6Xnty41xA1ma1IA==", 1381 + "version": "3.17.0", 1382 + "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-3.17.0.tgz", 1383 + "integrity": "sha512-/xEizMHLBmMHwtx4JuOkRf3zwhWD2bmG5BRr0IPjpcWpaq4C3mYEuTk/USAEglN0qPrTwEHwKVpSu/y2jhferA==", 1373 1384 "license": "MIT", 1374 1385 "dependencies": { 1375 - "@shikijs/types": "3.14.0" 1386 + "@shikijs/types": "3.17.0" 1376 1387 } 1377 1388 }, 1378 1389 "node_modules/@shikijs/types": { 1379 - "version": "3.14.0", 1380 - "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-3.14.0.tgz", 1381 - "integrity": "sha512-bQGgC6vrY8U/9ObG1Z/vTro+uclbjjD/uG58RvfxKZVD5p9Yc1ka3tVyEFy7BNJLzxuWyHH5NWynP9zZZS59eQ==", 1390 + "version": "3.17.0", 1391 + "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-3.17.0.tgz", 1392 + "integrity": "sha512-wjLVfutYWVUnxAjsWEob98xgyaGv0dTEnMZDruU5mRjVN7szcGOfgO+997W2yR6odp+1PtSBNeSITRRTfUzK/g==", 1382 1393 "license": "MIT", 1383 1394 "dependencies": { 1384 1395 "@shikijs/vscode-textmate": "^10.0.2", ··· 1615 1626 } 1616 1627 }, 1617 1628 "node_modules/astro": { 1618 - "version": "5.15.1", 1619 - "resolved": "https://registry.npmjs.org/astro/-/astro-5.15.1.tgz", 1620 - "integrity": "sha512-VM679M1qxOjGo6q3vKYDNDddkALGgMopG93IwbEXd3Buc2xVLuuPj4HNziNugSbPQx5S6UReMp5uzw10EJN81A==", 1629 + "version": "5.16.2", 1630 + "resolved": "https://registry.npmjs.org/astro/-/astro-5.16.2.tgz", 1631 + "integrity": "sha512-NFXqhB1UgBvleF5rLZ7a31Qzprf1lSch+k8o2XTvsw1d97gxGrjVVeWa8AnZUFtirz84YPW6+5NbLVNzS2y+uQ==", 1621 1632 "license": "MIT", 1622 1633 "dependencies": { 1623 - "@astrojs/compiler": "^2.12.2", 1624 - "@astrojs/internal-helpers": "0.7.4", 1625 - "@astrojs/markdown-remark": "6.3.8", 1634 + "@astrojs/compiler": "^2.13.0", 1635 + "@astrojs/internal-helpers": "0.7.5", 1636 + "@astrojs/markdown-remark": "6.3.9", 1626 1637 "@astrojs/telemetry": "3.3.0", 1627 - "@capsizecss/unpack": "^3.0.0", 1638 + "@capsizecss/unpack": "^3.0.1", 1628 1639 "@oslojs/encoding": "^1.1.0", 1629 - "@rollup/pluginutils": "^5.2.0", 1640 + "@rollup/pluginutils": "^5.3.0", 1630 1641 "acorn": "^8.15.0", 1631 1642 "aria-query": "^5.3.2", 1632 1643 "axobject-query": "^4.1.0", 1633 1644 "boxen": "8.0.1", 1634 - "ci-info": "^4.3.0", 1645 + "ci-info": "^4.3.1", 1635 1646 "clsx": "^2.1.1", 1636 1647 "common-ancestor-path": "^1.0.1", 1637 1648 "cookie": "^1.0.2", 1638 1649 "cssesc": "^3.0.0", 1639 - "debug": "^4.4.1", 1650 + "debug": "^4.4.3", 1640 1651 "deterministic-object-hash": "^2.0.2", 1641 - "devalue": "^5.3.2", 1652 + "devalue": "^5.5.0", 1642 1653 "diff": "^5.2.0", 1643 1654 "dlv": "^1.1.3", 1644 1655 "dset": "^3.1.4", ··· 1646 1657 "esbuild": "^0.25.0", 1647 1658 "estree-walker": "^3.0.3", 1648 1659 "flattie": "^1.1.1", 1649 - "fontace": "~0.3.0", 1660 + "fontace": "~0.3.1", 1650 1661 "github-slugger": "^2.0.0", 1651 1662 "html-escaper": "3.0.3", 1652 1663 "http-cache-semantics": "^4.2.0", 1653 1664 "import-meta-resolve": "^4.2.0", 1654 - "js-yaml": "^4.1.0", 1655 - "magic-string": "^0.30.18", 1656 - "magicast": "^0.3.5", 1665 + "js-yaml": "^4.1.1", 1666 + "magic-string": "^0.30.21", 1667 + "magicast": "^0.5.1", 1657 1668 "mrmime": "^2.0.1", 1658 1669 "neotraverse": "^0.6.18", 1659 1670 "p-limit": "^6.2.0", 1660 - "p-queue": "^8.1.0", 1661 - "package-manager-detector": "^1.3.0", 1662 - "picocolors": "^1.1.1", 1671 + "p-queue": "^8.1.1", 1672 + "package-manager-detector": "^1.5.0", 1673 + "piccolore": "^0.1.3", 1663 1674 "picomatch": "^4.0.3", 1664 1675 "prompts": "^2.4.2", 1665 1676 "rehype": "^13.0.2", 1666 - "semver": "^7.7.2", 1667 - "shiki": "^3.12.0", 1668 - "smol-toml": "^1.4.2", 1669 - "tinyexec": "^1.0.1", 1670 - "tinyglobby": "^0.2.14", 1677 + "semver": "^7.7.3", 1678 + "shiki": "^3.15.0", 1679 + "smol-toml": "^1.5.2", 1680 + "svgo": "^4.0.0", 1681 + "tinyexec": "^1.0.2", 1682 + "tinyglobby": "^0.2.15", 1671 1683 "tsconfck": "^3.1.6", 1672 1684 "ultrahtml": "^1.6.0", 1673 1685 "unifont": "~0.6.0", 1674 1686 "unist-util-visit": "^5.0.0", 1675 - "unstorage": "^1.17.0", 1687 + "unstorage": "^1.17.3", 1676 1688 "vfile": "^6.0.3", 1677 - "vite": "^6.3.6", 1689 + "vite": "^6.4.1", 1678 1690 "vitefu": "^1.1.1", 1679 1691 "xxhash-wasm": "^1.1.0", 1680 1692 "yargs-parser": "^21.1.1", 1681 1693 "yocto-spinner": "^0.2.3", 1682 1694 "zod": "^3.25.76", 1683 - "zod-to-json-schema": "^3.24.6", 1695 + "zod-to-json-schema": "^3.25.0", 1684 1696 "zod-to-ts": "^1.2.0" 1685 1697 }, 1686 1698 "bin": { ··· 1743 1755 } 1744 1756 ], 1745 1757 "license": "MIT" 1758 + }, 1759 + "node_modules/boolbase": { 1760 + "version": "1.0.0", 1761 + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", 1762 + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", 1763 + "license": "ISC" 1746 1764 }, 1747 1765 "node_modules/boxen": { 1748 1766 "version": "8.0.1", ··· 1909 1927 "url": "https://github.com/sponsors/wooorm" 1910 1928 } 1911 1929 }, 1930 + "node_modules/commander": { 1931 + "version": "11.1.0", 1932 + "resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz", 1933 + "integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==", 1934 + "license": "MIT", 1935 + "engines": { 1936 + "node": ">=16" 1937 + } 1938 + }, 1912 1939 "node_modules/common-ancestor-path": { 1913 1940 "version": "1.0.1", 1914 1941 "resolved": "https://registry.npmjs.org/common-ancestor-path/-/common-ancestor-path-1.0.1.tgz", ··· 1939 1966 "uncrypto": "^0.1.3" 1940 1967 } 1941 1968 }, 1969 + "node_modules/css-select": { 1970 + "version": "5.2.2", 1971 + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.2.2.tgz", 1972 + "integrity": "sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==", 1973 + "license": "BSD-2-Clause", 1974 + "dependencies": { 1975 + "boolbase": "^1.0.0", 1976 + "css-what": "^6.1.0", 1977 + "domhandler": "^5.0.2", 1978 + "domutils": "^3.0.1", 1979 + "nth-check": "^2.0.1" 1980 + }, 1981 + "funding": { 1982 + "url": "https://github.com/sponsors/fb55" 1983 + } 1984 + }, 1942 1985 "node_modules/css-tree": { 1943 1986 "version": "3.1.0", 1944 1987 "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.1.0.tgz", ··· 1952 1995 "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" 1953 1996 } 1954 1997 }, 1998 + "node_modules/css-what": { 1999 + "version": "6.2.2", 2000 + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.2.2.tgz", 2001 + "integrity": "sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==", 2002 + "license": "BSD-2-Clause", 2003 + "engines": { 2004 + "node": ">= 6" 2005 + }, 2006 + "funding": { 2007 + "url": "https://github.com/sponsors/fb55" 2008 + } 2009 + }, 1955 2010 "node_modules/cssesc": { 1956 2011 "version": "3.0.0", 1957 2012 "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", ··· 1964 2019 "node": ">=4" 1965 2020 } 1966 2021 }, 2022 + "node_modules/csso": { 2023 + "version": "5.0.5", 2024 + "resolved": "https://registry.npmjs.org/csso/-/csso-5.0.5.tgz", 2025 + "integrity": "sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==", 2026 + "license": "MIT", 2027 + "dependencies": { 2028 + "css-tree": "~2.2.0" 2029 + }, 2030 + "engines": { 2031 + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", 2032 + "npm": ">=7.0.0" 2033 + } 2034 + }, 2035 + "node_modules/csso/node_modules/css-tree": { 2036 + "version": "2.2.1", 2037 + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.2.1.tgz", 2038 + "integrity": "sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==", 2039 + "license": "MIT", 2040 + "dependencies": { 2041 + "mdn-data": "2.0.28", 2042 + "source-map-js": "^1.0.1" 2043 + }, 2044 + "engines": { 2045 + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", 2046 + "npm": ">=7.0.0" 2047 + } 2048 + }, 2049 + "node_modules/csso/node_modules/mdn-data": { 2050 + "version": "2.0.28", 2051 + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.28.tgz", 2052 + "integrity": "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==", 2053 + "license": "CC0-1.0" 2054 + }, 1967 2055 "node_modules/debug": { 1968 2056 "version": "4.4.3", 1969 2057 "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", ··· 2038 2126 } 2039 2127 }, 2040 2128 "node_modules/devalue": { 2041 - "version": "5.4.2", 2042 - "resolved": "https://registry.npmjs.org/devalue/-/devalue-5.4.2.tgz", 2043 - "integrity": "sha512-MwPZTKEPK2k8Qgfmqrd48ZKVvzSQjgW0lXLxiIBA8dQjtf/6mw6pggHNLcyDKyf+fI6eXxlQwPsfaCMTU5U+Bw==", 2129 + "version": "5.5.0", 2130 + "resolved": "https://registry.npmjs.org/devalue/-/devalue-5.5.0.tgz", 2131 + "integrity": "sha512-69sM5yrHfFLJt0AZ9QqZXGCPfJ7fQjvpln3Rq5+PS03LD32Ost1Q9N+eEnaQwGRIriKkMImXD56ocjQmfjbV3w==", 2044 2132 "license": "MIT" 2045 2133 }, 2046 2134 "node_modules/devlop": { ··· 2077 2165 "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", 2078 2166 "license": "MIT" 2079 2167 }, 2168 + "node_modules/dom-serializer": { 2169 + "version": "2.0.0", 2170 + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", 2171 + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", 2172 + "license": "MIT", 2173 + "dependencies": { 2174 + "domelementtype": "^2.3.0", 2175 + "domhandler": "^5.0.2", 2176 + "entities": "^4.2.0" 2177 + }, 2178 + "funding": { 2179 + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" 2180 + } 2181 + }, 2182 + "node_modules/dom-serializer/node_modules/entities": { 2183 + "version": "4.5.0", 2184 + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", 2185 + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", 2186 + "license": "BSD-2-Clause", 2187 + "engines": { 2188 + "node": ">=0.12" 2189 + }, 2190 + "funding": { 2191 + "url": "https://github.com/fb55/entities?sponsor=1" 2192 + } 2193 + }, 2194 + "node_modules/domelementtype": { 2195 + "version": "2.3.0", 2196 + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", 2197 + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", 2198 + "funding": [ 2199 + { 2200 + "type": "github", 2201 + "url": "https://github.com/sponsors/fb55" 2202 + } 2203 + ], 2204 + "license": "BSD-2-Clause" 2205 + }, 2206 + "node_modules/domhandler": { 2207 + "version": "5.0.3", 2208 + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", 2209 + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", 2210 + "license": "BSD-2-Clause", 2211 + "dependencies": { 2212 + "domelementtype": "^2.3.0" 2213 + }, 2214 + "engines": { 2215 + "node": ">= 4" 2216 + }, 2217 + "funding": { 2218 + "url": "https://github.com/fb55/domhandler?sponsor=1" 2219 + } 2220 + }, 2221 + "node_modules/domutils": { 2222 + "version": "3.2.2", 2223 + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", 2224 + "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", 2225 + "license": "BSD-2-Clause", 2226 + "dependencies": { 2227 + "dom-serializer": "^2.0.0", 2228 + "domelementtype": "^2.3.0", 2229 + "domhandler": "^5.0.3" 2230 + }, 2231 + "funding": { 2232 + "url": "https://github.com/fb55/domutils?sponsor=1" 2233 + } 2234 + }, 2080 2235 "node_modules/dset": { 2081 2236 "version": "3.1.4", 2082 2237 "resolved": "https://registry.npmjs.org/dset/-/dset-3.1.4.tgz", ··· 2189 2344 "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", 2190 2345 "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", 2191 2346 "license": "MIT" 2347 + }, 2348 + "node_modules/fast-xml-parser": { 2349 + "version": "5.3.0", 2350 + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.3.0.tgz", 2351 + "integrity": "sha512-gkWGshjYcQCF+6qtlrqBqELqNqnt4CxruY6UVAWWnqb3DQ6qaNFEIKqzYep1XzHLM/QtrHVCxyPOtTk4LTQ7Aw==", 2352 + "funding": [ 2353 + { 2354 + "type": "github", 2355 + "url": "https://github.com/sponsors/NaturalIntelligence" 2356 + } 2357 + ], 2358 + "license": "MIT", 2359 + "dependencies": { 2360 + "strnum": "^2.1.0" 2361 + }, 2362 + "bin": { 2363 + "fxparser": "src/cli/cli.js" 2364 + } 2192 2365 }, 2193 2366 "node_modules/fdir": { 2194 2367 "version": "6.5.0", ··· 2590 2763 } 2591 2764 }, 2592 2765 "node_modules/js-yaml": { 2593 - "version": "4.1.0", 2594 - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", 2595 - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", 2766 + "version": "4.1.1", 2767 + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", 2768 + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", 2596 2769 "license": "MIT", 2597 2770 "dependencies": { 2598 2771 "argparse": "^2.0.1" ··· 2636 2809 } 2637 2810 }, 2638 2811 "node_modules/magicast": { 2639 - "version": "0.3.5", 2640 - "resolved": "https://registry.npmjs.org/magicast/-/magicast-0.3.5.tgz", 2641 - "integrity": "sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ==", 2812 + "version": "0.5.1", 2813 + "resolved": "https://registry.npmjs.org/magicast/-/magicast-0.5.1.tgz", 2814 + "integrity": "sha512-xrHS24IxaLrvuo613F719wvOIv9xPHFWQHuvGUBmPnCA/3MQxKI3b+r7n1jAoDHmsbC5bRhTZYR77invLAxVnw==", 2642 2815 "license": "MIT", 2643 2816 "dependencies": { 2644 - "@babel/parser": "^7.25.4", 2645 - "@babel/types": "^7.25.4", 2646 - "source-map-js": "^1.2.0" 2817 + "@babel/parser": "^7.28.5", 2818 + "@babel/types": "^7.28.5", 2819 + "source-map-js": "^1.2.1" 2647 2820 } 2648 2821 }, 2649 2822 "node_modules/markdown-table": { ··· 3526 3699 "node": ">=0.10.0" 3527 3700 } 3528 3701 }, 3702 + "node_modules/nth-check": { 3703 + "version": "2.1.1", 3704 + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", 3705 + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", 3706 + "license": "BSD-2-Clause", 3707 + "dependencies": { 3708 + "boolbase": "^1.0.0" 3709 + }, 3710 + "funding": { 3711 + "url": "https://github.com/fb55/nth-check?sponsor=1" 3712 + } 3713 + }, 3529 3714 "node_modules/ofetch": { 3530 - "version": "1.4.1", 3531 - "resolved": "https://registry.npmjs.org/ofetch/-/ofetch-1.4.1.tgz", 3532 - "integrity": "sha512-QZj2DfGplQAr2oj9KzceK9Hwz6Whxazmn85yYeVuS3u9XTMOGMRx0kO95MQ+vLsj/S/NwBDMMLU5hpxvI6Tklw==", 3715 + "version": "1.5.1", 3716 + "resolved": "https://registry.npmjs.org/ofetch/-/ofetch-1.5.1.tgz", 3717 + "integrity": "sha512-2W4oUZlVaqAPAil6FUg/difl6YhqhUR7x2eZY4bQCko22UXg3hptq9KLQdqFClV+Wu85UX7hNtdGTngi/1BxcA==", 3533 3718 "license": "MIT", 3534 3719 "dependencies": { 3535 - "destr": "^2.0.3", 3536 - "node-fetch-native": "^1.6.4", 3537 - "ufo": "^1.5.4" 3720 + "destr": "^2.0.5", 3721 + "node-fetch-native": "^1.6.7", 3722 + "ufo": "^1.6.1" 3538 3723 } 3539 3724 }, 3540 3725 "node_modules/ohash": { ··· 3550 3735 "license": "MIT" 3551 3736 }, 3552 3737 "node_modules/oniguruma-to-es": { 3553 - "version": "4.3.3", 3554 - "resolved": "https://registry.npmjs.org/oniguruma-to-es/-/oniguruma-to-es-4.3.3.tgz", 3555 - "integrity": "sha512-rPiZhzC3wXwE59YQMRDodUwwT9FZ9nNBwQQfsd1wfdtlKEyCdRV0avrTcSZ5xlIvGRVPd/cx6ZN45ECmS39xvg==", 3738 + "version": "4.3.4", 3739 + "resolved": "https://registry.npmjs.org/oniguruma-to-es/-/oniguruma-to-es-4.3.4.tgz", 3740 + "integrity": "sha512-3VhUGN3w2eYxnTzHn+ikMI+fp/96KoRSVK9/kMTcFqj1NRDh2IhQCKvYxDnWePKRXY/AqH+Fuiyb7VHSzBjHfA==", 3556 3741 "license": "MIT", 3557 3742 "dependencies": { 3558 3743 "oniguruma-parser": "^0.12.1", ··· 3644 3829 "funding": { 3645 3830 "url": "https://github.com/inikulin/parse5?sponsor=1" 3646 3831 } 3832 + }, 3833 + "node_modules/piccolore": { 3834 + "version": "0.1.3", 3835 + "resolved": "https://registry.npmjs.org/piccolore/-/piccolore-0.1.3.tgz", 3836 + "integrity": "sha512-o8bTeDWjE086iwKrROaDf31K0qC/BENdm15/uH9usSC/uZjJOKb2YGiVHfLY4GhwsERiPI1jmwI2XrA7ACOxVw==", 3837 + "license": "ISC" 3647 3838 }, 3648 3839 "node_modules/picocolors": { 3649 3840 "version": "1.1.1", ··· 4011 4202 "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.52.5.tgz", 4012 4203 "integrity": "sha512-3GuObel8h7Kqdjt0gxkEzaifHTqLVW56Y/bjN7PSQtkKr0w3V/QYSdt6QWYtd7A1xUtYQigtdUfgj1RvWVtorw==", 4013 4204 "license": "MIT", 4014 - "peer": true, 4015 4205 "dependencies": { 4016 4206 "@types/estree": "1.0.8" 4017 4207 }, ··· 4065 4255 "suf-log": "^2.5.3" 4066 4256 } 4067 4257 }, 4258 + "node_modules/sax": { 4259 + "version": "1.4.3", 4260 + "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.3.tgz", 4261 + "integrity": "sha512-yqYn1JhPczigF94DMS+shiDMjDowYO6y9+wB/4WgO0Y19jWYk0lQ4tuG5KI7kj4FTp1wxPj5IFfcrz/s1c3jjQ==", 4262 + "license": "BlueOak-1.0.0" 4263 + }, 4068 4264 "node_modules/semver": { 4069 4265 "version": "7.7.3", 4070 4266 "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", ··· 4121 4317 } 4122 4318 }, 4123 4319 "node_modules/shiki": { 4124 - "version": "3.14.0", 4125 - "resolved": "https://registry.npmjs.org/shiki/-/shiki-3.14.0.tgz", 4126 - "integrity": "sha512-J0yvpLI7LSig3Z3acIuDLouV5UCKQqu8qOArwMx+/yPVC3WRMgrP67beaG8F+j4xfEWE0eVC4GeBCIXeOPra1g==", 4320 + "version": "3.17.0", 4321 + "resolved": "https://registry.npmjs.org/shiki/-/shiki-3.17.0.tgz", 4322 + "integrity": "sha512-lUZfWsyW7czITYTdo/Tb6ZM4VfyXlzmKYBQBjTz+pBzPPkP08RgIt00Ls1Z50Cl3SfwJsue6WbJeF3UgqLVI9Q==", 4127 4323 "license": "MIT", 4128 4324 "dependencies": { 4129 - "@shikijs/core": "3.14.0", 4130 - "@shikijs/engine-javascript": "3.14.0", 4131 - "@shikijs/engine-oniguruma": "3.14.0", 4132 - "@shikijs/langs": "3.14.0", 4133 - "@shikijs/themes": "3.14.0", 4134 - "@shikijs/types": "3.14.0", 4325 + "@shikijs/core": "3.17.0", 4326 + "@shikijs/engine-javascript": "3.17.0", 4327 + "@shikijs/engine-oniguruma": "3.17.0", 4328 + "@shikijs/langs": "3.17.0", 4329 + "@shikijs/themes": "3.17.0", 4330 + "@shikijs/types": "3.17.0", 4135 4331 "@shikijs/vscode-textmate": "^10.0.2", 4136 4332 "@types/hast": "^3.0.4" 4137 4333 } ··· 4143 4339 "license": "MIT" 4144 4340 }, 4145 4341 "node_modules/smol-toml": { 4146 - "version": "1.4.2", 4147 - "resolved": "https://registry.npmjs.org/smol-toml/-/smol-toml-1.4.2.tgz", 4148 - "integrity": "sha512-rInDH6lCNiEyn3+hH8KVGFdbjc099j47+OSgbMrfDYX1CmXLfdKd7qi6IfcWj2wFxvSVkuI46M+wPGYfEOEj6g==", 4342 + "version": "1.5.2", 4343 + "resolved": "https://registry.npmjs.org/smol-toml/-/smol-toml-1.5.2.tgz", 4344 + "integrity": "sha512-QlaZEqcAH3/RtNyet1IPIYPsEWAaYyXXv1Krsi+1L/QHppjX4Ifm8MQsBISz9vE8cHicIq3clogsheili5vhaQ==", 4149 4345 "license": "BSD-3-Clause", 4150 4346 "engines": { 4151 4347 "node": ">= 18" ··· 4219 4415 "url": "https://github.com/chalk/strip-ansi?sponsor=1" 4220 4416 } 4221 4417 }, 4418 + "node_modules/strnum": { 4419 + "version": "2.1.1", 4420 + "resolved": "https://registry.npmjs.org/strnum/-/strnum-2.1.1.tgz", 4421 + "integrity": "sha512-7ZvoFTiCnGxBtDqJ//Cu6fWtZtc7Y3x+QOirG15wztbdngGSkht27o2pyGWrVy0b4WAy3jbKmnoK6g5VlVNUUw==", 4422 + "funding": [ 4423 + { 4424 + "type": "github", 4425 + "url": "https://github.com/sponsors/NaturalIntelligence" 4426 + } 4427 + ], 4428 + "license": "MIT" 4429 + }, 4222 4430 "node_modules/suf-log": { 4223 4431 "version": "2.5.3", 4224 4432 "resolved": "https://registry.npmjs.org/suf-log/-/suf-log-2.5.3.tgz", ··· 4229 4437 "s.color": "0.0.15" 4230 4438 } 4231 4439 }, 4440 + "node_modules/svgo": { 4441 + "version": "4.0.0", 4442 + "resolved": "https://registry.npmjs.org/svgo/-/svgo-4.0.0.tgz", 4443 + "integrity": "sha512-VvrHQ+9uniE+Mvx3+C9IEe/lWasXCU0nXMY2kZeLrHNICuRiC8uMPyM14UEaMOFA5mhyQqEkB02VoQ16n3DLaw==", 4444 + "license": "MIT", 4445 + "dependencies": { 4446 + "commander": "^11.1.0", 4447 + "css-select": "^5.1.0", 4448 + "css-tree": "^3.0.1", 4449 + "css-what": "^6.1.0", 4450 + "csso": "^5.0.5", 4451 + "picocolors": "^1.1.1", 4452 + "sax": "^1.4.1" 4453 + }, 4454 + "bin": { 4455 + "svgo": "bin/svgo.js" 4456 + }, 4457 + "engines": { 4458 + "node": ">=16" 4459 + }, 4460 + "funding": { 4461 + "type": "opencollective", 4462 + "url": "https://opencollective.com/svgo" 4463 + } 4464 + }, 4232 4465 "node_modules/tiny-inflate": { 4233 4466 "version": "1.0.3", 4234 4467 "resolved": "https://registry.npmjs.org/tiny-inflate/-/tiny-inflate-1.0.3.tgz", ··· 4236 4469 "license": "MIT" 4237 4470 }, 4238 4471 "node_modules/tinyexec": { 4239 - "version": "1.0.1", 4240 - "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.0.1.tgz", 4241 - "integrity": "sha512-5uC6DDlmeqiOwCPmK9jMSdOuZTh8bU39Ys6yidB+UTt5hfZUPGAypSgFRiEp+jbi9qH40BLDvy85jIU88wKSqw==", 4242 - "license": "MIT" 4472 + "version": "1.0.2", 4473 + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.0.2.tgz", 4474 + "integrity": "sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==", 4475 + "license": "MIT", 4476 + "engines": { 4477 + "node": ">=18" 4478 + } 4243 4479 }, 4244 4480 "node_modules/tinyglobby": { 4245 4481 "version": "0.2.15", ··· 4527 4763 } 4528 4764 }, 4529 4765 "node_modules/unstorage": { 4530 - "version": "1.17.1", 4531 - "resolved": "https://registry.npmjs.org/unstorage/-/unstorage-1.17.1.tgz", 4532 - "integrity": "sha512-KKGwRTT0iVBCErKemkJCLs7JdxNVfqTPc/85ae1XES0+bsHbc/sFBfVi5kJp156cc51BHinIH2l3k0EZ24vOBQ==", 4766 + "version": "1.17.3", 4767 + "resolved": "https://registry.npmjs.org/unstorage/-/unstorage-1.17.3.tgz", 4768 + "integrity": "sha512-i+JYyy0DoKmQ3FximTHbGadmIYb8JEpq7lxUjnjeB702bCPum0vzo6oy5Mfu0lpqISw7hCyMW2yj4nWC8bqJ3Q==", 4533 4769 "license": "MIT", 4534 4770 "dependencies": { 4535 4771 "anymatch": "^3.1.3", ··· 4538 4774 "h3": "^1.15.4", 4539 4775 "lru-cache": "^10.4.3", 4540 4776 "node-fetch-native": "^1.6.7", 4541 - "ofetch": "^1.4.1", 4777 + "ofetch": "^1.5.1", 4542 4778 "ufo": "^1.6.1" 4543 4779 }, 4544 4780 "peerDependencies": { ··· 4669 4905 "resolved": "https://registry.npmjs.org/vite/-/vite-6.4.1.tgz", 4670 4906 "integrity": "sha512-+Oxm7q9hDoLMyJOYfUYBuHQo+dkAloi33apOPP56pzj+vsdJDzr+j1NISE5pyaAuKL4A3UD34qd0lx5+kfKp2g==", 4671 4907 "license": "MIT", 4672 - "peer": true, 4673 4908 "dependencies": { 4674 4909 "esbuild": "^0.25.0", 4675 4910 "fdir": "^6.4.4", ··· 4868 5103 "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", 4869 5104 "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", 4870 5105 "license": "MIT", 4871 - "peer": true, 4872 5106 "funding": { 4873 5107 "url": "https://github.com/sponsors/colinhacks" 4874 5108 } 4875 5109 }, 4876 5110 "node_modules/zod-to-json-schema": { 4877 - "version": "3.24.6", 4878 - "resolved": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.24.6.tgz", 4879 - "integrity": "sha512-h/z3PKvcTcTetyjl1fkj79MHNEjm+HpD6NXheWjzOekY7kV+lwDYnHw+ivHkijnCSMz1yJaWBD9vu/Fcmk+vEg==", 5111 + "version": "3.25.0", 5112 + "resolved": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.25.0.tgz", 5113 + "integrity": "sha512-HvWtU2UG41LALjajJrML6uQejQhNJx+JBO9IflpSja4R03iNWfKXrj6W2h7ljuLyc1nKS+9yDyL/9tD1U/yBnQ==", 4880 5114 "license": "ISC", 4881 5115 "peerDependencies": { 4882 - "zod": "^3.24.1" 5116 + "zod": "^3.25 || ^4" 4883 5117 } 4884 5118 }, 4885 5119 "node_modules/zod-to-ts": {
+2 -1
package.json
··· 7 7 "build": "astro build", 8 8 "preview": "astro preview", 9 9 "astro": "astro", 10 - "cleanup": "prettier . --write" 10 + "cleanup": "prettier . --write --check" 11 11 }, 12 12 "dependencies": { 13 + "@astrojs/rss": "^4.0.13", 13 14 "astro": "^5.15.1" 14 15 }, 15 16 "devDependencies": {
public/favicon.png

This is a binary file and will not be displayed.

public/fonts/LibreBarcode39Extended-Regular.woff

This is a binary file and will not be displayed.

public/fonts/LibreBarcode39ExtendedText-Regular.woff

This is a binary file and will not be displayed.

public/img/icons/backarrow.png

This is a binary file and will not be displayed.

public/img/icons/home.png

This is a binary file and will not be displayed.

public/img/icons/poweroff.png

This is a binary file and will not be displayed.

public/img/sitebuttons/afterlifepro.neocities.org.gif

This is a binary file and will not be displayed.

public/img/sitebuttons/afterlifepro.neocities.org.png

This is a binary file and will not be displayed.

public/img/sitebuttons/bensect.space.png

This is a binary file and will not be displayed.

public/img/sitebuttons/corru.observer.gif

This is a binary file and will not be displayed.

public/img/sitebuttons/corru.observer.png

This is a binary file and will not be displayed.

public/img/sitebuttons/doqmeat.com.png

This is a binary file and will not be displayed.

public/img/sitebuttons/espy.world.gif

This is a binary file and will not be displayed.

public/img/sitebuttons/espy.world.png

This is a binary file and will not be displayed.

public/img/sitebuttons/heavenonline.xyz.png

This is a binary file and will not be displayed.

public/img/sitebuttons/kerka.neocities.org.gif

This is a binary file and will not be displayed.

public/img/sitebuttons/kerka.neocities.org.png

This is a binary file and will not be displayed.

public/img/sitebuttons/megaknecht.com.gif

This is a binary file and will not be displayed.

public/img/sitebuttons/megaknecht.com.png

This is a binary file and will not be displayed.

public/img/sitebuttons/myrrh.city.png

This is a binary file and will not be displayed.

public/img/sitebuttons/pocl.vip.gif

This is a binary file and will not be displayed.

public/img/sitebuttons/pocl.vip.png

This is a binary file and will not be displayed.

public/img/sprites/door.png

This is a binary file and will not be displayed.

public/img/sprites/doorbg.png

This is a binary file and will not be displayed.

public/img/sprites/sunfl1.png

This is a binary file and will not be displayed.

public/mainbanner.png

This is a binary file and will not be displayed.

public/sitebutton.gif

This is a binary file and will not be displayed.

public/sitebutton.png

This is a binary file and will not be displayed.

+29 -4
src/components/Base.astro
··· 1 1 --- 2 2 interface Props { 3 3 title: string; 4 + banner?: string; 4 5 graph?: { 5 6 description: string; 6 - url: string; 7 7 type?: "website" | "article"; 8 - image?: string; 9 8 }; 10 9 } 11 10 12 11 const title = "::" + Astro.props.title; 12 + const { banner = "https://entomoviscera.online/mainbanner.png" } = Astro.props; 13 13 const { graph } = Astro.props; 14 14 --- 15 15 16 16 <html lang="en"> 17 17 <head> 18 18 <title>{title}</title> 19 + <link rel="icon" type="image/png" href="/favicon.png" /> 19 20 <link rel="icon" type="image/svg+xml" href="/favicon.svg" /> 21 + <link 22 + rel="alternate" 23 + type="application/rss+xml" 24 + title="entomoviscera.online" 25 + href={new URL("rss.xml", Astro.site)} 26 + /> 20 27 <meta charset="utf-8" /> 28 + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> 21 29 <meta name="generator" content={Astro.generator} /> 22 30 { 23 31 graph && ( ··· 25 33 <meta name="description" content={graph.description} /> 26 34 <meta property="og:title" content={title} /> 27 35 <meta property="og:description" content={graph.description} /> 28 - <meta property="og:url" content={graph.url} /> 36 + <meta 37 + property="og:url" 38 + content={new URL(Astro.url.pathname.toString(), Astro.site)} 39 + /> 29 40 <meta property="og:type" content={graph.type ?? "website"} /> 30 - <meta property="og:image" content={graph.image} /> 41 + <meta property="og:image" content={banner} /> 42 + <meta property="twitter:card" content="summary_large_image" /> 43 + <meta name="twitter:title" content={title} /> 44 + <meta name="twitter:description" content={graph.description} /> 45 + <meta name="twitter:image" content={banner} /> 31 46 </Fragment> 32 47 ) 33 48 } 49 + <style is:global> 50 + * { 51 + padding: 0; 52 + margin: 0; 53 + } 54 + 55 + img { 56 + max-width: 100%; 57 + } 58 + </style> 34 59 </head> 35 60 <body> 36 61 <slot />
+57
src/components/BlogPost.astro
··· 1 + --- 2 + const { url, title, time } = Astro.props; 3 + --- 4 + 5 + <a href={url}> 6 + <div class="decorativetab"></div> 7 + <article> 8 + <h3>{title}</h3> 9 + <time class="barcodetext" datetime={time}>{time}</time> 10 + </article> 11 + </a> 12 + 13 + <style> 14 + a { 15 + display: flex; 16 + border: 10px double; 17 + text-decoration: none; 18 + margin-bottom: 13px; 19 + } 20 + 21 + article { 22 + flex: 1 1; 23 + padding: 13px 15px; 24 + overflow: hidden; 25 + } 26 + 27 + article h3 { 28 + white-space: nowrap; 29 + overflow: hidden; 30 + text-overflow: ellipsis; 31 + } 32 + 33 + time { 34 + font-weight: bold; 35 + font-size: 2rem; 36 + } 37 + 38 + .decorativetab { 39 + width: 16px; 40 + border-right: 10px double; 41 + transition: width 200ms; 42 + } 43 + 44 + a:hover { 45 + color: var(--yellow); 46 + } 47 + 48 + a:hover .decorativetab { 49 + width: 64px; 50 + } 51 + 52 + @media (prefers-reduced-motion: reduce) { 53 + .decorativetab { 54 + transition: none; 55 + } 56 + } 57 + </style>
+20
src/components/SiteButton.astro
··· 1 + --- 2 + const { url, name, filetype = ".gif" } = Astro.props; 3 + --- 4 + 5 + <a href={url}> 6 + <picture> 7 + <source 8 + srcset={`/img/sitebuttons/${name}.png`} 9 + media="(prefers-reduced-motion: reduce)" 10 + /> 11 + <img srcset={`/img/sitebuttons/${name}${filetype}`} alt={name} /> 12 + </picture> 13 + </a> 14 + 15 + <style> 16 + a { 17 + display: inline-block; 18 + margin-bottom: 6px; 19 + } 20 + </style>
+32
src/components/Toolbar.astro
··· 1 + --- 2 + const { backlink = "/home" } = Astro.props; 3 + --- 4 + 5 + <div id="toolbar" class="flex"> 6 + <a href={backlink}> 7 + <img class="center" src="/img/icons/backarrow.png" alt="return" /> 8 + </a> 9 + <a href="/home"> 10 + <img class="center" src="/img/icons/home.png" alt="home" /> 11 + </a> 12 + </div> 13 + 14 + <style> 15 + #toolbar { 16 + justify-content: space-between; 17 + position: sticky; 18 + top: 0; 19 + margin-bottom: 13px; 20 + } 21 + 22 + #toolbar a { 23 + color: var(--white); 24 + background-color: var(--black); 25 + border: 10px double; 26 + padding: 6px; 27 + } 28 + 29 + #toolbar img { 30 + display: block; 31 + } 32 + </style>
+12
src/content/blog/V03.md
··· 1 + --- 2 + title: Site update V0.3 3 + bio: Fixing some bits and pieces here and there. 4 + pub: 2025-11-28 5 + --- 6 + 7 + Not any major changes this time, mostly just making coding more managable. 8 + Fixing some bits and pieces here and there. 9 + 10 + The poweroff (link back to index) button glows now when hovered over. 11 + 12 + Added a link to my website's repository. Apparently I forgot to do that the first time. Have fun looking at jank code.
+9
src/content/blog/v01.md
··· 1 + --- 2 + title: Site update V0.1 3 + bio: Start of this website. Added blog posts. 4 + pub: 2025-10-31 5 + --- 6 + 7 + Hello world. Currently there isn't much to see here but at least now there's blog posts. Learning how to use astro. It's the framework I'm currently using to make this site. So far it's not too bad actually. 8 + 9 + God have mercy for my code is utterly garbage but at least I have the audacity to make it public.
+9
src/content/blog/v02.md
··· 1 + --- 2 + title: Site update V0.2 3 + bio: Added bookmarks page. 4 + pub: 2025-11-03 5 + --- 6 + 7 + There's now a [bookmarks](/bookmarks) page. It links to a bunch of other websites or tools that I personally find cool. Go check em out if you wanna. 8 + 9 + Oh yea, I also made a 88x31 button for my site too.
+10
src/content/bookmarks/bookmarks.md
··· 1 + --- 2 + --- 3 + 4 + - [vielle.dev](https://vielle.dev/) - Cool dev, she codes awesome stuff. Has helped quite a lot with my website too. :P 5 + - [yugoslavia.best](https://yugoslavia.best) - Click here to experience instant brain explosion. 6 + 7 + ## Resources and tools 8 + 9 + - [Marginalia Search](https://marginalia-search.com/) - Better internet search engine that doesn't shove ads down your throat, unlike google. 10 + - [DaFont](https://www.dafont.com/) - Free fonts for commercial and personal use. Make sure to check the license for each font before using.
+54
src/content/bookmarks/personalsites.ts
··· 1 + import { type bookmark } from "/content/config"; 2 + 3 + export const buttonwall: bookmark[] = [ 4 + { 5 + name: "afterlifepro.neocities.org", 6 + url: "https://afterlifepro.neocities.org/", 7 + filetype: ".gif", 8 + }, 9 + { 10 + name: "kerka.neocities.org", 11 + url: "https://kerka.neocities.org/", 12 + filetype: ".gif", 13 + }, 14 + { 15 + name: "heavenonline.xyz", 16 + url: "https://heavenonline.xyz", 17 + filetype: ".png", 18 + }, 19 + { 20 + name: "doqmeat.com", 21 + url: "https://doqmeat.com", 22 + filetype: ".png", 23 + }, 24 + { 25 + name: "corru.observer", 26 + url: "https://corru.observer", 27 + filetype: ".gif", 28 + }, 29 + { 30 + name: "pocl.vip", 31 + url: "https://pocl.vip", 32 + filetype: ".gif", 33 + }, 34 + { 35 + name: "bensect.space", 36 + url: "https://bensect.space", 37 + filetype: ".png", 38 + }, 39 + { 40 + name: "espy.world", 41 + url: "https://espy.world/", 42 + filetype: ".gif", 43 + }, 44 + { 45 + name: "megaknecht.com", 46 + url: "https://megaknecht.com/", 47 + filetype: ".gif", 48 + }, 49 + { 50 + name: "myrrh.city", 51 + url: "https://myrrh.city/", 52 + filetype: ".png", 53 + }, 54 + ];
+19
src/content/config.ts
··· 1 + import { defineCollection, z } from "astro:content"; 2 + import { glob } from "astro/loaders"; 3 + 4 + export type bookmark = { 5 + name: string; 6 + url: string; 7 + filetype?: ".gif" | ".png"; 8 + }; 9 + 10 + const blog = defineCollection({ 11 + loader: glob({ pattern: "**/*.md", base: "./src/content/blog" }), 12 + schema: z.object({ 13 + title: z.string(), 14 + bio: z.string(), 15 + pub: z.date(), 16 + }), 17 + }); 18 + 19 + export const collections = { blog };
+23
src/layouts/SinglePage.astro
··· 1 + --- 2 + import "/styles/main.css"; 3 + import Toolbar from "/components/Toolbar.astro"; 4 + 5 + const { backlink } = Astro.props; 6 + --- 7 + 8 + <Toolbar {backlink} /> 9 + <div class="wrapper bwcontainer"> 10 + <header class="bwbox center"> 11 + <slot name="header" /> 12 + </header> 13 + <main class="bwbox"> 14 + <slot /> 15 + </main> 16 + </div> 17 + 18 + <style> 19 + .wrapper { 20 + max-width: 82ch; 21 + margin: 0 auto; 22 + } 23 + </style>
+15
src/pages/404.astro
··· 1 + --- 2 + import Base from "/components/Base.astro"; 3 + import "/styles/main.css"; 4 + import "/styles/splashscreen.css"; 5 + --- 6 + 7 + <Base title="404"> 8 + <div class="bwcontainer"> 9 + <main class="bwbox center"> 10 + <h1>ERROR_404</h1> 11 + <p>This page doesn't exist.</p> 12 + <p><a href="/home">Return home</a></p> 13 + </main> 14 + </div> 15 + </Base>
+59
src/pages/blog/[slug].astro
··· 1 + --- 2 + import { getCollection, render } from "astro:content"; 3 + import Base from "/components/Base.astro"; 4 + import Toolbar from "/components/Toolbar.astro"; 5 + import "/styles/main.css"; 6 + 7 + export async function getStaticPaths() { 8 + const posts = await getCollection("blog"); 9 + return posts.map((post) => ({ 10 + params: { slug: post.id }, 11 + props: { post }, 12 + })); 13 + } 14 + 15 + const { post } = Astro.props; 16 + const { Content } = await render(post); 17 + --- 18 + 19 + <Base 20 + title={`LOG_${post.data.pub.getFullYear()}-${post.data.pub.getMonth() + 1}-${post.data.pub.getDate()} | ${post.data.title}`} 21 + graph={{ 22 + description: post.data.bio, 23 + type: "article", 24 + }} 25 + > 26 + <Toolbar backlink="/blog" /> 27 + <article class="bwcontainer"> 28 + <header class="bwbox center"> 29 + <h1>{post.data.title}</h1> 30 + <time 31 + class="barcodetext" 32 + datetime={`${post.data.pub.getFullYear()}-${post.data.pub.getMonth() + 1}-${post.data.pub.getDate()}`} 33 + > 34 + { 35 + `${post.data.pub.getFullYear()}-${post.data.pub.getMonth() + 1}-${post.data.pub.getDate()}` 36 + } 37 + </time> 38 + </header> 39 + <div class="bwbox"> 40 + <Content /> 41 + </div> 42 + </article> 43 + </Base> 44 + 45 + <style> 46 + h1 { 47 + margin-bottom: 13px; 48 + } 49 + 50 + time { 51 + font-weight: bold; 52 + font-size: 2.5rem; 53 + } 54 + 55 + article { 56 + max-width: 82ch; 57 + margin: 0 auto; 58 + } 59 + </style>
+33
src/pages/blog/index.astro
··· 1 + --- 2 + import { getCollection } from "astro:content"; 3 + import Base from "/components/Base.astro"; 4 + import SinglePage from "/layouts/SinglePage.astro"; 5 + import BlogPost from "/components/BlogPost.astro"; 6 + 7 + const post = await getCollection("blog").then((x) => 8 + x.sort( 9 + (a, b) => 10 + (b.data.pub as unknown as number) - (a.data.pub as unknown as number), 11 + ), 12 + ); 13 + --- 14 + 15 + <Base 16 + title="BLOG" 17 + graph={{ 18 + description: "Blog posts and such.", 19 + }} 20 + > 21 + <SinglePage> 22 + <h1 slot="header">Blog posts</h1> 23 + { 24 + post.map((post) => ( 25 + <BlogPost 26 + url={`/blog/${post.id}`} 27 + title={post.data.title} 28 + time={`${post.data.pub.getFullYear()}-${post.data.pub.getMonth() + 1}-${post.data.pub.getDate()}`} 29 + /> 30 + )) 31 + } 32 + </SinglePage> 33 + </Base>
+41
src/pages/bookmarks.astro
··· 1 + --- 2 + import Base from "/components/Base.astro"; 3 + import SinglePage from "/layouts/SinglePage.astro"; 4 + import SiteButton from "/components/SiteButton.astro"; 5 + import { buttonwall } from "/content/bookmarks/personalsites.ts"; 6 + import { Content as OtherBookmarks } from "/content/bookmarks/bookmarks.md"; 7 + --- 8 + 9 + <Base 10 + title="BOOKMARKS" 11 + graph={{ 12 + description: "Links to other cool sites.", 13 + }} 14 + > 15 + <SinglePage> 16 + <h1 slot="header">Bookmarks</h1> 17 + <img src="/sitebutton.gif" alt="site button animated" /> 18 + <img src="/sitebutton.png" alt="site button static" class="hidebutton" /> 19 + <p>Button above you can use to link to my website.</p> 20 + <p> 21 + If you are here and you don't want your site listed please let me know to 22 + remove it. Contact at 23 + <a href="mailto:entomoviscera@gmail.com">entomoviscera@gmail.com</a>. 24 + </p> 25 + <h2>Cool zone</h2> 26 + { 27 + buttonwall.map((x) => ( 28 + <SiteButton name={x.name} url={x.url} filetype={x.filetype} /> 29 + )) 30 + } 31 + <OtherBookmarks /> 32 + </SinglePage> 33 + </Base> 34 + 35 + <style> 36 + @media (prefers-reduced-motion: reduce) { 37 + .hidebutton { 38 + display: none; 39 + } 40 + } 41 + </style>
+110
src/pages/home.astro
··· 1 + --- 2 + import { getCollection } from "astro:content"; 3 + import Base from "/components/Base.astro"; 4 + import BlogPost from "/components/BlogPost.astro"; 5 + import "/styles/main.css"; 6 + 7 + const post = await getCollection("blog").then((x) => 8 + x.sort( 9 + (a, b) => 10 + (b.data.pub as unknown as number) - (a.data.pub as unknown as number), 11 + ), 12 + ); 13 + --- 14 + 15 + <Base 16 + title="HOME" 17 + graph={{ 18 + description: "WARNING: Bug inside.", 19 + }} 20 + > 21 + <div class="bwcontainer wrapper"> 22 + <header class="bwbox center flex"> 23 + <h1 class="barcodetext">ENTOMOVISCERA.ONLINE</h1> 24 + <a href="/" class="glow"> 25 + <img src="/img/icons/poweroff.png" alt="return to landing page" /> 26 + </a> 27 + </header> 28 + <nav class="bwbox flex flexcenter center"> 29 + <a href="/bookmarks" class="button">::BOOKMARKS::</a> 30 + </nav> 31 + <main class="grid"> 32 + <div class="bwbox flex flexcenter hidedeco"> 33 + <img src="/img/sprites/sunfl1.png" alt="" /> 34 + </div> 35 + <div id="blog" class="bwbox"> 36 + <h2 class="center">Latest blog post</h2> 37 + <BlogPost 38 + url={`/blog/${post[0].id}`} 39 + title={post[0].data.title} 40 + time={`${post[0].data.pub.getFullYear()}-${post[0].data.pub.getMonth() + 1}-${post[0].data.pub.getDate()}`} 41 + /> 42 + <div class="blogbuttons center flex flexcenter"> 43 + <a href="/blog" class="button">::ALL_POSTS::</a> 44 + <a href="/rss.xml" class="button">::RSS_FEED::</a> 45 + </div> 46 + </div> 47 + </main> 48 + </div> 49 + </Base> 50 + 51 + <style> 52 + header { 53 + justify-content: space-between; 54 + align-items: center; 55 + gap: 8px; 56 + } 57 + 58 + nav { 59 + gap: 13px 15px; 60 + } 61 + 62 + nav a, 63 + .blogbuttons a { 64 + flex: 1 1; 65 + } 66 + 67 + #blog { 68 + grid-column: span 3; 69 + } 70 + 71 + .blogbuttons { 72 + gap: 8px; 73 + } 74 + 75 + .wrapper { 76 + max-width: 100ch; 77 + margin: 0 auto; 78 + } 79 + 80 + .grid { 81 + display: grid; 82 + grid-template-columns: repeat(4, 1fr); 83 + } 84 + 85 + .glow { 86 + filter: 0; 87 + } 88 + 89 + .glow:hover { 90 + filter: drop-shadow(0 0 4px var(--white)); 91 + } 92 + 93 + @media (max-width: 86ch) { 94 + header { 95 + justify-content: center; 96 + } 97 + 98 + header h1 { 99 + flex: 1 1 100%; 100 + } 101 + 102 + .grid { 103 + grid-template-columns: 1fr; 104 + } 105 + 106 + .hidedeco { 107 + display: none; 108 + } 109 + } 110 + </style>
+66 -4
src/pages/index.astro
··· 1 1 --- 2 - import Base from "../components/Base.astro"; 2 + import Base from "/components/Base.astro"; 3 + import "/styles/main.css"; 4 + import "/styles/splashscreen.css"; 3 5 --- 4 6 5 7 <Base 6 - title="HOME" 8 + title="ENTRANCE" 7 9 graph={{ 8 10 description: "WARNING: Bug inside.", 9 - url: "https://entomoviscera.online/", 10 11 }} 11 - ></Base> 12 + > 13 + <a href="/home" id="welcome"> 14 + <img src="/img/sprites/door.png" id="door" alt="" /> 15 + <img src="/img/sprites/doorbg.png" id="doorbg" alt="entrance" /> 16 + </a> 17 + <div class="bwcontainer"> 18 + <div class="bwbox"> 19 + <ul> 20 + <li> 21 + <a href="https://bsky.app/profile/entomoviscera.online">BLUESKY</a> 22 + </li> 23 + <li> 24 + <a 25 + href="https://tangled.org/did:plc:y3zqaodyl6y47l4dptwyhu5n?tab=overview" 26 + >TANGLED</a 27 + > 28 + </li> 29 + <li> 30 + <a href="https://entomoviscera.tumblr.com/">TUMBLR</a> 31 + </li> 32 + <li> 33 + <a href="https://entomoviscera.newgrounds.com/">NEWGROUNDS</a> 34 + </li> 35 + <li> 36 + <a href="https://www.youtube.com/@entomoviscera">YOUTUBE</a> 37 + </li> 38 + </ul> 39 + </div> 40 + <div class="bwbox"> 41 + <a href="mailto:entomoviscera@gmail.com">entomoviscera@gmail.com</a> 42 + </div> 43 + <div class="bwbox"> 44 + <a href="https://tangled.org/entomoviscera.online/personal-site" 45 + >SITE REPOSITORY</a 46 + > 47 + </div> 48 + </div> 49 + </Base> 50 + 51 + <style> 52 + #welcome { 53 + position: relative; 54 + margin: 15px 20px; 55 + } 56 + 57 + #door { 58 + position: absolute; 59 + transform: 0; 60 + transform-origin: 10% center; 61 + transition: 600ms; 62 + } 63 + 64 + #welcome:hover #door { 65 + transform: rotateY(60deg) skewY(16deg); 66 + } 67 + 68 + @media (prefers-reduced-motion: reduce) { 69 + #door { 70 + transition: none; 71 + } 72 + } 73 + </style>
+17
src/pages/rss.xml.js
··· 1 + import rss from "@astrojs/rss"; 2 + import { getCollection } from "astro:content"; 3 + 4 + export async function GET(context) { 5 + const blog = await getCollection("blog"); 6 + return rss({ 7 + title: "ENTOMOVISCERA.ONLINE", 8 + description: "WARNING: Bug inside.", 9 + site: context.site, 10 + items: blog.map((post) => ({ 11 + title: post.data.title, 12 + description: post.data.bio, 13 + pubDate: post.data.pub, 14 + link: `/blog/${post.id}/`, 15 + })), 16 + }); 17 + }
+103
src/styles/main.css
··· 1 + :root { 2 + font-family: "Courier New", Courier, monospace; 3 + --black: #000; 4 + --grey: #4e505c; 5 + --orange: #fc9156; 6 + --yellow: #ffe75a; 7 + --white: #eceee1; 8 + } 9 + 10 + body { 11 + background-color: var(--black); 12 + } 13 + 14 + ul { 15 + list-style: ":: "; 16 + padding-left: 3ch; 17 + } 18 + 19 + h1 { 20 + font-size: clamp(1.5rem, 1.8vw, 2rem); 21 + } 22 + 23 + h2, 24 + h3 { 25 + margin-bottom: 13px; 26 + } 27 + 28 + h2 { 29 + font-size: 1.5rem; 30 + } 31 + 32 + h3 { 33 + font-size: 1.25rem; 34 + } 35 + 36 + p, 37 + li { 38 + font-size: 1rem; 39 + line-height: 1.5rem; 40 + } 41 + 42 + p, 43 + ul { 44 + margin: 13px 0; 45 + } 46 + 47 + a { 48 + font-size: 1rem; 49 + color: var(--yellow); 50 + text-decoration: underline dashed; 51 + text-underline-offset: 4px; 52 + } 53 + 54 + a:hover { 55 + color: var(--orange); 56 + } 57 + 58 + .bwcontainer { 59 + background-color: var(--black); 60 + border: 10px double var(--white); 61 + } 62 + 63 + .bwbox { 64 + color: var(--white); 65 + background-color: var(--black); 66 + border: 10px double var(--white); 67 + padding: 13px 15px; 68 + } 69 + 70 + .center { 71 + text-align: center; 72 + vertical-align: middle; 73 + } 74 + 75 + .flex { 76 + display: flex; 77 + flex-wrap: wrap; 78 + } 79 + 80 + .flexcenter { 81 + justify-content: center; 82 + align-items: center; 83 + } 84 + 85 + .barcodetext { 86 + font-family: barcodetext; 87 + } 88 + 89 + .button { 90 + display: inline-block; 91 + color: var(--yellow); 92 + border: 10px double; 93 + padding: 4px 6px; 94 + } 95 + 96 + a.button { 97 + text-decoration: none; 98 + } 99 + 100 + @font-face { 101 + font-family: barcodetext; 102 + src: url("/fonts/LibreBarcode39ExtendedText-Regular.woff"); 103 + }
+10
src/styles/splashscreen.css
··· 1 + body { 2 + display: flex; 3 + flex-wrap: wrap; 4 + min-height: calc(100svh - 30px); 5 + justify-content: center; 6 + align-content: center; 7 + align-items: center; 8 + padding: 15px; 9 + gap: 15px; 10 + }
+6 -1
tsconfig.json
··· 1 1 { 2 2 "extends": "astro/tsconfigs/strict", 3 3 "include": [".astro/types.d.ts", "**/*"], 4 - "exclude": ["dist"] 4 + "exclude": ["dist"], 5 + "compilerOptions": { 6 + "paths": { 7 + "/*": ["./src/*"] 8 + } 9 + } 5 10 }