From 4a289f9c33507e52a8ab44e6a0fd7cafce6e773a Mon Sep 17 00:00:00 2001 From: Daniil Zhuravlev Date: Mon, 20 Oct 2025 18:23:46 +0400 Subject: [PATCH] refactor: move the loader cache to .vitepress/cache/loaders refactor: get releases simultaneously --- .gitignore | 3 --- .vitepress/theme/data/changelogs.data.ts | 5 ++++- .vitepress/theme/data/index.ts | 3 +++ .vitepress/theme/data/release.data.ts | 26 ++++++++++++++---------- 4 files changed, 22 insertions(+), 15 deletions(-) create mode 100644 .vitepress/theme/data/index.ts diff --git a/.gitignore b/.gitignore index c169bde2..b15e60b7 100644 --- a/.gitignore +++ b/.gitignore @@ -17,8 +17,5 @@ yarn-error.log* .zed/ .vscode/ -release.data.json -changelogs.data.json - yarn.lock pnpm-lock.yaml diff --git a/.vitepress/theme/data/changelogs.data.ts b/.vitepress/theme/data/changelogs.data.ts index bfb104ca..079f5367 100644 --- a/.vitepress/theme/data/changelogs.data.ts +++ b/.vitepress/theme/data/changelogs.data.ts @@ -2,10 +2,12 @@ import { defineLoader } from "vitepress"; import { Octokit } from "@octokit/rest"; import type { GetResponseDataTypeFromEndpointMethod } from "@octokit/types"; import fs from "node:fs"; +import { CACHE_DIR } from "."; +import { join } from "node:path"; const isDev = process.env.NODE_ENV === "development"; -const CACHE_PATH = "./changelogs.data.json"; +const CACHE_PATH = join(CACHE_DIR, "changelogs.data.json"); const octokit = new Octokit(); @@ -30,6 +32,7 @@ export default defineLoader({ if (isDev) { console.log("Creating changelogs cache"); + fs.mkdirSync(CACHE_DIR, { recursive: true }); fs.writeFileSync(CACHE_PATH, JSON.stringify(releases, null, 2), "utf-8"); } diff --git a/.vitepress/theme/data/index.ts b/.vitepress/theme/data/index.ts new file mode 100644 index 00000000..b97c49f4 --- /dev/null +++ b/.vitepress/theme/data/index.ts @@ -0,0 +1,3 @@ +import { join } from "node:path"; + +export const CACHE_DIR = join(process.cwd(), ".vitepress/cache/loaders"); diff --git a/.vitepress/theme/data/release.data.ts b/.vitepress/theme/data/release.data.ts index 63cc92dd..fdac2e0d 100644 --- a/.vitepress/theme/data/release.data.ts +++ b/.vitepress/theme/data/release.data.ts @@ -2,10 +2,12 @@ import { defineLoader } from "vitepress"; import { Octokit } from "@octokit/rest"; import type { GetResponseDataTypeFromEndpointMethod } from "@octokit/types"; import fs from "node:fs"; +import { CACHE_DIR } from "."; +import { join } from "node:path"; const isDev = process.env.NODE_ENV === "development"; -const CACHE_PATH = "./release.data.json"; +const CACHE_PATH = join(CACHE_DIR, "release.data.json"); const octokit = new Octokit(); @@ -27,20 +29,22 @@ export default defineLoader({ return cachedData; } - const { data: stable } = await octokit.repos.getLatestRelease({ - owner: "KotatsuApp", - repo: "Kotatsu", - }); + const [stable, nightly] = await Promise.all([ + octokit.repos.getLatestRelease({ + owner: "KotatsuApp", + repo: "Kotatsu", + }), + octokit.repos.getLatestRelease({ + owner: "KotatsuApp", + repo: "Kotatsu-nightly", + }), + ]); - const { data: nightly } = await octokit.repos.getLatestRelease({ - owner: "KotatsuApp", - repo: "Kotatsu-nightly", - }); - - const releaseData = { stable, nightly }; + const releaseData = { stable: stable.data, nightly: nightly.data }; if (isDev) { console.log("Creating release cache"); + fs.mkdirSync(CACHE_DIR, { recursive: true }); fs.writeFileSync(CACHE_PATH, JSON.stringify(releaseData, null, 2), "utf-8"); }