+3
-1
astro.config.mjs
+3
-1
astro.config.mjs
+343
-109
package-lock.json
+343
-109
package-lock.json
···
8
"name": "personal-site",
9
"version": "0.0.1",
10
"dependencies": {
11
"astro": "^5.15.1"
12
},
13
"devDependencies": {
···
22
"license": "MIT"
23
},
24
"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==",
28
"license": "MIT"
29
},
30
"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==",
34
"license": "MIT",
35
"dependencies": {
36
-
"@astrojs/internal-helpers": "0.7.4",
37
"@astrojs/prism": "3.3.0",
38
"github-slugger": "^2.0.0",
39
"hast-util-from-html": "^2.0.3",
···
52
"unified": "^11.0.5",
53
"unist-util-remove-position": "^5.0.0",
54
"unist-util-visit": "^5.0.0",
55
-
"unist-util-visit-parents": "^6.0.1",
56
"vfile": "^6.0.3"
57
}
58
},
···
68
"node": "18.20.8 || ^20.3.0 || >=22.0.0"
69
}
70
},
71
"node_modules/@astrojs/telemetry": {
72
"version": "3.3.0",
73
"resolved": "https://registry.npmjs.org/@astrojs/telemetry/-/telemetry-3.3.0.tgz",
···
133
}
134
},
135
"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==",
139
"license": "MIT",
140
"dependencies": {
141
"fontkit": "^2.0.2"
···
1325
]
1326
},
1327
"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==",
1331
"license": "MIT",
1332
"dependencies": {
1333
-
"@shikijs/types": "3.14.0",
1334
"@shikijs/vscode-textmate": "^10.0.2",
1335
"@types/hast": "^3.0.4",
1336
"hast-util-to-html": "^9.0.5"
1337
}
1338
},
1339
"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==",
1343
"license": "MIT",
1344
"dependencies": {
1345
-
"@shikijs/types": "3.14.0",
1346
"@shikijs/vscode-textmate": "^10.0.2",
1347
-
"oniguruma-to-es": "^4.3.3"
1348
}
1349
},
1350
"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==",
1354
"license": "MIT",
1355
"dependencies": {
1356
-
"@shikijs/types": "3.14.0",
1357
"@shikijs/vscode-textmate": "^10.0.2"
1358
}
1359
},
1360
"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==",
1364
"license": "MIT",
1365
"dependencies": {
1366
-
"@shikijs/types": "3.14.0"
1367
}
1368
},
1369
"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==",
1373
"license": "MIT",
1374
"dependencies": {
1375
-
"@shikijs/types": "3.14.0"
1376
}
1377
},
1378
"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==",
1382
"license": "MIT",
1383
"dependencies": {
1384
"@shikijs/vscode-textmate": "^10.0.2",
···
1615
}
1616
},
1617
"node_modules/astro": {
1618
-
"version": "5.15.1",
1619
-
"resolved": "https://registry.npmjs.org/astro/-/astro-5.15.1.tgz",
1620
-
"integrity": "sha512-VM679M1qxOjGo6q3vKYDNDddkALGgMopG93IwbEXd3Buc2xVLuuPj4HNziNugSbPQx5S6UReMp5uzw10EJN81A==",
1621
"license": "MIT",
1622
"dependencies": {
1623
-
"@astrojs/compiler": "^2.12.2",
1624
-
"@astrojs/internal-helpers": "0.7.4",
1625
-
"@astrojs/markdown-remark": "6.3.8",
1626
"@astrojs/telemetry": "3.3.0",
1627
-
"@capsizecss/unpack": "^3.0.0",
1628
"@oslojs/encoding": "^1.1.0",
1629
-
"@rollup/pluginutils": "^5.2.0",
1630
"acorn": "^8.15.0",
1631
"aria-query": "^5.3.2",
1632
"axobject-query": "^4.1.0",
1633
"boxen": "8.0.1",
1634
-
"ci-info": "^4.3.0",
1635
"clsx": "^2.1.1",
1636
"common-ancestor-path": "^1.0.1",
1637
"cookie": "^1.0.2",
1638
"cssesc": "^3.0.0",
1639
-
"debug": "^4.4.1",
1640
"deterministic-object-hash": "^2.0.2",
1641
-
"devalue": "^5.3.2",
1642
"diff": "^5.2.0",
1643
"dlv": "^1.1.3",
1644
"dset": "^3.1.4",
···
1646
"esbuild": "^0.25.0",
1647
"estree-walker": "^3.0.3",
1648
"flattie": "^1.1.1",
1649
-
"fontace": "~0.3.0",
1650
"github-slugger": "^2.0.0",
1651
"html-escaper": "3.0.3",
1652
"http-cache-semantics": "^4.2.0",
1653
"import-meta-resolve": "^4.2.0",
1654
-
"js-yaml": "^4.1.0",
1655
-
"magic-string": "^0.30.18",
1656
-
"magicast": "^0.3.5",
1657
"mrmime": "^2.0.1",
1658
"neotraverse": "^0.6.18",
1659
"p-limit": "^6.2.0",
1660
-
"p-queue": "^8.1.0",
1661
-
"package-manager-detector": "^1.3.0",
1662
-
"picocolors": "^1.1.1",
1663
"picomatch": "^4.0.3",
1664
"prompts": "^2.4.2",
1665
"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",
1671
"tsconfck": "^3.1.6",
1672
"ultrahtml": "^1.6.0",
1673
"unifont": "~0.6.0",
1674
"unist-util-visit": "^5.0.0",
1675
-
"unstorage": "^1.17.0",
1676
"vfile": "^6.0.3",
1677
-
"vite": "^6.3.6",
1678
"vitefu": "^1.1.1",
1679
"xxhash-wasm": "^1.1.0",
1680
"yargs-parser": "^21.1.1",
1681
"yocto-spinner": "^0.2.3",
1682
"zod": "^3.25.76",
1683
-
"zod-to-json-schema": "^3.24.6",
1684
"zod-to-ts": "^1.2.0"
1685
},
1686
"bin": {
···
1743
}
1744
],
1745
"license": "MIT"
1746
},
1747
"node_modules/boxen": {
1748
"version": "8.0.1",
···
1909
"url": "https://github.com/sponsors/wooorm"
1910
}
1911
},
1912
"node_modules/common-ancestor-path": {
1913
"version": "1.0.1",
1914
"resolved": "https://registry.npmjs.org/common-ancestor-path/-/common-ancestor-path-1.0.1.tgz",
···
1939
"uncrypto": "^0.1.3"
1940
}
1941
},
1942
"node_modules/css-tree": {
1943
"version": "3.1.0",
1944
"resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.1.0.tgz",
···
1952
"node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0"
1953
}
1954
},
1955
"node_modules/cssesc": {
1956
"version": "3.0.0",
1957
"resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
···
1964
"node": ">=4"
1965
}
1966
},
1967
"node_modules/debug": {
1968
"version": "4.4.3",
1969
"resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz",
···
2038
}
2039
},
2040
"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==",
2044
"license": "MIT"
2045
},
2046
"node_modules/devlop": {
···
2077
"integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==",
2078
"license": "MIT"
2079
},
2080
"node_modules/dset": {
2081
"version": "3.1.4",
2082
"resolved": "https://registry.npmjs.org/dset/-/dset-3.1.4.tgz",
···
2189
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
2190
"integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
2191
"license": "MIT"
2192
},
2193
"node_modules/fdir": {
2194
"version": "6.5.0",
···
2590
}
2591
},
2592
"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==",
2596
"license": "MIT",
2597
"dependencies": {
2598
"argparse": "^2.0.1"
···
2636
}
2637
},
2638
"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==",
2642
"license": "MIT",
2643
"dependencies": {
2644
-
"@babel/parser": "^7.25.4",
2645
-
"@babel/types": "^7.25.4",
2646
-
"source-map-js": "^1.2.0"
2647
}
2648
},
2649
"node_modules/markdown-table": {
···
3526
"node": ">=0.10.0"
3527
}
3528
},
3529
"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==",
3533
"license": "MIT",
3534
"dependencies": {
3535
-
"destr": "^2.0.3",
3536
-
"node-fetch-native": "^1.6.4",
3537
-
"ufo": "^1.5.4"
3538
}
3539
},
3540
"node_modules/ohash": {
···
3550
"license": "MIT"
3551
},
3552
"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==",
3556
"license": "MIT",
3557
"dependencies": {
3558
"oniguruma-parser": "^0.12.1",
···
3644
"funding": {
3645
"url": "https://github.com/inikulin/parse5?sponsor=1"
3646
}
3647
},
3648
"node_modules/picocolors": {
3649
"version": "1.1.1",
···
4011
"resolved": "https://registry.npmjs.org/rollup/-/rollup-4.52.5.tgz",
4012
"integrity": "sha512-3GuObel8h7Kqdjt0gxkEzaifHTqLVW56Y/bjN7PSQtkKr0w3V/QYSdt6QWYtd7A1xUtYQigtdUfgj1RvWVtorw==",
4013
"license": "MIT",
4014
-
"peer": true,
4015
"dependencies": {
4016
"@types/estree": "1.0.8"
4017
},
···
4065
"suf-log": "^2.5.3"
4066
}
4067
},
4068
"node_modules/semver": {
4069
"version": "7.7.3",
4070
"resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz",
···
4121
}
4122
},
4123
"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==",
4127
"license": "MIT",
4128
"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",
4135
"@shikijs/vscode-textmate": "^10.0.2",
4136
"@types/hast": "^3.0.4"
4137
}
···
4143
"license": "MIT"
4144
},
4145
"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==",
4149
"license": "BSD-3-Clause",
4150
"engines": {
4151
"node": ">= 18"
···
4219
"url": "https://github.com/chalk/strip-ansi?sponsor=1"
4220
}
4221
},
4222
"node_modules/suf-log": {
4223
"version": "2.5.3",
4224
"resolved": "https://registry.npmjs.org/suf-log/-/suf-log-2.5.3.tgz",
···
4229
"s.color": "0.0.15"
4230
}
4231
},
4232
"node_modules/tiny-inflate": {
4233
"version": "1.0.3",
4234
"resolved": "https://registry.npmjs.org/tiny-inflate/-/tiny-inflate-1.0.3.tgz",
···
4236
"license": "MIT"
4237
},
4238
"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"
4243
},
4244
"node_modules/tinyglobby": {
4245
"version": "0.2.15",
···
4527
}
4528
},
4529
"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==",
4533
"license": "MIT",
4534
"dependencies": {
4535
"anymatch": "^3.1.3",
···
4538
"h3": "^1.15.4",
4539
"lru-cache": "^10.4.3",
4540
"node-fetch-native": "^1.6.7",
4541
-
"ofetch": "^1.4.1",
4542
"ufo": "^1.6.1"
4543
},
4544
"peerDependencies": {
···
4669
"resolved": "https://registry.npmjs.org/vite/-/vite-6.4.1.tgz",
4670
"integrity": "sha512-+Oxm7q9hDoLMyJOYfUYBuHQo+dkAloi33apOPP56pzj+vsdJDzr+j1NISE5pyaAuKL4A3UD34qd0lx5+kfKp2g==",
4671
"license": "MIT",
4672
-
"peer": true,
4673
"dependencies": {
4674
"esbuild": "^0.25.0",
4675
"fdir": "^6.4.4",
···
4868
"resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz",
4869
"integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==",
4870
"license": "MIT",
4871
-
"peer": true,
4872
"funding": {
4873
"url": "https://github.com/sponsors/colinhacks"
4874
}
4875
},
4876
"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==",
4880
"license": "ISC",
4881
"peerDependencies": {
4882
-
"zod": "^3.24.1"
4883
}
4884
},
4885
"node_modules/zod-to-ts": {
···
8
"name": "personal-site",
9
"version": "0.0.1",
10
"dependencies": {
11
+
"@astrojs/rss": "^4.0.13",
12
"astro": "^5.15.1"
13
},
14
"devDependencies": {
···
23
"license": "MIT"
24
},
25
"node_modules/@astrojs/internal-helpers": {
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==",
29
"license": "MIT"
30
},
31
"node_modules/@astrojs/markdown-remark": {
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==",
35
"license": "MIT",
36
"dependencies": {
37
+
"@astrojs/internal-helpers": "0.7.5",
38
"@astrojs/prism": "3.3.0",
39
"github-slugger": "^2.0.0",
40
"hast-util-from-html": "^2.0.3",
···
53
"unified": "^11.0.5",
54
"unist-util-remove-position": "^5.0.0",
55
"unist-util-visit": "^5.0.0",
56
+
"unist-util-visit-parents": "^6.0.2",
57
"vfile": "^6.0.3"
58
}
59
},
···
69
"node": "18.20.8 || ^20.3.0 || >=22.0.0"
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
+
},
82
"node_modules/@astrojs/telemetry": {
83
"version": "3.3.0",
84
"resolved": "https://registry.npmjs.org/@astrojs/telemetry/-/telemetry-3.3.0.tgz",
···
144
}
145
},
146
"node_modules/@capsizecss/unpack": {
147
+
"version": "3.0.1",
148
+
"resolved": "https://registry.npmjs.org/@capsizecss/unpack/-/unpack-3.0.1.tgz",
149
+
"integrity": "sha512-8XqW8xGn++Eqqbz3e9wKuK7mxryeRjs4LOHLxbh2lwKeSbuNR4NFifDZT4KzvjU6HMOPbiNTsWpniK5EJfTWkg==",
150
"license": "MIT",
151
"dependencies": {
152
"fontkit": "^2.0.2"
···
1336
]
1337
},
1338
"node_modules/@shikijs/core": {
1339
+
"version": "3.17.0",
1340
+
"resolved": "https://registry.npmjs.org/@shikijs/core/-/core-3.17.0.tgz",
1341
+
"integrity": "sha512-/HjeOnbc62C+n33QFNFrAhUlIADKwfuoS50Ht0pxujxP4QjZAlFp5Q+OkDo531SCTzivx5T18khwyBdKoPdkuw==",
1342
"license": "MIT",
1343
"dependencies": {
1344
+
"@shikijs/types": "3.17.0",
1345
"@shikijs/vscode-textmate": "^10.0.2",
1346
"@types/hast": "^3.0.4",
1347
"hast-util-to-html": "^9.0.5"
1348
}
1349
},
1350
"node_modules/@shikijs/engine-javascript": {
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==",
1354
"license": "MIT",
1355
"dependencies": {
1356
+
"@shikijs/types": "3.17.0",
1357
"@shikijs/vscode-textmate": "^10.0.2",
1358
+
"oniguruma-to-es": "^4.3.4"
1359
}
1360
},
1361
"node_modules/@shikijs/engine-oniguruma": {
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==",
1365
"license": "MIT",
1366
"dependencies": {
1367
+
"@shikijs/types": "3.17.0",
1368
"@shikijs/vscode-textmate": "^10.0.2"
1369
}
1370
},
1371
"node_modules/@shikijs/langs": {
1372
+
"version": "3.17.0",
1373
+
"resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-3.17.0.tgz",
1374
+
"integrity": "sha512-icmur2n5Ojb+HAiQu6NEcIIJ8oWDFGGEpiqSCe43539Sabpx7Y829WR3QuUW2zjTM4l6V8Sazgb3rrHO2orEAw==",
1375
"license": "MIT",
1376
"dependencies": {
1377
+
"@shikijs/types": "3.17.0"
1378
}
1379
},
1380
"node_modules/@shikijs/themes": {
1381
+
"version": "3.17.0",
1382
+
"resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-3.17.0.tgz",
1383
+
"integrity": "sha512-/xEizMHLBmMHwtx4JuOkRf3zwhWD2bmG5BRr0IPjpcWpaq4C3mYEuTk/USAEglN0qPrTwEHwKVpSu/y2jhferA==",
1384
"license": "MIT",
1385
"dependencies": {
1386
+
"@shikijs/types": "3.17.0"
1387
}
1388
},
1389
"node_modules/@shikijs/types": {
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==",
1393
"license": "MIT",
1394
"dependencies": {
1395
"@shikijs/vscode-textmate": "^10.0.2",
···
1626
}
1627
},
1628
"node_modules/astro": {
1629
+
"version": "5.16.2",
1630
+
"resolved": "https://registry.npmjs.org/astro/-/astro-5.16.2.tgz",
1631
+
"integrity": "sha512-NFXqhB1UgBvleF5rLZ7a31Qzprf1lSch+k8o2XTvsw1d97gxGrjVVeWa8AnZUFtirz84YPW6+5NbLVNzS2y+uQ==",
1632
"license": "MIT",
1633
"dependencies": {
1634
+
"@astrojs/compiler": "^2.13.0",
1635
+
"@astrojs/internal-helpers": "0.7.5",
1636
+
"@astrojs/markdown-remark": "6.3.9",
1637
"@astrojs/telemetry": "3.3.0",
1638
+
"@capsizecss/unpack": "^3.0.1",
1639
"@oslojs/encoding": "^1.1.0",
1640
+
"@rollup/pluginutils": "^5.3.0",
1641
"acorn": "^8.15.0",
1642
"aria-query": "^5.3.2",
1643
"axobject-query": "^4.1.0",
1644
"boxen": "8.0.1",
1645
+
"ci-info": "^4.3.1",
1646
"clsx": "^2.1.1",
1647
"common-ancestor-path": "^1.0.1",
1648
"cookie": "^1.0.2",
1649
"cssesc": "^3.0.0",
1650
+
"debug": "^4.4.3",
1651
"deterministic-object-hash": "^2.0.2",
1652
+
"devalue": "^5.5.0",
1653
"diff": "^5.2.0",
1654
"dlv": "^1.1.3",
1655
"dset": "^3.1.4",
···
1657
"esbuild": "^0.25.0",
1658
"estree-walker": "^3.0.3",
1659
"flattie": "^1.1.1",
1660
+
"fontace": "~0.3.1",
1661
"github-slugger": "^2.0.0",
1662
"html-escaper": "3.0.3",
1663
"http-cache-semantics": "^4.2.0",
1664
"import-meta-resolve": "^4.2.0",
1665
+
"js-yaml": "^4.1.1",
1666
+
"magic-string": "^0.30.21",
1667
+
"magicast": "^0.5.1",
1668
"mrmime": "^2.0.1",
1669
"neotraverse": "^0.6.18",
1670
"p-limit": "^6.2.0",
1671
+
"p-queue": "^8.1.1",
1672
+
"package-manager-detector": "^1.5.0",
1673
+
"piccolore": "^0.1.3",
1674
"picomatch": "^4.0.3",
1675
"prompts": "^2.4.2",
1676
"rehype": "^13.0.2",
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",
1683
"tsconfck": "^3.1.6",
1684
"ultrahtml": "^1.6.0",
1685
"unifont": "~0.6.0",
1686
"unist-util-visit": "^5.0.0",
1687
+
"unstorage": "^1.17.3",
1688
"vfile": "^6.0.3",
1689
+
"vite": "^6.4.1",
1690
"vitefu": "^1.1.1",
1691
"xxhash-wasm": "^1.1.0",
1692
"yargs-parser": "^21.1.1",
1693
"yocto-spinner": "^0.2.3",
1694
"zod": "^3.25.76",
1695
+
"zod-to-json-schema": "^3.25.0",
1696
"zod-to-ts": "^1.2.0"
1697
},
1698
"bin": {
···
1755
}
1756
],
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"
1764
},
1765
"node_modules/boxen": {
1766
"version": "8.0.1",
···
1927
"url": "https://github.com/sponsors/wooorm"
1928
}
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
+
},
1939
"node_modules/common-ancestor-path": {
1940
"version": "1.0.1",
1941
"resolved": "https://registry.npmjs.org/common-ancestor-path/-/common-ancestor-path-1.0.1.tgz",
···
1966
"uncrypto": "^0.1.3"
1967
}
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
+
},
1985
"node_modules/css-tree": {
1986
"version": "3.1.0",
1987
"resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.1.0.tgz",
···
1995
"node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0"
1996
}
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
+
},
2010
"node_modules/cssesc": {
2011
"version": "3.0.0",
2012
"resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
···
2019
"node": ">=4"
2020
}
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
+
},
2055
"node_modules/debug": {
2056
"version": "4.4.3",
2057
"resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz",
···
2126
}
2127
},
2128
"node_modules/devalue": {
2129
+
"version": "5.5.0",
2130
+
"resolved": "https://registry.npmjs.org/devalue/-/devalue-5.5.0.tgz",
2131
+
"integrity": "sha512-69sM5yrHfFLJt0AZ9QqZXGCPfJ7fQjvpln3Rq5+PS03LD32Ost1Q9N+eEnaQwGRIriKkMImXD56ocjQmfjbV3w==",
2132
"license": "MIT"
2133
},
2134
"node_modules/devlop": {
···
2165
"integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==",
2166
"license": "MIT"
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
+
},
2235
"node_modules/dset": {
2236
"version": "3.1.4",
2237
"resolved": "https://registry.npmjs.org/dset/-/dset-3.1.4.tgz",
···
2344
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
2345
"integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
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
+
}
2365
},
2366
"node_modules/fdir": {
2367
"version": "6.5.0",
···
2763
}
2764
},
2765
"node_modules/js-yaml": {
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==",
2769
"license": "MIT",
2770
"dependencies": {
2771
"argparse": "^2.0.1"
···
2809
}
2810
},
2811
"node_modules/magicast": {
2812
+
"version": "0.5.1",
2813
+
"resolved": "https://registry.npmjs.org/magicast/-/magicast-0.5.1.tgz",
2814
+
"integrity": "sha512-xrHS24IxaLrvuo613F719wvOIv9xPHFWQHuvGUBmPnCA/3MQxKI3b+r7n1jAoDHmsbC5bRhTZYR77invLAxVnw==",
2815
"license": "MIT",
2816
"dependencies": {
2817
+
"@babel/parser": "^7.28.5",
2818
+
"@babel/types": "^7.28.5",
2819
+
"source-map-js": "^1.2.1"
2820
}
2821
},
2822
"node_modules/markdown-table": {
···
3699
"node": ">=0.10.0"
3700
}
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
+
},
3714
"node_modules/ofetch": {
3715
+
"version": "1.5.1",
3716
+
"resolved": "https://registry.npmjs.org/ofetch/-/ofetch-1.5.1.tgz",
3717
+
"integrity": "sha512-2W4oUZlVaqAPAil6FUg/difl6YhqhUR7x2eZY4bQCko22UXg3hptq9KLQdqFClV+Wu85UX7hNtdGTngi/1BxcA==",
3718
"license": "MIT",
3719
"dependencies": {
3720
+
"destr": "^2.0.5",
3721
+
"node-fetch-native": "^1.6.7",
3722
+
"ufo": "^1.6.1"
3723
}
3724
},
3725
"node_modules/ohash": {
···
3735
"license": "MIT"
3736
},
3737
"node_modules/oniguruma-to-es": {
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==",
3741
"license": "MIT",
3742
"dependencies": {
3743
"oniguruma-parser": "^0.12.1",
···
3829
"funding": {
3830
"url": "https://github.com/inikulin/parse5?sponsor=1"
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"
3838
},
3839
"node_modules/picocolors": {
3840
"version": "1.1.1",
···
4202
"resolved": "https://registry.npmjs.org/rollup/-/rollup-4.52.5.tgz",
4203
"integrity": "sha512-3GuObel8h7Kqdjt0gxkEzaifHTqLVW56Y/bjN7PSQtkKr0w3V/QYSdt6QWYtd7A1xUtYQigtdUfgj1RvWVtorw==",
4204
"license": "MIT",
4205
"dependencies": {
4206
"@types/estree": "1.0.8"
4207
},
···
4255
"suf-log": "^2.5.3"
4256
}
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
+
},
4264
"node_modules/semver": {
4265
"version": "7.7.3",
4266
"resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz",
···
4317
}
4318
},
4319
"node_modules/shiki": {
4320
+
"version": "3.17.0",
4321
+
"resolved": "https://registry.npmjs.org/shiki/-/shiki-3.17.0.tgz",
4322
+
"integrity": "sha512-lUZfWsyW7czITYTdo/Tb6ZM4VfyXlzmKYBQBjTz+pBzPPkP08RgIt00Ls1Z50Cl3SfwJsue6WbJeF3UgqLVI9Q==",
4323
"license": "MIT",
4324
"dependencies": {
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",
4331
"@shikijs/vscode-textmate": "^10.0.2",
4332
"@types/hast": "^3.0.4"
4333
}
···
4339
"license": "MIT"
4340
},
4341
"node_modules/smol-toml": {
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==",
4345
"license": "BSD-3-Clause",
4346
"engines": {
4347
"node": ">= 18"
···
4415
"url": "https://github.com/chalk/strip-ansi?sponsor=1"
4416
}
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
+
},
4430
"node_modules/suf-log": {
4431
"version": "2.5.3",
4432
"resolved": "https://registry.npmjs.org/suf-log/-/suf-log-2.5.3.tgz",
···
4437
"s.color": "0.0.15"
4438
}
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
+
},
4465
"node_modules/tiny-inflate": {
4466
"version": "1.0.3",
4467
"resolved": "https://registry.npmjs.org/tiny-inflate/-/tiny-inflate-1.0.3.tgz",
···
4469
"license": "MIT"
4470
},
4471
"node_modules/tinyexec": {
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
+
}
4479
},
4480
"node_modules/tinyglobby": {
4481
"version": "0.2.15",
···
4763
}
4764
},
4765
"node_modules/unstorage": {
4766
+
"version": "1.17.3",
4767
+
"resolved": "https://registry.npmjs.org/unstorage/-/unstorage-1.17.3.tgz",
4768
+
"integrity": "sha512-i+JYyy0DoKmQ3FximTHbGadmIYb8JEpq7lxUjnjeB702bCPum0vzo6oy5Mfu0lpqISw7hCyMW2yj4nWC8bqJ3Q==",
4769
"license": "MIT",
4770
"dependencies": {
4771
"anymatch": "^3.1.3",
···
4774
"h3": "^1.15.4",
4775
"lru-cache": "^10.4.3",
4776
"node-fetch-native": "^1.6.7",
4777
+
"ofetch": "^1.5.1",
4778
"ufo": "^1.6.1"
4779
},
4780
"peerDependencies": {
···
4905
"resolved": "https://registry.npmjs.org/vite/-/vite-6.4.1.tgz",
4906
"integrity": "sha512-+Oxm7q9hDoLMyJOYfUYBuHQo+dkAloi33apOPP56pzj+vsdJDzr+j1NISE5pyaAuKL4A3UD34qd0lx5+kfKp2g==",
4907
"license": "MIT",
4908
"dependencies": {
4909
"esbuild": "^0.25.0",
4910
"fdir": "^6.4.4",
···
5103
"resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz",
5104
"integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==",
5105
"license": "MIT",
5106
"funding": {
5107
"url": "https://github.com/sponsors/colinhacks"
5108
}
5109
},
5110
"node_modules/zod-to-json-schema": {
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==",
5114
"license": "ISC",
5115
"peerDependencies": {
5116
+
"zod": "^3.25 || ^4"
5117
}
5118
},
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.
public/fonts/LibreBarcode39Extended-Regular.woff
public/fonts/LibreBarcode39Extended-Regular.woff
This is a binary file and will not be displayed.
public/fonts/LibreBarcode39ExtendedText-Regular.woff
public/fonts/LibreBarcode39ExtendedText-Regular.woff
This is a binary file and will not be displayed.
public/img/icons/backarrow.png
public/img/icons/backarrow.png
This is a binary file and will not be displayed.
public/img/icons/home.png
public/img/icons/home.png
This is a binary file and will not be displayed.
public/img/icons/poweroff.png
public/img/icons/poweroff.png
This is a binary file and will not be displayed.
public/img/sprites/sunfl1.png
public/img/sprites/sunfl1.png
This is a binary file and will not be displayed.
+18
-4
src/components/Base.astro
+18
-4
src/components/Base.astro
···
1
---
2
interface Props {
3
title: string;
4
graph?: {
5
description: string;
6
-
url: string;
7
type?: "website" | "article";
8
-
image?: string;
9
};
10
}
11
12
const title = "::" + Astro.props.title;
13
const { graph } = Astro.props;
14
---
15
16
<html lang="en">
17
<head>
18
<title>{title}</title>
19
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
20
<meta charset="utf-8" />
21
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
22
<meta name="generator" content={Astro.generator} />
···
26
<meta name="description" content={graph.description} />
27
<meta property="og:title" content={title} />
28
<meta property="og:description" content={graph.description} />
29
-
<meta property="og:url" content={graph.url} />
30
<meta property="og:type" content={graph.type ?? "website"} />
31
-
<meta property="og:image" content={graph.image} />
32
</Fragment>
33
)
34
}
···
1
---
2
interface Props {
3
title: string;
4
+
banner?: string;
5
graph?: {
6
description: string;
7
type?: "website" | "article";
8
};
9
}
10
11
const title = "::" + Astro.props.title;
12
+
const { banner = "https://entomoviscera.online/mainbanner.png" } = Astro.props;
13
const { graph } = Astro.props;
14
---
15
16
<html lang="en">
17
<head>
18
<title>{title}</title>
19
+
<link rel="icon" type="image/png" href="/favicon.png" />
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
+
/>
27
<meta charset="utf-8" />
28
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
29
<meta name="generator" content={Astro.generator} />
···
33
<meta name="description" content={graph.description} />
34
<meta property="og:title" content={title} />
35
<meta property="og:description" content={graph.description} />
36
+
<meta
37
+
property="og:url"
38
+
content={new URL(Astro.url.pathname.toString(), Astro.site)}
39
+
/>
40
<meta property="og:type" content={graph.type ?? "website"} />
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} />
46
</Fragment>
47
)
48
}
+57
src/components/BlogPost.astro
+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
+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
+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
+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
+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
+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
+
];
+19
src/content/config.ts
+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
+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
+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
+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
+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
+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>
+98
-6
src/pages/home.astro
+98
-6
src/pages/home.astro
···
1
---
2
-
import Base from "../components/Base.astro";
3
-
import "../styles/main.css";
4
---
5
6
<Base
7
title="HOME"
8
graph={{
9
description: "WARNING: Bug inside.",
10
-
url: "https://entomoviscera.online/home",
11
}}
12
>
13
-
<div class="bwcontainer">
14
-
<main class="bwbox">
15
-
<p>Under construction. Come back later.</p>
16
</main>
17
</div>
18
</Base>
···
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>
+35
-25
src/pages/index.astro
+35
-25
src/pages/index.astro
···
1
---
2
-
import Base from "../components/Base.astro";
3
-
import "../styles/main.css";
4
-
import "../styles/splashscreen.css";
5
---
6
7
<Base
8
title="ENTRANCE"
9
graph={{
10
description: "WARNING: Bug inside.",
11
-
url: "https://entomoviscera.online/",
12
}}
13
>
14
<a href="/home" id="welcome">
15
<img src="/img/sprites/door.png" id="door" alt="" />
16
<img src="/img/sprites/doorbg.png" id="doorbg" alt="entrance" />
17
</a>
18
-
<footer class="bwcontainer">
19
-
<div class="bwbox">
20
-
<ul>
21
-
<li>
22
-
<a href="https://bsky.app/profile/entomoviscera.online">BLUESKY</a>
23
-
</li>
24
-
<li>
25
-
<a href="https://entomoviscera.tumblr.com/">TUMBLR</a>
26
-
</li>
27
-
<li>
28
-
<a href="https://entomoviscera.newgrounds.com/">NEWGROUNDS</a>
29
-
</li>
30
-
<li>
31
-
<a href="https://www.youtube.com/@entomoviscera">YOUTUBE</a>
32
-
</li>
33
-
</ul>
34
-
</div>
35
-
<div class="bwbox">
36
-
<a href="mailto:entomoviscera@gmail.com">entomoviscera@gmail.com</a>
37
</div>
38
-
</footer>
39
</Base>
40
41
<style>
···
57
58
@media (prefers-reduced-motion: reduce) {
59
#door {
60
-
transition: 0;
61
}
62
}
63
</style>
···
1
---
2
+
import Base from "/components/Base.astro";
3
+
import "/styles/main.css";
4
+
import "/styles/splashscreen.css";
5
---
6
7
<Base
8
title="ENTRANCE"
9
graph={{
10
description: "WARNING: Bug inside.",
11
}}
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>
···
67
68
@media (prefers-reduced-motion: reduce) {
69
#door {
70
+
transition: none;
71
}
72
}
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
+
}
+65
-6
src/styles/main.css
+65
-6
src/styles/main.css
···
1
-
body {
2
-
font-family: "Courier New", Courier, monospace;
3
-
background-color: var(--black);
4
-
}
5
-
6
:root {
7
--black: #000;
8
--grey: #4e505c;
9
--orange: #fc9156;
···
11
--white: #eceee1;
12
}
13
14
ul {
15
list-style: ":: ";
16
padding-left: 3ch;
17
}
18
19
-
p, li {
20
font-size: 1rem;
21
line-height: 1.5rem;
22
}
23
24
a {
25
color: var(--yellow);
26
text-decoration: underline dashed;
27
text-underline-offset: 4px;
···
42
border: 10px double var(--white);
43
padding: 13px 15px;
44
}
···
1
:root {
2
+
font-family: "Courier New", Courier, monospace;
3
--black: #000;
4
--grey: #4e505c;
5
--orange: #fc9156;
···
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;
···
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
+
}
+6
-1
tsconfig.json
+6
-1
tsconfig.json