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:
-
- ${exportHTML(changedFiles)}
-
`
- } else if (changedFiles.length === 0 && newFiles.length !== 0) {
- result = `
- New pages include:
-
- ${exportHTML(newFiles)}
-
`
- } else {
- result = `
- Changed pages include:
-
- ${exportHTML(changedFiles)}
-
- New pages include:
-
- ${exportHTML(newFiles)}
-
- `
- }
- 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 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ title }}
+
+
+
+
+ {{ descText }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
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 @@
+
+