diff --git a/.github/diff.cjs b/.github/diff.cjs deleted file mode 100644 index dfb77395f..000000000 --- a/.github/diff.cjs +++ /dev/null @@ -1,118 +0,0 @@ -const fs = require('fs') -const path = require('path') -const crypto = require('crypto') -const core = require('@actions/core') - -function init() { - const DEPLOY_DOMAIN = - process.env.DEPLOY_DOMAIN || 'https://yuanshen.site/docs/' - let result = '' - let outRange = false - console.log(process.env.DEPLOY_DOMAIN, DEPLOY_DOMAIN) - function calculateHashForHTMLFiles(directoryPath) { - const files = fs.readdirSync(core.toPlatformPath(directoryPath)) - const result = {} - - files.forEach((file) => { - const filePath = path.join(directoryPath, file) - const fileStats = fs.statSync(filePath) - - if (fileStats.isFile() && file.endsWith('.html')) { - const fileContent = fs.readFileSync(filePath, 'utf8') - const hash = crypto.createHash('md5').update(fileContent).digest('hex') - - result[filePath.substring(filePath.indexOf('dist') + 4)] = hash - } else if (fileStats.isDirectory()) { - const subDirectoryPath = path.join(directoryPath, file) - const subDirectoryFiles = calculateHashForHTMLFiles(subDirectoryPath) // 递归调用遍历子目录 - - Object.assign(result, subDirectoryFiles) // 合并子目录的结果到当前对象 - } - }) - - return result // 返回结果对象 - } - - function compareFilesWithHash(previousFiles, currentFiles) { - console.log(previousFiles, currentFiles) - const changedFiles = Object.keys(currentFiles).filter((key) => { - return ( - previousFiles.hasOwnProperty(key) && - previousFiles[key] !== currentFiles[key] - ) - }) - - const newFiles = Object.keys(currentFiles).filter((key) => { - return !previousFiles.hasOwnProperty(key) - }) - - return { - changedFiles, - newFiles, - } - } - - function exportHTML(data, maxCount = 10) { - let str = '' - - console.log(data.length) - if (data.length >= maxCount) outRange = true - data.forEach((val, count) => { - if (count >= maxCount) return - str += `
  • ${core.toPosixPath(val)}view
  • ` - }) - - return str - } - - const { changedFiles, newFiles } = compareFilesWithHash( - calculateHashForHTMLFiles(core.toPlatformPath('./_dist')), - calculateHashForHTMLFiles(core.toPlatformPath('./dist')), - ) - - if (changedFiles.length === 0 && newFiles.length === 0) { - core.info('No new or changed files') - - return '' - } - - if (changedFiles.length !== 0 && newFiles.length === 0) { - result = ` -

    Changed pages include:

    - ` - } else if (changedFiles.length === 0 && newFiles.length !== 0) { - result = ` -

    New pages include:

    - ` - } else { - result = ` -

    Changed pages include:

    - -

    New pages include:

    - - ` - } - core.info('Changed and new files:', changedFiles, newFiles) - - return ( - result + - (outRange - ? '

    There are more changes not included in the list

    ' - : '') - ) -} - -const data = init() - -core.info(data) -core.exportVariable('DIFFER_INFO', data) diff --git a/.vitepress/config.ts b/.vitepress/config.ts index 5a808900c..671e5e3d3 100644 --- a/.vitepress/config.ts +++ b/.vitepress/config.ts @@ -1,31 +1,31 @@ -import Unocss from 'unocss/vite' +import { URL, fileURLToPath } from 'node:url' +import { figure } from '@mdit/plugin-figure' +import { imgSize, obsidianImageSize } from '@mdit/plugin-img-size' +import { mark } from '@mdit/plugin-mark' +import { sub } from '@mdit/plugin-sub' +import { sup } from '@mdit/plugin-sup' import MarkdownItFootnote from 'markdown-it-footnote' import MarkdownItKbd from 'markdown-it-kbd-better' -import { fileURLToPath, URL } from 'node:url' -import { defineConfig } from 'vitepress' +import Unocss from 'unocss/vite' import type { DefaultTheme, HeadConfig, + LocaleSpecificConfig, PageData, SiteConfig, - UserConfig, - LocaleSpecificConfig, TransformContext, TransformPageContext, + UserConfig, } from 'vitepress' -import type { CustomConfig } from './locales/types' -import { colorPreviewPlugin } from './theme/markdown/colorPreview' -import { cardPlugin } from './theme/markdown/card' -import { figure } from '@mdit/plugin-figure' -import { imgSize, obsidianImageSize } from '@mdit/plugin-img-size' -import { mark } from '@mdit/plugin-mark' -import { sub } from '@mdit/plugin-sub' -import { sup } from '@mdit/plugin-sup' -import { timeline } from './theme/markdown/timeline' +import { defineConfig } from 'vitepress' import { enConfig } from './locales/en' -import { zhConfig } from './locales/zh' import { jaConfig } from './locales/ja' +import type { CustomConfig } from './locales/types' +import { zhConfig } from './locales/zh' +import { cardPlugin } from './theme/markdown/card' +import { colorPreviewPlugin } from './theme/markdown/colorPreview' +import { timeline } from './theme/markdown/timeline' const isProd = process.env.NODE_ENV === 'production' const commitRef = process.env.COMMIT_REF?.slice(0, 8) || 'dev' @@ -57,7 +57,7 @@ type ConfigureFuncType = Pick< UserConfig, 'transformHead' | 'transformPageData' > -type LocaleConfigVal = LocaleSpecificConfig +type LocaleConfigVal = LocaleSpecificConfig const cfgGetPageUrl = (pageData: PageData, siteConfig: SiteConfig): string => `https://yuanshen.site/${siteConfig.site.base}${pageData.relativePath.replace('.md', '')}` @@ -108,7 +108,7 @@ const cfgDynamicTitleTemplate = ( pageData: PageData, siteConfig: SiteConfig, ): void => { - let titleTemplate: string | boolean = + let titleTemplate: boolean | string = pageData.frontmatter.titleTemplate ?? siteConfig.userConfig.titleTemplate if (titleTemplate === null || titleTemplate === undefined) { const localeKey: string = @@ -119,7 +119,7 @@ const cfgDynamicTitleTemplate = ( siteConfig.userConfig.locales![localeKey] ?? {} const templateMappings: CustomConfig['ui']['title']['templateMappings'] = localeConfig.themeConfig?.ui.title.templateMappings ?? [] - for (let templateMapping of templateMappings) { + for (const templateMapping of templateMappings) { if ( templateMapping.test && templateMapping.test.test(pageData.relativePath) @@ -147,18 +147,14 @@ const createConfigureFunction = (): ConfigureFuncType => { cfgDynamicTitleTemplate(pageData, siteConfig) }, } - } else { - return { - transformPageData: ( - pageData: PageData, - context: TransformPageContext, - ) => { - const { siteConfig } = context - cfgDynamicHead(pageData, siteConfig) - cfgDynamicTitleTemplate(pageData, siteConfig) - }, - } } + return { + transformPageData: (pageData: PageData, context: TransformPageContext) => { + const { siteConfig } = context + cfgDynamicHead(pageData, siteConfig) + cfgDynamicTitleTemplate(pageData, siteConfig) + }, + } as ConfigureFuncType } export default defineConfig({ @@ -249,19 +245,16 @@ export default defineConfig({ root: { label: '简体中文', lang: 'zh-CN', - link: '/', ...zhConfig, }, en: { label: 'English', lang: 'en-US', - link: '/en/', ...enConfig, }, ja: { label: '日本語', lang: 'ja-JP', - link: '/ja/', ...jaConfig, }, }, @@ -376,7 +369,7 @@ export default defineConfig({ // ignore all links include "/repl/"" /\/repl\//, // custom function, ignore all links include "ignore" - (url) => { + (url: string) => { return url.toLowerCase().includes('ignore') }, ], diff --git a/.vitepress/locales/en/index.ts b/.vitepress/locales/en/index.ts index a85f2ec6b..08d79e30a 100644 --- a/.vitepress/locales/en/index.ts +++ b/.vitepress/locales/en/index.ts @@ -1,25 +1,25 @@ +import type { DefaultTheme, LocaleSpecificConfig } from 'vitepress' import { baseHelper } from '../../theme/utils' -import type { DefaultTheme, LocaleSpecificConfig } from 'vitepress' import type { CustomConfig } from '../types' +import _404 from './404' +import AsideLinks from './aside-links' import C from './constants' +import DocsFeedback from './docs-feedback' +import Footer from './footer' import Head from './head' import Nav from './nav' +import Payment from './payment' import Sidebar from './sidebar' -import Footer from './footer' -import _404 from './404' -import UI from './ui' import SocialLinks from './social-links' -import AsideLinks from './aside-links' -import DocsFeedback from './docs-feedback' import Staff from './staff' import Team from './team' -import Payment from './payment' +import UI from './ui' export const enConfig: LocaleSpecificConfig< - DefaultTheme.Config & CustomConfig + CustomConfig & DefaultTheme.Config > = { titleTemplate: ':title | Kongying Tavern', description: C.META_DESCRIPTION, diff --git a/.vitepress/locales/ja/index.ts b/.vitepress/locales/ja/index.ts index 478cb67a5..684e16174 100644 --- a/.vitepress/locales/ja/index.ts +++ b/.vitepress/locales/ja/index.ts @@ -1,25 +1,25 @@ +import type { DefaultTheme, LocaleSpecificConfig } from 'vitepress' import { baseHelper } from '../../theme/utils' -import type { DefaultTheme, LocaleSpecificConfig } from 'vitepress' import type { CustomConfig } from '../types' +import _404 from './404' +import AsideLinks from './aside-links' import C from './constants' +import DocsFeedback from './docs-feedback' +import Footer from './footer' import Head from './head' import Nav from './nav' +import Payment from './payment' import Sidebar from './sidebar' -import Footer from './footer' -import _404 from './404' -import UI from './ui' import SocialLinks from './social-links' -import AsideLinks from './aside-links' -import DocsFeedback from './docs-feedback' import Staff from './staff' import Team from './team' -import Payment from './payment' +import UI from './ui' export const jaConfig: LocaleSpecificConfig< - DefaultTheme.Config & CustomConfig + CustomConfig & DefaultTheme.Config > = { titleTemplate: ':title | 空蛍酒場', description: C.META_DESCRIPTION, diff --git a/.vitepress/locales/zh/index.ts b/.vitepress/locales/zh/index.ts index 49167aabe..709cb80e3 100644 --- a/.vitepress/locales/zh/index.ts +++ b/.vitepress/locales/zh/index.ts @@ -1,25 +1,25 @@ +import type { DefaultTheme, LocaleSpecificConfig } from 'vitepress' import { baseHelper } from '../../theme/utils' -import type { DefaultTheme, LocaleSpecificConfig } from 'vitepress' import type { CustomConfig } from '../types' +import _404 from './404' +import AsideLinks from './aside-links' import C from './constants' +import DocsFeedback from './docs-feedback' +import Footer from './footer' import Head from './head' import Nav from './nav' +import Payment from './payment' import Sidebar from './sidebar' -import Footer from './footer' -import _404 from './404' -import UI from './ui' import SocialLinks from './social-links' -import AsideLinks from './aside-links' -import DocsFeedback from './docs-feedback' import Staff from './staff' import Team from './team' -import Payment from './payment' +import UI from './ui' export const zhConfig: LocaleSpecificConfig< - DefaultTheme.Config & CustomConfig + CustomConfig & DefaultTheme.Config > = { titleTemplate: ':title | 空荧酒馆', description: C.META_DESCRIPTION, diff --git a/.vitepress/shim.d.ts b/.vitepress/shim.d.ts index eacbcb7c5..881737329 100644 --- a/.vitepress/shim.d.ts +++ b/.vitepress/shim.d.ts @@ -9,18 +9,21 @@ declare const __VUE_PROD_DEVTOOLS__: boolean declare module '*.vue' { import type { DefineComponent } from 'vue' + const component: DefineComponent export default component } declare module '@siteData' { import type { SiteData } from 'vitepress' + const data: SiteData export default data } declare module '@theme/index' { import type { Theme } from 'vitepress' + const theme: Theme export default theme } diff --git a/.vitepress/theme/apis/getPageInfo.ts b/.vitepress/theme/apis/getPageInfo.ts index 789a42626..75921e03e 100644 --- a/.vitepress/theme/apis/getPageInfo.ts +++ b/.vitepress/theme/apis/getPageInfo.ts @@ -1,6 +1,6 @@ import { fetcher } from '.' -export type PageInfoResponse = { +export interface PageInfoResponse { code: number message?: string data: { @@ -16,7 +16,7 @@ export type PageInfoResponse = { export const getPageInfo = async (page): Promise => { // @ts-ignore if (import.meta.env.SSR) return null - return await fetcher + return fetcher .get('docs/pageinfo', { searchParams: { path: String(page.value.filePath).replace('.md', ''), diff --git a/.vitepress/theme/apis/index.ts b/.vitepress/theme/apis/index.ts index 005a9597d..951a593fd 100644 --- a/.vitepress/theme/apis/index.ts +++ b/.vitepress/theme/apis/index.ts @@ -1,7 +1,7 @@ -import ky from 'ky' -import sha256 from 'crypto-js/sha256' -import hmacSHA512 from 'crypto-js/hmac-sha512' import Base64 from 'crypto-js/enc-base64' +import hmacSHA512 from 'crypto-js/hmac-sha512' +import sha256 from 'crypto-js/sha256' +import ky from 'ky' const hmacDigest = (date) => // @ts-ignore diff --git a/.vitepress/theme/apis/newDocFeedback.ts b/.vitepress/theme/apis/newDocFeedback.ts index 18398aee4..059a85dd9 100644 --- a/.vitepress/theme/apis/newDocFeedback.ts +++ b/.vitepress/theme/apis/newDocFeedback.ts @@ -1,7 +1,7 @@ import { UAParser } from 'ua-parser-js' import { fetcher } from '.' -export type NewDocFeedbackResponse = { +export interface NewDocFeedbackResponse { code: number message?: string data?: { @@ -13,11 +13,11 @@ export type NewDocFeedbackResponse = { export const newDocFeedback = async (data: { path: string - feedback_type?: Array + feedback_type?: string[] feedback_content?: string user_id?: string nickname?: string - file?: Array + file?: string[] user_contact?: string }): Promise => { let env_data = { diff --git a/.vitepress/theme/apis/pageview.ts b/.vitepress/theme/apis/pageview.ts index f5e958828..994331f91 100644 --- a/.vitepress/theme/apis/pageview.ts +++ b/.vitepress/theme/apis/pageview.ts @@ -1,6 +1,6 @@ import { fetcher } from '.' -export type PageviewResponse = { +export interface PageviewResponse { code: number message?: string } @@ -8,7 +8,7 @@ export type PageviewResponse = { export const pageview = async (record_id): Promise => { // @ts-ignore if (import.meta.env.SSR) return null - return await fetcher + return fetcher .get('docs/pageview', { searchParams: { record_id, diff --git a/.vitepress/theme/apis/sendDocFeedback.ts b/.vitepress/theme/apis/sendDocFeedback.ts index da84dcd8e..de187e312 100644 --- a/.vitepress/theme/apis/sendDocFeedback.ts +++ b/.vitepress/theme/apis/sendDocFeedback.ts @@ -1,21 +1,21 @@ import { fetcher } from '.' -export type DocFeedbackResponse = { +export interface DocFeedbackResponse { code: number message?: string } export const sendDocFeedback = async ( record_id: string, - type: 'good' | 'bad', + type: 'bad' | 'good', cancel?: boolean, ): Promise => - await fetcher + fetcher .post('docs/feedback', { json: { - record_id: record_id, - type: type, - cancel: cancel, + record_id, + type, + cancel, }, }) .json() diff --git a/.vitepress/theme/components/Banner.vue b/.vitepress/theme/components/Banner.vue index f77898a75..caf53f7d7 100644 --- a/.vitepress/theme/components/Banner.vue +++ b/.vitepress/theme/components/Banner.vue @@ -1,9 +1,9 @@ + + diff --git a/.vitepress/theme/components/Coins.vue b/.vitepress/theme/components/Coins.vue index 5c547534c..a4855959a 100644 --- a/.vitepress/theme/components/Coins.vue +++ b/.vitepress/theme/components/Coins.vue @@ -1,3 +1,36 @@ + + - -