forked from mxx1111/mdlook
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathupload-config.ts
More file actions
68 lines (54 loc) · 1.76 KB
/
Copy pathupload-config.ts
File metadata and controls
68 lines (54 loc) · 1.76 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
import type { Env } from './types'
export type UploadBackend = `github` | `r2` | `local`
export interface UploadGithubConfig {
username: string
repoList: string[]
branch: string
tokens: string[]
useCdn: boolean
}
export const UPLOAD_MAX_BYTES = 5 * 1024 * 1024
export const UPLOAD_RATE_LIMIT = {
anonymous: 60,
free: 120,
pro: 300,
} as const
export function isUploadEnabled(env: Env): boolean {
return env.UPLOAD_ENABLED === `true` || env.UPLOAD_ENABLED === `1`
}
export function getUploadBackend(env: Env): UploadBackend {
if (env.UPLOAD_BACKEND === `local`)
return `local`
return env.UPLOAD_BACKEND === `r2` ? `r2` : `github`
}
export function parseGithubUploadConfig(env: Env): UploadGithubConfig | null {
const tokensRaw = env.UPLOAD_GITHUB_TOKENS
if (!tokensRaw)
return null
const tokens = tokensRaw.split(`,`).map(s => s.trim()).filter(Boolean)
if (!tokens.length)
return null
const username = env.UPLOAD_GITHUB_USERNAME?.trim() || `doocsio`
const repoList = (env.UPLOAD_GITHUB_REPO_LIST ?? ``)
.split(`,`)
.map(s => s.trim())
.filter(Boolean)
if (!repoList.length) {
for (let i = 0; i < 20; i++)
repoList.push(`img${i}`)
}
const branch = env.UPLOAD_GITHUB_BRANCH?.trim() || `main`
const useCdn = env.UPLOAD_GITHUB_USE_CDN !== `false` && env.UPLOAD_GITHUB_USE_CDN !== `0`
return { username, repoList, branch, tokens, useCdn }
}
export function isR2UploadReady(env: Env): boolean {
return Boolean(env.UPLOAD_IMAGES && env.UPLOAD_R2_PUBLIC_URL?.trim())
}
export function isUploadBackendReady(env: Env): boolean {
const backend = getUploadBackend(env)
if (backend === `local`)
return true
if (backend === `r2`)
return isR2UploadReady(env)
return parseGithubUploadConfig(env) !== null
}