diff --git a/frontmatter.json b/frontmatter.json
index be79f00..bb96be0 100644
--- a/frontmatter.json
+++ b/frontmatter.json
@@ -46,7 +46,6 @@
"previewPath": "/{{fm.type}}/",
"pageBundle": false,
"clearEmpty": true,
- "fileType": "mdx",
"fields": [
{
"title": "Title",
@@ -160,7 +159,6 @@
"previewPath": "/{{fm.type}}/",
"pageBundle": false,
"clearEmpty": true,
- "fileType": "mdx",
"fields": [
{
"title": "Title",
@@ -309,5 +307,6 @@
"body": "",
"isMediaSnippet": true
}
- }
+ },
+ "frontMatter.content.supportedFileTypes": [ "md", "markdown", "mdx" ]
}
diff --git a/package-lock.json b/package-lock.json
index e65c810..5881eae 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -9,7 +9,7 @@
"version": "0.0.1",
"dependencies": {
"@astrojs/check": "^0.9.4",
- "@astrojs/mdx": "^4.0.1",
+ "@astrojs/mdx": "^4.0.3",
"@astrojs/sitemap": "^3.2.1",
"@swup/a11y-plugin": "^4.5.0",
"@swup/body-class-plugin": "^3.2.0",
@@ -17,7 +17,7 @@
"@swup/js-plugin": "^3.2.0",
"@swup/progress-plugin": "^3.2.0",
"@swup/scroll-plugin": "^3.3.2",
- "astro": "^5.0.2",
+ "astro": "^5.1.1",
"normalize.css": "^8.0.1",
"swup": "^4.7.0",
"typescript": "^5.5.4"
@@ -147,9 +147,9 @@
}
},
"node_modules/@astrojs/markdown-remark": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/@astrojs/markdown-remark/-/markdown-remark-6.0.0.tgz",
- "integrity": "sha512-Tabo7xM44Pz2Yf9qpdaCCgxRmtaypi2YCinqTUNefDrWUa+OyKW62OuNeCaGwNh/ys+QAd9FUWN5/3HgPWjP4Q==",
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/@astrojs/markdown-remark/-/markdown-remark-6.0.1.tgz",
+ "integrity": "sha512-CTSYijj25NfxgZi15TU3CwPwgyD1/7yA3FcdcNmB9p94nydupiUbrIiq3IqeTp2m5kCVzxbPZeC7fTwEOaNyGw==",
"license": "MIT",
"dependencies": {
"@astrojs/prism": "3.2.0",
@@ -174,12 +174,12 @@
}
},
"node_modules/@astrojs/mdx": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/@astrojs/mdx/-/mdx-4.0.1.tgz",
- "integrity": "sha512-ShntQtbIsMEnR29DCF9vBNxBOGU29FVRBXKdS5njYic4t4asrbxYmjFXiqqQ0ONnBNHk9P0RHFgqEy1GL/YbJg==",
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/@astrojs/mdx/-/mdx-4.0.3.tgz",
+ "integrity": "sha512-8HcuyNG/KgYUAQWVzKFkboXcTOBCW6aQ0WK0Er/iSmVSF0y3yimg4/3QSt+Twv9dogpwIHL+E8iBJKqieFv4+g==",
"license": "MIT",
"dependencies": {
- "@astrojs/markdown-remark": "6.0.0",
+ "@astrojs/markdown-remark": "6.0.1",
"@mdx-js/mdx": "^3.1.0",
"acorn": "^8.14.0",
"es-module-lexer": "^1.5.4",
@@ -1666,6 +1666,22 @@
"node": ">=12"
}
},
+ "node_modules/@esbuild/netbsd-arm64": {
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.24.2.tgz",
+ "integrity": "sha512-wuLK/VztRRpMt9zyHSazyCVdCXlpHkKm34WUyinD2lzK07FAHTq0KQvZZlXikNWkDGoT6x3TD51jKQ7gMVpopw==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "netbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
"node_modules/@esbuild/netbsd-x64": {
"version": "0.21.5",
"resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz",
@@ -1683,9 +1699,9 @@
}
},
"node_modules/@esbuild/openbsd-arm64": {
- "version": "0.24.0",
- "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.24.0.tgz",
- "integrity": "sha512-MD9uzzkPQbYehwcN583yx3Tu5M8EIoTD+tUgKF982WYL9Pf5rKy9ltgD0eUgs8pvKnmizxjXZyLt0z6DC3rRXg==",
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.24.2.tgz",
+ "integrity": "sha512-YQbi46SBct6iKnszhSvdluqDmxCJA+Pu280Av9WICNwQmMxV7nLRHZfjQzwbPs3jeWnuAhE9Jy0NrnJ12Oz+0A==",
"cpu": [
"arm64"
],
@@ -2622,54 +2638,54 @@
]
},
"node_modules/@shikijs/core": {
- "version": "1.24.0",
- "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-1.24.0.tgz",
- "integrity": "sha512-6pvdH0KoahMzr6689yh0QJ3rCgF4j1XsXRHNEeEN6M4xJTfQ6QPWrmHzIddotg+xPJUPEPzYzYCKzpYyhTI6Gw==",
+ "version": "1.24.4",
+ "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-1.24.4.tgz",
+ "integrity": "sha512-jjLsld+xEEGYlxAXDyGwWsKJ1sw5Pc1pnp4ai2ORpjx2UX08YYTC0NNqQYO1PaghYaR+PvgMOGuvzw2he9sk0Q==",
"license": "MIT",
"dependencies": {
- "@shikijs/engine-javascript": "1.24.0",
- "@shikijs/engine-oniguruma": "1.24.0",
- "@shikijs/types": "1.24.0",
- "@shikijs/vscode-textmate": "^9.3.0",
+ "@shikijs/engine-javascript": "1.24.4",
+ "@shikijs/engine-oniguruma": "1.24.4",
+ "@shikijs/types": "1.24.4",
+ "@shikijs/vscode-textmate": "^9.3.1",
"@types/hast": "^3.0.4",
- "hast-util-to-html": "^9.0.3"
+ "hast-util-to-html": "^9.0.4"
}
},
"node_modules/@shikijs/engine-javascript": {
- "version": "1.24.0",
- "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-1.24.0.tgz",
- "integrity": "sha512-ZA6sCeSsF3Mnlxxr+4wGEJ9Tto4RHmfIS7ox8KIAbH0MTVUkw3roHPHZN+LlJMOHJJOVupe6tvuAzRpN8qK1vA==",
+ "version": "1.24.4",
+ "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-1.24.4.tgz",
+ "integrity": "sha512-TClaQOLvo9WEMJv6GoUsykQ6QdynuKszuORFWCke8qvi6PeLm7FcD9+7y45UenysxEWYpDL5KJaVXTngTE+2BA==",
"license": "MIT",
"dependencies": {
- "@shikijs/types": "1.24.0",
- "@shikijs/vscode-textmate": "^9.3.0",
- "oniguruma-to-es": "0.7.0"
+ "@shikijs/types": "1.24.4",
+ "@shikijs/vscode-textmate": "^9.3.1",
+ "oniguruma-to-es": "0.8.1"
}
},
"node_modules/@shikijs/engine-oniguruma": {
- "version": "1.24.0",
- "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-1.24.0.tgz",
- "integrity": "sha512-Eua0qNOL73Y82lGA4GF5P+G2+VXX9XnuUxkiUuwcxQPH4wom+tE39kZpBFXfUuwNYxHSkrSxpB1p4kyRW0moSg==",
+ "version": "1.24.4",
+ "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-1.24.4.tgz",
+ "integrity": "sha512-Do2ry6flp2HWdvpj2XOwwa0ljZBRy15HKZITzPcNIBOGSeprnA8gOooA/bLsSPuy8aJBa+Q/r34dMmC3KNL/zw==",
"license": "MIT",
"dependencies": {
- "@shikijs/types": "1.24.0",
- "@shikijs/vscode-textmate": "^9.3.0"
+ "@shikijs/types": "1.24.4",
+ "@shikijs/vscode-textmate": "^9.3.1"
}
},
"node_modules/@shikijs/types": {
- "version": "1.24.0",
- "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-1.24.0.tgz",
- "integrity": "sha512-aptbEuq1Pk88DMlCe+FzXNnBZ17LCiLIGWAeCWhoFDzia5Q5Krx3DgnULLiouSdd6+LUM39XwXGppqYE0Ghtug==",
+ "version": "1.24.4",
+ "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-1.24.4.tgz",
+ "integrity": "sha512-0r0XU7Eaow0PuDxuWC1bVqmWCgm3XqizIaT7SM42K03vc69LGooT0U8ccSR44xP/hGlNx4FKhtYpV+BU6aaKAA==",
"license": "MIT",
"dependencies": {
- "@shikijs/vscode-textmate": "^9.3.0",
+ "@shikijs/vscode-textmate": "^9.3.1",
"@types/hast": "^3.0.4"
}
},
"node_modules/@shikijs/vscode-textmate": {
- "version": "9.3.0",
- "resolved": "https://registry.npmjs.org/@shikijs/vscode-textmate/-/vscode-textmate-9.3.0.tgz",
- "integrity": "sha512-jn7/7ky30idSkd/O5yDBfAnVt+JJpepofP/POZ1iMOxK59cOfqIgg/Dj0eFsjOTMw+4ycJN0uhZH/Eb0bs/EUA==",
+ "version": "9.3.1",
+ "resolved": "https://registry.npmjs.org/@shikijs/vscode-textmate/-/vscode-textmate-9.3.1.tgz",
+ "integrity": "sha512-79QfK1393x9Ho60QFyLti+QfdJzRQCVLFb97kOIV7Eo9vQU/roINgk7m24uv0a7AUvN//RDH36FLjjK48v0s9g==",
"license": "MIT"
},
"node_modules/@sindresorhus/merge-streams": {
@@ -3086,7 +3102,6 @@
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
"integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
- "dev": true,
"dependencies": {
"normalize-path": "^3.0.0",
"picomatch": "^2.0.4"
@@ -3284,14 +3299,14 @@
}
},
"node_modules/astro": {
- "version": "5.0.2",
- "resolved": "https://registry.npmjs.org/astro/-/astro-5.0.2.tgz",
- "integrity": "sha512-MKf82vUiTZ2aK+c/8EDnLYIsToBdVVk4PuhhGdE8F/PcuUyS+oIcuCPf30iVf8WCQwXOfnYGnv1JbRjzkqUc3w==",
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/astro/-/astro-5.1.1.tgz",
+ "integrity": "sha512-prpWC2PRs4P3FKQg6gZaU+VNMqbZi5pDvORGB2nrjfRjkrvF6/l4BqhvkJ6YQ0Ohm5rIMVz8ljgaRI77mLHbwg==",
"license": "MIT",
"dependencies": {
"@astrojs/compiler": "^2.10.3",
"@astrojs/internal-helpers": "0.4.2",
- "@astrojs/markdown-remark": "6.0.0",
+ "@astrojs/markdown-remark": "6.0.1",
"@astrojs/telemetry": "3.2.0",
"@oslojs/encoding": "^1.1.0",
"@rollup/pluginutils": "^5.1.3",
@@ -3337,8 +3352,9 @@
"tsconfck": "^3.1.4",
"ultrahtml": "^1.5.3",
"unist-util-visit": "^5.0.0",
+ "unstorage": "^1.14.0",
"vfile": "^6.0.3",
- "vite": "^6.0.1",
+ "vite": "^6.0.5",
"vitefu": "^1.0.4",
"which-pm": "^3.0.0",
"xxhash-wasm": "^1.1.0",
@@ -3444,7 +3460,6 @@
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
"integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
- "dev": true,
"engines": {
"node": ">=8"
}
@@ -3702,7 +3717,6 @@
"version": "3.6.0",
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz",
"integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==",
- "dev": true,
"dependencies": {
"anymatch": "~3.1.2",
"braces": "~3.0.2",
@@ -3928,6 +3942,15 @@
"integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
"dev": true
},
+ "node_modules/consola": {
+ "version": "3.3.3",
+ "resolved": "https://registry.npmjs.org/consola/-/consola-3.3.3.tgz",
+ "integrity": "sha512-Qil5KwghMzlqd51UXM0b6fyaGHtOC22scxrwrz4A2882LyUMwQjnvaedN1HAeXzphspQ6CpHkzMAWxBTUruDLg==",
+ "license": "MIT",
+ "engines": {
+ "node": "^14.18.0 || >=16.10.0"
+ }
+ },
"node_modules/cookie": {
"version": "0.7.2",
"resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz",
@@ -3937,6 +3960,12 @@
"node": ">= 0.6"
}
},
+ "node_modules/cookie-es": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/cookie-es/-/cookie-es-1.2.2.tgz",
+ "integrity": "sha512-+W7VmiVINB+ywl1HGXJXmrqkOhpKrIiVZV6tQuV54ZyQC7MMuBt81Vc336GMLoHBq5hV/F9eXgt5Mnx0Rha5Fg==",
+ "license": "MIT"
+ },
"node_modules/cosmiconfig": {
"version": "9.0.0",
"resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz",
@@ -3977,6 +4006,15 @@
"node": ">= 8"
}
},
+ "node_modules/crossws": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/crossws/-/crossws-0.3.1.tgz",
+ "integrity": "sha512-HsZgeVYaG+b5zA+9PbIPGq4+J/CJynJuearykPsXx4V/eMhyQ5EDVg3Ak2FBZtVXCiOLu/U7IiwDHTr9MA+IKw==",
+ "license": "MIT",
+ "dependencies": {
+ "uncrypto": "^0.1.3"
+ }
+ },
"node_modules/css-blank-pseudo": {
"version": "6.0.2",
"resolved": "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-6.0.2.tgz",
@@ -4316,6 +4354,12 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/defu": {
+ "version": "6.1.4",
+ "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.4.tgz",
+ "integrity": "sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==",
+ "license": "MIT"
+ },
"node_modules/delegate-it": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/delegate-it/-/delegate-it-6.0.1.tgz",
@@ -4345,6 +4389,12 @@
"node": ">=6"
}
},
+ "node_modules/destr": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/destr/-/destr-2.0.3.tgz",
+ "integrity": "sha512-2N3BOUU4gYMpTP24s5rF5iP7BDr7uNTCs4ozw3kf/eKfvWSIu93GEBi5m427YoyJoeOzQ5smuu4nNAPGb8idSQ==",
+ "license": "MIT"
+ },
"node_modules/detect-libc": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz",
@@ -5928,6 +5978,24 @@
"integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==",
"dev": true
},
+ "node_modules/h3": {
+ "version": "1.13.0",
+ "resolved": "https://registry.npmjs.org/h3/-/h3-1.13.0.tgz",
+ "integrity": "sha512-vFEAu/yf8UMUcB4s43OaDaigcqpQd14yanmOsn+NcRX3/guSKncyE2rOYhq8RIchgJrPSs/QiIddnTTR1ddiAg==",
+ "license": "MIT",
+ "dependencies": {
+ "cookie-es": "^1.2.2",
+ "crossws": ">=0.2.0 <0.4.0",
+ "defu": "^6.1.4",
+ "destr": "^2.0.3",
+ "iron-webcrypto": "^1.2.1",
+ "ohash": "^1.1.4",
+ "radix3": "^1.1.2",
+ "ufo": "^1.5.4",
+ "uncrypto": "^0.1.3",
+ "unenv": "^1.10.0"
+ }
+ },
"node_modules/has-bigints": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz",
@@ -6133,9 +6201,9 @@
}
},
"node_modules/hast-util-to-html": {
- "version": "9.0.3",
- "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-9.0.3.tgz",
- "integrity": "sha512-M17uBDzMJ9RPCqLMO92gNNUDuBSq10a25SDBI08iCCxmorf4Yy6sYHK57n9WAbRAAaU+DuR4W6GN9K4DFZesYg==",
+ "version": "9.0.4",
+ "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-9.0.4.tgz",
+ "integrity": "sha512-wxQzXtdbhiwGAUKrnQJXlOPmHnEehzphwkK7aluUPQ+lEc1xefC8pblMgpp2w5ldBTEfveRIrADcrhGIWrlTDA==",
"license": "MIT",
"dependencies": {
"@types/hast": "^3.0.0",
@@ -6367,6 +6435,15 @@
"node": ">= 0.4"
}
},
+ "node_modules/iron-webcrypto": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/iron-webcrypto/-/iron-webcrypto-1.2.1.tgz",
+ "integrity": "sha512-feOM6FaSr6rEABp/eDfVseKyTMDt+KGpeB35SkVn9Tyn0CqvVsY3EwI0v5i8nMHyJnzCIQf7nsy3p41TPkJZhg==",
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/brc-dd"
+ }
+ },
"node_modules/is-alphabetical": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz",
@@ -6430,7 +6507,6 @@
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
"integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
- "dev": true,
"dependencies": {
"binary-extensions": "^2.0.0"
},
@@ -6979,6 +7055,12 @@
"url": "https://github.com/sponsors/wooorm"
}
},
+ "node_modules/lru-cache": {
+ "version": "10.4.3",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz",
+ "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==",
+ "license": "ISC"
+ },
"node_modules/magic-string": {
"version": "0.30.14",
"resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.14.tgz",
@@ -8091,6 +8173,18 @@
"node": ">=8.6"
}
},
+ "node_modules/mime": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz",
+ "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==",
+ "license": "MIT",
+ "bin": {
+ "mime": "cli.js"
+ },
+ "engines": {
+ "node": ">=10.0.0"
+ }
+ },
"node_modules/minimatch": {
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
@@ -8178,6 +8272,12 @@
"url": "https://opencollective.com/unified"
}
},
+ "node_modules/node-fetch-native": {
+ "version": "1.6.4",
+ "resolved": "https://registry.npmjs.org/node-fetch-native/-/node-fetch-native-1.6.4.tgz",
+ "integrity": "sha512-IhOigYzAKHd244OC0JIMIUrjzctirCmPkaIfhDeGcEETWof5zKYUW7e7MYvChGWh/4CJeXEgsRyGzuF334rOOQ==",
+ "license": "MIT"
+ },
"node_modules/node-releases": {
"version": "2.0.18",
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz",
@@ -8189,7 +8289,6 @@
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
"integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
- "dev": true,
"engines": {
"node": ">=0.10.0"
}
@@ -8303,6 +8402,23 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/ofetch": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/ofetch/-/ofetch-1.4.1.tgz",
+ "integrity": "sha512-QZj2DfGplQAr2oj9KzceK9Hwz6Whxazmn85yYeVuS3u9XTMOGMRx0kO95MQ+vLsj/S/NwBDMMLU5hpxvI6Tklw==",
+ "license": "MIT",
+ "dependencies": {
+ "destr": "^2.0.3",
+ "node-fetch-native": "^1.6.4",
+ "ufo": "^1.5.4"
+ }
+ },
+ "node_modules/ohash": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/ohash/-/ohash-1.1.4.tgz",
+ "integrity": "sha512-FlDryZAahJmEF3VR3w1KogSEdWX3WhA5GPakFx4J81kEAiHyLMpdLLElS8n8dfNadMgAne/MywcvmogzscVt4g==",
+ "license": "MIT"
+ },
"node_modules/on-demand-live-region": {
"version": "0.1.3",
"resolved": "https://registry.npmjs.org/on-demand-live-region/-/on-demand-live-region-0.1.3.tgz",
@@ -8318,14 +8434,14 @@
}
},
"node_modules/oniguruma-to-es": {
- "version": "0.7.0",
- "resolved": "https://registry.npmjs.org/oniguruma-to-es/-/oniguruma-to-es-0.7.0.tgz",
- "integrity": "sha512-HRaRh09cE0gRS3+wi2zxekB+I5L8C/gN60S+vb11eADHUaB/q4u8wGGOX3GvwvitG8ixaeycZfeoyruKQzUgNg==",
+ "version": "0.8.1",
+ "resolved": "https://registry.npmjs.org/oniguruma-to-es/-/oniguruma-to-es-0.8.1.tgz",
+ "integrity": "sha512-dekySTEvCxCj0IgKcA2uUCO/e4ArsqpucDPcX26w9ajx+DvMWLc5eZeJaRQkd7oC/+rwif5gnT900tA34uN9Zw==",
"license": "MIT",
"dependencies": {
"emoji-regex-xs": "^1.0.0",
"regex": "^5.0.2",
- "regex-recursion": "^4.3.0"
+ "regex-recursion": "^5.0.0"
}
},
"node_modules/opencollective-postinstall": {
@@ -8589,6 +8705,12 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/pathe": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz",
+ "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==",
+ "license": "MIT"
+ },
"node_modules/picocolors": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
@@ -10016,16 +10138,17 @@
}
},
"node_modules/prettier": {
- "version": "2.8.7",
- "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.7.tgz",
- "integrity": "sha512-yPngTo3aXUUmyuTjeTUT75txrf+aMh9FiD7q9ZE/i6r0bPb22g4FsE6Y338PQX1bmfy08i9QQCB7/rcUAVntfw==",
+ "version": "3.4.2",
+ "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.4.2.tgz",
+ "integrity": "sha512-e9MewbtFo+Fevyuxn/4rrcDAaq0IYxPGLvObpQjiZBMAzB9IGmzlnG9RZy3FFas+eBMu2vA0CszMeduow5dIuQ==",
"license": "MIT",
"optional": true,
+ "peer": true,
"bin": {
- "prettier": "bin-prettier.js"
+ "prettier": "bin/prettier.cjs"
},
"engines": {
- "node": ">=10.13.0"
+ "node": ">=14"
},
"funding": {
"url": "https://github.com/prettier/prettier?sponsor=1"
@@ -10109,6 +10232,12 @@
}
]
},
+ "node_modules/radix3": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/radix3/-/radix3-1.1.2.tgz",
+ "integrity": "sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA==",
+ "license": "MIT"
+ },
"node_modules/read-cache": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz",
@@ -10131,7 +10260,6 @@
"version": "3.6.0",
"resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
"integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
- "dev": true,
"dependencies": {
"picomatch": "^2.2.1"
},
@@ -10204,20 +10332,21 @@
}
},
"node_modules/regex": {
- "version": "5.0.2",
- "resolved": "https://registry.npmjs.org/regex/-/regex-5.0.2.tgz",
- "integrity": "sha512-/pczGbKIQgfTMRV0XjABvc5RzLqQmwqxLHdQao2RTXPk+pmTXB2P0IaUHYdYyk412YLwUIkaeMd5T+RzVgTqnQ==",
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/regex/-/regex-5.1.1.tgz",
+ "integrity": "sha512-dN5I359AVGPnwzJm2jN1k0W9LPZ+ePvoOeVMMfqIMFz53sSwXkxaJoxr50ptnsC771lK95BnTrVSZxq0b9yCGw==",
"license": "MIT",
"dependencies": {
"regex-utilities": "^2.3.0"
}
},
"node_modules/regex-recursion": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/regex-recursion/-/regex-recursion-4.3.0.tgz",
- "integrity": "sha512-5LcLnizwjcQ2ALfOj95MjcatxyqF5RPySx9yT+PaXu3Gox2vyAtLDjHB8NTJLtMGkvyau6nI3CfpwFCjPUIs/A==",
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/regex-recursion/-/regex-recursion-5.1.1.tgz",
+ "integrity": "sha512-ae7SBCbzVNrIjgSbh7wMznPcQel1DNlDtzensnFxpiNpXt1U2ju/bHugH422r+4LAVS1FpW1YCwilmnNsjum9w==",
"license": "MIT",
"dependencies": {
+ "regex": "^5.1.1",
"regex-utilities": "^2.3.0"
}
},
@@ -10781,16 +10910,16 @@
}
},
"node_modules/shiki": {
- "version": "1.24.0",
- "resolved": "https://registry.npmjs.org/shiki/-/shiki-1.24.0.tgz",
- "integrity": "sha512-qIneep7QRwxRd5oiHb8jaRzH15V/S8F3saCXOdjwRLgozZJr5x2yeBhQtqkO3FSzQDwYEFAYuifg4oHjpDghrg==",
+ "version": "1.24.4",
+ "resolved": "https://registry.npmjs.org/shiki/-/shiki-1.24.4.tgz",
+ "integrity": "sha512-aVGSFAOAr1v26Hh/+GBIsRVDWJ583XYV7CuNURKRWh9gpGv4OdbisZGq96B9arMYTZhTQkmRF5BrShOSTvNqhw==",
"license": "MIT",
"dependencies": {
- "@shikijs/core": "1.24.0",
- "@shikijs/engine-javascript": "1.24.0",
- "@shikijs/engine-oniguruma": "1.24.0",
- "@shikijs/types": "1.24.0",
- "@shikijs/vscode-textmate": "^9.3.0",
+ "@shikijs/core": "1.24.4",
+ "@shikijs/engine-javascript": "1.24.4",
+ "@shikijs/engine-oniguruma": "1.24.4",
+ "@shikijs/types": "1.24.4",
+ "@shikijs/vscode-textmate": "^9.3.1",
"@types/hast": "^3.0.4"
}
},
@@ -11709,6 +11838,12 @@
"semver": "^7.3.8"
}
},
+ "node_modules/ufo": {
+ "version": "1.5.4",
+ "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.5.4.tgz",
+ "integrity": "sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==",
+ "license": "MIT"
+ },
"node_modules/ultrahtml": {
"version": "1.5.3",
"resolved": "https://registry.npmjs.org/ultrahtml/-/ultrahtml-1.5.3.tgz",
@@ -11730,12 +11865,31 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/uncrypto": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/uncrypto/-/uncrypto-0.1.3.tgz",
+ "integrity": "sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==",
+ "license": "MIT"
+ },
"node_modules/undici-types": {
"version": "6.20.0",
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz",
"integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==",
"license": "MIT"
},
+ "node_modules/unenv": {
+ "version": "1.10.0",
+ "resolved": "https://registry.npmjs.org/unenv/-/unenv-1.10.0.tgz",
+ "integrity": "sha512-wY5bskBQFL9n3Eca5XnhH6KbUo/tfvkwm9OpcdCvLaeA7piBNbavbOKJySEwQ1V0RH6HvNlSAFRTpvTqgKRQXQ==",
+ "license": "MIT",
+ "dependencies": {
+ "consola": "^3.2.3",
+ "defu": "^6.1.4",
+ "mime": "^3.0.0",
+ "node-fetch-native": "^1.6.4",
+ "pathe": "^1.1.2"
+ }
+ },
"node_modules/unicorn-magic": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.1.0.tgz",
@@ -11912,6 +12066,98 @@
"node": ">= 10.0.0"
}
},
+ "node_modules/unstorage": {
+ "version": "1.14.4",
+ "resolved": "https://registry.npmjs.org/unstorage/-/unstorage-1.14.4.tgz",
+ "integrity": "sha512-1SYeamwuYeQJtJ/USE1x4l17LkmQBzg7deBJ+U9qOBoHo15d1cDxG4jM31zKRgF7pG0kirZy4wVMX6WL6Zoscg==",
+ "license": "MIT",
+ "dependencies": {
+ "anymatch": "^3.1.3",
+ "chokidar": "^3.6.0",
+ "destr": "^2.0.3",
+ "h3": "^1.13.0",
+ "lru-cache": "^10.4.3",
+ "node-fetch-native": "^1.6.4",
+ "ofetch": "^1.4.1",
+ "ufo": "^1.5.4"
+ },
+ "peerDependencies": {
+ "@azure/app-configuration": "^1.8.0",
+ "@azure/cosmos": "^4.2.0",
+ "@azure/data-tables": "^13.3.0",
+ "@azure/identity": "^4.5.0",
+ "@azure/keyvault-secrets": "^4.9.0",
+ "@azure/storage-blob": "^12.26.0",
+ "@capacitor/preferences": "^6.0.3",
+ "@deno/kv": ">=0.8.4",
+ "@netlify/blobs": "^6.5.0 || ^7.0.0 || ^8.1.0",
+ "@planetscale/database": "^1.19.0",
+ "@upstash/redis": "^1.34.3",
+ "@vercel/blob": ">=0.27.0",
+ "@vercel/kv": "^1.0.1",
+ "aws4fetch": "^1.0.20",
+ "db0": ">=0.2.1",
+ "idb-keyval": "^6.2.1",
+ "ioredis": "^5.4.2",
+ "uploadthing": "^7.4.1"
+ },
+ "peerDependenciesMeta": {
+ "@azure/app-configuration": {
+ "optional": true
+ },
+ "@azure/cosmos": {
+ "optional": true
+ },
+ "@azure/data-tables": {
+ "optional": true
+ },
+ "@azure/identity": {
+ "optional": true
+ },
+ "@azure/keyvault-secrets": {
+ "optional": true
+ },
+ "@azure/storage-blob": {
+ "optional": true
+ },
+ "@capacitor/preferences": {
+ "optional": true
+ },
+ "@deno/kv": {
+ "optional": true
+ },
+ "@netlify/blobs": {
+ "optional": true
+ },
+ "@planetscale/database": {
+ "optional": true
+ },
+ "@upstash/redis": {
+ "optional": true
+ },
+ "@vercel/blob": {
+ "optional": true
+ },
+ "@vercel/kv": {
+ "optional": true
+ },
+ "aws4fetch": {
+ "optional": true
+ },
+ "db0": {
+ "optional": true
+ },
+ "idb-keyval": {
+ "optional": true
+ },
+ "ioredis": {
+ "optional": true
+ },
+ "uploadthing": {
+ "optional": true
+ }
+ }
+ },
"node_modules/update-browserslist-db": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz",
@@ -12001,12 +12247,12 @@
}
},
"node_modules/vite": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/vite/-/vite-6.0.2.tgz",
- "integrity": "sha512-XdQ+VsY2tJpBsKGs0wf3U/+azx8BBpYRHFAyKm5VeEZNOJZRB63q7Sc8Iup3k0TrN3KO6QgyzFf+opSbfY1y0g==",
+ "version": "6.0.6",
+ "resolved": "https://registry.npmjs.org/vite/-/vite-6.0.6.tgz",
+ "integrity": "sha512-NSjmUuckPmDU18bHz7QZ+bTYhRR0iA72cs2QAxCqDpafJ0S6qetco0LB3WW2OxlMHS0JmAv+yZ/R3uPmMyGTjQ==",
"license": "MIT",
"dependencies": {
- "esbuild": "^0.24.0",
+ "esbuild": "^0.24.2",
"postcss": "^8.4.49",
"rollup": "^4.23.0"
},
@@ -12072,9 +12318,9 @@
}
},
"node_modules/vite/node_modules/@esbuild/aix-ppc64": {
- "version": "0.24.0",
- "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.24.0.tgz",
- "integrity": "sha512-WtKdFM7ls47zkKHFVzMz8opM7LkcsIp9amDUBIAWirg70RM71WRSjdILPsY5Uv1D42ZpUfaPILDlfactHgsRkw==",
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.24.2.tgz",
+ "integrity": "sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA==",
"cpu": [
"ppc64"
],
@@ -12088,9 +12334,9 @@
}
},
"node_modules/vite/node_modules/@esbuild/android-arm": {
- "version": "0.24.0",
- "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.24.0.tgz",
- "integrity": "sha512-arAtTPo76fJ/ICkXWetLCc9EwEHKaeya4vMrReVlEIUCAUncH7M4bhMQ+M9Vf+FFOZJdTNMXNBrWwW+OXWpSew==",
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.24.2.tgz",
+ "integrity": "sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q==",
"cpu": [
"arm"
],
@@ -12104,9 +12350,9 @@
}
},
"node_modules/vite/node_modules/@esbuild/android-arm64": {
- "version": "0.24.0",
- "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.24.0.tgz",
- "integrity": "sha512-Vsm497xFM7tTIPYK9bNTYJyF/lsP590Qc1WxJdlB6ljCbdZKU9SY8i7+Iin4kyhV/KV5J2rOKsBQbB77Ab7L/w==",
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.24.2.tgz",
+ "integrity": "sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg==",
"cpu": [
"arm64"
],
@@ -12120,9 +12366,9 @@
}
},
"node_modules/vite/node_modules/@esbuild/android-x64": {
- "version": "0.24.0",
- "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.24.0.tgz",
- "integrity": "sha512-t8GrvnFkiIY7pa7mMgJd7p8p8qqYIz1NYiAoKc75Zyv73L3DZW++oYMSHPRarcotTKuSs6m3hTOa5CKHaS02TQ==",
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.24.2.tgz",
+ "integrity": "sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw==",
"cpu": [
"x64"
],
@@ -12136,9 +12382,9 @@
}
},
"node_modules/vite/node_modules/@esbuild/darwin-arm64": {
- "version": "0.24.0",
- "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.24.0.tgz",
- "integrity": "sha512-CKyDpRbK1hXwv79soeTJNHb5EiG6ct3efd/FTPdzOWdbZZfGhpbcqIpiD0+vwmpu0wTIL97ZRPZu8vUt46nBSw==",
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.24.2.tgz",
+ "integrity": "sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA==",
"cpu": [
"arm64"
],
@@ -12152,9 +12398,9 @@
}
},
"node_modules/vite/node_modules/@esbuild/darwin-x64": {
- "version": "0.24.0",
- "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.24.0.tgz",
- "integrity": "sha512-rgtz6flkVkh58od4PwTRqxbKH9cOjaXCMZgWD905JOzjFKW+7EiUObfd/Kav+A6Gyud6WZk9w+xu6QLytdi2OA==",
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.24.2.tgz",
+ "integrity": "sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA==",
"cpu": [
"x64"
],
@@ -12168,9 +12414,9 @@
}
},
"node_modules/vite/node_modules/@esbuild/freebsd-arm64": {
- "version": "0.24.0",
- "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.24.0.tgz",
- "integrity": "sha512-6Mtdq5nHggwfDNLAHkPlyLBpE5L6hwsuXZX8XNmHno9JuL2+bg2BX5tRkwjyfn6sKbxZTq68suOjgWqCicvPXA==",
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.24.2.tgz",
+ "integrity": "sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg==",
"cpu": [
"arm64"
],
@@ -12184,9 +12430,9 @@
}
},
"node_modules/vite/node_modules/@esbuild/freebsd-x64": {
- "version": "0.24.0",
- "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.24.0.tgz",
- "integrity": "sha512-D3H+xh3/zphoX8ck4S2RxKR6gHlHDXXzOf6f/9dbFt/NRBDIE33+cVa49Kil4WUjxMGW0ZIYBYtaGCa2+OsQwQ==",
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.24.2.tgz",
+ "integrity": "sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q==",
"cpu": [
"x64"
],
@@ -12200,9 +12446,9 @@
}
},
"node_modules/vite/node_modules/@esbuild/linux-arm": {
- "version": "0.24.0",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.24.0.tgz",
- "integrity": "sha512-gJKIi2IjRo5G6Glxb8d3DzYXlxdEj2NlkixPsqePSZMhLudqPhtZ4BUrpIuTjJYXxvF9njql+vRjB2oaC9XpBw==",
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.24.2.tgz",
+ "integrity": "sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA==",
"cpu": [
"arm"
],
@@ -12216,9 +12462,9 @@
}
},
"node_modules/vite/node_modules/@esbuild/linux-arm64": {
- "version": "0.24.0",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.24.0.tgz",
- "integrity": "sha512-TDijPXTOeE3eaMkRYpcy3LarIg13dS9wWHRdwYRnzlwlA370rNdZqbcp0WTyyV/k2zSxfko52+C7jU5F9Tfj1g==",
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.24.2.tgz",
+ "integrity": "sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg==",
"cpu": [
"arm64"
],
@@ -12232,9 +12478,9 @@
}
},
"node_modules/vite/node_modules/@esbuild/linux-ia32": {
- "version": "0.24.0",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.24.0.tgz",
- "integrity": "sha512-K40ip1LAcA0byL05TbCQ4yJ4swvnbzHscRmUilrmP9Am7//0UjPreh4lpYzvThT2Quw66MhjG//20mrufm40mA==",
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.24.2.tgz",
+ "integrity": "sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw==",
"cpu": [
"ia32"
],
@@ -12248,9 +12494,9 @@
}
},
"node_modules/vite/node_modules/@esbuild/linux-loong64": {
- "version": "0.24.0",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.24.0.tgz",
- "integrity": "sha512-0mswrYP/9ai+CU0BzBfPMZ8RVm3RGAN/lmOMgW4aFUSOQBjA31UP8Mr6DDhWSuMwj7jaWOT0p0WoZ6jeHhrD7g==",
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.24.2.tgz",
+ "integrity": "sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ==",
"cpu": [
"loong64"
],
@@ -12264,9 +12510,9 @@
}
},
"node_modules/vite/node_modules/@esbuild/linux-mips64el": {
- "version": "0.24.0",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.24.0.tgz",
- "integrity": "sha512-hIKvXm0/3w/5+RDtCJeXqMZGkI2s4oMUGj3/jM0QzhgIASWrGO5/RlzAzm5nNh/awHE0A19h/CvHQe6FaBNrRA==",
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.24.2.tgz",
+ "integrity": "sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw==",
"cpu": [
"mips64el"
],
@@ -12280,9 +12526,9 @@
}
},
"node_modules/vite/node_modules/@esbuild/linux-ppc64": {
- "version": "0.24.0",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.24.0.tgz",
- "integrity": "sha512-HcZh5BNq0aC52UoocJxaKORfFODWXZxtBaaZNuN3PUX3MoDsChsZqopzi5UupRhPHSEHotoiptqikjN/B77mYQ==",
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.24.2.tgz",
+ "integrity": "sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw==",
"cpu": [
"ppc64"
],
@@ -12296,9 +12542,9 @@
}
},
"node_modules/vite/node_modules/@esbuild/linux-riscv64": {
- "version": "0.24.0",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.24.0.tgz",
- "integrity": "sha512-bEh7dMn/h3QxeR2KTy1DUszQjUrIHPZKyO6aN1X4BCnhfYhuQqedHaa5MxSQA/06j3GpiIlFGSsy1c7Gf9padw==",
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.24.2.tgz",
+ "integrity": "sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q==",
"cpu": [
"riscv64"
],
@@ -12312,9 +12558,9 @@
}
},
"node_modules/vite/node_modules/@esbuild/linux-s390x": {
- "version": "0.24.0",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.24.0.tgz",
- "integrity": "sha512-ZcQ6+qRkw1UcZGPyrCiHHkmBaj9SiCD8Oqd556HldP+QlpUIe2Wgn3ehQGVoPOvZvtHm8HPx+bH20c9pvbkX3g==",
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.24.2.tgz",
+ "integrity": "sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw==",
"cpu": [
"s390x"
],
@@ -12328,9 +12574,9 @@
}
},
"node_modules/vite/node_modules/@esbuild/linux-x64": {
- "version": "0.24.0",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.24.0.tgz",
- "integrity": "sha512-vbutsFqQ+foy3wSSbmjBXXIJ6PL3scghJoM8zCL142cGaZKAdCZHyf+Bpu/MmX9zT9Q0zFBVKb36Ma5Fzfa8xA==",
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.24.2.tgz",
+ "integrity": "sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q==",
"cpu": [
"x64"
],
@@ -12344,9 +12590,9 @@
}
},
"node_modules/vite/node_modules/@esbuild/netbsd-x64": {
- "version": "0.24.0",
- "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.24.0.tgz",
- "integrity": "sha512-hjQ0R/ulkO8fCYFsG0FZoH+pWgTTDreqpqY7UnQntnaKv95uP5iW3+dChxnx7C3trQQU40S+OgWhUVwCjVFLvg==",
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.24.2.tgz",
+ "integrity": "sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw==",
"cpu": [
"x64"
],
@@ -12360,9 +12606,9 @@
}
},
"node_modules/vite/node_modules/@esbuild/openbsd-x64": {
- "version": "0.24.0",
- "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.24.0.tgz",
- "integrity": "sha512-4ir0aY1NGUhIC1hdoCzr1+5b43mw99uNwVzhIq1OY3QcEwPDO3B7WNXBzaKY5Nsf1+N11i1eOfFcq+D/gOS15Q==",
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.24.2.tgz",
+ "integrity": "sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA==",
"cpu": [
"x64"
],
@@ -12376,9 +12622,9 @@
}
},
"node_modules/vite/node_modules/@esbuild/sunos-x64": {
- "version": "0.24.0",
- "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.24.0.tgz",
- "integrity": "sha512-jVzdzsbM5xrotH+W5f1s+JtUy1UWgjU0Cf4wMvffTB8m6wP5/kx0KiaLHlbJO+dMgtxKV8RQ/JvtlFcdZ1zCPA==",
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.24.2.tgz",
+ "integrity": "sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig==",
"cpu": [
"x64"
],
@@ -12392,9 +12638,9 @@
}
},
"node_modules/vite/node_modules/@esbuild/win32-arm64": {
- "version": "0.24.0",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.24.0.tgz",
- "integrity": "sha512-iKc8GAslzRpBytO2/aN3d2yb2z8XTVfNV0PjGlCxKo5SgWmNXx82I/Q3aG1tFfS+A2igVCY97TJ8tnYwpUWLCA==",
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.24.2.tgz",
+ "integrity": "sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ==",
"cpu": [
"arm64"
],
@@ -12408,9 +12654,9 @@
}
},
"node_modules/vite/node_modules/@esbuild/win32-ia32": {
- "version": "0.24.0",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.24.0.tgz",
- "integrity": "sha512-vQW36KZolfIudCcTnaTpmLQ24Ha1RjygBo39/aLkM2kmjkWmZGEJ5Gn9l5/7tzXA42QGIoWbICfg6KLLkIw6yw==",
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.24.2.tgz",
+ "integrity": "sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA==",
"cpu": [
"ia32"
],
@@ -12424,9 +12670,9 @@
}
},
"node_modules/vite/node_modules/@esbuild/win32-x64": {
- "version": "0.24.0",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.24.0.tgz",
- "integrity": "sha512-7IAFPrjSQIJrGsK6flwg7NFmwBoSTyF3rl7If0hNUFQU4ilTsEPL6GuMuU9BfIWVVGuRnuIidkSMC+c0Otu8IA==",
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.24.2.tgz",
+ "integrity": "sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg==",
"cpu": [
"x64"
],
@@ -12440,9 +12686,9 @@
}
},
"node_modules/vite/node_modules/esbuild": {
- "version": "0.24.0",
- "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.24.0.tgz",
- "integrity": "sha512-FuLPevChGDshgSicjisSooU0cemp/sGXR841D5LHMB7mTVOmsEHcAxaH3irL53+8YDIeVNQEySh4DaYU/iuPqQ==",
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.24.2.tgz",
+ "integrity": "sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA==",
"hasInstallScript": true,
"license": "MIT",
"bin": {
@@ -12452,30 +12698,31 @@
"node": ">=18"
},
"optionalDependencies": {
- "@esbuild/aix-ppc64": "0.24.0",
- "@esbuild/android-arm": "0.24.0",
- "@esbuild/android-arm64": "0.24.0",
- "@esbuild/android-x64": "0.24.0",
- "@esbuild/darwin-arm64": "0.24.0",
- "@esbuild/darwin-x64": "0.24.0",
- "@esbuild/freebsd-arm64": "0.24.0",
- "@esbuild/freebsd-x64": "0.24.0",
- "@esbuild/linux-arm": "0.24.0",
- "@esbuild/linux-arm64": "0.24.0",
- "@esbuild/linux-ia32": "0.24.0",
- "@esbuild/linux-loong64": "0.24.0",
- "@esbuild/linux-mips64el": "0.24.0",
- "@esbuild/linux-ppc64": "0.24.0",
- "@esbuild/linux-riscv64": "0.24.0",
- "@esbuild/linux-s390x": "0.24.0",
- "@esbuild/linux-x64": "0.24.0",
- "@esbuild/netbsd-x64": "0.24.0",
- "@esbuild/openbsd-arm64": "0.24.0",
- "@esbuild/openbsd-x64": "0.24.0",
- "@esbuild/sunos-x64": "0.24.0",
- "@esbuild/win32-arm64": "0.24.0",
- "@esbuild/win32-ia32": "0.24.0",
- "@esbuild/win32-x64": "0.24.0"
+ "@esbuild/aix-ppc64": "0.24.2",
+ "@esbuild/android-arm": "0.24.2",
+ "@esbuild/android-arm64": "0.24.2",
+ "@esbuild/android-x64": "0.24.2",
+ "@esbuild/darwin-arm64": "0.24.2",
+ "@esbuild/darwin-x64": "0.24.2",
+ "@esbuild/freebsd-arm64": "0.24.2",
+ "@esbuild/freebsd-x64": "0.24.2",
+ "@esbuild/linux-arm": "0.24.2",
+ "@esbuild/linux-arm64": "0.24.2",
+ "@esbuild/linux-ia32": "0.24.2",
+ "@esbuild/linux-loong64": "0.24.2",
+ "@esbuild/linux-mips64el": "0.24.2",
+ "@esbuild/linux-ppc64": "0.24.2",
+ "@esbuild/linux-riscv64": "0.24.2",
+ "@esbuild/linux-s390x": "0.24.2",
+ "@esbuild/linux-x64": "0.24.2",
+ "@esbuild/netbsd-arm64": "0.24.2",
+ "@esbuild/netbsd-x64": "0.24.2",
+ "@esbuild/openbsd-arm64": "0.24.2",
+ "@esbuild/openbsd-x64": "0.24.2",
+ "@esbuild/sunos-x64": "0.24.2",
+ "@esbuild/win32-arm64": "0.24.2",
+ "@esbuild/win32-ia32": "0.24.2",
+ "@esbuild/win32-x64": "0.24.2"
}
},
"node_modules/vitefu": {
@@ -12937,6 +13184,22 @@
"integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
"license": "MIT"
},
+ "node_modules/yaml-language-server/node_modules/prettier": {
+ "version": "2.8.7",
+ "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.7.tgz",
+ "integrity": "sha512-yPngTo3aXUUmyuTjeTUT75txrf+aMh9FiD7q9ZE/i6r0bPb22g4FsE6Y338PQX1bmfy08i9QQCB7/rcUAVntfw==",
+ "license": "MIT",
+ "optional": true,
+ "bin": {
+ "prettier": "bin-prettier.js"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ },
+ "funding": {
+ "url": "https://github.com/prettier/prettier?sponsor=1"
+ }
+ },
"node_modules/yaml-language-server/node_modules/request-light": {
"version": "0.5.8",
"resolved": "https://registry.npmjs.org/request-light/-/request-light-0.5.8.tgz",
diff --git a/package.json b/package.json
index f4ca22a..b8ae4dd 100644
--- a/package.json
+++ b/package.json
@@ -11,7 +11,7 @@
},
"dependencies": {
"@astrojs/check": "^0.9.4",
- "@astrojs/mdx": "^4.0.1",
+ "@astrojs/mdx": "^4.0.3",
"@astrojs/sitemap": "^3.2.1",
"@swup/a11y-plugin": "^4.5.0",
"@swup/body-class-plugin": "^3.2.0",
@@ -19,7 +19,7 @@
"@swup/js-plugin": "^3.2.0",
"@swup/progress-plugin": "^3.2.0",
"@swup/scroll-plugin": "^3.3.2",
- "astro": "^5.0.2",
+ "astro": "^5.1.1",
"normalize.css": "^8.0.1",
"swup": "^4.7.0",
"typescript": "^5.5.4"
diff --git a/src/assets/css/components/logos.css b/src/assets/css/components/logos.css
index ab687c1..6b4ebc8 100644
--- a/src/assets/css/components/logos.css
+++ b/src/assets/css/components/logos.css
@@ -4,12 +4,14 @@
gap: 2em 3em;
justify-content: center;
list-style: none;
- margin: 2em 0;
- max-width: none;
+ margin-block: var(--space-2xl);
+ max-width: calc(1200 / 16 * 1rem);
padding: 0;
& li {
display: flex;
+ flex: 1 1 12rem;
+ justify-content: center;
}
& .svg {
@@ -18,6 +20,7 @@
& svg {
fill: var(--color-body);
max-height: 2em;
+ max-width: 100%;
width: auto;
}
}
diff --git a/src/assets/images/client-logos/amc-networks.svg b/src/assets/images/client-logos/amc-networks.svg
new file mode 100644
index 0000000..792d93b
--- /dev/null
+++ b/src/assets/images/client-logos/amc-networks.svg
@@ -0,0 +1 @@
+
diff --git a/src/components/Card.astro b/src/components/Card.astro
index 71bab94..1a5efa1 100644
--- a/src/components/Card.astro
+++ b/src/components/Card.astro
@@ -1,4 +1,11 @@
---
+import type { DataEntryMap } from 'astro:content';
+import type { CollectionEntry } from 'astro:content';
+
+interface Props {
+ post: CollectionEntry;
+}
+
import Tags from '@/components/Tags.astro';
import FormattedDate from '@/components/FormattedDate.astro';
import Link from '@/components/Link.astro';
@@ -6,7 +13,8 @@ import Link from '@/components/Link.astro';
const { post } = Astro.props;
const { data } = post;
const { title, date, categories } = data;
-const href = `${post.collection}/${post.slug}`;
+
+const href = `${post.collection}/${post.id}`;
---
@@ -17,5 +25,5 @@ const href = `${post.collection}/${post.slug}`;
- {categories.length &&
}
+ {categories?.length &&
}
diff --git a/src/components/EntryList.astro b/src/components/EntryList.astro
deleted file mode 100644
index e68eb71..0000000
--- a/src/components/EntryList.astro
+++ /dev/null
@@ -1,26 +0,0 @@
----
-import type { PaginationEntry } from '../types';
-
-interface Props {
- data: PaginationEntry[];
-}
-
-const { data } = Astro.props;
----
-
-
- {data.map((entry) => {
- return (
- -
-
-
-
-
- )
- })}
-
-
\ No newline at end of file
diff --git a/src/components/NavigationSocial.astro b/src/components/NavigationSocial.astro
index 5ffa21a..d3af58f 100644
--- a/src/components/NavigationSocial.astro
+++ b/src/components/NavigationSocial.astro
@@ -16,6 +16,11 @@ const networks = [
slug: "codepen",
name: "Codepen",
url: "https://codepen.io/JMChristensen/"
+ },
+ {
+ slug: "bluesky",
+ name: "Bluesky",
+ url: "https://bsky.app/profile/jonmchristensen.bsky.social"
}
]
---
diff --git a/src/components/RecentPosts.astro b/src/components/RecentPosts.astro
index 84a6f41..6e227b2 100644
--- a/src/components/RecentPosts.astro
+++ b/src/components/RecentPosts.astro
@@ -2,12 +2,10 @@
import { getCollection } from 'astro:content';
import Card from '@/components/Card.astro';
import { filterDrafts, sortEntriesByDate } from '@/utils';
-import type { Entry } from '@/types';
-let entries = await getCollection('my-thoughts') as Entry[];
-
-entries = sortEntriesByDate(entries);
-entries = filterDrafts(entries);
+const collectionEntries = await getCollection('my-thoughts')
+const sortedEntries = sortEntriesByDate(collectionEntries)
+const entries = filterDrafts(sortedEntries)
---
diff --git a/src/components/SiteSVG.astro b/src/components/SiteSVG.astro
index ba53b53..052a7f1 100644
--- a/src/components/SiteSVG.astro
+++ b/src/components/SiteSVG.astro
@@ -35,5 +35,8 @@
+
+
+
diff --git a/src/content/config.ts b/src/content.config.ts
similarity index 78%
rename from src/content/config.ts
rename to src/content.config.ts
index 1e76de6..2204acf 100644
--- a/src/content/config.ts
+++ b/src/content.config.ts
@@ -1,4 +1,5 @@
// 1. Import utilities from `astro:content`
+import { glob } from 'astro/loaders';
import { z, defineCollection } from 'astro:content';
const defaults = {
@@ -12,17 +13,21 @@ const defaults = {
// 2. Define your collection(s)
const postsCollection = defineCollection({
+ loader: glob({ pattern: "**/*.{md,mdx}", base: "./src/content/my-thoughts" }),
schema: z.object({
...defaults,
+ featured_image: z.string().optional(),
})
});
const snippetsCollection = defineCollection({
+ loader: glob({ pattern: "**/*.{md,mdx}", base: "./src/content/snippets" }),
schema: z.object({
...defaults,
lastmod: z.date(),
})
});
const projectsCollection = defineCollection({
+ loader: glob({ pattern: "**/*.{md,mdx}", base: "./src/content/projects" }),
schema: z.object({
...defaults,
company: z.string(),
diff --git a/src/layouts/Project.astro b/src/layouts/Project.astro
index 078ea10..dafa8ef 100644
--- a/src/layouts/Project.astro
+++ b/src/layouts/Project.astro
@@ -1,16 +1,19 @@
---
+import type { CollectionEntry, DataEntryMap } from 'astro:content';
+
interface Props {
- entry: Entry;
+ entry: CollectionEntry;
}
import BaseLayout from '@/layouts/Base.astro';
-import type { Entry, Project } from '@/types';
+import type { Project } from '@/types';
import { getCustomComponents } from '@/utils';
import FrontMatterImage from '@/components/FrontMatterImage.astro';
+import { render } from 'astro:content';
const { entry } = Astro.props;
-const { data } = entry;
+const { data } = entry as CollectionEntry<"projects">;
const {
title,
description = '',
@@ -21,11 +24,10 @@ const {
libraries,
technologies,
platforms,
-} = data as Project;
-const { Content, components } = await entry.render();
+} = data;
+const { Content } = await render(entry);
const extendedComponents = {
- ...components,
...getCustomComponents(),
}
diff --git a/src/layouts/Single.astro b/src/layouts/Single.astro
index 3b287cd..82b678a 100644
--- a/src/layouts/Single.astro
+++ b/src/layouts/Single.astro
@@ -1,25 +1,28 @@
---
+import type { CollectionEntry, DataEntryMap } from 'astro:content';
+
interface Props {
- entry: Entry;
+ entry: CollectionEntry;
}
import BaseLayout from '@/layouts/Base.astro';
-import type { Entry, Post } from '@/types';
import { getCustomComponents } from '@/utils';
import Tags from '@/components/Tags.astro';
import FormattedDate from '@/components/FormattedDate.astro';
+import { render } from 'astro:content';
const { entry } = Astro.props;
-const { data } = entry;
+const { data } = entry as CollectionEntry<"my-thoughts">;
const {
title,
description = '',
date,
categories,
featured_image = ''
-} = data as Post;
-const { Content, components } = await entry.render();
+} = data;
+const entryRender = await render(entry);
+const { Content } = entryRender;
const layoutProps = {
title,
@@ -29,10 +32,8 @@ const layoutProps = {
}
const extendedComponents = {
- ...components,
...getCustomComponents(),
}
-
---
diff --git a/src/layouts/Snippet.astro b/src/layouts/Snippet.astro
index 6e05736..471f462 100644
--- a/src/layouts/Snippet.astro
+++ b/src/layouts/Snippet.astro
@@ -1,22 +1,23 @@
---
-import type { Entry, Snippet } from '../types';
+import type { CollectionEntry, DataEntryMap } from 'astro:content';
interface Props {
- entry: Entry;
+ entry: CollectionEntry;
}
-import BaseLayout from '../layouts/Base.astro';
-import FormattedDate from '../components/FormattedDate.astro';
+import BaseLayout from '@/layouts/Base.astro';
+import FormattedDate from '@/components/FormattedDate.astro';
+import { render } from 'astro:content';
const { entry } = Astro.props;
-const { data } = entry;
+const { data } = entry as CollectionEntry<"snippets">;
const {
title,
description = '',
date,
lastmod,
-} = data as Snippet;
-const { Content } = await entry.render();
+} = data;
+const { Content } = await render(entry);
const layoutProps = {
title,
diff --git a/src/pages/about-me.mdx b/src/pages/about-me.mdx
index 5d37532..2cb2bad 100644
--- a/src/pages/about-me.mdx
+++ b/src/pages/about-me.mdx
@@ -13,7 +13,7 @@ export const clients = [
{ slug: 'images/client-logos/university-st-thomas', name: 'University St. Thomas'},
{ slug: 'images/client-logos/music-instrument-museum', name: 'Music Instrument Museum'},
{ slug: 'images/client-logos/california-grants-portal', name: 'California Grants Portal'},
- { slug: 'images/client-logos/sheehy', name: 'Sheehy Construction'},
+ { slug: 'images/client-logos/amc-networks', name: 'AMC Networks'},
{ slug: 'images/client-logos/encompass-health', name: 'Encompass Health'},
{ slug: 'images/client-logos/t-mobile', name: 'T-Mobile'},
{ slug: 'images/client-logos/hilton', name: 'Hilton'},
@@ -22,14 +22,12 @@ export const clients = [
export const tools = [
{ slug: 'images/tool-logos/git', name: 'Git'},
{ slug: 'images/tool-logos/github', name: 'Github'},
- { slug: 'images/tool-logos/js', name: 'JavaScript'},
{ slug: 'images/tool-logos/npm', name: 'Node Package Manager (NPM)'},
{ slug: 'images/tool-logos/postcss', name: 'PostCSS'},
{ slug: 'images/tool-logos/tailwindcss', name: 'Tailwind CSS'},
{ slug: 'images/tool-logos/wordpress', name: 'WordPress'},
{ slug: 'images/tool-logos/react', name: 'React'},
{ slug: 'images/tool-logos/webpack', name: 'webpack'},
- { slug: 'images/tool-logos/vscode', name: 'VS Code'},
{ slug: 'images/tool-logos/preact', name: 'Preact'},
{ slug: 'images/tool-logos/nextjs', name: 'Next JS'},
{ slug: 'images/tool-logos/astro', name: 'Astro'},
diff --git a/src/pages/my-thoughts/[...page].astro b/src/pages/my-thoughts/[...page].astro
index ce572a5..af47abf 100644
--- a/src/pages/my-thoughts/[...page].astro
+++ b/src/pages/my-thoughts/[...page].astro
@@ -4,14 +4,14 @@ import Archive from '@/layouts/Archive.astro';
import Pagination from "@/components/Pagination.astro";
import Section from "@/components/Section.astro";
import Card from "@/components/Card.astro";
-import type { PaginationPage, PaginationEntry } from "@/types";
import { filterDrafts, sortEntriesByDate } from "@/utils";
+import type { PaginationPage } from "@/types";
export async function getStaticPaths({ paginate }: { paginate: Function }) {
- let entries = await getCollection('my-thoughts') as PaginationEntry[];
+ const collectionEntries = await getCollection('my-thoughts')
- entries = sortEntriesByDate(entries) as PaginationEntry[];
- entries = filterDrafts(entries) as PaginationEntry[];
+ const sortedEntries = sortEntriesByDate(collectionEntries)
+ const entries = filterDrafts(sortedEntries)
return paginate(entries);
}
diff --git a/src/pages/my-thoughts/[slug]/index.astro b/src/pages/my-thoughts/[id]/index.astro
similarity index 55%
rename from src/pages/my-thoughts/[slug]/index.astro
rename to src/pages/my-thoughts/[id]/index.astro
index b2e93ce..0b91876 100644
--- a/src/pages/my-thoughts/[slug]/index.astro
+++ b/src/pages/my-thoughts/[id]/index.astro
@@ -2,15 +2,14 @@
import { getCollection } from "astro:content";
import Single from "@/layouts/Single.astro";
import { filterDrafts } from "@/utils";
-import type { PaginationEntry } from "@/types";
export async function getStaticPaths() {
- let entries = await getCollection("my-thoughts") as PaginationEntry[];
+ const collectionEntries = await getCollection("my-thoughts");
- entries = filterDrafts(entries) as PaginationEntry[];
+ const entries = filterDrafts(collectionEntries);
return entries.map((entry) => ({
- params: { slug: entry.slug }, props: { entry },
+ params: { id: entry.id }, props: { entry },
}));
}
diff --git a/src/pages/projects/[...page].astro b/src/pages/projects/[...page].astro
index 6411a10..ade081f 100644
--- a/src/pages/projects/[...page].astro
+++ b/src/pages/projects/[...page].astro
@@ -2,21 +2,23 @@
import { getCollection } from "astro:content";
import Archive from '@/layouts/Archive.astro';
import { filterDrafts, sortEntriesByDate } from "@/utils";
-import type { PaginationPage, PaginationEntry, Project } from "@/types";
+import type { PaginationPage } from "@/types";
import Section from "@/components/Section.astro";
import Link from "@/components/Link.astro";
import FrontMatterImage from "@/components/FrontMatterImage.astro";
+import type { CollectionEntry } from "astro:content";
export async function getStaticPaths({ paginate }: { paginate: Function }) {
- let entries = await getCollection('projects') as PaginationEntry[];
+ const collectionEntries = await getCollection('projects');
- entries = sortEntriesByDate(entries) as PaginationEntry[];
- entries = filterDrafts(entries) as PaginationEntry[];
+ const sortedEntries = sortEntriesByDate(collectionEntries);
+ const entries = filterDrafts(sortedEntries);
return paginate(entries);
}
const { page } : { page: PaginationPage } = Astro.props;
+const posts = page.data as CollectionEntry<"projects">[];
const title = 'Projects';
const description = "Some of the things I've worked on. Check 'em out.";
---
@@ -31,10 +33,10 @@ const description = "Some of the things I've worked on. Check 'em out.";
- {page.data.map((post) => {
+ {posts.map((post) => {
const { data } = post;
- const { title, featured_image } = data as Project;
- const href = `${post.collection}/${post.slug}`;
+ const { title, featured_image } = data;
+ const href = `${post.collection}/${post.id}`;
return (
-
diff --git a/src/pages/projects/[slug]/index.astro b/src/pages/projects/[id]/index.astro
similarity index 56%
rename from src/pages/projects/[slug]/index.astro
rename to src/pages/projects/[id]/index.astro
index e5db4a4..54ad0c7 100644
--- a/src/pages/projects/[slug]/index.astro
+++ b/src/pages/projects/[id]/index.astro
@@ -1,16 +1,15 @@
---
import { getCollection } from "astro:content";
import Project from '@/layouts/Project.astro';
-import type { PaginationEntry } from "@/types";
import { filterDrafts } from "@/utils";
export async function getStaticPaths() {
- let entries = await getCollection("projects") as PaginationEntry[];
+ const collectionEntries = await getCollection("projects");
- entries = filterDrafts(entries) as PaginationEntry[];
+ const entries = filterDrafts(collectionEntries);
return entries.map((entry) => ({
- params: { slug: entry.slug }, props: { entry },
+ params: { id: entry.id }, props: { entry },
}));
}
diff --git a/src/pages/snippets/[...page].astro b/src/pages/snippets/[...page].astro
index 75b78e0..87d26f4 100644
--- a/src/pages/snippets/[...page].astro
+++ b/src/pages/snippets/[...page].astro
@@ -2,21 +2,23 @@
import { getCollection } from "astro:content";
import Archive from '@/layouts/Archive.astro';
import { sortEntriesByTitle, filterDrafts } from "@/utils";
-import type { PaginationPage, PaginationEntry, Snippet } from "@/types";
+import type { PaginationPage } from "@/types";
import Section from "@/components/Section.astro";
import FormattedDate from "@/components/FormattedDate.astro";
import Link from "@/components/Link.astro";
+import type { CollectionEntry } from "astro:content";
export async function getStaticPaths({ paginate }: { paginate: Function }) {
- let entries = await getCollection('snippets') as PaginationEntry[];
+ const collectionEntries = await getCollection('snippets');
- entries = sortEntriesByTitle(entries) as PaginationEntry[];
- entries = filterDrafts(entries) as PaginationEntry[];
+ const sortedEntries = sortEntriesByTitle(collectionEntries);
+ const entries = filterDrafts(sortedEntries);
return paginate(entries);
}
const { page } : { page: PaginationPage } = Astro.props;
+const posts = page.data as CollectionEntry<"snippets">[];
const title = 'Snippets';
const description = "A collection of snippets I have for web development.";
---
@@ -41,10 +43,10 @@ const description = "A collection of snippets I have for web development.";
- {page.data.map(snippet => {
+ {posts.map((snippet) => {
const { data } = snippet;
- const { title, description, lastmod, categories } = data as Snippet;
- const href = `${snippet.collection}/${snippet.slug}`;
+ const { title, description, lastmod, categories } = data;
+ const href = `${snippet.collection}/${snippet.id}`;
return (
diff --git a/src/pages/snippets/[id]/index.astro b/src/pages/snippets/[id]/index.astro
new file mode 100644
index 0000000..5a700a5
--- /dev/null
+++ b/src/pages/snippets/[id]/index.astro
@@ -0,0 +1,19 @@
+---
+import { getCollection } from "astro:content";
+import Snippet from '@/layouts/Snippet.astro';
+import { filterDrafts } from "@/utils";
+
+export async function getStaticPaths() {
+ const collectionEntries = await getCollection("snippets");
+
+ const entries = filterDrafts(collectionEntries);
+
+ return entries.map((entry) => ({
+ params: { id: entry.id }, props: { entry },
+ }));
+}
+
+const { entry } = Astro.props;
+---
+
+
diff --git a/src/pages/snippets/[slug]/index.astro b/src/pages/snippets/[slug]/index.astro
deleted file mode 100644
index 1a89576..0000000
--- a/src/pages/snippets/[slug]/index.astro
+++ /dev/null
@@ -1,20 +0,0 @@
----
-import { getCollection } from "astro:content";
-import Snippet from '../../../layouts/Snippet.astro';
-import type { PaginationEntry } from "@/types";
-import { filterDrafts } from "@/utils";
-
-export async function getStaticPaths() {
- let entries = await getCollection('snippets') as PaginationEntry[];
-
- entries = filterDrafts(entries) as PaginationEntry[];
-
- return entries.map((entry) => ({
- params: { slug: entry.slug }, props: { entry },
- }));
-}
-
-const { entry } = Astro.props;
----
-
-
diff --git a/src/types.ts b/src/types.ts
index b776c8e..8142fa5 100644
--- a/src/types.ts
+++ b/src/types.ts
@@ -1,3 +1,5 @@
+import type { CollectionEntry, DataEntryMap } from "astro:content";
+
export type Entry = {
data: EntryData;
render: Function;
@@ -12,15 +14,15 @@ export type EntryData = {
categories?: string[];
}
-export type Post = EntryData & {
+export type Post = CollectionEntry<'my-thoughts'> & {
featured_image?: any;
}
-export type Snippet = EntryData & {
+export type Snippet = CollectionEntry<"snippets"> & {
lastmod: Date;
}
-export type Project = EntryData & {
+export type Project = CollectionEntry<"projects"> & {
company: string;
subtitle: string;
featured_image: string;
@@ -30,15 +32,8 @@ export type Project = EntryData & {
platforms: string[];
}
-export type PaginationEntry = Entry & {
- id: string;
- slug: string;
- body: string;
- collection: string;
-}
-
export type PaginationPage = {
- data: PaginationEntry[];
+ data: CollectionEntry[];
start: number;
end: number;
size: number;
diff --git a/src/utils/index.ts b/src/utils/index.ts
index e180e9e..3b650e8 100644
--- a/src/utils/index.ts
+++ b/src/utils/index.ts
@@ -1,38 +1,37 @@
-import type { Entry } from "@/types";
-
import Codepen from '@/components/Codepen.astro';
import Devices from '@/components/Devices.astro';
import Figure from '@/components/Figure.astro';
import Gallery from "@/components/Gallery.astro";
import Stat from '@/components/Stat.astro';
import YouTube from '@/components/YouTube.astro';
+import type { CollectionEntry, DataEntryMap } from "astro:content";
-export function sortEntriesByDate(entries: Entry[]) {
+export function sortEntriesByDate(entries: CollectionEntry[]) {
return entries.sort((a, b) => {
return new Date(b.data.date).getTime() - new Date(a.data.date).getTime();
});
}
-export function sortEntriesByTitle(entries: Entry[]) {
+export function sortEntriesByTitle(entries: CollectionEntry[]) {
return entries.sort((a, b) => {
return a.data.title.localeCompare(b.data.title);
});
}
-export function filterDrafts(entries: Entry[]) {
+export function filterDrafts(entries: CollectionEntry[]) {
return entries.filter(entry => {
return import.meta.env.PROD ? entry.data.draft !== true : true;
});
}
-export function filterByCategory(entries: Entry[], category: string) {
+export function filterByCategory(entries: CollectionEntry[], category: string) {
return entries.filter(entry => {
if ( !entry.data.categories ) return false;
return entry.data.categories.includes(category)
});
}
-export function filterByTag(entries: Entry[], tag: string) {
+export function filterByTag(entries: CollectionEntry[], tag: string) {
return entries.filter(entry => {
if ( !entry.data.tags ) return false;
return entry.data.tags.includes(tag)