Impliment astro-remote on starlight-ghostcms

This commit is contained in:
Adam Matthiesen 2024-03-07 22:20:33 -08:00
parent 551bf5a75b
commit 94c9d256a4
14 changed files with 533 additions and 28 deletions

View File

@ -1,12 +1,6 @@
import type {
StarlightPlugin,
StarlightUserConfig,
} from "@astrojs/starlight/types";
import type { StarlightPlugin, StarlightUserConfig } from "@astrojs/starlight/types";
import type { AstroIntegrationLogger } from "astro";
import {
type StarlightGhostConfig,
validateConfig,
} from "./src/schemas/config";
import { type StarlightGhostConfig, validateConfig } from "./src/schemas/config";
import { facebook, getSettings, invariant, twitter } from "./src/utils/api";
import starlightGhostcms from "./src/integrations/starlight-ghostcms";

View File

@ -60,9 +60,12 @@
},
"dependencies": {
"@astrojs/rss": "^4.0.5",
"@matthiesenxyz/astro-gists": "^0.2.1",
"@ts-ghost/core-api": "^6.0.0",
"@ts-ghost/content-api": "^4.0.12",
"astro-integration-kit": "^0.5.1",
"astro-remote": "^0.3.2",
"ultrahtml": "^1.5.3",
"vite": "^5.1.5",
"vite-tsconfig-paths": "^4.3.1"
},

View File

@ -64,7 +64,7 @@ const { author } = Astro.props
img {
border: 1px solid var(--sl-color-gray-2);
border-radius: 9999px;
height: 10rem;
width: 10rem;
height: 6rem;
width: 6rem;
}
</style>

View File

@ -1,5 +1,6 @@
---
import type { Author } from '../schemas/authors'
import config from 'virtual:starlight-ghostcms/config';
interface Props {
author: Author
@ -11,7 +12,7 @@ const isLink = author.slug !== undefined
const Element = isLink ? 'a' : 'div'
---
<Element href={isLink ? '/blog/authors' : undefined} class="author">
<Element href={isLink ? `/${config.route}/authors` : undefined} class="author">
{author.profile_image && <img alt={author.name} src={author.profile_image} />}
<div class="text">
<div class="name">{author.name}</div>

View File

@ -1,6 +1,7 @@
---
import type { Post } from '../schemas/posts'
import Metadata from './Metadata.astro'
import config from 'virtual:starlight-ghostcms/config';
interface Props {
entry: Post
@ -14,7 +15,7 @@ const Excerpt = entry.excerpt
<article class="preview">
<header>
<h2>
<a href={`/blog/${entry.slug}`}>{entry.title}</a>
<a href={`/${config.route}/${entry.slug}`}>{entry.title}</a>
</h2>
<Metadata entry={entry} />
</header>

View File

@ -0,0 +1,17 @@
---
import { Code } from "@astrojs/starlight/components"
import { parse } from "ultrahtml"
import { querySelector } from "ultrahtml/selector"
const html = await Astro.slots.render("default")
const ast = await parse(html)
const codetag = querySelector(ast,'code')
const { children, attributes } = codetag
const code = children[0].value
const checkLang = attributes.class ? attributes.class.slice(9) : undefined
const lang = checkLang ? checkLang : 'txt'
---
<Code code={code} lang={lang}/>

View File

@ -0,0 +1 @@
export { default as CodeSlot } from "./CodeSlot.astro";

View File

@ -5,6 +5,7 @@ import {
import { corePlugins } from "astro-integration-kit/plugins";
import { z } from "astro/zod";
import { type StarlightGhostConfig } from "../schemas/config";
import astroGists from "@matthiesenxyz/astro-gists";
export default defineIntegration({
name: "@matthiesenxyz/starlight-ghostcms",
@ -17,10 +18,17 @@ export default defineIntegration({
"astro:config:setup": ({
watchIntegration,
addVirtualImports,
injectRoute
injectRoute,
logger,
addIntegration,
}) => {
watchIntegration(resolve());
// Add the AstroGist integration if enabled
logger.info("Adding @matthiesenxyz/astro-gists integration ...");
addIntegration(astroGists());
logger.info("Note: If you are using Astro-Gists with GhostCMS Make sure to set the `GITHUB_PERSONAL_TOKEN` in your `.env` file. \n Otherwise, you can ignore any error messages related to Astro-Gists.")
addVirtualImports({
'virtual:starlight-ghostcms/config': `export default ${JSON.stringify(options)}`,
});

View File

@ -2,7 +2,6 @@
import StarlightMarkdownContent from '@astrojs/starlight/components/MarkdownContent.astro'
import type { Props } from '@astrojs/starlight/props'
import config from 'virtual:starlight-ghostcms/config'
import { isAnyBlogPostPage } from '../utils/page'
import Metadata from '../components/Metadata.astro'
import type { Post } from '../schemas/posts'
@ -11,7 +10,6 @@ export function checkpath(path: string){
}
const isBlog = checkpath(Astro.url.pathname)
const isBlogPost = isAnyBlogPostPage(Astro.props.slug)
let blogEntry: Post | undefined = undefined
---

View File

@ -1,11 +1,13 @@
---
import config from 'virtual:starlight-ghostcms/config'
import config from 'virtual:starlight-ghostcms/config';
import { Image } from "astro:assets";
import Page from '../components/Page.astro'
import { getPageProps } from '../utils/page'
import { getAllPosts } from '../utils/api'
import Metadata from '../components/Metadata.astro'
import Page from '../components/Page.astro';
import { getPageProps } from '../utils/page';
import { getAllPosts } from '../utils/api';
import Metadata from '../components/Metadata.astro';
import { Markup } from 'astro-remote';
import * as render from '../components/astro-remote';
import * as Gists from '@matthiesenxyz/astro-gists/components';
export async function getStaticPaths() {
const entries = await getAllPosts();
@ -36,13 +38,25 @@ const pageProps = getPageProps(post.title)
height={800}
/>
<figcaption>
<Fragment set:html={post.feature_image_caption} />
<Markup content={post.feature_image_caption? post.feature_image_caption : "<div />"} />
</figcaption>
</figure>
)}
</header>
<br />
<Fragment set:html={post.html} />
<Markup
content={post.html}
sanitize={{
allowComponents: true,
allowElements: ['a', 'p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'img', 'figure', 'figcaption', 'ul', 'ol', 'li', 'blockquote', 'pre', 'code', 'em', 'strong', 'del', 'hr', 'br', 'table', 'thead', 'tbody', 'tr', 'th', 'td', 'caption', 'div', 'span', 'script'],
}}
components={{
pre: render.CodeSlot,
getgist: Gists.GetGist,
getgistgroup: Gists.GetGistGroup,
}}
/>
<footer class="not-content">
</footer>

View File

@ -5,6 +5,8 @@ import Page from '../components/Page.astro'
//import PrevNextLinks from '../components/PrevNextLinks.astro'
import { getPageProps } from '../utils/page'
import { getSluggedPage } from '../utils/api'
import { Markup } from 'astro-remote'
import * as render from '../components/astro-remote';
const aboutPage = await getSluggedPage("about");
@ -18,7 +20,15 @@ const pageProps = getPageProps(aboutPage?.post?.title)
<div id="pghost">Powered by <a href="https://ghost.org">Ghost</a></div>
)}
<Metadata entry={aboutPage.post} />
<Fragment set:html={aboutPage.post.html} />
<Markup
content={aboutPage.post.html}
sanitize={{
allowComponents: true,
allowElements: ['a', 'p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'img', 'figure', 'figcaption', 'ul', 'ol', 'li', 'blockquote', 'pre', 'code', 'em', 'strong', 'del', 'hr', 'br', 'table', 'thead', 'tbody', 'tr', 'th', 'td', 'caption', 'div', 'span'],
}}
components={{
pre: render.CodeSlot
}} />
<footer class="not-content">
<!--PrevNextLinks next={nextLink} prev={prevLink} /-->
</footer>

View File

@ -1,7 +1,7 @@
import config from 'virtual:starlight-ghostcms/config'
export function isBlogRoot(slug: string) {
return slug === "blog";
return slug === `${config.route}`;
}
export function isAnyBlogPostPage(slug: string) {
@ -15,7 +15,7 @@ export function isBlogPostPage(slug: string, postSlug: string) {
}
export function isBlogTagsPage(slug: string, tag: string) {
return slug === `blog/tags/${tag}`;
return slug === `${config.route}/tags/${tag}`;
}
export function getPageProps(title: string): StarlightPageProps {

View File

@ -1,3 +1,6 @@
{
"extends": "astro/tsconfigs/strict"
"extends": "astro/tsconfigs/strictest",
"compilerOptions": {
"jsx": "preserve"
}
}

View File

@ -247,6 +247,9 @@ importers:
'@astrojs/rss':
specifier: ^4.0.5
version: 4.0.5
'@matthiesenxyz/astro-gists':
specifier: ^0.2.1
version: 0.2.1(astro@4.4.13)
'@ts-ghost/content-api':
specifier: ^4.0.12
version: 4.0.12
@ -256,6 +259,12 @@ importers:
astro-integration-kit:
specifier: ^0.5.1
version: 0.5.1(astro@4.4.13)
astro-remote:
specifier: ^0.3.2
version: 0.3.2
ultrahtml:
specifier: ^1.5.3
version: 1.5.3
vite:
specifier: ^5.1.5
version: 5.1.5(sass@1.71.1)
@ -1392,6 +1401,13 @@ packages:
'@expressive-code/core': 0.33.4
hastscript: 7.2.0
/@expressive-code/plugin-line-numbers@0.33.4:
resolution: {integrity: sha512-+AIxeufcutV1+0sAtXsTEcma7uxKQK2F7qfQYWHYp0PW6QxLXkMYP7aGfuIFPsfovKEe+EmFKXKhEwYnraK7yQ==}
dependencies:
'@expressive-code/core': 0.33.4
hastscript: 7.2.0
dev: false
/@expressive-code/plugin-shiki@0.33.4:
resolution: {integrity: sha512-XnDchHqCGk046hgQnu83t9+SDrRjsvpvUEBiI0wl4RljVDr1E0yllx0y6C1yEuKfFfasib6BxX/PkItgQdi/0Q==}
dependencies:
@ -1707,6 +1723,35 @@ packages:
globby: 11.1.0
read-yaml-file: 1.1.0
/@matthiesenxyz/astro-gists@0.2.1(astro@4.4.13):
resolution: {integrity: sha512-6fZTZxnfQExNBlFdzecC/fdyonbhhAUfU7Pva4wMIN0lABAw480aobOqsY3NpI3D8VWafpKochqoNZjOIn7uIQ==}
peerDependencies:
astro: ^4.4.1
dependencies:
'@expressive-code/plugin-line-numbers': 0.33.4
'@octokit/types': 12.6.0
astro: 4.4.13(typescript@5.4.2)
astro-integration-kit: 0.5.1(astro@4.4.13)
expressive-code: 0.33.4
hast-util-to-html: 8.0.4
octokit: 3.1.2
vite: 5.1.5(sass@1.71.1)
transitivePeerDependencies:
- '@types/node'
- '@vitejs/plugin-react'
- less
- lightningcss
- preact
- react
- sass
- solid-js
- stylus
- sugarss
- svelte
- terser
- vue
dev: false
/@mdx-js/mdx@3.0.1:
resolution: {integrity: sha512-eIQ4QTrOWyL3LWEe/bu6Taqzq2HQvHcyTMaOrI95P2/LmJE7AsfPfgJGuFLPVqBUE1BC1rik3VIhU+s9u72arA==}
dependencies:
@ -1757,6 +1802,242 @@ packages:
'@nodelib/fs.scandir': 2.1.5
fastq: 1.17.1
/@octokit/app@14.0.2:
resolution: {integrity: sha512-NCSCktSx+XmjuSUVn2dLfqQ9WIYePGP95SDJs4I9cn/0ZkeXcPkaoCLl64Us3dRKL2ozC7hArwze5Eu+/qt1tg==}
engines: {node: '>= 18'}
dependencies:
'@octokit/auth-app': 6.0.4
'@octokit/auth-unauthenticated': 5.0.1
'@octokit/core': 5.1.0
'@octokit/oauth-app': 6.1.0
'@octokit/plugin-paginate-rest': 9.2.1(@octokit/core@5.1.0)
'@octokit/types': 12.6.0
'@octokit/webhooks': 12.1.2
dev: false
/@octokit/auth-app@6.0.4:
resolution: {integrity: sha512-TPmJYgd05ok3nzHj7Y6we/V7Ez1wU3ztLFW3zo/afgYFtqYZg0W7zb6Kp5ag6E85r8nCE1JfS6YZoZusa14o9g==}
engines: {node: '>= 18'}
dependencies:
'@octokit/auth-oauth-app': 7.0.1
'@octokit/auth-oauth-user': 4.0.1
'@octokit/request': 8.2.0
'@octokit/request-error': 5.0.1
'@octokit/types': 12.6.0
deprecation: 2.3.1
lru-cache: 10.2.0
universal-github-app-jwt: 1.1.2
universal-user-agent: 6.0.1
dev: false
/@octokit/auth-oauth-app@7.0.1:
resolution: {integrity: sha512-RE0KK0DCjCHXHlQBoubwlLijXEKfhMhKm9gO56xYvFmP1QTMb+vvwRPmQLLx0V+5AvV9N9I3lr1WyTzwL3rMDg==}
engines: {node: '>= 18'}
dependencies:
'@octokit/auth-oauth-device': 6.0.1
'@octokit/auth-oauth-user': 4.0.1
'@octokit/request': 8.2.0
'@octokit/types': 12.6.0
'@types/btoa-lite': 1.0.2
btoa-lite: 1.0.0
universal-user-agent: 6.0.1
dev: false
/@octokit/auth-oauth-device@6.0.1:
resolution: {integrity: sha512-yxU0rkL65QkjbqQedgVx3gmW7YM5fF+r5uaSj9tM/cQGVqloXcqP2xK90eTyYvl29arFVCW8Vz4H/t47mL0ELw==}
engines: {node: '>= 18'}
dependencies:
'@octokit/oauth-methods': 4.0.1
'@octokit/request': 8.2.0
'@octokit/types': 12.6.0
universal-user-agent: 6.0.1
dev: false
/@octokit/auth-oauth-user@4.0.1:
resolution: {integrity: sha512-N94wWW09d0hleCnrO5wt5MxekatqEJ4zf+1vSe8MKMrhZ7gAXKFOKrDEZW2INltvBWJCyDUELgGRv8gfErH1Iw==}
engines: {node: '>= 18'}
dependencies:
'@octokit/auth-oauth-device': 6.0.1
'@octokit/oauth-methods': 4.0.1
'@octokit/request': 8.2.0
'@octokit/types': 12.6.0
btoa-lite: 1.0.0
universal-user-agent: 6.0.1
dev: false
/@octokit/auth-token@4.0.0:
resolution: {integrity: sha512-tY/msAuJo6ARbK6SPIxZrPBms3xPbfwBrulZe0Wtr/DIY9lje2HeV1uoebShn6mx7SjCHif6EjMvoREj+gZ+SA==}
engines: {node: '>= 18'}
dev: false
/@octokit/auth-unauthenticated@5.0.1:
resolution: {integrity: sha512-oxeWzmBFxWd+XolxKTc4zr+h3mt+yofn4r7OfoIkR/Cj/o70eEGmPsFbueyJE2iBAGpjgTnEOKM3pnuEGVmiqg==}
engines: {node: '>= 18'}
dependencies:
'@octokit/request-error': 5.0.1
'@octokit/types': 12.6.0
dev: false
/@octokit/core@5.1.0:
resolution: {integrity: sha512-BDa2VAMLSh3otEiaMJ/3Y36GU4qf6GI+VivQ/P41NC6GHcdxpKlqV0ikSZ5gdQsmS3ojXeRx5vasgNTinF0Q4g==}
engines: {node: '>= 18'}
dependencies:
'@octokit/auth-token': 4.0.0
'@octokit/graphql': 7.0.2
'@octokit/request': 8.2.0
'@octokit/request-error': 5.0.1
'@octokit/types': 12.6.0
before-after-hook: 2.2.3
universal-user-agent: 6.0.1
dev: false
/@octokit/endpoint@9.0.4:
resolution: {integrity: sha512-DWPLtr1Kz3tv8L0UvXTDP1fNwM0S+z6EJpRcvH66orY6Eld4XBMCSYsaWp4xIm61jTWxK68BrR7ibO+vSDnZqw==}
engines: {node: '>= 18'}
dependencies:
'@octokit/types': 12.6.0
universal-user-agent: 6.0.1
dev: false
/@octokit/graphql@7.0.2:
resolution: {integrity: sha512-OJ2iGMtj5Tg3s6RaXH22cJcxXRi7Y3EBqbHTBRq+PQAqfaS8f/236fUrWhfSn8P4jovyzqucxme7/vWSSZBX2Q==}
engines: {node: '>= 18'}
dependencies:
'@octokit/request': 8.2.0
'@octokit/types': 12.6.0
universal-user-agent: 6.0.1
dev: false
/@octokit/oauth-app@6.1.0:
resolution: {integrity: sha512-nIn/8eUJ/BKUVzxUXd5vpzl1rwaVxMyYbQkNZjHrF7Vk/yu98/YDF/N2KeWO7uZ0g3b5EyiFXFkZI8rJ+DH1/g==}
engines: {node: '>= 18'}
dependencies:
'@octokit/auth-oauth-app': 7.0.1
'@octokit/auth-oauth-user': 4.0.1
'@octokit/auth-unauthenticated': 5.0.1
'@octokit/core': 5.1.0
'@octokit/oauth-authorization-url': 6.0.2
'@octokit/oauth-methods': 4.0.1
'@types/aws-lambda': 8.10.136
universal-user-agent: 6.0.1
dev: false
/@octokit/oauth-authorization-url@6.0.2:
resolution: {integrity: sha512-CdoJukjXXxqLNK4y/VOiVzQVjibqoj/xHgInekviUJV73y/BSIcwvJ/4aNHPBPKcPWFnd4/lO9uqRV65jXhcLA==}
engines: {node: '>= 18'}
dev: false
/@octokit/oauth-methods@4.0.1:
resolution: {integrity: sha512-1NdTGCoBHyD6J0n2WGXg9+yDLZrRNZ0moTEex/LSPr49m530WNKcCfXDghofYptr3st3eTii+EHoG5k/o+vbtw==}
engines: {node: '>= 18'}
dependencies:
'@octokit/oauth-authorization-url': 6.0.2
'@octokit/request': 8.2.0
'@octokit/request-error': 5.0.1
'@octokit/types': 12.6.0
btoa-lite: 1.0.0
dev: false
/@octokit/openapi-types@20.0.0:
resolution: {integrity: sha512-EtqRBEjp1dL/15V7WiX5LJMIxxkdiGJnabzYx5Apx4FkQIFgAfKumXeYAqqJCj1s+BMX4cPFIFC4OLCR6stlnA==}
dev: false
/@octokit/plugin-paginate-graphql@4.0.1(@octokit/core@5.1.0):
resolution: {integrity: sha512-R8ZQNmrIKKpHWC6V2gum4x9LG2qF1RxRjo27gjQcG3j+vf2tLsEfE7I/wRWEPzYMaenr1M+qDAtNcwZve1ce1A==}
engines: {node: '>= 18'}
peerDependencies:
'@octokit/core': '>=5'
dependencies:
'@octokit/core': 5.1.0
dev: false
/@octokit/plugin-paginate-rest@9.2.1(@octokit/core@5.1.0):
resolution: {integrity: sha512-wfGhE/TAkXZRLjksFXuDZdmGnJQHvtU/joFQdweXUgzo1XwvBCD4o4+75NtFfjfLK5IwLf9vHTfSiU3sLRYpRw==}
engines: {node: '>= 18'}
peerDependencies:
'@octokit/core': '5'
dependencies:
'@octokit/core': 5.1.0
'@octokit/types': 12.6.0
dev: false
/@octokit/plugin-rest-endpoint-methods@10.4.1(@octokit/core@5.1.0):
resolution: {integrity: sha512-xV1b+ceKV9KytQe3zCVqjg+8GTGfDYwaT1ATU5isiUyVtlVAO3HNdzpS4sr4GBx4hxQ46s7ITtZrAsxG22+rVg==}
engines: {node: '>= 18'}
peerDependencies:
'@octokit/core': '5'
dependencies:
'@octokit/core': 5.1.0
'@octokit/types': 12.6.0
dev: false
/@octokit/plugin-retry@6.0.1(@octokit/core@5.1.0):
resolution: {integrity: sha512-SKs+Tz9oj0g4p28qkZwl/topGcb0k0qPNX/i7vBKmDsjoeqnVfFUquqrE/O9oJY7+oLzdCtkiWSXLpLjvl6uog==}
engines: {node: '>= 18'}
peerDependencies:
'@octokit/core': '>=5'
dependencies:
'@octokit/core': 5.1.0
'@octokit/request-error': 5.0.1
'@octokit/types': 12.6.0
bottleneck: 2.19.5
dev: false
/@octokit/plugin-throttling@8.2.0(@octokit/core@5.1.0):
resolution: {integrity: sha512-nOpWtLayKFpgqmgD0y3GqXafMFuKcA4tRPZIfu7BArd2lEZeb1988nhWhwx4aZWmjDmUfdgVf7W+Tt4AmvRmMQ==}
engines: {node: '>= 18'}
peerDependencies:
'@octokit/core': ^5.0.0
dependencies:
'@octokit/core': 5.1.0
'@octokit/types': 12.6.0
bottleneck: 2.19.5
dev: false
/@octokit/request-error@5.0.1:
resolution: {integrity: sha512-X7pnyTMV7MgtGmiXBwmO6M5kIPrntOXdyKZLigNfQWSEQzVxR4a4vo49vJjTWX70mPndj8KhfT4Dx+2Ng3vnBQ==}
engines: {node: '>= 18'}
dependencies:
'@octokit/types': 12.6.0
deprecation: 2.3.1
once: 1.4.0
dev: false
/@octokit/request@8.2.0:
resolution: {integrity: sha512-exPif6x5uwLqv1N1irkLG1zZNJkOtj8bZxuVHd71U5Ftuxf2wGNvAJyNBcPbPC+EBzwYEbBDdSFb8EPcjpYxPQ==}
engines: {node: '>= 18'}
dependencies:
'@octokit/endpoint': 9.0.4
'@octokit/request-error': 5.0.1
'@octokit/types': 12.6.0
universal-user-agent: 6.0.1
dev: false
/@octokit/types@12.6.0:
resolution: {integrity: sha512-1rhSOfRa6H9w4YwK0yrf5faDaDTb+yLyBUKOCV4xtCDB5VmIPqd/v9yr9o6SAzOAlRxMiRiCic6JVM1/kunVkw==}
dependencies:
'@octokit/openapi-types': 20.0.0
dev: false
/@octokit/webhooks-methods@4.1.0:
resolution: {integrity: sha512-zoQyKw8h9STNPqtm28UGOYFE7O6D4Il8VJwhAtMHFt2C4L0VQT1qGKLeefUOqHNs1mNRYSadVv7x0z8U2yyeWQ==}
engines: {node: '>= 18'}
dev: false
/@octokit/webhooks-types@7.3.2:
resolution: {integrity: sha512-JWOoOgtWTFnTSAamPXXyjTY5/apttvNxF+vPBnwdSu5cj5snrd7FO0fyw4+wTXy8fHduq626JjhO+TwCyyA6vA==}
dev: false
/@octokit/webhooks@12.1.2:
resolution: {integrity: sha512-+nGS3ReCByF6m+nbNB59x7Aa3CNjCCGuBLFzfkiJP1O3uVKKuJbkP4uO4t46YqH26nlugmOhqjT7nx5D0VPtdA==}
engines: {node: '>= 18'}
dependencies:
'@octokit/request-error': 5.0.1
'@octokit/webhooks-methods': 4.1.0
'@octokit/webhooks-types': 7.3.2
aggregate-error: 3.1.0
dev: false
/@pagefind/darwin-arm64@1.0.4:
resolution: {integrity: sha512-2OcthvceX2xhm5XbgOmW+lT45oLuHqCmvFeFtxh1gsuP5cO8vcD8ZH8Laj4pXQFCcK6eAdSShx+Ztx/LsQWZFQ==}
cpu: [arm64]
@ -2108,6 +2389,10 @@ packages:
dependencies:
'@types/estree': 1.0.5
/@types/aws-lambda@8.10.136:
resolution: {integrity: sha512-cmmgqxdVGhxYK9lZMYYXYRJk6twBo53ivtXjIUEFZxfxe4TkZTZBK3RRWrY2HjJcUIix0mdifn15yjOAat5lTA==}
dev: false
/@types/babel__core@7.20.5:
resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==}
dependencies:
@ -2133,6 +2418,10 @@ packages:
dependencies:
'@babel/types': 7.23.9
/@types/btoa-lite@1.0.2:
resolution: {integrity: sha512-ZYbcE2x7yrvNFJiU7xJGrpF/ihpkM7zKgw8bha3LNJSesvTtUNxbpzaT7WXBIryf6jovisrxTBvymxMeLLj1Mg==}
dev: false
/@types/debug@4.1.12:
resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==}
dependencies:
@ -2175,6 +2464,12 @@ packages:
'@types/node': 20.11.25
dev: true
/@types/jsonwebtoken@9.0.6:
resolution: {integrity: sha512-/5hndP5dCjloafCXns6SZyESp3Ldq7YjH3zwzwczYnjxIT0Fqzk5ROSYVGfFyczIue7IUEj8hkvLbPoLQ18vQw==}
dependencies:
'@types/node': 20.11.25
dev: false
/@types/mdast@4.0.3:
resolution: {integrity: sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==}
dependencies:
@ -2659,6 +2954,14 @@ packages:
engines: {node: '>=0.4.0'}
hasBin: true
/aggregate-error@3.1.0:
resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==}
engines: {node: '>=8'}
dependencies:
clean-stack: 2.2.0
indent-string: 4.0.0
dev: false
/ajv@6.12.6:
resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==}
dependencies:
@ -2905,6 +3208,17 @@ packages:
resolution: {integrity: sha512-lLvhWS03Qc3heMU23adFwEnBUJFlL6gxYi0xPvIyX1atb2oCov4kOS/MaWOPGnvj2nK63szebUzlG+NdIoUZzQ==}
dev: false
/astro-remote@0.3.2:
resolution: {integrity: sha512-Xwm6Y+ldQEnDB2l1WwVqeUs3QvUX8LtJWnovpXlf8xhpicPu159jXOhDbHZS9wilGO/+/nR67A1qskF8pDvdGQ==}
engines: {node: '>=18.14.1'}
dependencies:
entities: 4.5.0
marked: 12.0.1
marked-footnote: 1.2.2(marked@12.0.1)
marked-smartypants: 1.1.6(marked@12.0.1)
ultrahtml: 1.5.3
dev: false
/astro-robots-txt@1.0.0:
resolution: {integrity: sha512-6JQSLid4gMhoWjOm85UHLkgrw0+hHIjnJVIUqxjU2D6feKlVyYukMNYjH44ZDZBK1P8hNxd33PgWlHzCASvedA==}
dependencies:
@ -3282,6 +3596,10 @@ packages:
is-alphanumerical: 2.0.1
is-decimal: 2.0.1
/before-after-hook@2.2.3:
resolution: {integrity: sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==}
dev: false
/better-path-resolve@1.0.0:
resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==}
engines: {node: '>=4'}
@ -3311,6 +3629,10 @@ packages:
/boolbase@1.0.0:
resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==}
/bottleneck@2.19.5:
resolution: {integrity: sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw==}
dev: false
/boxen@7.1.1:
resolution: {integrity: sha512-2hCgjEmP8YLWQ130n2FerGv7rYpfBmnmp9Uy2Le1vge6X3gZIfSmEzP5QTDElFxcvVcXlEn8Aq6MU/PZygIOog==}
engines: {node: '>=14.16'}
@ -3357,6 +3679,14 @@ packages:
node-releases: 2.0.14
update-browserslist-db: 1.0.13(browserslist@4.23.0)
/btoa-lite@1.0.0:
resolution: {integrity: sha512-gvW7InbIyF8AicrqWoptdW08pUxuhq8BEgowNajy9RhiE86fmGAGl+bLKo6oB8QP0CkqHLowfN0oJdKC/J6LbA==}
dev: false
/buffer-equal-constant-time@1.0.1:
resolution: {integrity: sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==}
dev: false
/buffer@5.7.1:
resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==}
requiresBuild: true
@ -3501,6 +3831,11 @@ packages:
resolution: {integrity: sha512-TdHqgGf9odd8SXNuxtUBVx8Nv+qZOejE6qyqiy5NtbYYQOeFa6zmHkxlPzmaLxWWHsU6nJmB7AETdVPi+2NBUg==}
engines: {node: '>=8'}
/clean-stack@2.2.0:
resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==}
engines: {node: '>=6'}
dev: false
/cli-boxes@3.0.0:
resolution: {integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==}
engines: {node: '>=10'}
@ -3786,6 +4121,10 @@ packages:
/defu@6.1.4:
resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==}
/deprecation@2.3.1:
resolution: {integrity: sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==}
dev: false
/dequal@2.0.3:
resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==}
engines: {node: '>=6'}
@ -3859,6 +4198,12 @@ packages:
/eastasianwidth@0.2.0:
resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
/ecdsa-sig-formatter@1.0.11:
resolution: {integrity: sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==}
dependencies:
safe-buffer: 5.2.1
dev: false
/electron-to-chromium@1.4.670:
resolution: {integrity: sha512-hcijYOWjOtjKrKPtNA6tuLlA/bTLO3heFG8pQA6mLpq7dRydSWicXova5lyxDzp1iVJaYhK7J2OQlGE52KYn7A==}
@ -5322,6 +5667,22 @@ packages:
graceful-fs: 4.2.11
dev: false
/jsonwebtoken@9.0.2:
resolution: {integrity: sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==}
engines: {node: '>=12', npm: '>=6'}
dependencies:
jws: 3.2.2
lodash.includes: 4.3.0
lodash.isboolean: 3.0.3
lodash.isinteger: 4.0.4
lodash.isnumber: 3.0.3
lodash.isplainobject: 4.0.6
lodash.isstring: 4.0.1
lodash.once: 4.1.1
ms: 2.1.3
semver: 7.6.0
dev: false
/jsx-ast-utils@3.3.5:
resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==}
engines: {node: '>=4.0'}
@ -5332,6 +5693,21 @@ packages:
object.values: 1.1.7
dev: true
/jwa@1.4.1:
resolution: {integrity: sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==}
dependencies:
buffer-equal-constant-time: 1.0.1
ecdsa-sig-formatter: 1.0.11
safe-buffer: 5.2.1
dev: false
/jws@3.2.2:
resolution: {integrity: sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==}
dependencies:
jwa: 1.4.1
safe-buffer: 5.2.1
dev: false
/keyv@4.5.4:
resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==}
dependencies:
@ -5430,13 +5806,37 @@ packages:
resolution: {integrity: sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==}
dev: false
/lodash.includes@4.3.0:
resolution: {integrity: sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==}
dev: false
/lodash.isboolean@3.0.3:
resolution: {integrity: sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==}
dev: false
/lodash.isinteger@4.0.4:
resolution: {integrity: sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==}
dev: false
/lodash.isnumber@3.0.3:
resolution: {integrity: sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==}
dev: false
/lodash.isplainobject@4.0.6:
resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==}
dev: false
/lodash.isstring@4.0.1:
resolution: {integrity: sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==}
dev: false
/lodash.merge@4.6.2:
resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==}
/lodash.once@4.1.1:
resolution: {integrity: sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==}
dev: false
/lodash.startcase@4.4.0:
resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==}
@ -5499,6 +5899,29 @@ packages:
/markdown-table@3.0.3:
resolution: {integrity: sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==}
/marked-footnote@1.2.2(marked@12.0.1):
resolution: {integrity: sha512-TFBEHwHLSSedub7P6XHHs+dMMOnDeNV5+kFDo4trU//gDd8iM57lg9jr9NGwDifPwLllHwKmFcRNp5uYvO2Fnw==}
peerDependencies:
marked: '>=7.0.0'
dependencies:
marked: 12.0.1
dev: false
/marked-smartypants@1.1.6(marked@12.0.1):
resolution: {integrity: sha512-38rdxcV3+EHrvoHioSrgBDvOmFb+TNcszZggrl15qe4MEfQxBArfSgsGgFP0YqHlGy8Rgoyi4gN4ThBWzwNJeA==}
peerDependencies:
marked: '>=4 <13'
dependencies:
marked: 12.0.1
smartypants: 0.2.2
dev: false
/marked@12.0.1:
resolution: {integrity: sha512-Y1/V2yafOcOdWQCX0XpAKXzDakPOpn6U0YLxTJs3cww6VxOzZV1BTOOYWLvH3gX38cq+iLwljHHTnMtlDfg01Q==}
engines: {node: '>= 18'}
hasBin: true
dev: false
/mdast-util-definitions@6.0.0:
resolution: {integrity: sha512-scTllyX6pnYNZH/AIp/0ePz6s4cZtARxImwoPJ7kS42n+MnVsI4XbnG6d4ibehRIldYMWM2LD7ImQblVhUejVQ==}
dependencies:
@ -6287,6 +6710,22 @@ packages:
es-abstract: 1.22.4
dev: true
/octokit@3.1.2:
resolution: {integrity: sha512-MG5qmrTL5y8KYwFgE1A4JWmgfQBaIETE/lOlfwNYx1QOtCQHGVxkRJmdUJltFc1HVn73d61TlMhMyNTOtMl+ng==}
engines: {node: '>= 18'}
dependencies:
'@octokit/app': 14.0.2
'@octokit/core': 5.1.0
'@octokit/oauth-app': 6.1.0
'@octokit/plugin-paginate-graphql': 4.0.1(@octokit/core@5.1.0)
'@octokit/plugin-paginate-rest': 9.2.1(@octokit/core@5.1.0)
'@octokit/plugin-rest-endpoint-methods': 10.4.1(@octokit/core@5.1.0)
'@octokit/plugin-retry': 6.0.1(@octokit/core@5.1.0)
'@octokit/plugin-throttling': 8.2.0(@octokit/core@5.1.0)
'@octokit/request-error': 5.0.1
'@octokit/types': 12.6.0
dev: false
/ofetch@1.3.3:
resolution: {integrity: sha512-s1ZCMmQWXy4b5K/TW9i/DtiN8Ku+xCiHcjQ6/J/nDdssirrQNOoB165Zu8EqLMA2lln1JUth9a0aW9Ap2ctrUg==}
dependencies:
@ -7346,6 +7785,11 @@ packages:
wcwidth: 1.0.1
yargs: 15.4.1
/smartypants@0.2.2:
resolution: {integrity: sha512-TzobUYoEft/xBtb2voRPryAUIvYguG0V7Tt3de79I1WfXgCwelqVsGuZSnu3GFGRZhXR90AeEYIM+icuB/S06Q==}
hasBin: true
dev: false
/source-map-js@1.0.2:
resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==}
engines: {node: '>=0.10.0'}
@ -8028,6 +8472,17 @@ packages:
unist-util-is: 6.0.0
unist-util-visit-parents: 6.0.1
/universal-github-app-jwt@1.1.2:
resolution: {integrity: sha512-t1iB2FmLFE+yyJY9+3wMx0ejB+MQpEVkH0gQv7dR6FZyltyq+ZZO0uDpbopxhrZ3SLEO4dCEkIujOMldEQ2iOA==}
dependencies:
'@types/jsonwebtoken': 9.0.6
jsonwebtoken: 9.0.2
dev: false
/universal-user-agent@6.0.1:
resolution: {integrity: sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ==}
dev: false
/universalify@0.1.2:
resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==}
engines: {node: '>= 4.0.0'}