From e84e7ec4b47feab44b50d0cf9fdbec44141f8378 Mon Sep 17 00:00:00 2001 From: Clas Wen Date: Sat, 25 Jan 2025 21:51:29 +0800 Subject: [PATCH] add vue --- .vscode/settings.json | 6 ++++++ meetings/index.md | 2 +- meetings/sidebar.ts | 2 +- package.json | 3 ++- pnpm-lock.yaml | 3 +++ tsconfig.json | 15 +++++++++++++++ utils/sidebar.test.ts | 40 ++++++++++++++++++++++++++++++++++++++++ utils/sidebar.ts | 2 +- 8 files changed, 69 insertions(+), 4 deletions(-) create mode 100644 .vscode/settings.json create mode 100644 tsconfig.json create mode 100644 utils/sidebar.test.ts diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..c67966c --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,6 @@ +{ + "vue.server.includeLanguages": [ + "vue", + "markdown" + ] +} \ No newline at end of file diff --git a/meetings/index.md b/meetings/index.md index 3cacc0b..b2d525b 100644 --- a/meetings/index.md +++ b/meetings/index.md @@ -1 +1 @@ -12 \ No newline at end of file +index \ No newline at end of file diff --git a/meetings/sidebar.ts b/meetings/sidebar.ts index 8731adc..0618132 100644 --- a/meetings/sidebar.ts +++ b/meetings/sidebar.ts @@ -9,7 +9,7 @@ type MeetingMinutesParsed = { link: string } -const stripFileExtension = (filename: string) => { +export const stripFileExtension = (filename: string) => { return filename.split(".").slice(0, -1).join(".") } diff --git a/package.json b/package.json index cb94b97..8991c7c 100644 --- a/package.json +++ b/package.json @@ -18,6 +18,7 @@ }, "dependencies": { "@types/node": "^22.10.10", - "dayjs": "^1.11.13" + "dayjs": "^1.11.13", + "vue": "^3.5.13" } } \ No newline at end of file diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 120a55f..fe862e9 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -14,6 +14,9 @@ importers: dayjs: specifier: ^1.11.13 version: 1.11.13 + vue: + specifier: ^3.5.13 + version: 3.5.13 devDependencies: vitepress: specifier: ^1.6.3 diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..de62c5f --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,15 @@ +{ + "include": [ + "**/*.ts", + "**/*.vue", + "**/*.md", + ], + "compilerOptions": { + "esModuleInterop": true + }, + "vueCompilerOptions": { + "vitePressExtensions": [ + ".md" + ], + }, +} \ No newline at end of file diff --git a/utils/sidebar.test.ts b/utils/sidebar.test.ts new file mode 100644 index 0000000..318f628 --- /dev/null +++ b/utils/sidebar.test.ts @@ -0,0 +1,40 @@ +import { describe, expect, test, beforeAll, afterAll } from "vitest"; +import { scanDir } from "../utils/sidebar"; +import { resolve } from "path"; +import { mkdtempSync, writeFileSync, rmdirSync } from "fs"; +import { tmpdir } from "os"; +import { join } from "path"; + +let tempDir: string; + +beforeAll(() => { + tempDir = mkdtempSync(join(tmpdir(), 'test-')); + writeFileSync(join(tempDir, 'test1.md'), '# Test 1'); + writeFileSync(join(tempDir, 'test2.md'), '# Test 2'); + writeFileSync(join(tempDir, 'test.txt'), 'Test text file'); +}); + +afterAll(() => { + rmdirSync(tempDir, { recursive: true }); +}); + +describe("scanDir", () => { + test("should return markdown files with correct structure", () => { + const res = scanDir(tempDir); + expect(res).toBeInstanceOf(Array); + expect(res.length).toBe(2); + res.forEach(item => { + expect(item).toHaveProperty("filename"); + expect(item).toHaveProperty("link"); + expect(item.filename).toMatch(/\.md$/); + expect(item.link).toBe(resolve(tempDir, item.filename)); + }); + }); + + test("should return an empty array if no markdown files are found", () => { + const emptyDir = mkdtempSync(join(tmpdir(), 'empty-')); + const res = scanDir(emptyDir); + expect(res).toEqual([]); + rmdirSync(emptyDir, { recursive: true }); + }); +}); diff --git a/utils/sidebar.ts b/utils/sidebar.ts index 83331d0..118fbc2 100644 --- a/utils/sidebar.ts +++ b/utils/sidebar.ts @@ -10,7 +10,7 @@ export const scanDir = (dirname: string) => { return markdownFileNames.map(v => { return { filename: v, - link: path.join(dirpath, v) + link: path.join(dirname, v) } }) } \ No newline at end of file