From d6b9979464cf1f78ee6f3c020fef9fb9f92ae1cb Mon Sep 17 00:00:00 2001
From: taskylizard <75871323+taskylizard@users.noreply.github.com>
Date: Sun, 12 Jan 2025 17:44:42 +0000
Subject: [PATCH] fix: properly index `
` sections
ref: https://github.com/wotakumoe/wotaku/pull/86
---
.gitattributes | 2 +-
.github/CONTRIBUTING.md | 2 +-
.github/ISSUE_TEMPLATE/config.yml | 1 -
.github/POST_TEMPLATE.md | 1 -
.github/PULL_REQUEST_TEMPLATE.md | 23 ------------
.github/labeler.yml | 9 -----
.github/workflows/labeler.yml | 17 ---------
docs/.vitepress/markdown/headers.ts | 55 ++++++++++++++++++++++------
package.json | 7 ++--
pnpm-lock.yaml | Bin 269476 -> 271955 bytes
10 files changed, 49 insertions(+), 68 deletions(-)
delete mode 100644 .github/ISSUE_TEMPLATE/config.yml
delete mode 100644 .github/PULL_REQUEST_TEMPLATE.md
delete mode 100644 .github/labeler.yml
delete mode 100644 .github/workflows/labeler.yml
diff --git a/.gitattributes b/.gitattributes
index d96586674..da3504671 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -198,7 +198,7 @@ TODO text
*.tmpl text
*.tpl text
*.twig text
-*.vue text
+*.vue text diff=vue
# Configs
*.cnf text
diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md
index 05d579345..cc38e3fd4 100644
--- a/.github/CONTRIBUTING.md
+++ b/.github/CONTRIBUTING.md
@@ -100,7 +100,7 @@ #### Manually
1. Fork the repository by clicking the "Fork" button in the top right corner.
-2. Make sure you have [Node.js](https://nodejs.org/en/), [pnpm](https://pnpm.io/), [git](https://git-scm.com/), and [VSCode](https://code.visualstudio.com/) or any other editor installed.
+2. Make sure you have [Node.js](https://nodejs.org/en/), [pnpm](https://pnpm.io/), [git](https://git-scm.com/), and [VSCode](https://code.visualstudio.com/) or any other editor installed. Alternatively, `pnpm` has `pnpm env` you can use to manage Node.
3. Clone your forked repository to your local machine.
diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml
deleted file mode 100644
index 8b1378917..000000000
--- a/.github/ISSUE_TEMPLATE/config.yml
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/.github/POST_TEMPLATE.md b/.github/POST_TEMPLATE.md
index 0f0715542..ca7f30eff 100644
--- a/.github/POST_TEMPLATE.md
+++ b/.github/POST_TEMPLATE.md
@@ -20,7 +20,6 @@ ### Post Template
description: Month 20YY updates
date: 20YY-MM-DD
next: false
-aside: left
prev: false
sidebar: false
footer: true
diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md
deleted file mode 100644
index 0d4cf89d4..000000000
--- a/.github/PULL_REQUEST_TEMPLATE.md
+++ /dev/null
@@ -1,23 +0,0 @@
-
-
-## Description
-
-
-## Context
-
-
-
-## Types of changes
-
-- [ ] Bad / Deleted sites removal
-- [ ] Grammar / Markdown fixes
-- [ ] Content addition (sites, projects, tools, etc.)
-- [ ] New Wiki section
-- [ ] Section Improvement
-
-## Checklist:
-
-
-- [ ] I have read the [contribution guide](https://fmhy.net/other/contributing).
-- [ ] I have made sure to [search](https://api.fmhy.net/single-page) before making any changes.
-- [ ] My code follows the code style of this project.
diff --git a/.github/labeler.yml b/.github/labeler.yml
deleted file mode 100644
index 17050009d..000000000
--- a/.github/labeler.yml
+++ /dev/null
@@ -1,9 +0,0 @@
-# See https://github.com/actions/labeler
-
-docs:
- - 'docs/**/*.md'
-
-core:
- - 'api/**'
- - '.github/**'
- - 'docs/.vitepress/**'
diff --git a/.github/workflows/labeler.yml b/.github/workflows/labeler.yml
deleted file mode 100644
index a8fae961a..000000000
--- a/.github/workflows/labeler.yml
+++ /dev/null
@@ -1,17 +0,0 @@
-name: 'Pull Request Housekeeping'
-
-on: [pull_request_target]
-
-jobs:
- triage:
- permissions:
- contents: read
- pull-requests: write
- runs-on: ubuntu-latest
- steps:
- - name: Checkout repository
- uses: actions/checkout@v3
- - name: Label PRs
- uses: actions/labeler@v4
- with:
- repo-token: ${{ secrets.GITHUB_TOKEN }}
diff --git a/docs/.vitepress/markdown/headers.ts b/docs/.vitepress/markdown/headers.ts
index af2984d08..5c36edb04 100644
--- a/docs/.vitepress/markdown/headers.ts
+++ b/docs/.vitepress/markdown/headers.ts
@@ -1,5 +1,5 @@
/**
- * Copyright (c) taskylizard. All rights reserved.
+ * Copyright (c) 2024 taskylizard
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -13,20 +13,53 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
import type { MarkdownRenderer } from 'vitepress'
-import { headers } from '../transformer/constants'
-const titles = Object.keys(headers).map((key) => headers[key].title)
+const excluded = ['Credits']
export const headersPlugin = (md: MarkdownRenderer) => {
- // Add the Feedback component after the heading and close the container
- md.renderer.rules.heading_close = (tokens, idx, options, env, self) => {
- const result = self.renderToken(tokens, idx, options)
- const heading = tokens[idx - 1]
- const level = tokens[idx].tag.slice(1)
- if (!titles.includes(env.frontmatter.title) || level !== '2') return result
+ // Add the Feedback component in the heading, before the link.
+ //
+ // Adding it after the link is closed prevents vitepress from properly
+ // indexing the file's content.
- return `${result}`
+ md.renderer.rules.heading_open = (tokens, idx, options, env, self) => {
+ const result = self.renderToken(tokens, idx, options)
+
+ const idxClose =
+ idx +
+ tokens.slice(idx).findIndex((token) => token.type === 'heading_close')
+ if (idxClose <= idx) return result
+
+ const level = tokens[idx].tag.slice(1)
+ if (excluded.includes(env.frontmatter.title) || level !== '2') return result
+
+ // Find the token for the link.
+ //
+ // The token after `heading_open` contains the link as a child token.
+ const children = tokens[idx + 1].children || []
+ const linkOpenToken = children.find((c) => c.type === 'link_open')
+ if (!linkOpenToken) return result
+
+ const heading = tokens[idxClose - 1]
+
+ linkOpenToken.meta = linkOpenToken.meta || {}
+ linkOpenToken.meta.feedback = {
+ heading: heading.content
+ }
+
+ return result
+ }
+
+ md.renderer.rules.link_open = (tokens, idx, options, env, self) => {
+ const result = self.renderToken(tokens, idx, options)
+
+ const meta = tokens[idx].meta
+ if (!meta || !meta.feedback) return result
+
+ const heading = meta.feedback.heading || ''
+ if (!heading) return result
+
+ return `${result}`
}
}
diff --git a/package.json b/package.json
index 7b17345ee..75843396c 100644
--- a/package.json
+++ b/package.json
@@ -16,7 +16,6 @@
"docs:dev": "vitepress dev docs/",
"docs:preview": "vitepress preview docs/",
"format": "prettier -w --cache --check .",
- "postinstall": "nitropack prepare",
"lint": "biome lint .",
"lint:fix": "biome lint . --write",
"lint:fix:unsafe": "biome lint . --write --unsafe",
@@ -33,15 +32,15 @@
"nitro-cors": "^0.7.1",
"nitropack": "^2.10.4",
"nprogress": "^0.2.0",
- "pathe": "^1.1.2",
- "unocss": "^0.63.4",
+ "pathe": "^2.0.1",
+ "unocss": "65.4.0",
"vitepress": "^1.5.0",
"vue": "^3.5.12",
"x-satori": "^0.2.0",
"zod": "^3.23.8"
},
"devDependencies": {
- "@biomejs/biome": "^1.9.3",
+ "@biomejs/biome": "^1.9.4",
"@cloudflare/workers-types": "^4.20241230.0",
"@ianvs/prettier-plugin-sort-imports": "^4.3.1",
"@iconify-json/carbon": "^1.2.3",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 55a8e9c41b349ee04921a1e89e9f801d053e7c70..e4705190b5efecf318750f5e2f1cf88dbc2396f9 100644
GIT binary patch
delta 7777
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
z