From afb57b58255d3db96f2def2888145828a4a35c3b Mon Sep 17 00:00:00 2001 From: somrat sorkar Date: Sun, 3 Dec 2023 15:28:12 +0600 Subject: [PATCH] updated to astro v3.6 --- astro.config.mjs | 3 -- package.json | 55 ++++++++++++++------------- readme.md | 4 +- src/layouts/PostSingle.astro | 15 +++++--- src/layouts/Search.tsx | 4 +- src/layouts/components/Social.astro | 2 +- src/layouts/helpers/DynamicIcon.tsx | 2 +- src/lib/contentParser.astro | 10 ----- src/lib/taxonomyParser.astro | 13 ++++++- src/lib/utils/similarItems.ts | 10 +++-- src/pages/[regular].astro | 9 ++++- src/pages/authors/[single].astro | 15 +++++--- src/pages/authors/index.astro | 12 ++++-- src/pages/blog/[single].astro | 9 +++-- src/pages/blog/index.astro | 21 +++++----- src/pages/blog/page/[slug].astro | 27 ++++++++----- src/pages/categories/[category].astro | 14 +++---- src/pages/categories/index.astro | 8 ++-- src/pages/search.astro | 15 ++++---- src/pages/tags/[tag].astro | 15 +++++--- src/pages/tags/index.astro | 8 ++-- tsconfig.json | 1 - 22 files changed, 151 insertions(+), 121 deletions(-) delete mode 100644 src/lib/contentParser.astro diff --git a/astro.config.mjs b/astro.config.mjs index 86cf500..d2c210c 100755 --- a/astro.config.mjs +++ b/astro.config.mjs @@ -53,7 +53,4 @@ export default defineConfig({ }, extendDefaultPlugins: true, }, - build: { - format: "file", - }, }); diff --git a/package.json b/package.json index e4919fa..33a6490 100755 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "astroplate", - "version": "2.2.0", + "version": "2.3.0", "description": "Astro and Tailwindcss boilerplate", "author": "zeon.studio", "license": "MIT", @@ -8,53 +8,54 @@ "scripts": { "dev": "astro dev", "build": "astro build", + "preview": "astro preview", "format": "prettier -w ./src", "generate-json": "node scripts/jsonGenerator.js", "remove-darkmode": "node scripts/removeDarkmode.js && yarn format" }, "dependencies": { - "@astrojs/mdx": "^1.1.3", - "@astrojs/react": "^3.0.4", + "@astrojs/mdx": "^1.1.5", + "@astrojs/react": "^3.0.6", "@astrojs/rss": "^3.0.0", - "@astrojs/sitemap": "^3.0.2", + "@astrojs/sitemap": "^3.0.3", "@astrojs/tailwind": "^5.0.2", - "astro": "^3.3.4", - "astro-auto-import": "^0.3.1", + "astro": "^3.6.4", + "astro-auto-import": "^0.4.1", "date-fns": "^2.30.0", "date-fns-tz": "^2.0.0", "disqus-react": "^1.1.5", - "fuse.js": "^6.6.2", + "fuse.js": "^7.0.0", "github-slugger": "^2.0.0", "gray-matter": "^4.0.3", - "marked": "^9.1.2", - "prettier-plugin-astro": "^0.12.0", - "prettier-plugin-tailwindcss": "^0.5.6", + "marked": "^11.0.0", + "prettier-plugin-astro": "^0.12.2", + "prettier-plugin-tailwindcss": "^0.5.7", "prop-types": "^15.8.1", "react": "^18.2.0", "react-dom": "^18.2.0", - "react-icons": "^4.11.0", - "react-lite-youtube-embed": "^2.3.52", + "react-icons": "^4.12.0", + "react-lite-youtube-embed": "^2.4.0", "remark-collapse": "^0.1.2", "remark-toc": "^9.0.0", - "sharp": "^0.32.6", - "swiper": "^11.0.1" + "sharp": "^0.33.0", + "swiper": "^11.0.5" }, "devDependencies": { - "@tailwindcss/forms": "^0.5.6", + "@tailwindcss/forms": "^0.5.7", "@tailwindcss/typography": "^0.5.10", "@types/marked": "^5.0.2", - "@types/node": "20.8.8", - "@types/react": "18.2.31", - "@types/react-dom": "18.2.14", + "@types/node": "20.10.2", + "@types/react": "18.2.41", + "@types/react-dom": "18.2.17", "autoprefixer": "^10.4.16", - "eslint": "^8.52.0", - "postcss": "^8.4.31", - "prettier": "^3.0.3", - "prettier-plugin-astro": "^0.12.0", - "prettier-plugin-tailwindcss": "^0.5.6", - "sass": "^1.69.4", - "tailwindcss": "^3.3.4", - "tailwind-bootstrap-grid": "^5.0.1", - "typescript": "5.2.2" + "eslint": "^8.55.0", + "postcss": "^8.4.32", + "prettier": "^3.1.0", + "prettier-plugin-astro": "^0.12.2", + "prettier-plugin-tailwindcss": "^0.5.7", + "sass": "^1.69.5", + "tailwindcss": "^3.3.5", + "tailwind-bootstrap-grid": "^5.1.0", + "typescript": "5.3.2" } } diff --git a/readme.md b/readme.md index 5120efb..d3b4ad7 100755 --- a/readme.md +++ b/readme.md @@ -10,8 +10,8 @@

- - + + diff --git a/src/layouts/PostSingle.astro b/src/layouts/PostSingle.astro index 0cdc43d..a585763 100755 --- a/src/layouts/PostSingle.astro +++ b/src/layouts/PostSingle.astro @@ -1,23 +1,26 @@ --- import BlogCard from "@/components/BlogCard.astro"; import Share from "@/components/Share.astro"; -import config from "@/config/config.json"; import Disqus from "@/helpers/Disqus"; -import { getSinglePage } from "@/lib/contentParser.astro"; import dateFormat from "@/lib/utils/dateFormat"; -import similerItems from "@/lib/utils/similarItems"; +import similarItems from "@/lib/utils/similarItems"; import { humanize, markdownify, slugify } from "@/lib/utils/textConverter"; import { Image } from "astro:assets"; +import { getCollection } from "astro:content"; import { FaRegClock, FaRegFolder, FaRegUserCircle, } from "react-icons/fa/index.js"; -const { blog_folder } = config.settings; -const posts = await getSinglePage(blog_folder); +const COLLECTION_FOLDER = "blog"; const { post } = Astro.props; -const similarPosts = similerItems(post, posts, post.slug); + +const posts = await getCollection( + COLLECTION_FOLDER, + ({ data, slug }) => !data.draft && slug !== "-index", +); +const similarPosts = similarItems(post, posts); const { Content } = await post.render(); const { title, description, author, categories, image, date, tags } = post.data; --- diff --git a/src/layouts/Search.tsx b/src/layouts/Search.tsx index 091d1aa..56976e7 100755 --- a/src/layouts/Search.tsx +++ b/src/layouts/Search.tsx @@ -25,7 +25,7 @@ interface SearchResult { refIndex: number; } -const Search = ({ searchList }: Props) => { +const SearchLayout = ({ searchList }: Props) => { const inputRef = useRef(null); const [inputVal, setInputVal] = useState(""); const [searchResults, setSearchResults] = useState([]); @@ -178,4 +178,4 @@ const Search = ({ searchList }: Props) => { ); }; -export default Search; +export default SearchLayout; diff --git a/src/layouts/components/Social.astro b/src/layouts/components/Social.astro index 1e2bd12..8f50747 100755 --- a/src/layouts/components/Social.astro +++ b/src/layouts/components/Social.astro @@ -20,7 +20,7 @@ export interface ISocial { rel="noopener noreferrer nofollow" > {social.name} - + )) diff --git a/src/layouts/helpers/DynamicIcon.tsx b/src/layouts/helpers/DynamicIcon.tsx index 9607b63..9182886 100755 --- a/src/layouts/helpers/DynamicIcon.tsx +++ b/src/layouts/helpers/DynamicIcon.tsx @@ -1,4 +1,4 @@ -import React, { FC } from "react"; +import React, { type FC } from "react"; import type { IconType } from "react-icons"; import * as FaIcons from "react-icons/fa6/index.js"; // import * as AiIcons from "react-icons/ai/index.js"; diff --git a/src/lib/contentParser.astro b/src/lib/contentParser.astro deleted file mode 100644 index ddf39a4..0000000 --- a/src/lib/contentParser.astro +++ /dev/null @@ -1,10 +0,0 @@ ---- -import { getCollection } from "astro:content"; - -export const getSinglePage = async (collection: any) => { - const allPage = await getCollection(collection); - const removeIndex = allPage.filter((data: any) => data.id.match(/^(?!-)/)); - const removeDrafts = removeIndex.filter((data: any) => !data.data.draft); - return removeDrafts; -}; ---- diff --git a/src/lib/taxonomyParser.astro b/src/lib/taxonomyParser.astro index 4b27bf8..aa86862 100644 --- a/src/lib/taxonomyParser.astro +++ b/src/lib/taxonomyParser.astro @@ -1,8 +1,16 @@ --- -import { getSinglePage } from "./contentParser.astro"; +import { getCollection } from "astro:content"; import { slugify } from "./utils/textConverter"; -// get all taxonomies from frontmatter +// get all pages from collection +export const getSinglePage = async (collection: any) => { + const allPage = await getCollection(collection); + const removeIndex = allPage.filter((data: any) => data.id.match(/^(?!-)/)); + const removeDrafts = removeIndex.filter((data: any) => !data.data.draft); + return removeDrafts; +}; + +// get taxonomy from frontmatter export const getTaxonomy = async (collection: string, name: string) => { const singlePages = await getSinglePage(collection); const taxonomyPages = singlePages.map((page: any) => page.data[name]); @@ -17,6 +25,7 @@ export const getTaxonomy = async (collection: string, name: string) => { return taxonomy; }; +// get all taxonomies from frontmatter export const getAllTaxonomy = async (collection: string, name: string) => { const singlePages = await getSinglePage(collection); const taxonomyPages = singlePages.map((page: any) => page.data[name]); diff --git a/src/lib/utils/similarItems.ts b/src/lib/utils/similarItems.ts index cd92b37..ebd52d6 100644 --- a/src/lib/utils/similarItems.ts +++ b/src/lib/utils/similarItems.ts @@ -1,5 +1,5 @@ -// similer products -const similerItems = (currentItem: any, allItems: any, slug: string) => { +// similar products +const similarItems = (currentItem: any, allItems: any[]) => { let categories: string[] = []; let tags: string[] = []; @@ -27,9 +27,11 @@ const similerItems = (currentItem: any, allItems: any, slug: string) => { const mergedItems = [...new Set([...filterByCategories, ...filterByTags])]; // filter by slug - const filterBySlug = mergedItems.filter((product) => product.slug !== slug); + const filterBySlug = mergedItems.filter( + (product) => product.slug !== currentItem.slug, + ); return filterBySlug; }; -export default similerItems; +export default similarItems; diff --git a/src/pages/[regular].astro b/src/pages/[regular].astro index 7879c79..b290452 100755 --- a/src/pages/[regular].astro +++ b/src/pages/[regular].astro @@ -1,10 +1,15 @@ --- import Base from "@/layouts/Base.astro"; -import { getSinglePage } from "@/lib/contentParser.astro"; import PageHeader from "@/partials/PageHeader.astro"; +import { getCollection } from "astro:content"; export async function getStaticPaths() { - const pages = await getSinglePage("pages"); + const COLLECTION_FOLDER = "pages"; + + const pages = await getCollection( + COLLECTION_FOLDER, + ({ data }) => !data.draft, + ); const paths = pages.map((page) => ({ params: { diff --git a/src/pages/authors/[single].astro b/src/pages/authors/[single].astro index ea68c34..8a40a24 100755 --- a/src/pages/authors/[single].astro +++ b/src/pages/authors/[single].astro @@ -1,14 +1,17 @@ --- import BlogCard from "@/components/BlogCard.astro"; import Social from "@/components/Social.astro"; -import config from "@/config/config.json"; import Base from "@/layouts/Base.astro"; -import { getSinglePage } from "@/lib/contentParser.astro"; import { slugify } from "@/lib/utils/textConverter"; import { Image } from "astro:assets"; +import { getCollection } from "astro:content"; export async function getStaticPaths() { - const authors = await getSinglePage("authors"); + const COLLECTION_FOLDER = "authors"; + const authors = await getCollection( + COLLECTION_FOLDER, + ({ data, slug }) => !data.draft && slug !== "-index", + ); const paths = authors.map((author) => ({ params: { @@ -19,11 +22,13 @@ export async function getStaticPaths() { return paths; } -const { blog_folder }: { blog_folder: string } = config.settings; const { author } = Astro.props; const { title, social, meta_title, description, image } = author.data; const { Content } = await author.render(); -const posts = await getSinglePage(blog_folder); +const posts = await getCollection( + "blog", + ({ data, slug }) => !data.draft && slug !== "-index", +); const postFilterByAuthor = posts.filter( (post) => slugify(post.data.author) === slugify(title), ); diff --git a/src/pages/authors/index.astro b/src/pages/authors/index.astro index 47c28b1..dcff77c 100755 --- a/src/pages/authors/index.astro +++ b/src/pages/authors/index.astro @@ -1,12 +1,16 @@ --- import AuthorCard from "@/components/AuthorCard.astro"; import Base from "@/layouts/Base.astro"; -import { getSinglePage } from "@/lib/contentParser.astro"; import PageHeader from "@/partials/PageHeader.astro"; -import { getEntry } from "astro:content"; +import { getCollection, getEntry } from "astro:content"; -const authorIndex = await getEntry("authors", "-index"); -const authors = await getSinglePage("authors"); +const COLLECTION_FOLDER = "authors"; + +const authorIndex = await getEntry(COLLECTION_FOLDER, "-index"); +const authors = await getCollection( + COLLECTION_FOLDER, + ({ data, slug }) => !data.draft && slug !== "-index", +); --- diff --git a/src/pages/blog/[single].astro b/src/pages/blog/[single].astro index 5632442..da762f0 100755 --- a/src/pages/blog/[single].astro +++ b/src/pages/blog/[single].astro @@ -1,11 +1,14 @@ --- -import config from "@/config/config.json"; import Base from "@/layouts/Base.astro"; import PostSingle from "@/layouts/PostSingle.astro"; -import { getSinglePage } from "@/lib/contentParser.astro"; +import { getCollection } from "astro:content"; export async function getStaticPaths() { - const posts = await getSinglePage(config.settings.blog_folder); + const COLLECTION_FOLDER = "blog"; + const posts = await getCollection( + COLLECTION_FOLDER, + ({ data, slug }) => !data.draft && slug !== "-index", + ); const paths = posts.map((post) => ({ params: { diff --git a/src/pages/blog/index.astro b/src/pages/blog/index.astro index 81d83d1..1fd2058 100755 --- a/src/pages/blog/index.astro +++ b/src/pages/blog/index.astro @@ -3,19 +3,22 @@ import BlogCard from "@/components/BlogCard.astro"; import Pagination from "@/components/Pagination.astro"; import config from "@/config/config.json"; import Base from "@/layouts/Base.astro"; -import { getSinglePage } from "@/lib/contentParser.astro"; import { getAllTaxonomy, getTaxonomy } from "@/lib/taxonomyParser.astro"; import { sortByDate } from "@/lib/utils/sortFunctions"; import PageHeader from "@/partials/PageHeader.astro"; import PostSidebar from "@/partials/PostSidebar.astro"; -import { getEntry } from "astro:content"; +import { getCollection, getEntry } from "astro:content"; -const { blog_folder } = config.settings; -const postIndex = await getEntry(blog_folder, "-index"); -const posts = await getSinglePage(blog_folder); -const allCategories = await getAllTaxonomy(blog_folder, "categories"); -const categories = await getTaxonomy(blog_folder, "categories"); -const tags = await getTaxonomy(blog_folder, "tags"); +const COLLECTION_FOLDER = "blog"; + +const postIndex = await getEntry(COLLECTION_FOLDER, "-index"); +const posts = await getCollection( + COLLECTION_FOLDER, + ({ data, slug }) => !data.draft && slug !== "-index", +); +const allCategories = await getAllTaxonomy(COLLECTION_FOLDER, "categories"); +const categories = await getTaxonomy(COLLECTION_FOLDER, "categories"); +const tags = await getTaxonomy(COLLECTION_FOLDER, "tags"); const sortedPosts = sortByDate(posts); const totalPages: number = Math.ceil(posts.length / config.settings.pagination); const currentPosts = sortedPosts.slice(0, config.settings.pagination); @@ -43,7 +46,7 @@ const currentPosts = sortedPosts.slice(0, config.settings.pagination); } diff --git a/src/pages/blog/page/[slug].astro b/src/pages/blog/page/[slug].astro index 6caac79..a1385ff 100755 --- a/src/pages/blog/page/[slug].astro +++ b/src/pages/blog/page/[slug].astro @@ -3,20 +3,23 @@ import BlogCard from "@/components/BlogCard.astro"; import Pagination from "@/components/Pagination.astro"; import config from "@/config/config.json"; import Base from "@/layouts/Base.astro"; -import { getSinglePage } from "@/lib/contentParser.astro"; import { getAllTaxonomy, getTaxonomy } from "@/lib/taxonomyParser.astro"; import { sortByDate } from "@/lib/utils/sortFunctions"; import PageHeader from "@/partials/PageHeader.astro"; import PostSidebar from "@/partials/PostSidebar.astro"; -import { getEntry } from "astro:content"; +import { getCollection, getEntry } from "astro:content"; + +const COLLECTION_FOLDER = "blog"; -const { blog_folder } = config.settings; const { slug } = Astro.params; -const postIndex = await getEntry(blog_folder, "-index"); -const posts = await getSinglePage(blog_folder); -const allCategories = await getAllTaxonomy(blog_folder, "categories"); -const categories = await getTaxonomy(blog_folder, "categories"); -const tags = await getTaxonomy(blog_folder, "tags"); +const postIndex = await getEntry(COLLECTION_FOLDER, "-index"); +const posts = await getCollection( + COLLECTION_FOLDER, + ({ data, slug }) => !data.draft && slug !== "-index", +); +const allCategories = await getAllTaxonomy(COLLECTION_FOLDER, "categories"); +const categories = await getTaxonomy(COLLECTION_FOLDER, "categories"); +const tags = await getTaxonomy(COLLECTION_FOLDER, "tags"); const sortedPosts = sortByDate(posts); const totalPages = Math.ceil(posts.length / config.settings.pagination); const currentPage = slug && !isNaN(Number(slug)) ? Number(slug) : 1; @@ -25,7 +28,11 @@ const indexOfFirstPost = indexOfLastPost - config.settings.pagination; const currentPosts = sortedPosts.slice(indexOfFirstPost, indexOfLastPost); export async function getStaticPaths() { - const posts = await getSinglePage(config.settings.blog_folder); + const COLLECTION_FOLDER = "blog"; + const posts = await getCollection( + COLLECTION_FOLDER, + ({ data, slug }) => !data.draft && slug !== "-index", + ); const totalPages = Math.ceil(posts.length / config.settings.pagination); const paths = []; @@ -62,7 +69,7 @@ export async function getStaticPaths() { } diff --git a/src/pages/categories/[category].astro b/src/pages/categories/[category].astro index b9396eb..4df39c7 100755 --- a/src/pages/categories/[category].astro +++ b/src/pages/categories/[category].astro @@ -1,17 +1,14 @@ --- import BlogCard from "@/components/BlogCard.astro"; -import config from "@/config/config.json"; import Base from "@/layouts/Base.astro"; -import { getSinglePage } from "@/lib/contentParser.astro"; import { getTaxonomy } from "@/lib/taxonomyParser.astro"; import taxonomyFilter from "@/lib/utils/taxonomyFilter"; import PageHeader from "@/partials/PageHeader.astro"; +import { getCollection } from "astro:content"; export async function getStaticPaths() { - const categories = await getTaxonomy( - config.settings.blog_folder, - "categories" - ); + const BLOG_FOLDER = "blog"; + const categories = await getTaxonomy(BLOG_FOLDER, "categories"); return categories.map((category) => { return { @@ -21,7 +18,10 @@ export async function getStaticPaths() { } const { category } = Astro.params; -const posts = await getSinglePage(config.settings.blog_folder); +const posts = await getCollection( + "blog", + ({ data, slug }) => !data.draft && slug !== "-index", +); const filterByCategories = taxonomyFilter(posts, "categories", category!); --- diff --git a/src/pages/categories/index.astro b/src/pages/categories/index.astro index 82161fb..eae7810 100755 --- a/src/pages/categories/index.astro +++ b/src/pages/categories/index.astro @@ -1,13 +1,13 @@ --- -import config from "@/config/config.json"; import Base from "@/layouts/Base.astro"; import { getAllTaxonomy, getTaxonomy } from "@/lib/taxonomyParser.astro"; import { humanize } from "@/lib/utils/textConverter"; import PageHeader from "@/partials/PageHeader.astro"; -const { blog_folder }: { blog_folder: string } = config.settings; -const categories = await getTaxonomy(blog_folder, "categories"); -const allCategories = await getAllTaxonomy(blog_folder, "categories"); +const BLOG_FOLDER = "blog"; + +const categories = await getTaxonomy(BLOG_FOLDER, "categories"); +const allCategories = await getAllTaxonomy(BLOG_FOLDER, "categories"); --- diff --git a/src/pages/search.astro b/src/pages/search.astro index e90d927..1ef7bb9 100755 --- a/src/pages/search.astro +++ b/src/pages/search.astro @@ -1,13 +1,12 @@ --- -import config from "@/config/config.json"; import Base from "@/layouts/Base.astro"; -import Search from "@/layouts/Search"; -import { getSinglePage } from "@/lib/contentParser.astro"; +import SearchLayout from "@/layouts/Search"; +import { getCollection } from "astro:content"; -const { blog_folder } = config.settings; - -// Retrieve all articles -const posts = await getSinglePage(blog_folder); +const posts = await getCollection( + "blog", + ({ data, slug }) => !data.draft && slug !== "-index", +); // List of items to search in const searchList = posts.map((item) => ({ @@ -18,5 +17,5 @@ const searchList = posts.map((item) => ({ --- - + diff --git a/src/pages/tags/[tag].astro b/src/pages/tags/[tag].astro index 907e148..62d74e7 100755 --- a/src/pages/tags/[tag].astro +++ b/src/pages/tags/[tag].astro @@ -1,14 +1,14 @@ --- import BlogCard from "@/components/BlogCard.astro"; -import config from "@/config/config.json"; import Base from "@/layouts/Base.astro"; -import { getSinglePage } from "@/lib/contentParser.astro"; import { getTaxonomy } from "@/lib/taxonomyParser.astro"; import taxonomyFilter from "@/lib/utils/taxonomyFilter"; import PageHeader from "@/partials/PageHeader.astro"; +import { getCollection } from "astro:content"; export async function getStaticPaths() { - const tags = await getTaxonomy(config.settings.blog_folder, "tags"); + const BLOG_FOLDER = "blog"; + const tags = await getTaxonomy(BLOG_FOLDER, "tags"); return tags.map((tag) => { return { @@ -18,8 +18,11 @@ export async function getStaticPaths() { } const { tag } = Astro.params; -const posts = await getSinglePage(config.settings.blog_folder); -const filterByCategories = taxonomyFilter(posts, "tags", tag!); +const posts = await getCollection( + "blog", + ({ data, slug }) => !data.draft && slug !== "-index", +); +const filterByTags = taxonomyFilter(posts, "categories", tag!); --- @@ -28,7 +31,7 @@ const filterByCategories = taxonomyFilter(posts, "tags", tag!);

{ - filterByCategories.map((post) => ( + filterByTags.map((post) => (
diff --git a/src/pages/tags/index.astro b/src/pages/tags/index.astro index ceccffa..0989c16 100755 --- a/src/pages/tags/index.astro +++ b/src/pages/tags/index.astro @@ -1,13 +1,13 @@ --- -import config from "@/config/config.json"; import Base from "@/layouts/Base.astro"; import { getAllTaxonomy, getTaxonomy } from "@/lib/taxonomyParser.astro"; import { humanize } from "@/lib/utils/textConverter"; import PageHeader from "@/partials/PageHeader.astro"; -const { blog_folder }: { blog_folder: string } = config.settings; -const tags = await getTaxonomy(blog_folder, "tags"); -const allTags = await getAllTaxonomy(blog_folder, "tags"); +const BLOG_FOLDER = "blog"; + +const tags = await getTaxonomy(BLOG_FOLDER, "tags"); +const allTags = await getAllTaxonomy(BLOG_FOLDER, "tags"); --- diff --git a/tsconfig.json b/tsconfig.json index ccbb97d..18d9566 100755 --- a/tsconfig.json +++ b/tsconfig.json @@ -11,7 +11,6 @@ "isolatedModules": true, "incremental": true, "allowSyntheticDefaultImports": true, - "types": ["@astrojs/image/client"], "paths": { "@/components/*": ["./src/layouts/components/*"], "@/shortcodes/*": ["./src/layouts/shortcodes/*"],