From 06c39796d1de7123420ca4b447fcbfc44cee68ed Mon Sep 17 00:00:00 2001 From: Jumpei Ogawa Date: Sun, 25 Aug 2024 09:30:26 +0900 Subject: [PATCH] refactor: add typings --- astro.config.ts | 3 ++- src/utils/frontmatter.ts | 15 +++++++-------- vendor/integration/index.ts | 9 +++++---- vendor/integration/utils/configBuilder.ts | 2 +- 4 files changed, 15 insertions(+), 14 deletions(-) diff --git a/astro.config.ts b/astro.config.ts index 464a208..e133783 100644 --- a/astro.config.ts +++ b/astro.config.ts @@ -9,6 +9,7 @@ import mdx from '@astrojs/mdx'; import partytown from '@astrojs/partytown'; import icon from 'astro-icon'; import compress from 'astro-compress'; +import type { AstroIntegration } from 'astro'; import astrowind from './vendor/integration'; @@ -21,7 +22,7 @@ import { const __dirname = path.dirname(fileURLToPath(import.meta.url)); const hasExternalScripts = false; -const whenExternalScripts = (items = []) => +const whenExternalScripts = (items: (() => AstroIntegration) | (() => AstroIntegration)[] = []) => hasExternalScripts ? (Array.isArray(items) ? items.map((item) => item()) : [items()]) : []; export default defineConfig({ diff --git a/src/utils/frontmatter.ts b/src/utils/frontmatter.ts index c104022..7dc10d1 100644 --- a/src/utils/frontmatter.ts +++ b/src/utils/frontmatter.ts @@ -1,17 +1,18 @@ import getReadingTime from 'reading-time'; import { toString } from 'mdast-util-to-string'; import lazyLoadPlugin from 'rehype-plugin-image-native-lazy-loading'; +import type { MarkdownAstroData, RehypePlugin, RemarkPlugin } from '@astrojs/markdown-remark'; -export function readingTimeRemarkPlugin() { +export const readingTimeRemarkPlugin: RemarkPlugin = () => { return function (tree, file) { const textOnPage = toString(tree); const readingTime = Math.ceil(getReadingTime(textOnPage).minutes); - file.data.astro.frontmatter.readingTime = readingTime; + (file.data.astro as MarkdownAstroData).frontmatter.readingTime = readingTime; }; -} +}; -export function responsiveTablesRehypePlugin() { +export const responsiveTablesRehypePlugin: RehypePlugin = () => { return function (tree) { if (!tree.children) return; @@ -19,7 +20,7 @@ export function responsiveTablesRehypePlugin() { const child = tree.children[i]; if (child.type === 'element' && child.tagName === 'table') { - const wrapper = { + tree.children[i] = { type: 'element', tagName: 'div', properties: { @@ -28,12 +29,10 @@ export function responsiveTablesRehypePlugin() { children: [child], }; - tree.children[i] = wrapper; - i++; } } }; -} +}; export const lazyImagesRehypePlugin = lazyLoadPlugin; diff --git a/vendor/integration/index.ts b/vendor/integration/index.ts index 6dea8a7..b24420f 100644 --- a/vendor/integration/index.ts +++ b/vendor/integration/index.ts @@ -1,11 +1,12 @@ import fs from 'node:fs'; import os from 'node:os'; +import type { AstroConfig, AstroIntegration } from 'astro'; -import configBuilder from './utils/configBuilder'; +import configBuilder, { type Config } from './utils/configBuilder'; import loadConfig from './utils/loadConfig'; -export default ({ config: _themeConfig = 'src/config.yaml' } = {}) => { - let cfg; +export default ({ config: _themeConfig = 'src/config.yaml' } = {}): AstroIntegration => { + let cfg: AstroConfig; return { name: 'astrowind-integration', @@ -24,7 +25,7 @@ export default ({ config: _themeConfig = 'src/config.yaml' } = {}) => { const virtualModuleId = 'astrowind:config'; const resolvedVirtualModuleId = '\0' + virtualModuleId; - const rawJsonConfig = await loadConfig(_themeConfig); + const rawJsonConfig = (await loadConfig(_themeConfig)) as Config; const { SITE, I18N, METADATA, APP_BLOG, UI, ANALYTICS } = configBuilder(rawJsonConfig); updateConfig({ diff --git a/vendor/integration/utils/configBuilder.ts b/vendor/integration/utils/configBuilder.ts index dfe84e5..1c60e9b 100644 --- a/vendor/integration/utils/configBuilder.ts +++ b/vendor/integration/utils/configBuilder.ts @@ -2,7 +2,7 @@ import merge from 'lodash.merge'; import type { MetaData } from '~/types'; -type Config = { +export type Config = { site?: SiteConfig; metadata?: MetaDataConfig; i18n?: I18NConfig;