+3
-1
astro.config.mjs
+3
-1
astro.config.mjs
+343
-109
package-lock.json
+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
+2
-1
package.json
public/favicon.png
public/favicon.png
This is a binary file and will not be displayed.
+12
-3
src/components/Base.astro
+12
-3
src/components/Base.astro
···
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" />
21
28
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
22
29
<meta name="generator" content={Astro.generator} />
···
28
35
<meta property="og:description" content={graph.description} />
29
36
<meta
30
37
property="og:url"
31
-
content={
32
-
"https://entomoviscera.online" + Astro.url.pathname.toString()
33
-
}
38
+
content={new URL(Astro.url.pathname.toString(), Astro.site)}
34
39
/>
35
40
<meta property="og:type" content={graph.type ?? "website"} />
36
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} />
37
46
</Fragment>
38
47
)
39
48
}
+23
-5
src/components/BlogPost.astro
+23
-5
src/components/BlogPost.astro
···
3
3
---
4
4
5
5
<a href={url}>
6
+
<div class="decorativetab"></div>
6
7
<article>
7
8
<h3>{title}</h3>
8
9
<time class="barcodetext" datetime={time}>{time}</time>
···
11
12
12
13
<style>
13
14
a {
14
-
display: block;
15
+
display: flex;
15
16
border: 10px double;
16
17
text-decoration: none;
17
18
margin-bottom: 13px;
18
-
}
19
-
20
-
a:last-child {
21
-
margin-bottom: 0;
22
19
}
23
20
24
21
article {
22
+
flex: 1 1;
25
23
padding: 13px 15px;
26
24
overflow: hidden;
27
25
}
···
35
33
time {
36
34
font-weight: bold;
37
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
+
}
38
56
}
39
57
</style>
+20
src/components/SiteButton.astro
+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>
+12
src/content/blog/V03.md
+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.
+1
-1
src/content/blog/v01.md
+1
-1
src/content/blog/v01.md
+9
src/content/blog/v02.md
+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
+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
+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
+
];
+6
src/content/config.ts
+6
src/content/config.ts
···
1
1
import { defineCollection, z } from "astro:content";
2
2
import { glob } from "astro/loaders";
3
3
4
+
export type bookmark = {
5
+
name: string;
6
+
url: string;
7
+
filetype?: ".gif" | ".png";
8
+
};
9
+
4
10
const blog = defineCollection({
5
11
loader: glob({ pattern: "**/*.md", base: "./src/content/blog" }),
6
12
schema: z.object({
+3
-3
src/layouts/SinglePage.astro
+3
-3
src/layouts/SinglePage.astro
···
1
1
---
2
-
import "../styles/main.css";
3
-
import Toolbar from "../components/Toolbar.astro";
2
+
import "/styles/main.css";
3
+
import Toolbar from "/components/Toolbar.astro";
4
4
5
5
const { backlink } = Astro.props;
6
6
---
7
7
8
8
<Toolbar {backlink} />
9
9
<div class="wrapper bwcontainer">
10
-
<header class="bwbox">
10
+
<header class="bwbox center">
11
11
<slot name="header" />
12
12
</header>
13
13
<main class="bwbox">
+3
-3
src/pages/404.astro
+3
-3
src/pages/404.astro
+3
-3
src/pages/blog/[slug].astro
+3
-3
src/pages/blog/[slug].astro
···
1
1
---
2
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";
3
+
import Base from "/components/Base.astro";
4
+
import Toolbar from "/components/Toolbar.astro";
5
+
import "/styles/main.css";
6
6
7
7
export async function getStaticPaths() {
8
8
const posts = await getCollection("blog");
+33
src/pages/blog/index.astro
+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>
-33
src/pages/blog.astro
-33
src/pages/blog.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" class="center">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
+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>
+34
-7
src/pages/home.astro
+34
-7
src/pages/home.astro
···
1
1
---
2
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";
3
+
import Base from "/components/Base.astro";
4
+
import BlogPost from "/components/BlogPost.astro";
5
+
import "/styles/main.css";
6
6
7
7
const post = await getCollection("blog").then((x) =>
8
8
x.sort(
···
21
21
<div class="bwcontainer wrapper">
22
22
<header class="bwbox center flex">
23
23
<h1 class="barcodetext">ENTOMOVISCERA.ONLINE</h1>
24
-
<a href="/">
24
+
<a href="/" class="glow">
25
25
<img src="/img/icons/poweroff.png" alt="return to landing page" />
26
26
</a>
27
27
</header>
28
+
<nav class="bwbox flex flexcenter center">
29
+
<a href="/bookmarks" class="button">::BOOKMARKS::</a>
30
+
</nav>
28
31
<main class="grid">
29
-
<div class="bwbox center hidedeco">
32
+
<div class="bwbox flex flexcenter hidedeco">
30
33
<img src="/img/sprites/sunfl1.png" alt="" />
31
34
</div>
32
35
<div id="blog" class="bwbox">
33
-
<h2>Latest blog post</h2>
36
+
<h2 class="center">Latest blog post</h2>
34
37
<BlogPost
35
38
url={`/blog/${post[0].id}`}
36
39
title={post[0].data.title}
37
40
time={`${post[0].data.pub.getFullYear()}-${post[0].data.pub.getMonth() + 1}-${post[0].data.pub.getDate()}`}
38
41
/>
39
-
<a href="/blog">View all posts</a>
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>
40
46
</div>
41
47
</main>
42
48
</div>
···
49
55
gap: 8px;
50
56
}
51
57
58
+
nav {
59
+
gap: 13px 15px;
60
+
}
61
+
62
+
nav a,
63
+
.blogbuttons a {
64
+
flex: 1 1;
65
+
}
66
+
52
67
#blog {
53
68
grid-column: span 3;
54
69
}
55
70
71
+
.blogbuttons {
72
+
gap: 8px;
73
+
}
74
+
56
75
.wrapper {
57
76
max-width: 100ch;
58
77
margin: 0 auto;
···
61
80
.grid {
62
81
display: grid;
63
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));
64
91
}
65
92
66
93
@media (max-width: 86ch) {
+15
-4
src/pages/index.astro
+15
-4
src/pages/index.astro
···
1
1
---
2
-
import Base from "../components/Base.astro";
3
-
import "../styles/main.css";
4
-
import "../styles/splashscreen.css";
2
+
import Base from "/components/Base.astro";
3
+
import "/styles/main.css";
4
+
import "/styles/splashscreen.css";
5
5
---
6
6
7
7
<Base
···
21
21
<a href="https://bsky.app/profile/entomoviscera.online">BLUESKY</a>
22
22
</li>
23
23
<li>
24
+
<a
25
+
href="https://tangled.org/did:plc:y3zqaodyl6y47l4dptwyhu5n?tab=overview"
26
+
>TANGLED</a
27
+
>
28
+
</li>
29
+
<li>
24
30
<a href="https://entomoviscera.tumblr.com/">TUMBLR</a>
25
31
</li>
26
32
<li>
···
33
39
</div>
34
40
<div class="bwbox">
35
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
+
>
36
47
</div>
37
48
</div>
38
49
</Base>
···
56
67
57
68
@media (prefers-reduced-motion: reduce) {
58
69
#door {
59
-
transition: 0;
70
+
transition: none;
60
71
}
61
72
}
62
73
</style>
+17
src/pages/rss.xml.js
+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
+
}
+18
-1
src/styles/main.css
+18
-1
src/styles/main.css
···
39
39
line-height: 1.5rem;
40
40
}
41
41
42
-
p {
42
+
p,
43
+
ul {
43
44
margin: 13px 0;
44
45
}
45
46
···
76
77
flex-wrap: wrap;
77
78
}
78
79
80
+
.flexcenter {
81
+
justify-content: center;
82
+
align-items: center;
83
+
}
84
+
79
85
.barcodetext {
80
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;
81
98
}
82
99
83
100
@font-face {