From 795c075405f6e65328f1dacbf7fc0330bcdfaac9 Mon Sep 17 00:00:00 2001 From: Adam Matthiesen Date: Mon, 19 Feb 2024 19:32:27 -0800 Subject: [PATCH] integrate API into starlight-ghostcms... more progress almost ready to build a special starlight playground for the starlight stuff. --- packages/starlight-ghostcms/astro.d.ts | 17 + packages/starlight-ghostcms/index.ts | 1 + packages/starlight-ghostcms/package.json | 13 +- .../src/components/Metadata.astro | 12 +- .../src/components/Posts.astro | 5 +- .../src/components/Preview.astro | 11 +- .../src/overrides/SiteTitle.astro | 30 + .../starlight-ghostcms/src/routes/index.astro | 37 + .../starlight-ghostcms/src/schemas/config.ts | 9 +- .../starlight-ghostcms/src/schemas/posts.ts | 54 ++ .../starlight-ghostcms/src/schemas/tags.ts | 34 + .../src/utils/api/api-functions.ts | 124 ++++ .../utils/api/content-api/content-api.test.ts | 84 +++ .../src/utils/api/content-api/content-api.ts | 116 ++++ .../src/utils/api/content-api/index.ts | 8 + .../schemas/authors/authors.test.ts | 164 +++++ .../content-api/schemas/authors/authors.ts | 37 + .../api/content-api/schemas/authors/index.ts | 1 + .../api/content-api/schemas/helpers/index.ts | 1 + .../content-api/schemas/helpers/socials.ts | 32 + .../utils/api/content-api/schemas/index.ts | 7 + .../api/content-api/schemas/pages/index.ts | 1 + .../api/content-api/schemas/pages/pages.ts | 55 ++ .../api/content-api/schemas/posts/index.ts | 1 + .../content-api/schemas/posts/posts.test.ts | 69 ++ .../api/content-api/schemas/posts/posts.ts | 54 ++ .../api/content-api/schemas/settings/index.ts | 1 + .../content-api/schemas/settings/settings.ts | 40 ++ .../api/content-api/schemas/tags/index.ts | 1 + .../api/content-api/schemas/tags/tags.ts | 34 + .../api/content-api/schemas/tiers/index.ts | 1 + .../api/content-api/schemas/tiers/tiers.ts | 40 ++ .../starlight-ghostcms/src/utils/api/index.ts | 3 + .../src/utils/api/invariant.test.ts | 32 + .../src/utils/api/invariant.ts | 48 ++ packages/starlight-ghostcms/tsconfig.json | 29 + pnpm-lock.yaml | 634 ++++++++++++++---- 37 files changed, 1705 insertions(+), 135 deletions(-) create mode 100644 packages/starlight-ghostcms/astro.d.ts create mode 100644 packages/starlight-ghostcms/src/overrides/SiteTitle.astro create mode 100644 packages/starlight-ghostcms/src/schemas/posts.ts create mode 100644 packages/starlight-ghostcms/src/schemas/tags.ts create mode 100644 packages/starlight-ghostcms/src/utils/api/api-functions.ts create mode 100644 packages/starlight-ghostcms/src/utils/api/content-api/content-api.test.ts create mode 100644 packages/starlight-ghostcms/src/utils/api/content-api/content-api.ts create mode 100644 packages/starlight-ghostcms/src/utils/api/content-api/index.ts create mode 100644 packages/starlight-ghostcms/src/utils/api/content-api/schemas/authors/authors.test.ts create mode 100644 packages/starlight-ghostcms/src/utils/api/content-api/schemas/authors/authors.ts create mode 100644 packages/starlight-ghostcms/src/utils/api/content-api/schemas/authors/index.ts create mode 100644 packages/starlight-ghostcms/src/utils/api/content-api/schemas/helpers/index.ts create mode 100644 packages/starlight-ghostcms/src/utils/api/content-api/schemas/helpers/socials.ts create mode 100644 packages/starlight-ghostcms/src/utils/api/content-api/schemas/index.ts create mode 100644 packages/starlight-ghostcms/src/utils/api/content-api/schemas/pages/index.ts create mode 100644 packages/starlight-ghostcms/src/utils/api/content-api/schemas/pages/pages.ts create mode 100644 packages/starlight-ghostcms/src/utils/api/content-api/schemas/posts/index.ts create mode 100644 packages/starlight-ghostcms/src/utils/api/content-api/schemas/posts/posts.test.ts create mode 100644 packages/starlight-ghostcms/src/utils/api/content-api/schemas/posts/posts.ts create mode 100644 packages/starlight-ghostcms/src/utils/api/content-api/schemas/settings/index.ts create mode 100644 packages/starlight-ghostcms/src/utils/api/content-api/schemas/settings/settings.ts create mode 100644 packages/starlight-ghostcms/src/utils/api/content-api/schemas/tags/index.ts create mode 100644 packages/starlight-ghostcms/src/utils/api/content-api/schemas/tags/tags.ts create mode 100644 packages/starlight-ghostcms/src/utils/api/content-api/schemas/tiers/index.ts create mode 100644 packages/starlight-ghostcms/src/utils/api/content-api/schemas/tiers/tiers.ts create mode 100644 packages/starlight-ghostcms/src/utils/api/index.ts create mode 100644 packages/starlight-ghostcms/src/utils/api/invariant.test.ts create mode 100644 packages/starlight-ghostcms/src/utils/api/invariant.ts create mode 100644 packages/starlight-ghostcms/tsconfig.json diff --git a/packages/starlight-ghostcms/astro.d.ts b/packages/starlight-ghostcms/astro.d.ts new file mode 100644 index 00000000..71e1f916 --- /dev/null +++ b/packages/starlight-ghostcms/astro.d.ts @@ -0,0 +1,17 @@ +declare module 'astro:content' { + export interface AstroCollectionEntry { + body: string + collection: string + data: TData + id: string + render: () => Promise<{ + Content: import('astro').MarkdownInstance['Content'] + }> + slug: string + } + + export function getCollection( + collection: string, + filter?: (entry: AstroCollectionEntry) => boolean, + ): Promise[]> + } \ No newline at end of file diff --git a/packages/starlight-ghostcms/index.ts b/packages/starlight-ghostcms/index.ts index aa9c553c..6ea9d24f 100644 --- a/packages/starlight-ghostcms/index.ts +++ b/packages/starlight-ghostcms/index.ts @@ -17,6 +17,7 @@ export default function starlightBlogPlugin(userConfig?: StarlightGhostConfig): ...starlightConfig.components, ...overrideStarlightComponent(starlightConfig.components, logger, 'MarkdownContent'), ...overrideStarlightComponent(starlightConfig.components, logger, 'Sidebar'), + ...overrideStarlightComponent(starlightConfig.components, logger, "SiteTitle"), } }) diff --git a/packages/starlight-ghostcms/package.json b/packages/starlight-ghostcms/package.json index 866936d2..24b5f005 100644 --- a/packages/starlight-ghostcms/package.json +++ b/packages/starlight-ghostcms/package.json @@ -32,22 +32,29 @@ "email": "issues@astro-ghostcms.xyz" }, "main": "index.ts", - "types": "types.d.ts", + "types": "index.ts", "files": [ "src", - ".env.demo", "index.ts", "tsconfig.json", "types.d.ts" ], "exports": { - ".": "./index.ts" + ".": "./index.ts", + "./overrides/MarkdownContent.astro": "./src/overrides/MarkdownContent.astro", + "./overrides/Sidebar.astro": "./src/overrides/SideBar.astro", + "./overrides/SiteTitle.astro": "./src/overrides/SiteTitle.astro", + "./routes/index.astro": "./src/routes/index.astro", + "./routes/[slug].astro": "./src/routes/[slug].astro", + "./schema": "./src/schemas/config.ts", + "./package.json": "./package.json" }, "scripts": { }, "devDependencies": { "@astrojs/starlight": "0.19.0", "@ts-ghost/core-api": "5.1.2", + "vite": "^5.1.2", "astro": "4.3.7" }, "peerdependencies": { diff --git a/packages/starlight-ghostcms/src/components/Metadata.astro b/packages/starlight-ghostcms/src/components/Metadata.astro index 946c61c9..792ca8f4 100644 --- a/packages/starlight-ghostcms/src/components/Metadata.astro +++ b/packages/starlight-ghostcms/src/components/Metadata.astro @@ -1,21 +1,21 @@ --- -import { getBlogEntryMetadata, type StarlightBlogEntry } from '../utils/content' +import type { Post } from '../schemas/posts' import Author from './Author.astro' interface Props { - entry: StarlightBlogEntry + entry: Post } const { entry } = Astro.props -const { authors, date } = getBlogEntryMetadata(entry) +const { authors, published_at, created_at } = entry -const hasAuthors = authors.length > 0 +const hasAuthors = authors !== undefined ---