From c1f36e9f7908f41e0e9c5d6723e4d165912f2479 Mon Sep 17 00:00:00 2001 From: prototypa Date: Tue, 22 Aug 2023 22:52:01 -0400 Subject: [PATCH] Better eslint configuration and format some files --- .eslintrc.js | 3 ++ README.md | 2 +- astro.config.mjs | 4 +- public/decapcms/config.yml | 37 ++++++++----------- public/decapcms/index.html | 2 +- .../post/astrowind-template-in-depth.mdx | 4 +- src/pages/rss.xml.ts | 10 ++--- src/utils/config.ts | 2 +- src/utils/images.ts | 6 ++- src/utils/utils.ts | 10 +---- 10 files changed, 37 insertions(+), 43 deletions(-) diff --git a/.eslintrc.js b/.eslintrc.js index 5b067cd..296d99a 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -1,3 +1,4 @@ +/** @type {import("eslint").Linter.Config} */ module.exports = { env: { node: true, @@ -5,7 +6,9 @@ module.exports = { browser: true, }, extends: ['eslint:recommended', 'plugin:astro/recommended'], + parser: '@typescript-eslint/parser', parserOptions: { + tsconfigRootDir: __dirname, ecmaVersion: 'latest', sourceType: 'module', }, diff --git a/README.md b/README.md index d6595b7..5ecba7d 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ ## Features -- ✅ Integration with **Tailwind CSS** ([@astrojs/tailwind](https://docs.astro.build/en/guides/integrations-guide/tailwind/)) supporting **Dark mode** and ***RTL***. +- ✅ Integration with **Tailwind CSS** ([@astrojs/tailwind](https://docs.astro.build/en/guides/integrations-guide/tailwind/)) supporting **Dark mode** and **_RTL_**. - ✅ **Production-ready** scores in [Lighthouse](https://web.dev/measure/) and [PageSpeed Insights](https://pagespeed.web.dev/) reports. - ✅ **Fast and SEO friendly blog** with automatic **RSS feed** ([@astrojs/rss](https://docs.astro.build/en/guides/rss/)), [**MDX** support](https://docs.astro.build/en/guides/integrations-guide/mdx/), **Categories & Tags**, **Social Share**, ... - ✅ **Image Optimization** (using new [Astro Assets](https://astro.build/blog/images/) and [Unpic](https://unpic.pics/lib/) for Universal image CDN) and **Font optimization**. diff --git a/astro.config.mjs b/astro.config.mjs index c7d0608..de36400 100644 --- a/astro.config.mjs +++ b/astro.config.mjs @@ -9,7 +9,7 @@ import mdx from '@astrojs/mdx'; import partytown from '@astrojs/partytown'; import compress from 'astro-compress'; import icon from 'astro-icon'; -import tasks from "./src/utils/tasks"; +import tasks from './src/utils/tasks'; import { readingTimeRemarkPlugin } from './src/utils/frontmatter.mjs'; @@ -32,7 +32,7 @@ export default defineConfig({ output: 'static', build: { - inlineStylesheets: 'auto' + inlineStylesheets: 'auto', }, integrations: [ diff --git a/public/decapcms/config.yml b/public/decapcms/config.yml index e1f93f5..841a67b 100644 --- a/public/decapcms/config.yml +++ b/public/decapcms/config.yml @@ -2,33 +2,28 @@ backend: name: git-gateway branch: main -media_folder: "src/assets/images" -public_folder: "/_astro" +media_folder: 'src/assets/images' +public_folder: '/_astro' collections: - - name: "post" - label: "Post" - folder: "src/content/post" + - name: 'post' + label: 'Post' + folder: 'src/content/post' create: true fields: - - { label: "Title", name: "title", widget: "string" } - - { label: "Excerpt", name: "excerpt", widget: "string" } - - { label: "Category", name: "category", widget: "string" } + - { label: 'Title', name: 'title', widget: 'string' } + - { label: 'Excerpt', name: 'excerpt', widget: 'string' } + - { label: 'Category', name: 'category', widget: 'string' } - { - label: "Tags", - name: "tags", - widget: "list", + label: 'Tags', + name: 'tags', + widget: 'list', allow_add: true, allow_delete: true, collapsed: false, - field: { label: "Tag", name: "tag", widget: "string" }, + field: { label: 'Tag', name: 'tag', widget: 'string' }, } - - { label: "Image", name: "image", widget: "string" } - - { - label: "Publish Date", - name: "publishDate", - widget: "datetime", - required: false, - } - - { label: "Author", name: "author", widget: "string" } - - { label: "Content", name: "body", widget: "markdown" } \ No newline at end of file + - { label: 'Image', name: 'image', widget: 'string' } + - { label: 'Publish Date', name: 'publishDate', widget: 'datetime', required: false } + - { label: 'Author', name: 'author', widget: 'string' } + - { label: 'Content', name: 'body', widget: 'markdown' } diff --git a/public/decapcms/index.html b/public/decapcms/index.html index 7c38233..8abf41e 100644 --- a/public/decapcms/index.html +++ b/public/decapcms/index.html @@ -1,4 +1,4 @@ - + diff --git a/src/content/post/astrowind-template-in-depth.mdx b/src/content/post/astrowind-template-in-depth.mdx index 18fffaa..7b5c142 100644 --- a/src/content/post/astrowind-template-in-depth.mdx +++ b/src/content/post/astrowind-template-in-depth.mdx @@ -37,8 +37,8 @@ The styling mechanism consists of the following files (all paths are prefixed wi header section. See next. - This layout is used for all of the pages rendered by _AstroWind_. The contents of _tailwind.css_ and _CustomStyles.astro_ component, - described above, is injected into the html header. + This layout is used for all of the pages rendered by _AstroWind_. The contents of _tailwind.css_ and + _CustomStyles.astro_ component, described above, is injected into the html header. ### Dark Mode diff --git a/src/pages/rss.xml.ts b/src/pages/rss.xml.ts index 5e3b8d2..aad6236 100644 --- a/src/pages/rss.xml.ts +++ b/src/pages/rss.xml.ts @@ -14,9 +14,9 @@ export const GET = async () => { const posts = await fetchPosts(); - const { body = "" } = await rss({ + const { body = '' } = await rss({ title: `${SITE.name}’s Blog`, - description: METADATA?.description || "", + description: METADATA?.description || '', site: import.meta.env.SITE, items: posts.map((post) => ({ @@ -27,12 +27,12 @@ export const GET = async () => { })), trailingSlash: SITE.trailingSlash, - }) + }); return new Response(body, { status: 200, headers: { - "Content-Type": "application/xml" - } + 'Content-Type': 'application/xml', + }, }); }; diff --git a/src/utils/config.ts b/src/utils/config.ts index d9b98c6..bbeb7a2 100644 --- a/src/utils/config.ts +++ b/src/utils/config.ts @@ -20,7 +20,7 @@ export interface MetaDataConfig extends Omit { export interface I18NConfig { language: string; textDirection: string; - dateFormatter: unknown; + dateFormatter?: Intl.DateTimeFormat; } export interface AppBlogConfig { isEnabled: boolean; diff --git a/src/utils/images.ts b/src/utils/images.ts index daafedb..8976137 100644 --- a/src/utils/images.ts +++ b/src/utils/images.ts @@ -21,7 +21,9 @@ export const fetchLocalImages = async () => { }; /** */ -export const findImage = async (imagePath?: string | ImageMetadata | null): Promise => { +export const findImage = async ( + imagePath?: string | ImageMetadata | null +): Promise => { // Not string if (typeof imagePath !== 'string') { return imagePath; @@ -94,4 +96,4 @@ export const adaptOpenGraphImages = async ( ); return { ...openGraph, ...(adaptedImages ? { images: adaptedImages } : {}) }; -}; \ No newline at end of file +}; diff --git a/src/utils/utils.ts b/src/utils/utils.ts index cf21d7a..36936d5 100644 --- a/src/utils/utils.ts +++ b/src/utils/utils.ts @@ -1,6 +1,6 @@ import { I18N } from '~/utils/config'; -const formatter = +const formatter: Intl.DateTimeFormat = I18N?.dateFormatter || new Intl.DateTimeFormat('en', { year: 'numeric', @@ -9,13 +9,7 @@ const formatter = timeZone: 'UTC', }); -/* eslint-disable no-mixed-spaces-and-tabs */ -export const getFormattedDate = (date: Date) => - date - ? // eslint-disable-next-line @typescript-eslint/ban-ts-comment - /* @ts-ignore */ - formatter.format(date) - : ''; +export const getFormattedDate = (date: Date): string => (date ? formatter.format(date) : ''); export const trim = (str = '', ch?: string) => { let start = 0,