mirror of
https://github.com/fmhy/edit.git
synced 2025-07-29 23:32:17 +10:00
91 lines
2.5 KiB
TypeScript
91 lines
2.5 KiB
TypeScript
/**
|
|
* Copyright (c) taskylizard. All rights reserved.
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
import { fetcher } from 'itty-fetcher'
|
|
|
|
// Look inside tbe docs directory
|
|
const GITHUB_REPO = 'https://api.github.com/repos/fmhy/FMHYEdit/contents/docs/'
|
|
const EXCLUDE_FILES = [
|
|
'README.md',
|
|
'index.md',
|
|
'feedback.md',
|
|
'posts.md',
|
|
'sandbox.md'
|
|
]
|
|
const EXCLUDE_DIRECTORIES = ['posts/']
|
|
|
|
interface File {
|
|
name: string
|
|
path: string
|
|
sha: string
|
|
size: number
|
|
url: string
|
|
html_url: string
|
|
git_url: string
|
|
download_url: string | null
|
|
type: string
|
|
_links: {
|
|
self: string
|
|
git: string
|
|
html: string
|
|
}
|
|
}
|
|
|
|
export default defineEventHandler(async (event) => {
|
|
let body = '<!-- This is autogenerated content, do not edit manually. -->\n'
|
|
const f = fetcher({
|
|
headers: {
|
|
'User-Agent': 'taskylizard'
|
|
}
|
|
})
|
|
|
|
try {
|
|
// Fetch the list of files in the repository
|
|
const files = await f.get<File[]>(GITHUB_REPO)
|
|
|
|
// Filter out the excluded files and non-markdown files
|
|
const markdownFiles = files.filter((file: File) => {
|
|
const isExcludedFile = EXCLUDE_FILES.includes(file.name)
|
|
const isInExcludedDirectory = EXCLUDE_DIRECTORIES.some((dir) =>
|
|
file.path.startsWith(dir)
|
|
)
|
|
const isMarkdownFile = file.name.endsWith('.md')
|
|
|
|
return isMarkdownFile && !isExcludedFile && !isInExcludedDirectory
|
|
})
|
|
|
|
// console.info(markdownFiles.map((f) => f.name))
|
|
|
|
// Fetch and concatenate the contents of the markdown files
|
|
const contents = await Promise.all(
|
|
markdownFiles.map(async (file: File) => {
|
|
const content = await f.get<string>(file.download_url)
|
|
return content
|
|
})
|
|
)
|
|
|
|
body += contents.join('\n\n')
|
|
} catch (error) {
|
|
return {
|
|
status: 500,
|
|
body: `Error fetching markdown files: ${error.message}`
|
|
}
|
|
}
|
|
|
|
// biome-ignore lint/correctness/noUndeclaredVariables: <explanation>
|
|
appendResponseHeader(event, 'content-type', 'text/markdown;charset=utf-8')
|
|
return body
|
|
})
|