feat: ✨ Add SSR Handling (#10)
* Create draft PR for #9 [skip ci] * Implement SSR * add changeset --------- Co-authored-by: create-issue-branch[bot] <53036503+create-issue-branch[bot]@users.noreply.github.com> Co-authored-by: Adam Matthiesen <amatthiesen@outlook.com>
This commit is contained in:
parent
4b159a9bbb
commit
773376207b
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
"@matthiesenxyz/astro-hashnode": patch
|
||||
---
|
||||
|
||||
Add SSR support for blog posts (Tags are still prerendered)
|
|
@ -15,6 +15,7 @@ export default defineIntegration({
|
|||
optionsSchema,
|
||||
plugins: [ ...corePlugins, addDtsPlugin ],
|
||||
setup({ options }) {
|
||||
type outputType = "static" | "hybrid" | "server";
|
||||
|
||||
return {
|
||||
"astro:config:setup": ({
|
||||
|
@ -50,6 +51,13 @@ export default defineIntegration({
|
|||
throw new AstroError(message)
|
||||
}
|
||||
|
||||
// Check if output is static or hybrid
|
||||
const checkIfStatic = (output: outputType) => {
|
||||
if (output === "static") { return true }
|
||||
if (output === "hybrid") { return true }
|
||||
return false
|
||||
}
|
||||
|
||||
hashLogNoVerbose("Setting up Astro-Hashnode Integration")
|
||||
|
||||
// Check for Hashnode URL
|
||||
|
@ -62,7 +70,7 @@ export default defineIntegration({
|
|||
hashLog("Setting up Virtual Imports and Layout Component")
|
||||
// Setup Layout Component
|
||||
// biome-ignore lint/suspicious/noImplicitAnyLet: This is a false positive
|
||||
let layoutComponentPath
|
||||
let layoutComponentPath
|
||||
|
||||
if (options.layoutComponent) {
|
||||
layoutComponentPath = rootResolve(options.layoutComponent)
|
||||
|
@ -81,8 +89,8 @@ export default defineIntegration({
|
|||
content: readFileSync(resolve("./definitions/astro-hashnode.d.ts"), "utf-8"),
|
||||
})
|
||||
|
||||
hashLog("Setting up 'Tailwind CSS v4' Integration")
|
||||
// Add & Setup Tailwind CSS
|
||||
hashLog("Setting up 'Tailwind CSS v4' Integration")
|
||||
const twplugin = tailwindcss();
|
||||
for (const twp of twplugin) {
|
||||
addVitePlugin(twp);
|
||||
|
@ -102,22 +110,19 @@ export default defineIntegration({
|
|||
}
|
||||
})
|
||||
|
||||
hashLog("Setting up Page Routes")
|
||||
// Add Page Routes
|
||||
hashLog("Setting up Page Routes")
|
||||
if (options.landingPage) {
|
||||
injectRoute({
|
||||
pattern: config.base,
|
||||
entrypoint: resolve("./pages/index.astro"),
|
||||
prerender: true,
|
||||
});
|
||||
}
|
||||
injectRoute({
|
||||
pattern: `${config.base}blog`,
|
||||
entrypoint: resolve("./pages/blog/index.astro"),
|
||||
})
|
||||
injectRoute({
|
||||
pattern: `${config.base}blog/[slug]`,
|
||||
entrypoint: resolve("./pages/blog/[slug].astro"),
|
||||
})
|
||||
injectRoute({
|
||||
pattern: `${config.base}blog/about`,
|
||||
entrypoint: resolve("./pages/blog/about.astro"),
|
||||
|
@ -125,7 +130,26 @@ export default defineIntegration({
|
|||
injectRoute({
|
||||
pattern: `${config.base}blog/tags/[tag]`,
|
||||
entrypoint: resolve("./pages/blog/tags/[tag].astro"),
|
||||
prerender: true,
|
||||
})
|
||||
|
||||
// Add Blog Post Routes based on output type
|
||||
if ( checkIfStatic(config.output) ) {
|
||||
// Static & Hybrid Routes
|
||||
injectRoute({
|
||||
pattern: `${config.base}blog/[slug]`,
|
||||
entrypoint: resolve("./pages/blog/[slug].astro"),
|
||||
prerender: true,
|
||||
})
|
||||
} else {
|
||||
// Server Routes
|
||||
injectRoute({
|
||||
pattern: `${config.base}blog/[slug]`,
|
||||
entrypoint: resolve("./pages/ssr-pages/[slug].astro"),
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
},
|
||||
"astro:config:done": ({ logger }) => {
|
||||
const HashLogger = logger.fork(c.bold(c.blue("Astro-Hashnode")));
|
||||
|
|
|
@ -18,6 +18,7 @@ export async function getStaticPaths() {
|
|||
}
|
||||
const { slug } = Astro.params;
|
||||
const post = await getPost(slug);
|
||||
|
||||
---
|
||||
<Layout pageTitle={post.title} ogImage={post.coverImage.url}>
|
||||
<article class="bg-white p-3 mt-3 flex flex-col">
|
||||
|
|
|
@ -4,10 +4,13 @@ import Posts from '../../../components/Posts.astro';
|
|||
import {getAllPosts} from '../../../hn-gql';
|
||||
import Taged from '../../../components/Tag.astro';
|
||||
|
||||
export const prerender = true
|
||||
|
||||
export async function getStaticPaths() {
|
||||
const data = await getAllPosts();
|
||||
const allPosts = data.publication.posts.edges;
|
||||
|
||||
// biome-ignore lint/complexity/useFlatMap: <explanation>
|
||||
const allTags = [...new Set(allPosts.map((post) => post.node.tags).flat())];
|
||||
const jsonObject = allTags.map((object) => JSON.stringify(object));
|
||||
const uniqueSet = new Set(jsonObject);
|
||||
|
@ -15,8 +18,10 @@ export async function getStaticPaths() {
|
|||
|
||||
return uniqueTags.map((uTag) => {
|
||||
const filteredPosts: { node: { author: { name: string; profilePicture: string; }; publishedAt: string; title: string; subtitle: string; brief: string; slug: string; readTimeInMinutes: number; content: { html: string; }; tags: { name: string; slug: string; }[]; coverImage: { url: string; }; }; }[] = [];
|
||||
// biome-ignore lint/complexity/noForEach: <explanation>
|
||||
allPosts.forEach((post) => {
|
||||
const tags = post.node.tags;
|
||||
// biome-ignore lint/complexity/noForEach: <explanation>
|
||||
tags.forEach((tag) => {
|
||||
if(tag.slug === uTag.slug) {
|
||||
filteredPosts.push(post)
|
||||
|
|
|
@ -0,0 +1,57 @@
|
|||
---
|
||||
import { Layout } from "virtual:astro-hashnode/components";
|
||||
import { getPost } from '../../hn-gql';
|
||||
import Tag from '../../components/Tag.astro';
|
||||
import Author from '../../components/Author.astro';
|
||||
import { Markup } from 'astro-remote';
|
||||
import { Image } from 'astro:assets';
|
||||
import RemoteImage from '../../components/astro-remote/RemoteImage.astro';
|
||||
|
||||
const { slug } = Astro.params;
|
||||
|
||||
const checkSlug = (slug:string|undefined) => {
|
||||
if (slug !== undefined) {
|
||||
return slug as string;
|
||||
}
|
||||
return " " as string;
|
||||
}
|
||||
|
||||
const post = await getPost(checkSlug(slug));
|
||||
---
|
||||
{post ? (
|
||||
<Layout pageTitle={post.title} ogImage={post.coverImage.url}>
|
||||
<article class="bg-white p-3 mt-3 flex flex-col">
|
||||
<Image
|
||||
class="rounded-lg"
|
||||
src={post.coverImage.url}
|
||||
alt={post.title}
|
||||
inferSize={true}
|
||||
loading="eager"
|
||||
/>
|
||||
<h1 class="text-4xl font-bold pt-5">{post.title}</h1>
|
||||
<h2 class="text-xl pt-3 pb-3" aria-label="CoverPhoto Subtitle">{post.subtitle}</h2>
|
||||
|
||||
<Author post={post} />
|
||||
|
||||
<div class="flex flex-wrap justify-center items-center mt-5 mb-5">
|
||||
{post.tags && post.tags.map((tag) => <Tag tag={tag} />)}
|
||||
</div>
|
||||
|
||||
<div class="post-details">
|
||||
<Markup
|
||||
content={post.content.html}
|
||||
components={{
|
||||
img: RemoteImage
|
||||
}}
|
||||
/>
|
||||
|
||||
</div>
|
||||
</article>
|
||||
</Layout>) : (
|
||||
<Layout pageTitle="404">
|
||||
<div class="text-center my-20">
|
||||
<h1 class="text-4xl font-bold">404</h1>
|
||||
<p>Post not found</p>
|
||||
</div>
|
||||
</Layout>
|
||||
)}
|
|
@ -1,8 +1,13 @@
|
|||
import { defineConfig } from "astro/config";
|
||||
import astroHashnode from "@matthiesenxyz/astro-hashnode";
|
||||
// import node from '@astrojs/node';
|
||||
|
||||
// https://astro.build/config
|
||||
export default defineConfig({
|
||||
// output: 'server',
|
||||
// adapter: node({
|
||||
// mode: 'standalone',
|
||||
// }),
|
||||
integrations: [
|
||||
astroHashnode({
|
||||
hashnodeURL: "astroplayground.hashnode.dev",
|
|
@ -11,12 +11,13 @@
|
|||
"astro": "astro"
|
||||
},
|
||||
"dependencies": {
|
||||
"astro": "^4.4.15",
|
||||
"@matthiesenxyz/astro-hashnode": "workspace:*"
|
||||
"@astrojs/node": "8.2.3",
|
||||
"@matthiesenxyz/astro-hashnode": "workspace:*",
|
||||
"astro": "^4.5.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@astrojs/check": "^0.5.7",
|
||||
"@types/node": "^20.11.25",
|
||||
"typescript": "^5.3.3"
|
||||
"typescript": "^5.4.2"
|
||||
}
|
||||
}
|
||||
|
|
306
pnpm-lock.yaml
306
pnpm-lock.yaml
|
@ -22,7 +22,7 @@ importers:
|
|||
version: 4.0.0-alpha.7
|
||||
astro:
|
||||
specifier: '>=4.4.1'
|
||||
version: 4.4.15(@types/node@20.11.25)(typescript@5.4.2)
|
||||
version: 4.4.15(typescript@5.4.2)
|
||||
astro-font:
|
||||
specifier: ^0.0.77
|
||||
version: 0.0.77
|
||||
|
@ -57,12 +57,15 @@ importers:
|
|||
|
||||
playground:
|
||||
dependencies:
|
||||
'@astrojs/node':
|
||||
specifier: 8.2.3
|
||||
version: 8.2.3(astro@4.5.1)
|
||||
'@matthiesenxyz/astro-hashnode':
|
||||
specifier: workspace:*
|
||||
version: link:../package
|
||||
astro:
|
||||
specifier: ^4.4.15
|
||||
version: 4.4.15(@types/node@20.11.25)(typescript@5.4.2)
|
||||
specifier: ^4.5.1
|
||||
version: 4.5.1(@types/node@20.11.25)(typescript@5.4.2)
|
||||
devDependencies:
|
||||
'@astrojs/check':
|
||||
specifier: ^0.5.7
|
||||
|
@ -71,7 +74,7 @@ importers:
|
|||
specifier: ^20.11.25
|
||||
version: 20.11.25
|
||||
typescript:
|
||||
specifier: ^5.3.3
|
||||
specifier: ^5.4.2
|
||||
version: 5.4.2
|
||||
|
||||
packages:
|
||||
|
@ -125,6 +128,10 @@ packages:
|
|||
resolution: {integrity: sha512-06DD2ZnItMwUnH81LBLco3tWjcZ1lGU9rLCCBaeUCGYe9cI0wKyY2W3kDyoW1I6GmcWgt1fu+D1CTvz+FIKf8A==}
|
||||
dev: false
|
||||
|
||||
/@astrojs/internal-helpers@0.3.0:
|
||||
resolution: {integrity: sha512-tGmHvrhpzuz0JBHaJX8GywN9g4rldVNHtkoVDC3m/DdzBO70jGoVuc0uuNVglRYnsdwkbG0K02Iw3nOOR3/Y4g==}
|
||||
dev: false
|
||||
|
||||
/@astrojs/language-server@2.7.6(typescript@5.4.2):
|
||||
resolution: {integrity: sha512-NhMSmMAuKBMXnvpfn9eYPR7R6zOasAjRb+ta8L+rCHHuKzUc0lBgAF5M6rx01FJqlpGqeqao13eYt4287Ze49g==}
|
||||
hasBin: true
|
||||
|
@ -210,6 +217,43 @@ packages:
|
|||
- supports-color
|
||||
dev: false
|
||||
|
||||
/@astrojs/markdown-remark@4.3.0:
|
||||
resolution: {integrity: sha512-iZOgYj/yNDvBRfKqkGuAvjeONhjQPq8Uk3HjyIgcTK5valq03NiUgSc5Ovq00yUVBeYJ/5EDx23c8xqtkkBlPw==}
|
||||
dependencies:
|
||||
'@astrojs/prism': 3.0.0
|
||||
github-slugger: 2.0.0
|
||||
hast-util-from-html: 2.0.1
|
||||
hast-util-to-text: 4.0.0
|
||||
import-meta-resolve: 4.0.0
|
||||
mdast-util-definitions: 6.0.0
|
||||
rehype-raw: 7.0.0
|
||||
rehype-stringify: 10.0.0
|
||||
remark-gfm: 4.0.0
|
||||
remark-parse: 11.0.0
|
||||
remark-rehype: 11.1.0
|
||||
remark-smartypants: 2.1.0
|
||||
shiki: 1.1.7
|
||||
unified: 11.0.4
|
||||
unist-util-remove-position: 5.0.0
|
||||
unist-util-visit: 5.0.0
|
||||
unist-util-visit-parents: 6.0.1
|
||||
vfile: 6.0.1
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
dev: false
|
||||
|
||||
/@astrojs/node@8.2.3(astro@4.5.1):
|
||||
resolution: {integrity: sha512-VQQy7QIv4X+5dlKCEchYIxMFryS+BwDOFGNzeRmHe1/P819TlNup9/M8XqnWW4aZPxV7P6CoDeFxX6HuT/kOmQ==}
|
||||
peerDependencies:
|
||||
astro: ^4.2.0
|
||||
dependencies:
|
||||
astro: 4.5.1(@types/node@20.11.25)(typescript@5.4.2)
|
||||
send: 0.18.0
|
||||
server-destroy: 1.0.1
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
dev: false
|
||||
|
||||
/@astrojs/prism@3.0.0:
|
||||
resolution: {integrity: sha512-g61lZupWq1bYbcBnYZqdjndShr/J3l/oFobBKPA3+qMat146zce3nz2kdO4giGbhYDt4gYdhmoBz0vZJ4sIurQ==}
|
||||
engines: {node: '>=18.14.1'}
|
||||
|
@ -1101,6 +1145,10 @@ packages:
|
|||
requiresBuild: true
|
||||
optional: true
|
||||
|
||||
/@shikijs/core@1.1.7:
|
||||
resolution: {integrity: sha512-gTYLUIuD1UbZp/11qozD3fWpUTuMqPSf3svDMMrL0UmlGU7D9dPw/V1FonwAorCUJBltaaESxq90jrSjQyGixg==}
|
||||
dev: false
|
||||
|
||||
/@tailwindcss/oxide-android-arm64@4.0.0-alpha.7:
|
||||
resolution: {integrity: sha512-T50CFEgc1ZUe3/WkXthh9pOAdqRhXDTZgnUhPcBjjZue9WXb5mqupxwMtmgzRE/o/sBtt7gVBTIu6pA3afXbcw==}
|
||||
engines: {node: '>= 10'}
|
||||
|
@ -1525,7 +1573,7 @@ packages:
|
|||
vue:
|
||||
optional: true
|
||||
dependencies:
|
||||
astro: 4.4.15(@types/node@20.11.25)(typescript@5.4.2)
|
||||
astro: 4.4.15(typescript@5.4.2)
|
||||
pathe: 1.1.2
|
||||
recast: 0.23.6
|
||||
dev: false
|
||||
|
@ -1551,7 +1599,7 @@ packages:
|
|||
- typescript
|
||||
dev: false
|
||||
|
||||
/astro@4.4.15(@types/node@20.11.25)(typescript@5.4.2):
|
||||
/astro@4.4.15(typescript@5.4.2):
|
||||
resolution: {integrity: sha512-RTiAnlO8hDp6GqMVvaeJxyuCJhHNEho09lHshMNQBqgRabYPOJGW0HZZrbLRGNOqN9I14ivhZIunYGgAaGQpWw==}
|
||||
engines: {node: '>=18.14.1', npm: '>=6.14.0'}
|
||||
hasBin: true
|
||||
|
@ -1634,6 +1682,89 @@ packages:
|
|||
- typescript
|
||||
dev: false
|
||||
|
||||
/astro@4.5.1(@types/node@20.11.25)(typescript@5.4.2):
|
||||
resolution: {integrity: sha512-xqSBxeDZFUUgHl+npNwgoe6taTOCI8sJNwqWJaK3t/vcCHdfYJX00Tr9g43w/cYKPoTN4wKbNktbKYJZAbE3ZQ==}
|
||||
engines: {node: '>=18.14.1', npm: '>=6.14.0'}
|
||||
hasBin: true
|
||||
dependencies:
|
||||
'@astrojs/compiler': 2.7.0
|
||||
'@astrojs/internal-helpers': 0.3.0
|
||||
'@astrojs/markdown-remark': 4.3.0
|
||||
'@astrojs/telemetry': 3.0.4
|
||||
'@babel/core': 7.24.0
|
||||
'@babel/generator': 7.23.6
|
||||
'@babel/parser': 7.24.0
|
||||
'@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.24.0)
|
||||
'@babel/traverse': 7.24.0
|
||||
'@babel/types': 7.24.0
|
||||
'@shikijs/core': 1.1.7
|
||||
'@types/babel__core': 7.20.5
|
||||
acorn: 8.11.3
|
||||
aria-query: 5.3.0
|
||||
axobject-query: 4.0.0
|
||||
boxen: 7.1.1
|
||||
chokidar: 3.6.0
|
||||
ci-info: 4.0.0
|
||||
clsx: 2.1.0
|
||||
common-ancestor-path: 1.0.1
|
||||
cookie: 0.6.0
|
||||
cssesc: 3.0.0
|
||||
debug: 4.3.4
|
||||
deterministic-object-hash: 2.0.2
|
||||
devalue: 4.3.2
|
||||
diff: 5.2.0
|
||||
dlv: 1.1.3
|
||||
dset: 3.1.3
|
||||
es-module-lexer: 1.4.1
|
||||
esbuild: 0.19.12
|
||||
estree-walker: 3.0.3
|
||||
execa: 8.0.1
|
||||
fast-glob: 3.3.2
|
||||
flattie: 1.1.1
|
||||
github-slugger: 2.0.0
|
||||
gray-matter: 4.0.3
|
||||
html-escaper: 3.0.3
|
||||
http-cache-semantics: 4.1.1
|
||||
js-yaml: 4.1.0
|
||||
kleur: 4.1.5
|
||||
magic-string: 0.30.8
|
||||
mdast-util-to-hast: 13.0.2
|
||||
mime: 3.0.0
|
||||
ora: 7.0.1
|
||||
p-limit: 5.0.0
|
||||
p-queue: 8.0.1
|
||||
path-to-regexp: 6.2.1
|
||||
preferred-pm: 3.1.3
|
||||
prompts: 2.4.2
|
||||
rehype: 13.0.1
|
||||
resolve: 1.22.8
|
||||
semver: 7.6.0
|
||||
shiki: 1.1.7
|
||||
string-width: 7.1.0
|
||||
strip-ansi: 7.1.0
|
||||
tsconfck: 3.0.3(typescript@5.4.2)
|
||||
unist-util-visit: 5.0.0
|
||||
vfile: 6.0.1
|
||||
vite: 5.1.5(@types/node@20.11.25)
|
||||
vitefu: 0.2.5(vite@5.1.5)
|
||||
which-pm: 2.1.1
|
||||
yargs-parser: 21.1.1
|
||||
zod: 3.22.4
|
||||
zod-to-json-schema: 3.22.4(zod@3.22.4)
|
||||
optionalDependencies:
|
||||
sharp: 0.32.6
|
||||
transitivePeerDependencies:
|
||||
- '@types/node'
|
||||
- less
|
||||
- lightningcss
|
||||
- sass
|
||||
- stylus
|
||||
- sugarss
|
||||
- supports-color
|
||||
- terser
|
||||
- typescript
|
||||
dev: false
|
||||
|
||||
/available-typed-arrays@1.0.7:
|
||||
resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==}
|
||||
engines: {node: '>= 0.4'}
|
||||
|
@ -2031,6 +2162,17 @@ packages:
|
|||
stream-transform: 2.1.3
|
||||
dev: true
|
||||
|
||||
/debug@2.6.9:
|
||||
resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==}
|
||||
peerDependencies:
|
||||
supports-color: '*'
|
||||
peerDependenciesMeta:
|
||||
supports-color:
|
||||
optional: true
|
||||
dependencies:
|
||||
ms: 2.0.0
|
||||
dev: false
|
||||
|
||||
/debug@4.3.4:
|
||||
resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==}
|
||||
engines: {node: '>=6.0'}
|
||||
|
@ -2102,11 +2244,21 @@ packages:
|
|||
object-keys: 1.1.1
|
||||
dev: true
|
||||
|
||||
/depd@2.0.0:
|
||||
resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==}
|
||||
engines: {node: '>= 0.8'}
|
||||
dev: false
|
||||
|
||||
/dequal@2.0.3:
|
||||
resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==}
|
||||
engines: {node: '>=6'}
|
||||
dev: false
|
||||
|
||||
/destroy@1.2.0:
|
||||
resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==}
|
||||
engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16}
|
||||
dev: false
|
||||
|
||||
/detect-indent@6.1.0:
|
||||
resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==}
|
||||
engines: {node: '>=8'}
|
||||
|
@ -2167,6 +2319,10 @@ packages:
|
|||
resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
|
||||
dev: false
|
||||
|
||||
/ee-first@1.1.1:
|
||||
resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==}
|
||||
dev: false
|
||||
|
||||
/electron-to-chromium@1.4.699:
|
||||
resolution: {integrity: sha512-I7q3BbQi6e4tJJN5CRcyvxhK0iJb34TV8eJQcgh+fR2fQ8miMgZcEInckCo1U9exDHbfz7DLDnFn8oqH/VcRKw==}
|
||||
dev: false
|
||||
|
@ -2188,6 +2344,11 @@ packages:
|
|||
resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==}
|
||||
dev: false
|
||||
|
||||
/encodeurl@1.0.2:
|
||||
resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==}
|
||||
engines: {node: '>= 0.8'}
|
||||
dev: false
|
||||
|
||||
/end-of-stream@1.4.4:
|
||||
resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==}
|
||||
requiresBuild: true
|
||||
|
@ -2336,6 +2497,10 @@ packages:
|
|||
resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==}
|
||||
engines: {node: '>=6'}
|
||||
|
||||
/escape-html@1.0.3:
|
||||
resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==}
|
||||
dev: false
|
||||
|
||||
/escape-string-regexp@1.0.5:
|
||||
resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==}
|
||||
engines: {node: '>=0.8.0'}
|
||||
|
@ -2356,6 +2521,11 @@ packages:
|
|||
'@types/estree': 1.0.5
|
||||
dev: false
|
||||
|
||||
/etag@1.8.1:
|
||||
resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==}
|
||||
engines: {node: '>= 0.6'}
|
||||
dev: false
|
||||
|
||||
/eventemitter3@5.0.1:
|
||||
resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==}
|
||||
dev: false
|
||||
|
@ -2464,6 +2634,11 @@ packages:
|
|||
is-callable: 1.2.7
|
||||
dev: true
|
||||
|
||||
/fresh@0.5.2:
|
||||
resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==}
|
||||
engines: {node: '>= 0.6'}
|
||||
dev: false
|
||||
|
||||
/fs-constants@1.0.0:
|
||||
resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==}
|
||||
requiresBuild: true
|
||||
|
@ -2702,6 +2877,12 @@ packages:
|
|||
web-namespaces: 2.0.1
|
||||
dev: false
|
||||
|
||||
/hast-util-is-element@3.0.0:
|
||||
resolution: {integrity: sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==}
|
||||
dependencies:
|
||||
'@types/hast': 3.0.4
|
||||
dev: false
|
||||
|
||||
/hast-util-parse-selector@4.0.0:
|
||||
resolution: {integrity: sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==}
|
||||
dependencies:
|
||||
|
@ -2755,6 +2936,15 @@ packages:
|
|||
zwitch: 2.0.4
|
||||
dev: false
|
||||
|
||||
/hast-util-to-text@4.0.0:
|
||||
resolution: {integrity: sha512-EWiE1FSArNBPUo1cKWtzqgnuRQwEeQbQtnFJRYV1hb1BWDgrAlBU0ExptvZMM/KSA82cDpm2sFGf3Dmc5Mza3w==}
|
||||
dependencies:
|
||||
'@types/hast': 3.0.4
|
||||
'@types/unist': 3.0.2
|
||||
hast-util-is-element: 3.0.0
|
||||
unist-util-find-after: 5.0.0
|
||||
dev: false
|
||||
|
||||
/hast-util-whitespace@3.0.0:
|
||||
resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==}
|
||||
dependencies:
|
||||
|
@ -2787,6 +2977,17 @@ packages:
|
|||
resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==}
|
||||
dev: false
|
||||
|
||||
/http-errors@2.0.0:
|
||||
resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==}
|
||||
engines: {node: '>= 0.8'}
|
||||
dependencies:
|
||||
depd: 2.0.0
|
||||
inherits: 2.0.4
|
||||
setprototypeof: 1.2.0
|
||||
statuses: 2.0.1
|
||||
toidentifier: 1.0.1
|
||||
dev: false
|
||||
|
||||
/human-id@1.0.2:
|
||||
resolution: {integrity: sha512-UNopramDEhHJD+VR+ehk8rOslwSfByxPIZyJRfV739NDhN5LF1fa1MqnzKm2lGTQRjNrjK19Q5fhkgIfjlVUKw==}
|
||||
dev: true
|
||||
|
@ -3722,6 +3923,12 @@ packages:
|
|||
braces: 3.0.2
|
||||
picomatch: 2.3.1
|
||||
|
||||
/mime@1.6.0:
|
||||
resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==}
|
||||
engines: {node: '>=4'}
|
||||
hasBin: true
|
||||
dev: false
|
||||
|
||||
/mime@3.0.0:
|
||||
resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==}
|
||||
engines: {node: '>=10.0.0'}
|
||||
|
@ -3776,10 +3983,18 @@ packages:
|
|||
dev: false
|
||||
optional: true
|
||||
|
||||
/ms@2.0.0:
|
||||
resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==}
|
||||
dev: false
|
||||
|
||||
/ms@2.1.2:
|
||||
resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
|
||||
dev: false
|
||||
|
||||
/ms@2.1.3:
|
||||
resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
|
||||
dev: false
|
||||
|
||||
/muggle-string@0.4.1:
|
||||
resolution: {integrity: sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==}
|
||||
|
||||
|
@ -3870,6 +4085,13 @@ packages:
|
|||
object-keys: 1.1.1
|
||||
dev: true
|
||||
|
||||
/on-finished@2.4.1:
|
||||
resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==}
|
||||
engines: {node: '>= 0.8'}
|
||||
dependencies:
|
||||
ee-first: 1.1.1
|
||||
dev: false
|
||||
|
||||
/once@1.4.0:
|
||||
resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
|
||||
requiresBuild: true
|
||||
|
@ -4143,6 +4365,11 @@ packages:
|
|||
engines: {node: '>=8'}
|
||||
dev: true
|
||||
|
||||
/range-parser@1.2.1:
|
||||
resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==}
|
||||
engines: {node: '>= 0.6'}
|
||||
dev: false
|
||||
|
||||
/rc@1.2.8:
|
||||
resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==}
|
||||
hasBin: true
|
||||
|
@ -4466,6 +4693,31 @@ packages:
|
|||
dependencies:
|
||||
lru-cache: 6.0.0
|
||||
|
||||
/send@0.18.0:
|
||||
resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==}
|
||||
engines: {node: '>= 0.8.0'}
|
||||
dependencies:
|
||||
debug: 2.6.9
|
||||
depd: 2.0.0
|
||||
destroy: 1.2.0
|
||||
encodeurl: 1.0.2
|
||||
escape-html: 1.0.3
|
||||
etag: 1.8.1
|
||||
fresh: 0.5.2
|
||||
http-errors: 2.0.0
|
||||
mime: 1.6.0
|
||||
ms: 2.1.3
|
||||
on-finished: 2.4.1
|
||||
range-parser: 1.2.1
|
||||
statuses: 2.0.1
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
dev: false
|
||||
|
||||
/server-destroy@1.0.1:
|
||||
resolution: {integrity: sha512-rb+9B5YBIEzYcD6x2VKidaa+cqYBJQKnU4oe4E3ANwRRN56yk/ua1YCJT1n21NTS8w6CcOclAKNP3PhdCXKYtQ==}
|
||||
dev: false
|
||||
|
||||
/set-blocking@2.0.0:
|
||||
resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==}
|
||||
dev: true
|
||||
|
@ -4492,6 +4744,10 @@ packages:
|
|||
has-property-descriptors: 1.0.2
|
||||
dev: true
|
||||
|
||||
/setprototypeof@1.2.0:
|
||||
resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==}
|
||||
dev: false
|
||||
|
||||
/sharp@0.32.6:
|
||||
resolution: {integrity: sha512-KyLTWwgcR9Oe4d9HwCwNM2l7+J0dUQwn/yf7S0EnTtb0eVS4RxO0eUSvxPtzT4F3SY+C4K6fqdv/DO27sJ/v/w==}
|
||||
engines: {node: '>=14.15.0'}
|
||||
|
@ -4532,6 +4788,12 @@ packages:
|
|||
engines: {node: '>=8'}
|
||||
dev: false
|
||||
|
||||
/shiki@1.1.7:
|
||||
resolution: {integrity: sha512-9kUTMjZtcPH3i7vHunA6EraTPpPOITYTdA5uMrvsJRexktqP0s7P3s9HVK80b4pP42FRVe03D7fT3NmJv2yYhw==}
|
||||
dependencies:
|
||||
'@shikijs/core': 1.1.7
|
||||
dev: false
|
||||
|
||||
/shikiji-core@0.9.19:
|
||||
resolution: {integrity: sha512-AFJu/vcNT21t0e6YrfadZ+9q86gvPum6iywRyt1OtIPjPFe25RQnYJyxHQPMLKCCWA992TPxmEmbNcOZCAJclw==}
|
||||
dev: false
|
||||
|
@ -4656,6 +4918,11 @@ packages:
|
|||
/sprintf-js@1.0.3:
|
||||
resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==}
|
||||
|
||||
/statuses@2.0.1:
|
||||
resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==}
|
||||
engines: {node: '>= 0.8'}
|
||||
dev: false
|
||||
|
||||
/stdin-discarder@0.1.0:
|
||||
resolution: {integrity: sha512-xhV7w8S+bUwlPTb4bAOUQhv8/cSS5offJuX8GQGq32ONF0ZtDWKfkdomM3HMRA+LhX6um/FZ0COqlwsjD53LeQ==}
|
||||
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
|
||||
|
@ -4890,6 +5157,11 @@ packages:
|
|||
dependencies:
|
||||
is-number: 7.0.0
|
||||
|
||||
/toidentifier@1.0.1:
|
||||
resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==}
|
||||
engines: {node: '>=0.6'}
|
||||
dev: false
|
||||
|
||||
/tr46@0.0.3:
|
||||
resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==}
|
||||
dev: false
|
||||
|
@ -5067,6 +5339,13 @@ packages:
|
|||
vfile: 6.0.1
|
||||
dev: false
|
||||
|
||||
/unist-util-find-after@5.0.0:
|
||||
resolution: {integrity: sha512-amQa0Ep2m6hE2g72AugUItjbuM8X8cGQnFoHk0pGfrFeT9GZhzN5SW8nRsiGKK7Aif4CrACPENkA6P/Lw6fHGQ==}
|
||||
dependencies:
|
||||
'@types/unist': 3.0.2
|
||||
unist-util-is: 6.0.0
|
||||
dev: false
|
||||
|
||||
/unist-util-is@5.2.1:
|
||||
resolution: {integrity: sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==}
|
||||
dependencies:
|
||||
|
@ -5092,6 +5371,13 @@ packages:
|
|||
'@types/unist': 3.0.2
|
||||
dev: false
|
||||
|
||||
/unist-util-remove-position@5.0.0:
|
||||
resolution: {integrity: sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q==}
|
||||
dependencies:
|
||||
'@types/unist': 3.0.2
|
||||
unist-util-visit: 5.0.0
|
||||
dev: false
|
||||
|
||||
/unist-util-stringify-position@3.0.3:
|
||||
resolution: {integrity: sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==}
|
||||
dependencies:
|
||||
|
@ -5565,6 +5851,14 @@ packages:
|
|||
engines: {node: '>=12.20'}
|
||||
dev: false
|
||||
|
||||
/zod-to-json-schema@3.22.4(zod@3.22.4):
|
||||
resolution: {integrity: sha512-2Ed5dJ+n/O3cU383xSY28cuVi0BCQhF8nYqWU5paEpl7fVdqdAmiLdqLyfblbNdfOFwFfi/mqU4O1pwc60iBhQ==}
|
||||
peerDependencies:
|
||||
zod: ^3.22.4
|
||||
dependencies:
|
||||
zod: 3.22.4
|
||||
dev: false
|
||||
|
||||
/zod@3.22.4:
|
||||
resolution: {integrity: sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==}
|
||||
dev: false
|
||||
|
|
Loading…
Reference in New Issue