bot commited on
Commit ·
9f6f5a5
1
Parent(s): ff7f695
初始化
Browse files- .gitignore +23 -0
- Dockerfile +16 -0
- api/onedrive.go +107 -0
- api/setup.go +10 -0
- dist/assets/index-BdwxG1dv.js +0 -0
- dist/assets/index-Vqu8JWjZ.css +1 -0
- dist/index.html +17 -0
- dist/vite.svg +1 -0
- go.mod +37 -0
- go.sum +93 -0
- index.html +16 -0
- main.go +27 -0
- package.json +20 -0
- pnpm-lock.yaml +954 -0
- public/vite.svg +1 -0
- src/App.vue +22 -0
- src/assets/vue.svg +1 -0
- src/components/onedrive/Callback.vue +118 -0
- src/components/onedrive/Request.vue +105 -0
- src/components/onedrive/WebDav.vue +37 -0
- src/main.js +6 -0
- src/router/index.js +23 -0
- src/style.css +79 -0
- utils/utils.go +27 -0
- vite.config.js +7 -0
.gitignore
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Logs
|
| 2 |
+
logs
|
| 3 |
+
*.log
|
| 4 |
+
npm-debug.log*
|
| 5 |
+
yarn-debug.log*
|
| 6 |
+
yarn-error.log*
|
| 7 |
+
pnpm-debug.log*
|
| 8 |
+
lerna-debug.log*
|
| 9 |
+
|
| 10 |
+
node_modules
|
| 11 |
+
dist-ssr
|
| 12 |
+
*.local
|
| 13 |
+
|
| 14 |
+
# Editor directories and files
|
| 15 |
+
.vscode/*
|
| 16 |
+
!.vscode/extensions.json
|
| 17 |
+
.idea
|
| 18 |
+
.DS_Store
|
| 19 |
+
*.suo
|
| 20 |
+
*.ntvs*
|
| 21 |
+
*.njsproj
|
| 22 |
+
*.sln
|
| 23 |
+
*.sw?
|
Dockerfile
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# 使用官方 Golang 镜像作为构建阶段的基础镜像
|
| 2 |
+
FROM golang:1.24.1
|
| 3 |
+
|
| 4 |
+
# 设置工作目录
|
| 5 |
+
WORKDIR /app
|
| 6 |
+
|
| 7 |
+
# 将当前目录内容复制到容器的工作目录
|
| 8 |
+
COPY . .
|
| 9 |
+
|
| 10 |
+
# 下载并安装项目依赖
|
| 11 |
+
RUN go mod tidy
|
| 12 |
+
|
| 13 |
+
# 编译 Go 项目
|
| 14 |
+
RUN go run main.go
|
| 15 |
+
|
| 16 |
+
EXPOSE 8080
|
api/onedrive.go
ADDED
|
@@ -0,0 +1,107 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
package api
|
| 2 |
+
|
| 3 |
+
import (
|
| 4 |
+
"alist/utils"
|
| 5 |
+
"encoding/base64"
|
| 6 |
+
"net/url"
|
| 7 |
+
"strings"
|
| 8 |
+
|
| 9 |
+
"github.com/gin-gonic/gin"
|
| 10 |
+
)
|
| 11 |
+
|
| 12 |
+
type Zone struct {
|
| 13 |
+
Oauth string
|
| 14 |
+
Api string
|
| 15 |
+
}
|
| 16 |
+
|
| 17 |
+
var zones = map[string]Zone{
|
| 18 |
+
"global": {
|
| 19 |
+
Oauth: "https://login.microsoftonline.com",
|
| 20 |
+
Api: "https://graph.microsoft.com",
|
| 21 |
+
},
|
| 22 |
+
"cn": {
|
| 23 |
+
Oauth: "https://login.chinacloudapi.cn",
|
| 24 |
+
Api: "https://microsoftgraph.chinacloudapi.cn",
|
| 25 |
+
},
|
| 26 |
+
"us": {
|
| 27 |
+
Oauth: "https://login.microsoftonline.us",
|
| 28 |
+
Api: "https://graph.microsoft.us",
|
| 29 |
+
},
|
| 30 |
+
"de": {
|
| 31 |
+
Oauth: "https://login.microsoftonline.de",
|
| 32 |
+
Api: "https://graph.microsoft.de",
|
| 33 |
+
},
|
| 34 |
+
}
|
| 35 |
+
|
| 36 |
+
func onedriveToken(c *gin.Context) {
|
| 37 |
+
req := struct {
|
| 38 |
+
Code string `json:"code"`
|
| 39 |
+
Client string `json:"client"`
|
| 40 |
+
}{}
|
| 41 |
+
err := c.ShouldBind(&req)
|
| 42 |
+
if err != nil {
|
| 43 |
+
c.JSON(400, gin.H{"error": err.Error()})
|
| 44 |
+
return
|
| 45 |
+
}
|
| 46 |
+
data, err := base64.StdEncoding.DecodeString(req.Client)
|
| 47 |
+
if err != nil {
|
| 48 |
+
c.JSON(400, gin.H{"error": err.Error()})
|
| 49 |
+
return
|
| 50 |
+
}
|
| 51 |
+
clients := strings.Split(string(data), "::")
|
| 52 |
+
if len(clients) < 3 {
|
| 53 |
+
c.JSON(400, gin.H{"error": "client error"})
|
| 54 |
+
return
|
| 55 |
+
}
|
| 56 |
+
if zone, ok := zones[clients[2]]; ok {
|
| 57 |
+
res, err := utils.RestyClient.R().
|
| 58 |
+
SetFormData(map[string]string{
|
| 59 |
+
"client_id": clients[0],
|
| 60 |
+
"client_secret": clients[1],
|
| 61 |
+
"code": req.Code,
|
| 62 |
+
"grant_type": "authorization_code",
|
| 63 |
+
"redirect_uri": "https://alist.nn.ci/tool/onedrive/callback",
|
| 64 |
+
}).
|
| 65 |
+
Post(zone.Oauth + "/common/oauth2/v2.0/token")
|
| 66 |
+
if err != nil {
|
| 67 |
+
c.JSON(400, gin.H{"error": err.Error()})
|
| 68 |
+
return
|
| 69 |
+
}
|
| 70 |
+
c.Data(res.StatusCode(), "application/json", res.Body())
|
| 71 |
+
return
|
| 72 |
+
}
|
| 73 |
+
c.JSON(400, gin.H{"error": "zone doesn't exist"})
|
| 74 |
+
return
|
| 75 |
+
}
|
| 76 |
+
|
| 77 |
+
func spSiteID(c *gin.Context) {
|
| 78 |
+
req := struct {
|
| 79 |
+
AccessToken string `json:"access_token"`
|
| 80 |
+
SiteUrl string `json:"site_url"`
|
| 81 |
+
Zone string `json:"zone"`
|
| 82 |
+
}{}
|
| 83 |
+
err := c.ShouldBind(&req)
|
| 84 |
+
if err != nil {
|
| 85 |
+
c.JSON(400, gin.H{"error": err.Error()})
|
| 86 |
+
return
|
| 87 |
+
}
|
| 88 |
+
u, err := url.Parse(req.SiteUrl)
|
| 89 |
+
if err != nil {
|
| 90 |
+
c.JSON(400, gin.H{"error": err.Error()})
|
| 91 |
+
return
|
| 92 |
+
}
|
| 93 |
+
siteName := u.Path
|
| 94 |
+
if zone, ok := zones[req.Zone]; ok {
|
| 95 |
+
res, err := utils.RestyClient.R().
|
| 96 |
+
SetHeader("Authorization", "Bearer "+req.AccessToken).
|
| 97 |
+
Get(zone.Api + "/v1.0/sites/root:/" + siteName)
|
| 98 |
+
if err != nil {
|
| 99 |
+
c.JSON(400, gin.H{"error": err.Error()})
|
| 100 |
+
return
|
| 101 |
+
}
|
| 102 |
+
c.Data(res.StatusCode(), "application/json", res.Body())
|
| 103 |
+
return
|
| 104 |
+
}
|
| 105 |
+
c.JSON(400, gin.H{"error": "zone doesn't exist"})
|
| 106 |
+
return
|
| 107 |
+
}
|
api/setup.go
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
package api
|
| 2 |
+
|
| 3 |
+
import (
|
| 4 |
+
"github.com/gin-gonic/gin"
|
| 5 |
+
)
|
| 6 |
+
|
| 7 |
+
func Setup(g *gin.RouterGroup) {
|
| 8 |
+
g.POST("/onedrive/get_refresh_token", onedriveToken)
|
| 9 |
+
g.POST("/onedrive/get_site_id", spSiteID)
|
| 10 |
+
}
|
dist/assets/index-BdwxG1dv.js
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
dist/assets/index-Vqu8JWjZ.css
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
:root{font-family:system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;color-scheme:light dark;color:#ffffffde;background-color:#242424;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{font-weight:500;color:#646cff;text-decoration:inherit}a:hover{color:#535bf2}body{margin:0;display:flex;place-items:center;min-width:320px;min-height:100vh}h1{font-size:3.2em;line-height:1.1}button{border-radius:8px;border:1px solid transparent;padding:.6em 1.2em;font-size:1em;font-weight:500;font-family:inherit;background-color:#1a1a1a;cursor:pointer;transition:border-color .25s}button:hover{border-color:#646cff}button:focus,button:focus-visible{outline:4px auto -webkit-focus-ring-color}.card{padding:2em}#app{max-width:1280px;margin:0 auto;padding:2rem;text-align:center}@media (prefers-color-scheme: light){:root{color:#213547;background-color:#fff}a:hover{color:#747bff}button{background-color:#f9f9f9}}.logo[data-v-bc48f64b]{height:6em;padding:1.5em;will-change:filter;transition:filter .3s}.logo[data-v-bc48f64b]:hover{filter:drop-shadow(0 0 2em #646cffaa)}.logo.vue[data-v-bc48f64b]:hover{filter:drop-shadow(0 0 2em #42b883aa)}h4[data-v-fe6af522]{margin:0}p[data-v-b86336cf]{margin:0;font-size:large}
|
dist/index.html
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<!doctype html>
|
| 2 |
+
<html lang="en">
|
| 3 |
+
|
| 4 |
+
<head>
|
| 5 |
+
<meta charset="UTF-8" />
|
| 6 |
+
<link rel="icon" type="image/svg+xml" href="/vite.svg" />
|
| 7 |
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
| 8 |
+
<title>Alist Tool</title>
|
| 9 |
+
<script type="module" crossorigin src="/assets/index-BdwxG1dv.js"></script>
|
| 10 |
+
<link rel="stylesheet" crossorigin href="/assets/index-Vqu8JWjZ.css">
|
| 11 |
+
</head>
|
| 12 |
+
|
| 13 |
+
<body>
|
| 14 |
+
<div id="app"></div>
|
| 15 |
+
</body>
|
| 16 |
+
|
| 17 |
+
</html>
|
dist/vite.svg
ADDED
|
|
go.mod
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
module alist
|
| 2 |
+
|
| 3 |
+
go 1.23.3
|
| 4 |
+
|
| 5 |
+
require (
|
| 6 |
+
github.com/gin-gonic/gin v1.10.1
|
| 7 |
+
github.com/go-resty/resty/v2 v2.16.5
|
| 8 |
+
)
|
| 9 |
+
|
| 10 |
+
require (
|
| 11 |
+
github.com/bytedance/sonic v1.11.6 // indirect
|
| 12 |
+
github.com/bytedance/sonic/loader v0.1.1 // indirect
|
| 13 |
+
github.com/cloudwego/base64x v0.1.4 // indirect
|
| 14 |
+
github.com/cloudwego/iasm v0.2.0 // indirect
|
| 15 |
+
github.com/gabriel-vasile/mimetype v1.4.3 // indirect
|
| 16 |
+
github.com/gin-contrib/sse v0.1.0 // indirect
|
| 17 |
+
github.com/go-playground/locales v0.14.1 // indirect
|
| 18 |
+
github.com/go-playground/universal-translator v0.18.1 // indirect
|
| 19 |
+
github.com/go-playground/validator/v10 v10.20.0 // indirect
|
| 20 |
+
github.com/goccy/go-json v0.10.2 // indirect
|
| 21 |
+
github.com/json-iterator/go v1.1.12 // indirect
|
| 22 |
+
github.com/klauspost/cpuid/v2 v2.2.7 // indirect
|
| 23 |
+
github.com/leodido/go-urn v1.4.0 // indirect
|
| 24 |
+
github.com/mattn/go-isatty v0.0.20 // indirect
|
| 25 |
+
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
|
| 26 |
+
github.com/modern-go/reflect2 v1.0.2 // indirect
|
| 27 |
+
github.com/pelletier/go-toml/v2 v2.2.2 // indirect
|
| 28 |
+
github.com/twitchyliquid64/golang-asm v0.15.1 // indirect
|
| 29 |
+
github.com/ugorji/go/codec v1.2.12 // indirect
|
| 30 |
+
golang.org/x/arch v0.8.0 // indirect
|
| 31 |
+
golang.org/x/crypto v0.31.0 // indirect
|
| 32 |
+
golang.org/x/net v0.33.0 // indirect
|
| 33 |
+
golang.org/x/sys v0.28.0 // indirect
|
| 34 |
+
golang.org/x/text v0.21.0 // indirect
|
| 35 |
+
google.golang.org/protobuf v1.34.1 // indirect
|
| 36 |
+
gopkg.in/yaml.v3 v3.0.1 // indirect
|
| 37 |
+
)
|
go.sum
ADDED
|
@@ -0,0 +1,93 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
github.com/bytedance/sonic v1.11.6 h1:oUp34TzMlL+OY1OUWxHqsdkgC/Zfc85zGqw9siXjrc0=
|
| 2 |
+
github.com/bytedance/sonic v1.11.6/go.mod h1:LysEHSvpvDySVdC2f87zGWf6CIKJcAvqab1ZaiQtds4=
|
| 3 |
+
github.com/bytedance/sonic/loader v0.1.1 h1:c+e5Pt1k/cy5wMveRDyk2X4B9hF4g7an8N3zCYjJFNM=
|
| 4 |
+
github.com/bytedance/sonic/loader v0.1.1/go.mod h1:ncP89zfokxS5LZrJxl5z0UJcsk4M4yY2JpfqGeCtNLU=
|
| 5 |
+
github.com/cloudwego/base64x v0.1.4 h1:jwCgWpFanWmN8xoIUHa2rtzmkd5J2plF/dnLS6Xd/0Y=
|
| 6 |
+
github.com/cloudwego/base64x v0.1.4/go.mod h1:0zlkT4Wn5C6NdauXdJRhSKRlJvmclQ1hhJgA0rcu/8w=
|
| 7 |
+
github.com/cloudwego/iasm v0.2.0 h1:1KNIy1I1H9hNNFEEH3DVnI4UujN+1zjpuk6gwHLTssg=
|
| 8 |
+
github.com/cloudwego/iasm v0.2.0/go.mod h1:8rXZaNYT2n95jn+zTI1sDr+IgcD2GVs0nlbbQPiEFhY=
|
| 9 |
+
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
| 10 |
+
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
| 11 |
+
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
| 12 |
+
github.com/gabriel-vasile/mimetype v1.4.3 h1:in2uUcidCuFcDKtdcBxlR0rJ1+fsokWf+uqxgUFjbI0=
|
| 13 |
+
github.com/gabriel-vasile/mimetype v1.4.3/go.mod h1:d8uq/6HKRL6CGdk+aubisF/M5GcPfT7nKyLpA0lbSSk=
|
| 14 |
+
github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE=
|
| 15 |
+
github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI=
|
| 16 |
+
github.com/gin-gonic/gin v1.10.1 h1:T0ujvqyCSqRopADpgPgiTT63DUQVSfojyME59Ei63pQ=
|
| 17 |
+
github.com/gin-gonic/gin v1.10.1/go.mod h1:4PMNQiOhvDRa013RKVbsiNwoyezlm2rm0uX/T7kzp5Y=
|
| 18 |
+
github.com/go-playground/assert/v2 v2.2.0 h1:JvknZsQTYeFEAhQwI4qEt9cyV5ONwRHC+lYKSsYSR8s=
|
| 19 |
+
github.com/go-playground/assert/v2 v2.2.0/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4=
|
| 20 |
+
github.com/go-playground/locales v0.14.1 h1:EWaQ/wswjilfKLTECiXz7Rh+3BjFhfDFKv/oXslEjJA=
|
| 21 |
+
github.com/go-playground/locales v0.14.1/go.mod h1:hxrqLVvrK65+Rwrd5Fc6F2O76J/NuW9t0sjnWqG1slY=
|
| 22 |
+
github.com/go-playground/universal-translator v0.18.1 h1:Bcnm0ZwsGyWbCzImXv+pAJnYK9S473LQFuzCbDbfSFY=
|
| 23 |
+
github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91TpwSH2VMlDf28Uj24BCp08ZFTUY=
|
| 24 |
+
github.com/go-playground/validator/v10 v10.20.0 h1:K9ISHbSaI0lyB2eWMPJo+kOS/FBExVwjEviJTixqxL8=
|
| 25 |
+
github.com/go-playground/validator/v10 v10.20.0/go.mod h1:dbuPbCMFw/DrkbEynArYaCwl3amGuJotoKCe95atGMM=
|
| 26 |
+
github.com/go-resty/resty/v2 v2.16.5 h1:hBKqmWrr7uRc3euHVqmh1HTHcKn99Smr7o5spptdhTM=
|
| 27 |
+
github.com/go-resty/resty/v2 v2.16.5/go.mod h1:hkJtXbA2iKHzJheXYvQ8snQES5ZLGKMwQ07xAwp/fiA=
|
| 28 |
+
github.com/goccy/go-json v0.10.2 h1:CrxCmQqYDkv1z7lO7Wbh2HN93uovUHgrECaO5ZrCXAU=
|
| 29 |
+
github.com/goccy/go-json v0.10.2/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I=
|
| 30 |
+
github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU=
|
| 31 |
+
github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
| 32 |
+
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
|
| 33 |
+
github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM=
|
| 34 |
+
github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
|
| 35 |
+
github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg=
|
| 36 |
+
github.com/klauspost/cpuid/v2 v2.2.7 h1:ZWSB3igEs+d0qvnxR/ZBzXVmxkgt8DdzP6m9pfuVLDM=
|
| 37 |
+
github.com/klauspost/cpuid/v2 v2.2.7/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws=
|
| 38 |
+
github.com/knz/go-libedit v1.10.1/go.mod h1:MZTVkCWyz0oBc7JOWP3wNAzd002ZbM/5hgShxwh4x8M=
|
| 39 |
+
github.com/leodido/go-urn v1.4.0 h1:WT9HwE9SGECu3lg4d/dIA+jxlljEa1/ffXKmRjqdmIQ=
|
| 40 |
+
github.com/leodido/go-urn v1.4.0/go.mod h1:bvxc+MVxLKB4z00jd1z+Dvzr47oO32F/QSNjSBOlFxI=
|
| 41 |
+
github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
|
| 42 |
+
github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
|
| 43 |
+
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
|
| 44 |
+
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg=
|
| 45 |
+
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
|
| 46 |
+
github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M=
|
| 47 |
+
github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
|
| 48 |
+
github.com/pelletier/go-toml/v2 v2.2.2 h1:aYUidT7k73Pcl9nb2gScu7NSrKCSHIDE89b3+6Wq+LM=
|
| 49 |
+
github.com/pelletier/go-toml/v2 v2.2.2/go.mod h1:1t835xjRzz80PqgE6HHgN2JOsmgYu/h4qDAS4n929Rs=
|
| 50 |
+
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
| 51 |
+
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
| 52 |
+
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
| 53 |
+
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
|
| 54 |
+
github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
|
| 55 |
+
github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA=
|
| 56 |
+
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
|
| 57 |
+
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
| 58 |
+
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
| 59 |
+
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
|
| 60 |
+
github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
|
| 61 |
+
github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
|
| 62 |
+
github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg=
|
| 63 |
+
github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
|
| 64 |
+
github.com/twitchyliquid64/golang-asm v0.15.1 h1:SU5vSMR7hnwNxj24w34ZyCi/FmDZTkS4MhqMhdFk5YI=
|
| 65 |
+
github.com/twitchyliquid64/golang-asm v0.15.1/go.mod h1:a1lVb/DtPvCB8fslRZhAngC2+aY1QWCk3Cedj/Gdt08=
|
| 66 |
+
github.com/ugorji/go/codec v1.2.12 h1:9LC83zGrHhuUA9l16C9AHXAqEV/2wBQ4nkvumAE65EE=
|
| 67 |
+
github.com/ugorji/go/codec v1.2.12/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg=
|
| 68 |
+
golang.org/x/arch v0.0.0-20210923205945-b76863e36670/go.mod h1:5om86z9Hs0C8fWVUuoMHwpExlXzs5Tkyp9hOrfG7pp8=
|
| 69 |
+
golang.org/x/arch v0.8.0 h1:3wRIsP3pM4yUptoR96otTUOXI367OS0+c9eeRi9doIc=
|
| 70 |
+
golang.org/x/arch v0.8.0/go.mod h1:FEVrYAQjsQXMVJ1nsMoVVXPZg6p2JE2mx8psSWTDQys=
|
| 71 |
+
golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U=
|
| 72 |
+
golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk=
|
| 73 |
+
golang.org/x/net v0.33.0 h1:74SYHlV8BIgHIFC/LrYkOGIwL19eTYXQ5wc6TBuO36I=
|
| 74 |
+
golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4=
|
| 75 |
+
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
| 76 |
+
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
| 77 |
+
golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA=
|
| 78 |
+
golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
| 79 |
+
golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo=
|
| 80 |
+
golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ=
|
| 81 |
+
golang.org/x/time v0.6.0 h1:eTDhh4ZXt5Qf0augr54TN6suAUudPcawVZeIAPU7D4U=
|
| 82 |
+
golang.org/x/time v0.6.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM=
|
| 83 |
+
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4=
|
| 84 |
+
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
| 85 |
+
google.golang.org/protobuf v1.34.1 h1:9ddQBjfCyZPOHPUiPxpYESBLc+T8P3E+Vo4IbKZgFWg=
|
| 86 |
+
google.golang.org/protobuf v1.34.1/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos=
|
| 87 |
+
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
|
| 88 |
+
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
| 89 |
+
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
| 90 |
+
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
|
| 91 |
+
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
| 92 |
+
nullprogram.com/x/optparse v1.0.0/go.mod h1:KdyPE+Igbe0jQUrVfMqDMeJQIJZEuyV7pjYmp6pbG50=
|
| 93 |
+
rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4=
|
index.html
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<!doctype html>
|
| 2 |
+
<html lang="en">
|
| 3 |
+
|
| 4 |
+
<head>
|
| 5 |
+
<meta charset="UTF-8" />
|
| 6 |
+
<link rel="icon" type="image/svg+xml" href="/vite.svg" />
|
| 7 |
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
| 8 |
+
<title>Alist Tool</title>
|
| 9 |
+
</head>
|
| 10 |
+
|
| 11 |
+
<body>
|
| 12 |
+
<div id="app"></div>
|
| 13 |
+
<script type="module" src="/src/main.js"></script>
|
| 14 |
+
</body>
|
| 15 |
+
|
| 16 |
+
</html>
|
main.go
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
package main
|
| 2 |
+
|
| 3 |
+
import (
|
| 4 |
+
"alist/api"
|
| 5 |
+
|
| 6 |
+
"github.com/gin-gonic/gin"
|
| 7 |
+
)
|
| 8 |
+
|
| 9 |
+
func main() {
|
| 10 |
+
r := gin.Default()
|
| 11 |
+
|
| 12 |
+
// 提供静态资源(Vue 构建后的目录)
|
| 13 |
+
r.Static("/assets", "./dist/assets")
|
| 14 |
+
r.LoadHTMLFiles("./dist/index.html")
|
| 15 |
+
|
| 16 |
+
// 所有接口前缀为 /api
|
| 17 |
+
apiGroup := r.Group("/api")
|
| 18 |
+
api.Setup(apiGroup)
|
| 19 |
+
|
| 20 |
+
// 所有非 API 的路由都返回 index.html(用于前端路由)
|
| 21 |
+
r.NoRoute(func(c *gin.Context) {
|
| 22 |
+
c.HTML(200, "index.html", nil)
|
| 23 |
+
})
|
| 24 |
+
|
| 25 |
+
// 启动服务
|
| 26 |
+
r.Run(":8080") // 默认监听 8080 端口
|
| 27 |
+
}
|
package.json
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"name": "alist",
|
| 3 |
+
"private": true,
|
| 4 |
+
"version": "0.0.0",
|
| 5 |
+
"type": "module",
|
| 6 |
+
"scripts": {
|
| 7 |
+
"dev": "vite",
|
| 8 |
+
"build": "vite build",
|
| 9 |
+
"preview": "vite preview"
|
| 10 |
+
},
|
| 11 |
+
"dependencies": {
|
| 12 |
+
"naive-ui": "^2.41.1",
|
| 13 |
+
"vue": "^3.5.13",
|
| 14 |
+
"vue-router": "^4.5.1"
|
| 15 |
+
},
|
| 16 |
+
"devDependencies": {
|
| 17 |
+
"@vitejs/plugin-vue": "^5.2.3",
|
| 18 |
+
"vite": "^6.3.5"
|
| 19 |
+
}
|
| 20 |
+
}
|
pnpm-lock.yaml
ADDED
|
@@ -0,0 +1,954 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
lockfileVersion: '9.0'
|
| 2 |
+
|
| 3 |
+
settings:
|
| 4 |
+
autoInstallPeers: true
|
| 5 |
+
excludeLinksFromLockfile: false
|
| 6 |
+
|
| 7 |
+
importers:
|
| 8 |
+
|
| 9 |
+
.:
|
| 10 |
+
dependencies:
|
| 11 |
+
naive-ui:
|
| 12 |
+
specifier: ^2.41.1
|
| 13 |
+
version: 2.41.1(vue@3.5.16)
|
| 14 |
+
vue:
|
| 15 |
+
specifier: ^3.5.13
|
| 16 |
+
version: 3.5.16
|
| 17 |
+
vue-router:
|
| 18 |
+
specifier: ^4.5.1
|
| 19 |
+
version: 4.5.1(vue@3.5.16)
|
| 20 |
+
devDependencies:
|
| 21 |
+
'@vitejs/plugin-vue':
|
| 22 |
+
specifier: ^5.2.3
|
| 23 |
+
version: 5.2.4(vite@6.3.5)(vue@3.5.16)
|
| 24 |
+
vite:
|
| 25 |
+
specifier: ^6.3.5
|
| 26 |
+
version: 6.3.5
|
| 27 |
+
|
| 28 |
+
packages:
|
| 29 |
+
|
| 30 |
+
'@babel/helper-string-parser@7.27.1':
|
| 31 |
+
resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==}
|
| 32 |
+
engines: {node: '>=6.9.0'}
|
| 33 |
+
|
| 34 |
+
'@babel/helper-validator-identifier@7.27.1':
|
| 35 |
+
resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==}
|
| 36 |
+
engines: {node: '>=6.9.0'}
|
| 37 |
+
|
| 38 |
+
'@babel/parser@7.27.5':
|
| 39 |
+
resolution: {integrity: sha512-OsQd175SxWkGlzbny8J3K8TnnDD0N3lrIUtB92xwyRpzaenGZhxDvxN/JgU00U3CDZNj9tPuDJ5H0WS4Nt3vKg==}
|
| 40 |
+
engines: {node: '>=6.0.0'}
|
| 41 |
+
hasBin: true
|
| 42 |
+
|
| 43 |
+
'@babel/types@7.27.6':
|
| 44 |
+
resolution: {integrity: sha512-ETyHEk2VHHvl9b9jZP5IHPavHYk57EhanlRRuae9XCpb/j5bDCbPPMOBfCWhnl/7EDJz0jEMCi/RhccCE8r1+Q==}
|
| 45 |
+
engines: {node: '>=6.9.0'}
|
| 46 |
+
|
| 47 |
+
'@css-render/plugin-bem@0.15.14':
|
| 48 |
+
resolution: {integrity: sha512-QK513CJ7yEQxm/P3EwsI+d+ha8kSOcjGvD6SevM41neEMxdULE+18iuQK6tEChAWMOQNQPLG/Rw3Khb69r5neg==}
|
| 49 |
+
peerDependencies:
|
| 50 |
+
css-render: ~0.15.14
|
| 51 |
+
|
| 52 |
+
'@css-render/vue3-ssr@0.15.14':
|
| 53 |
+
resolution: {integrity: sha512-//8027GSbxE9n3QlD73xFY6z4ZbHbvrOVB7AO6hsmrEzGbg+h2A09HboUyDgu+xsmj7JnvJD39Irt+2D0+iV8g==}
|
| 54 |
+
peerDependencies:
|
| 55 |
+
vue: ^3.0.11
|
| 56 |
+
|
| 57 |
+
'@emotion/hash@0.8.0':
|
| 58 |
+
resolution: {integrity: sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==}
|
| 59 |
+
|
| 60 |
+
'@esbuild/aix-ppc64@0.25.5':
|
| 61 |
+
resolution: {integrity: sha512-9o3TMmpmftaCMepOdA5k/yDw8SfInyzWWTjYTFCX3kPSDJMROQTb8jg+h9Cnwnmm1vOzvxN7gIfB5V2ewpjtGA==}
|
| 62 |
+
engines: {node: '>=18'}
|
| 63 |
+
cpu: [ppc64]
|
| 64 |
+
os: [aix]
|
| 65 |
+
|
| 66 |
+
'@esbuild/android-arm64@0.25.5':
|
| 67 |
+
resolution: {integrity: sha512-VGzGhj4lJO+TVGV1v8ntCZWJktV7SGCs3Pn1GRWI1SBFtRALoomm8k5E9Pmwg3HOAal2VDc2F9+PM/rEY6oIDg==}
|
| 68 |
+
engines: {node: '>=18'}
|
| 69 |
+
cpu: [arm64]
|
| 70 |
+
os: [android]
|
| 71 |
+
|
| 72 |
+
'@esbuild/android-arm@0.25.5':
|
| 73 |
+
resolution: {integrity: sha512-AdJKSPeEHgi7/ZhuIPtcQKr5RQdo6OO2IL87JkianiMYMPbCtot9fxPbrMiBADOWWm3T2si9stAiVsGbTQFkbA==}
|
| 74 |
+
engines: {node: '>=18'}
|
| 75 |
+
cpu: [arm]
|
| 76 |
+
os: [android]
|
| 77 |
+
|
| 78 |
+
'@esbuild/android-x64@0.25.5':
|
| 79 |
+
resolution: {integrity: sha512-D2GyJT1kjvO//drbRT3Hib9XPwQeWd9vZoBJn+bu/lVsOZ13cqNdDeqIF/xQ5/VmWvMduP6AmXvylO/PIc2isw==}
|
| 80 |
+
engines: {node: '>=18'}
|
| 81 |
+
cpu: [x64]
|
| 82 |
+
os: [android]
|
| 83 |
+
|
| 84 |
+
'@esbuild/darwin-arm64@0.25.5':
|
| 85 |
+
resolution: {integrity: sha512-GtaBgammVvdF7aPIgH2jxMDdivezgFu6iKpmT+48+F8Hhg5J/sfnDieg0aeG/jfSvkYQU2/pceFPDKlqZzwnfQ==}
|
| 86 |
+
engines: {node: '>=18'}
|
| 87 |
+
cpu: [arm64]
|
| 88 |
+
os: [darwin]
|
| 89 |
+
|
| 90 |
+
'@esbuild/darwin-x64@0.25.5':
|
| 91 |
+
resolution: {integrity: sha512-1iT4FVL0dJ76/q1wd7XDsXrSW+oLoquptvh4CLR4kITDtqi2e/xwXwdCVH8hVHU43wgJdsq7Gxuzcs6Iq/7bxQ==}
|
| 92 |
+
engines: {node: '>=18'}
|
| 93 |
+
cpu: [x64]
|
| 94 |
+
os: [darwin]
|
| 95 |
+
|
| 96 |
+
'@esbuild/freebsd-arm64@0.25.5':
|
| 97 |
+
resolution: {integrity: sha512-nk4tGP3JThz4La38Uy/gzyXtpkPW8zSAmoUhK9xKKXdBCzKODMc2adkB2+8om9BDYugz+uGV7sLmpTYzvmz6Sw==}
|
| 98 |
+
engines: {node: '>=18'}
|
| 99 |
+
cpu: [arm64]
|
| 100 |
+
os: [freebsd]
|
| 101 |
+
|
| 102 |
+
'@esbuild/freebsd-x64@0.25.5':
|
| 103 |
+
resolution: {integrity: sha512-PrikaNjiXdR2laW6OIjlbeuCPrPaAl0IwPIaRv+SMV8CiM8i2LqVUHFC1+8eORgWyY7yhQY+2U2fA55mBzReaw==}
|
| 104 |
+
engines: {node: '>=18'}
|
| 105 |
+
cpu: [x64]
|
| 106 |
+
os: [freebsd]
|
| 107 |
+
|
| 108 |
+
'@esbuild/linux-arm64@0.25.5':
|
| 109 |
+
resolution: {integrity: sha512-Z9kfb1v6ZlGbWj8EJk9T6czVEjjq2ntSYLY2cw6pAZl4oKtfgQuS4HOq41M/BcoLPzrUbNd+R4BXFyH//nHxVg==}
|
| 110 |
+
engines: {node: '>=18'}
|
| 111 |
+
cpu: [arm64]
|
| 112 |
+
os: [linux]
|
| 113 |
+
|
| 114 |
+
'@esbuild/linux-arm@0.25.5':
|
| 115 |
+
resolution: {integrity: sha512-cPzojwW2okgh7ZlRpcBEtsX7WBuqbLrNXqLU89GxWbNt6uIg78ET82qifUy3W6OVww6ZWobWub5oqZOVtwolfw==}
|
| 116 |
+
engines: {node: '>=18'}
|
| 117 |
+
cpu: [arm]
|
| 118 |
+
os: [linux]
|
| 119 |
+
|
| 120 |
+
'@esbuild/linux-ia32@0.25.5':
|
| 121 |
+
resolution: {integrity: sha512-sQ7l00M8bSv36GLV95BVAdhJ2QsIbCuCjh/uYrWiMQSUuV+LpXwIqhgJDcvMTj+VsQmqAHL2yYaasENvJ7CDKA==}
|
| 122 |
+
engines: {node: '>=18'}
|
| 123 |
+
cpu: [ia32]
|
| 124 |
+
os: [linux]
|
| 125 |
+
|
| 126 |
+
'@esbuild/linux-loong64@0.25.5':
|
| 127 |
+
resolution: {integrity: sha512-0ur7ae16hDUC4OL5iEnDb0tZHDxYmuQyhKhsPBV8f99f6Z9KQM02g33f93rNH5A30agMS46u2HP6qTdEt6Q1kg==}
|
| 128 |
+
engines: {node: '>=18'}
|
| 129 |
+
cpu: [loong64]
|
| 130 |
+
os: [linux]
|
| 131 |
+
|
| 132 |
+
'@esbuild/linux-mips64el@0.25.5':
|
| 133 |
+
resolution: {integrity: sha512-kB/66P1OsHO5zLz0i6X0RxlQ+3cu0mkxS3TKFvkb5lin6uwZ/ttOkP3Z8lfR9mJOBk14ZwZ9182SIIWFGNmqmg==}
|
| 134 |
+
engines: {node: '>=18'}
|
| 135 |
+
cpu: [mips64el]
|
| 136 |
+
os: [linux]
|
| 137 |
+
|
| 138 |
+
'@esbuild/linux-ppc64@0.25.5':
|
| 139 |
+
resolution: {integrity: sha512-UZCmJ7r9X2fe2D6jBmkLBMQetXPXIsZjQJCjgwpVDz+YMcS6oFR27alkgGv3Oqkv07bxdvw7fyB71/olceJhkQ==}
|
| 140 |
+
engines: {node: '>=18'}
|
| 141 |
+
cpu: [ppc64]
|
| 142 |
+
os: [linux]
|
| 143 |
+
|
| 144 |
+
'@esbuild/linux-riscv64@0.25.5':
|
| 145 |
+
resolution: {integrity: sha512-kTxwu4mLyeOlsVIFPfQo+fQJAV9mh24xL+y+Bm6ej067sYANjyEw1dNHmvoqxJUCMnkBdKpvOn0Ahql6+4VyeA==}
|
| 146 |
+
engines: {node: '>=18'}
|
| 147 |
+
cpu: [riscv64]
|
| 148 |
+
os: [linux]
|
| 149 |
+
|
| 150 |
+
'@esbuild/linux-s390x@0.25.5':
|
| 151 |
+
resolution: {integrity: sha512-K2dSKTKfmdh78uJ3NcWFiqyRrimfdinS5ErLSn3vluHNeHVnBAFWC8a4X5N+7FgVE1EjXS1QDZbpqZBjfrqMTQ==}
|
| 152 |
+
engines: {node: '>=18'}
|
| 153 |
+
cpu: [s390x]
|
| 154 |
+
os: [linux]
|
| 155 |
+
|
| 156 |
+
'@esbuild/linux-x64@0.25.5':
|
| 157 |
+
resolution: {integrity: sha512-uhj8N2obKTE6pSZ+aMUbqq+1nXxNjZIIjCjGLfsWvVpy7gKCOL6rsY1MhRh9zLtUtAI7vpgLMK6DxjO8Qm9lJw==}
|
| 158 |
+
engines: {node: '>=18'}
|
| 159 |
+
cpu: [x64]
|
| 160 |
+
os: [linux]
|
| 161 |
+
|
| 162 |
+
'@esbuild/netbsd-arm64@0.25.5':
|
| 163 |
+
resolution: {integrity: sha512-pwHtMP9viAy1oHPvgxtOv+OkduK5ugofNTVDilIzBLpoWAM16r7b/mxBvfpuQDpRQFMfuVr5aLcn4yveGvBZvw==}
|
| 164 |
+
engines: {node: '>=18'}
|
| 165 |
+
cpu: [arm64]
|
| 166 |
+
os: [netbsd]
|
| 167 |
+
|
| 168 |
+
'@esbuild/netbsd-x64@0.25.5':
|
| 169 |
+
resolution: {integrity: sha512-WOb5fKrvVTRMfWFNCroYWWklbnXH0Q5rZppjq0vQIdlsQKuw6mdSihwSo4RV/YdQ5UCKKvBy7/0ZZYLBZKIbwQ==}
|
| 170 |
+
engines: {node: '>=18'}
|
| 171 |
+
cpu: [x64]
|
| 172 |
+
os: [netbsd]
|
| 173 |
+
|
| 174 |
+
'@esbuild/openbsd-arm64@0.25.5':
|
| 175 |
+
resolution: {integrity: sha512-7A208+uQKgTxHd0G0uqZO8UjK2R0DDb4fDmERtARjSHWxqMTye4Erz4zZafx7Di9Cv+lNHYuncAkiGFySoD+Mw==}
|
| 176 |
+
engines: {node: '>=18'}
|
| 177 |
+
cpu: [arm64]
|
| 178 |
+
os: [openbsd]
|
| 179 |
+
|
| 180 |
+
'@esbuild/openbsd-x64@0.25.5':
|
| 181 |
+
resolution: {integrity: sha512-G4hE405ErTWraiZ8UiSoesH8DaCsMm0Cay4fsFWOOUcz8b8rC6uCvnagr+gnioEjWn0wC+o1/TAHt+It+MpIMg==}
|
| 182 |
+
engines: {node: '>=18'}
|
| 183 |
+
cpu: [x64]
|
| 184 |
+
os: [openbsd]
|
| 185 |
+
|
| 186 |
+
'@esbuild/sunos-x64@0.25.5':
|
| 187 |
+
resolution: {integrity: sha512-l+azKShMy7FxzY0Rj4RCt5VD/q8mG/e+mDivgspo+yL8zW7qEwctQ6YqKX34DTEleFAvCIUviCFX1SDZRSyMQA==}
|
| 188 |
+
engines: {node: '>=18'}
|
| 189 |
+
cpu: [x64]
|
| 190 |
+
os: [sunos]
|
| 191 |
+
|
| 192 |
+
'@esbuild/win32-arm64@0.25.5':
|
| 193 |
+
resolution: {integrity: sha512-O2S7SNZzdcFG7eFKgvwUEZ2VG9D/sn/eIiz8XRZ1Q/DO5a3s76Xv0mdBzVM5j5R639lXQmPmSo0iRpHqUUrsxw==}
|
| 194 |
+
engines: {node: '>=18'}
|
| 195 |
+
cpu: [arm64]
|
| 196 |
+
os: [win32]
|
| 197 |
+
|
| 198 |
+
'@esbuild/win32-ia32@0.25.5':
|
| 199 |
+
resolution: {integrity: sha512-onOJ02pqs9h1iMJ1PQphR+VZv8qBMQ77Klcsqv9CNW2w6yLqoURLcgERAIurY6QE63bbLuqgP9ATqajFLK5AMQ==}
|
| 200 |
+
engines: {node: '>=18'}
|
| 201 |
+
cpu: [ia32]
|
| 202 |
+
os: [win32]
|
| 203 |
+
|
| 204 |
+
'@esbuild/win32-x64@0.25.5':
|
| 205 |
+
resolution: {integrity: sha512-TXv6YnJ8ZMVdX+SXWVBo/0p8LTcrUYngpWjvm91TMjjBQii7Oz11Lw5lbDV5Y0TzuhSJHwiH4hEtC1I42mMS0g==}
|
| 206 |
+
engines: {node: '>=18'}
|
| 207 |
+
cpu: [x64]
|
| 208 |
+
os: [win32]
|
| 209 |
+
|
| 210 |
+
'@jridgewell/sourcemap-codec@1.5.0':
|
| 211 |
+
resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==}
|
| 212 |
+
|
| 213 |
+
'@juggle/resize-observer@3.4.0':
|
| 214 |
+
resolution: {integrity: sha512-dfLbk+PwWvFzSxwk3n5ySL0hfBog779o8h68wK/7/APo/7cgyWp5jcXockbxdk5kFRkbeXWm4Fbi9FrdN381sA==}
|
| 215 |
+
|
| 216 |
+
'@rollup/rollup-android-arm-eabi@4.43.0':
|
| 217 |
+
resolution: {integrity: sha512-Krjy9awJl6rKbruhQDgivNbD1WuLb8xAclM4IR4cN5pHGAs2oIMMQJEiC3IC/9TZJ+QZkmZhlMO/6MBGxPidpw==}
|
| 218 |
+
cpu: [arm]
|
| 219 |
+
os: [android]
|
| 220 |
+
|
| 221 |
+
'@rollup/rollup-android-arm64@4.43.0':
|
| 222 |
+
resolution: {integrity: sha512-ss4YJwRt5I63454Rpj+mXCXicakdFmKnUNxr1dLK+5rv5FJgAxnN7s31a5VchRYxCFWdmnDWKd0wbAdTr0J5EA==}
|
| 223 |
+
cpu: [arm64]
|
| 224 |
+
os: [android]
|
| 225 |
+
|
| 226 |
+
'@rollup/rollup-darwin-arm64@4.43.0':
|
| 227 |
+
resolution: {integrity: sha512-eKoL8ykZ7zz8MjgBenEF2OoTNFAPFz1/lyJ5UmmFSz5jW+7XbH1+MAgCVHy72aG59rbuQLcJeiMrP8qP5d/N0A==}
|
| 228 |
+
cpu: [arm64]
|
| 229 |
+
os: [darwin]
|
| 230 |
+
|
| 231 |
+
'@rollup/rollup-darwin-x64@4.43.0':
|
| 232 |
+
resolution: {integrity: sha512-SYwXJgaBYW33Wi/q4ubN+ldWC4DzQY62S4Ll2dgfr/dbPoF50dlQwEaEHSKrQdSjC6oIe1WgzosoaNoHCdNuMg==}
|
| 233 |
+
cpu: [x64]
|
| 234 |
+
os: [darwin]
|
| 235 |
+
|
| 236 |
+
'@rollup/rollup-freebsd-arm64@4.43.0':
|
| 237 |
+
resolution: {integrity: sha512-SV+U5sSo0yujrjzBF7/YidieK2iF6E7MdF6EbYxNz94lA+R0wKl3SiixGyG/9Klab6uNBIqsN7j4Y/Fya7wAjQ==}
|
| 238 |
+
cpu: [arm64]
|
| 239 |
+
os: [freebsd]
|
| 240 |
+
|
| 241 |
+
'@rollup/rollup-freebsd-x64@4.43.0':
|
| 242 |
+
resolution: {integrity: sha512-J7uCsiV13L/VOeHJBo5SjasKiGxJ0g+nQTrBkAsmQBIdil3KhPnSE9GnRon4ejX1XDdsmK/l30IYLiAaQEO0Cg==}
|
| 243 |
+
cpu: [x64]
|
| 244 |
+
os: [freebsd]
|
| 245 |
+
|
| 246 |
+
'@rollup/rollup-linux-arm-gnueabihf@4.43.0':
|
| 247 |
+
resolution: {integrity: sha512-gTJ/JnnjCMc15uwB10TTATBEhK9meBIY+gXP4s0sHD1zHOaIh4Dmy1X9wup18IiY9tTNk5gJc4yx9ctj/fjrIw==}
|
| 248 |
+
cpu: [arm]
|
| 249 |
+
os: [linux]
|
| 250 |
+
|
| 251 |
+
'@rollup/rollup-linux-arm-musleabihf@4.43.0':
|
| 252 |
+
resolution: {integrity: sha512-ZJ3gZynL1LDSIvRfz0qXtTNs56n5DI2Mq+WACWZ7yGHFUEirHBRt7fyIk0NsCKhmRhn7WAcjgSkSVVxKlPNFFw==}
|
| 253 |
+
cpu: [arm]
|
| 254 |
+
os: [linux]
|
| 255 |
+
|
| 256 |
+
'@rollup/rollup-linux-arm64-gnu@4.43.0':
|
| 257 |
+
resolution: {integrity: sha512-8FnkipasmOOSSlfucGYEu58U8cxEdhziKjPD2FIa0ONVMxvl/hmONtX/7y4vGjdUhjcTHlKlDhw3H9t98fPvyA==}
|
| 258 |
+
cpu: [arm64]
|
| 259 |
+
os: [linux]
|
| 260 |
+
|
| 261 |
+
'@rollup/rollup-linux-arm64-musl@4.43.0':
|
| 262 |
+
resolution: {integrity: sha512-KPPyAdlcIZ6S9C3S2cndXDkV0Bb1OSMsX0Eelr2Bay4EsF9yi9u9uzc9RniK3mcUGCLhWY9oLr6er80P5DE6XA==}
|
| 263 |
+
cpu: [arm64]
|
| 264 |
+
os: [linux]
|
| 265 |
+
|
| 266 |
+
'@rollup/rollup-linux-loongarch64-gnu@4.43.0':
|
| 267 |
+
resolution: {integrity: sha512-HPGDIH0/ZzAZjvtlXj6g+KDQ9ZMHfSP553za7o2Odegb/BEfwJcR0Sw0RLNpQ9nC6Gy8s+3mSS9xjZ0n3rhcYg==}
|
| 268 |
+
cpu: [loong64]
|
| 269 |
+
os: [linux]
|
| 270 |
+
|
| 271 |
+
'@rollup/rollup-linux-powerpc64le-gnu@4.43.0':
|
| 272 |
+
resolution: {integrity: sha512-gEmwbOws4U4GLAJDhhtSPWPXUzDfMRedT3hFMyRAvM9Mrnj+dJIFIeL7otsv2WF3D7GrV0GIewW0y28dOYWkmw==}
|
| 273 |
+
cpu: [ppc64]
|
| 274 |
+
os: [linux]
|
| 275 |
+
|
| 276 |
+
'@rollup/rollup-linux-riscv64-gnu@4.43.0':
|
| 277 |
+
resolution: {integrity: sha512-XXKvo2e+wFtXZF/9xoWohHg+MuRnvO29TI5Hqe9xwN5uN8NKUYy7tXUG3EZAlfchufNCTHNGjEx7uN78KsBo0g==}
|
| 278 |
+
cpu: [riscv64]
|
| 279 |
+
os: [linux]
|
| 280 |
+
|
| 281 |
+
'@rollup/rollup-linux-riscv64-musl@4.43.0':
|
| 282 |
+
resolution: {integrity: sha512-ruf3hPWhjw6uDFsOAzmbNIvlXFXlBQ4nk57Sec8E8rUxs/AI4HD6xmiiasOOx/3QxS2f5eQMKTAwk7KHwpzr/Q==}
|
| 283 |
+
cpu: [riscv64]
|
| 284 |
+
os: [linux]
|
| 285 |
+
|
| 286 |
+
'@rollup/rollup-linux-s390x-gnu@4.43.0':
|
| 287 |
+
resolution: {integrity: sha512-QmNIAqDiEMEvFV15rsSnjoSmO0+eJLoKRD9EAa9rrYNwO/XRCtOGM3A5A0X+wmG+XRrw9Fxdsw+LnyYiZWWcVw==}
|
| 288 |
+
cpu: [s390x]
|
| 289 |
+
os: [linux]
|
| 290 |
+
|
| 291 |
+
'@rollup/rollup-linux-x64-gnu@4.43.0':
|
| 292 |
+
resolution: {integrity: sha512-jAHr/S0iiBtFyzjhOkAics/2SrXE092qyqEg96e90L3t9Op8OTzS6+IX0Fy5wCt2+KqeHAkti+eitV0wvblEoQ==}
|
| 293 |
+
cpu: [x64]
|
| 294 |
+
os: [linux]
|
| 295 |
+
|
| 296 |
+
'@rollup/rollup-linux-x64-musl@4.43.0':
|
| 297 |
+
resolution: {integrity: sha512-3yATWgdeXyuHtBhrLt98w+5fKurdqvs8B53LaoKD7P7H7FKOONLsBVMNl9ghPQZQuYcceV5CDyPfyfGpMWD9mQ==}
|
| 298 |
+
cpu: [x64]
|
| 299 |
+
os: [linux]
|
| 300 |
+
|
| 301 |
+
'@rollup/rollup-win32-arm64-msvc@4.43.0':
|
| 302 |
+
resolution: {integrity: sha512-wVzXp2qDSCOpcBCT5WRWLmpJRIzv23valvcTwMHEobkjippNf+C3ys/+wf07poPkeNix0paTNemB2XrHr2TnGw==}
|
| 303 |
+
cpu: [arm64]
|
| 304 |
+
os: [win32]
|
| 305 |
+
|
| 306 |
+
'@rollup/rollup-win32-ia32-msvc@4.43.0':
|
| 307 |
+
resolution: {integrity: sha512-fYCTEyzf8d+7diCw8b+asvWDCLMjsCEA8alvtAutqJOJp/wL5hs1rWSqJ1vkjgW0L2NB4bsYJrpKkiIPRR9dvw==}
|
| 308 |
+
cpu: [ia32]
|
| 309 |
+
os: [win32]
|
| 310 |
+
|
| 311 |
+
'@rollup/rollup-win32-x64-msvc@4.43.0':
|
| 312 |
+
resolution: {integrity: sha512-SnGhLiE5rlK0ofq8kzuDkM0g7FN1s5VYY+YSMTibP7CqShxCQvqtNxTARS4xX4PFJfHjG0ZQYX9iGzI3FQh5Aw==}
|
| 313 |
+
cpu: [x64]
|
| 314 |
+
os: [win32]
|
| 315 |
+
|
| 316 |
+
'@types/estree@1.0.7':
|
| 317 |
+
resolution: {integrity: sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==}
|
| 318 |
+
|
| 319 |
+
'@types/katex@0.16.7':
|
| 320 |
+
resolution: {integrity: sha512-HMwFiRujE5PjrgwHQ25+bsLJgowjGjm5Z8FVSf0N6PwgJrwxH0QxzHYDcKsTfV3wva0vzrpqMTJS2jXPr5BMEQ==}
|
| 321 |
+
|
| 322 |
+
'@types/lodash-es@4.17.12':
|
| 323 |
+
resolution: {integrity: sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==}
|
| 324 |
+
|
| 325 |
+
'@types/lodash@4.17.17':
|
| 326 |
+
resolution: {integrity: sha512-RRVJ+J3J+WmyOTqnz3PiBLA501eKwXl2noseKOrNo/6+XEHjTAxO4xHvxQB6QuNm+s4WRbn6rSiap8+EA+ykFQ==}
|
| 327 |
+
|
| 328 |
+
'@vitejs/plugin-vue@5.2.4':
|
| 329 |
+
resolution: {integrity: sha512-7Yx/SXSOcQq5HiiV3orevHUFn+pmMB4cgbEkDYgnkUWb0WfeQ/wa2yFv6D5ICiCQOVpjA7vYDXrC7AGO8yjDHA==}
|
| 330 |
+
engines: {node: ^18.0.0 || >=20.0.0}
|
| 331 |
+
peerDependencies:
|
| 332 |
+
vite: ^5.0.0 || ^6.0.0
|
| 333 |
+
vue: ^3.2.25
|
| 334 |
+
|
| 335 |
+
'@vue/compiler-core@3.5.16':
|
| 336 |
+
resolution: {integrity: sha512-AOQS2eaQOaaZQoL1u+2rCJIKDruNXVBZSiUD3chnUrsoX5ZTQMaCvXlWNIfxBJuU15r1o7+mpo5223KVtIhAgQ==}
|
| 337 |
+
|
| 338 |
+
'@vue/compiler-dom@3.5.16':
|
| 339 |
+
resolution: {integrity: sha512-SSJIhBr/teipXiXjmWOVWLnxjNGo65Oj/8wTEQz0nqwQeP75jWZ0n4sF24Zxoht1cuJoWopwj0J0exYwCJ0dCQ==}
|
| 340 |
+
|
| 341 |
+
'@vue/compiler-sfc@3.5.16':
|
| 342 |
+
resolution: {integrity: sha512-rQR6VSFNpiinDy/DVUE0vHoIDUF++6p910cgcZoaAUm3POxgNOOdS/xgoll3rNdKYTYPnnbARDCZOyZ+QSe6Pw==}
|
| 343 |
+
|
| 344 |
+
'@vue/compiler-ssr@3.5.16':
|
| 345 |
+
resolution: {integrity: sha512-d2V7kfxbdsjrDSGlJE7my1ZzCXViEcqN6w14DOsDrUCHEA6vbnVCpRFfrc4ryCP/lCKzX2eS1YtnLE/BuC9f/A==}
|
| 346 |
+
|
| 347 |
+
'@vue/devtools-api@6.6.4':
|
| 348 |
+
resolution: {integrity: sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==}
|
| 349 |
+
|
| 350 |
+
'@vue/reactivity@3.5.16':
|
| 351 |
+
resolution: {integrity: sha512-FG5Q5ee/kxhIm1p2bykPpPwqiUBV3kFySsHEQha5BJvjXdZTUfmya7wP7zC39dFuZAcf/PD5S4Lni55vGLMhvA==}
|
| 352 |
+
|
| 353 |
+
'@vue/runtime-core@3.5.16':
|
| 354 |
+
resolution: {integrity: sha512-bw5Ykq6+JFHYxrQa7Tjr+VSzw7Dj4ldR/udyBZbq73fCdJmyy5MPIFR9IX/M5Qs+TtTjuyUTCnmK3lWWwpAcFQ==}
|
| 355 |
+
|
| 356 |
+
'@vue/runtime-dom@3.5.16':
|
| 357 |
+
resolution: {integrity: sha512-T1qqYJsG2xMGhImRUV9y/RseB9d0eCYZQ4CWca9ztCuiPj/XWNNN+lkNBuzVbia5z4/cgxdL28NoQCvC0Xcfww==}
|
| 358 |
+
|
| 359 |
+
'@vue/server-renderer@3.5.16':
|
| 360 |
+
resolution: {integrity: sha512-BrX0qLiv/WugguGsnQUJiYOE0Fe5mZTwi6b7X/ybGB0vfrPH9z0gD/Y6WOR1sGCgX4gc25L1RYS5eYQKDMoNIg==}
|
| 361 |
+
peerDependencies:
|
| 362 |
+
vue: 3.5.16
|
| 363 |
+
|
| 364 |
+
'@vue/shared@3.5.16':
|
| 365 |
+
resolution: {integrity: sha512-c/0fWy3Jw6Z8L9FmTyYfkpM5zklnqqa9+a6dz3DvONRKW2NEbh46BP0FHuLFSWi2TnQEtp91Z6zOWNrU6QiyPg==}
|
| 366 |
+
|
| 367 |
+
async-validator@4.2.5:
|
| 368 |
+
resolution: {integrity: sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==}
|
| 369 |
+
|
| 370 |
+
css-render@0.15.14:
|
| 371 |
+
resolution: {integrity: sha512-9nF4PdUle+5ta4W5SyZdLCCmFd37uVimSjg1evcTqKJCyvCEEj12WKzOSBNak6r4im4J4iYXKH1OWpUV5LBYFg==}
|
| 372 |
+
|
| 373 |
+
csstype@3.0.11:
|
| 374 |
+
resolution: {integrity: sha512-sa6P2wJ+CAbgyy4KFssIb/JNMLxFvKF1pCYCSXS8ZMuqZnMsrxqI2E5sPyoTpxoPU/gVZMzr2zjOfg8GIZOMsw==}
|
| 375 |
+
|
| 376 |
+
csstype@3.1.3:
|
| 377 |
+
resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==}
|
| 378 |
+
|
| 379 |
+
date-fns-tz@3.2.0:
|
| 380 |
+
resolution: {integrity: sha512-sg8HqoTEulcbbbVXeg84u5UnlsQa8GS5QXMqjjYIhS4abEVVKIUwe0/l/UhrZdKaL/W5eWZNlbTeEIiOXTcsBQ==}
|
| 381 |
+
peerDependencies:
|
| 382 |
+
date-fns: ^3.0.0 || ^4.0.0
|
| 383 |
+
|
| 384 |
+
date-fns@3.6.0:
|
| 385 |
+
resolution: {integrity: sha512-fRHTG8g/Gif+kSh50gaGEdToemgfj74aRX3swtiouboip5JDLAyDE9F11nHMIcvOaXeOC6D7SpNhi7uFyB7Uww==}
|
| 386 |
+
|
| 387 |
+
entities@4.5.0:
|
| 388 |
+
resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==}
|
| 389 |
+
engines: {node: '>=0.12'}
|
| 390 |
+
|
| 391 |
+
esbuild@0.25.5:
|
| 392 |
+
resolution: {integrity: sha512-P8OtKZRv/5J5hhz0cUAdu/cLuPIKXpQl1R9pZtvmHWQvrAUVd0UNIPT4IB4W3rNOqVO0rlqHmCIbSwxh/c9yUQ==}
|
| 393 |
+
engines: {node: '>=18'}
|
| 394 |
+
hasBin: true
|
| 395 |
+
|
| 396 |
+
estree-walker@2.0.2:
|
| 397 |
+
resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==}
|
| 398 |
+
|
| 399 |
+
evtd@0.2.4:
|
| 400 |
+
resolution: {integrity: sha512-qaeGN5bx63s/AXgQo8gj6fBkxge+OoLddLniox5qtLAEY5HSnuSlISXVPxnSae1dWblvTh4/HoMIB+mbMsvZzw==}
|
| 401 |
+
|
| 402 |
+
fdir@6.4.6:
|
| 403 |
+
resolution: {integrity: sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w==}
|
| 404 |
+
peerDependencies:
|
| 405 |
+
picomatch: ^3 || ^4
|
| 406 |
+
peerDependenciesMeta:
|
| 407 |
+
picomatch:
|
| 408 |
+
optional: true
|
| 409 |
+
|
| 410 |
+
fsevents@2.3.3:
|
| 411 |
+
resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
|
| 412 |
+
engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
|
| 413 |
+
os: [darwin]
|
| 414 |
+
|
| 415 |
+
highlight.js@11.11.1:
|
| 416 |
+
resolution: {integrity: sha512-Xwwo44whKBVCYoliBQwaPvtd/2tYFkRQtXDWj1nackaV2JPXx3L0+Jvd8/qCJ2p+ML0/XVkJ2q+Mr+UVdpJK5w==}
|
| 417 |
+
engines: {node: '>=12.0.0'}
|
| 418 |
+
|
| 419 |
+
lodash-es@4.17.21:
|
| 420 |
+
resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==}
|
| 421 |
+
|
| 422 |
+
lodash@4.17.21:
|
| 423 |
+
resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==}
|
| 424 |
+
|
| 425 |
+
magic-string@0.30.17:
|
| 426 |
+
resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==}
|
| 427 |
+
|
| 428 |
+
naive-ui@2.41.1:
|
| 429 |
+
resolution: {integrity: sha512-TRv+GSCHnlbpiTJoz1xS1/l6Vn9/refjzJ6vFfXLuvBkSLB7ow6ERuLf2AQOqUrFSdM542EBJjoK1iM1S6X2lA==}
|
| 430 |
+
peerDependencies:
|
| 431 |
+
vue: ^3.0.0
|
| 432 |
+
|
| 433 |
+
nanoid@3.3.11:
|
| 434 |
+
resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==}
|
| 435 |
+
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
|
| 436 |
+
hasBin: true
|
| 437 |
+
|
| 438 |
+
picocolors@1.1.1:
|
| 439 |
+
resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
|
| 440 |
+
|
| 441 |
+
picomatch@4.0.2:
|
| 442 |
+
resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==}
|
| 443 |
+
engines: {node: '>=12'}
|
| 444 |
+
|
| 445 |
+
postcss@8.5.4:
|
| 446 |
+
resolution: {integrity: sha512-QSa9EBe+uwlGTFmHsPKokv3B/oEMQZxfqW0QqNCyhpa6mB1afzulwn8hihglqAb2pOw+BJgNlmXQ8la2VeHB7w==}
|
| 447 |
+
engines: {node: ^10 || ^12 || >=14}
|
| 448 |
+
|
| 449 |
+
rollup@4.43.0:
|
| 450 |
+
resolution: {integrity: sha512-wdN2Kd3Twh8MAEOEJZsuxuLKCsBEo4PVNLK6tQWAn10VhsVewQLzcucMgLolRlhFybGxfclbPeEYBaP6RvUFGg==}
|
| 451 |
+
engines: {node: '>=18.0.0', npm: '>=8.0.0'}
|
| 452 |
+
hasBin: true
|
| 453 |
+
|
| 454 |
+
seemly@0.3.10:
|
| 455 |
+
resolution: {integrity: sha512-2+SMxtG1PcsL0uyhkumlOU6Qo9TAQ/WyH7tthnPIOQB05/12jz9naq6GZ6iZ6ApVsO3rr2gsnTf3++OV63kE1Q==}
|
| 456 |
+
|
| 457 |
+
source-map-js@1.2.1:
|
| 458 |
+
resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
|
| 459 |
+
engines: {node: '>=0.10.0'}
|
| 460 |
+
|
| 461 |
+
tinyglobby@0.2.14:
|
| 462 |
+
resolution: {integrity: sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==}
|
| 463 |
+
engines: {node: '>=12.0.0'}
|
| 464 |
+
|
| 465 |
+
treemate@0.3.11:
|
| 466 |
+
resolution: {integrity: sha512-M8RGFoKtZ8dF+iwJfAJTOH/SM4KluKOKRJpjCMhI8bG3qB74zrFoArKZ62ll0Fr3mqkMJiQOmWYkdYgDeITYQg==}
|
| 467 |
+
|
| 468 |
+
vdirs@0.1.8:
|
| 469 |
+
resolution: {integrity: sha512-H9V1zGRLQZg9b+GdMk8MXDN2Lva0zx72MPahDKc30v+DtwKjfyOSXWRIX4t2mhDubM1H09gPhWeth/BJWPHGUw==}
|
| 470 |
+
peerDependencies:
|
| 471 |
+
vue: ^3.0.11
|
| 472 |
+
|
| 473 |
+
vite@6.3.5:
|
| 474 |
+
resolution: {integrity: sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ==}
|
| 475 |
+
engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0}
|
| 476 |
+
hasBin: true
|
| 477 |
+
peerDependencies:
|
| 478 |
+
'@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0
|
| 479 |
+
jiti: '>=1.21.0'
|
| 480 |
+
less: '*'
|
| 481 |
+
lightningcss: ^1.21.0
|
| 482 |
+
sass: '*'
|
| 483 |
+
sass-embedded: '*'
|
| 484 |
+
stylus: '*'
|
| 485 |
+
sugarss: '*'
|
| 486 |
+
terser: ^5.16.0
|
| 487 |
+
tsx: ^4.8.1
|
| 488 |
+
yaml: ^2.4.2
|
| 489 |
+
peerDependenciesMeta:
|
| 490 |
+
'@types/node':
|
| 491 |
+
optional: true
|
| 492 |
+
jiti:
|
| 493 |
+
optional: true
|
| 494 |
+
less:
|
| 495 |
+
optional: true
|
| 496 |
+
lightningcss:
|
| 497 |
+
optional: true
|
| 498 |
+
sass:
|
| 499 |
+
optional: true
|
| 500 |
+
sass-embedded:
|
| 501 |
+
optional: true
|
| 502 |
+
stylus:
|
| 503 |
+
optional: true
|
| 504 |
+
sugarss:
|
| 505 |
+
optional: true
|
| 506 |
+
terser:
|
| 507 |
+
optional: true
|
| 508 |
+
tsx:
|
| 509 |
+
optional: true
|
| 510 |
+
yaml:
|
| 511 |
+
optional: true
|
| 512 |
+
|
| 513 |
+
vooks@0.2.12:
|
| 514 |
+
resolution: {integrity: sha512-iox0I3RZzxtKlcgYaStQYKEzWWGAduMmq+jS7OrNdQo1FgGfPMubGL3uGHOU9n97NIvfFDBGnpSvkWyb/NSn/Q==}
|
| 515 |
+
peerDependencies:
|
| 516 |
+
vue: ^3.0.0
|
| 517 |
+
|
| 518 |
+
vue-router@4.5.1:
|
| 519 |
+
resolution: {integrity: sha512-ogAF3P97NPm8fJsE4by9dwSYtDwXIY1nFY9T6DyQnGHd1E2Da94w9JIolpe42LJGIl0DwOHBi8TcRPlPGwbTtw==}
|
| 520 |
+
peerDependencies:
|
| 521 |
+
vue: ^3.2.0
|
| 522 |
+
|
| 523 |
+
vue@3.5.16:
|
| 524 |
+
resolution: {integrity: sha512-rjOV2ecxMd5SiAmof2xzh2WxntRcigkX/He4YFJ6WdRvVUrbt6DxC1Iujh10XLl8xCDRDtGKMeO3D+pRQ1PP9w==}
|
| 525 |
+
peerDependencies:
|
| 526 |
+
typescript: '*'
|
| 527 |
+
peerDependenciesMeta:
|
| 528 |
+
typescript:
|
| 529 |
+
optional: true
|
| 530 |
+
|
| 531 |
+
vueuc@0.4.64:
|
| 532 |
+
resolution: {integrity: sha512-wlJQj7fIwKK2pOEoOq4Aro8JdPOGpX8aWQhV8YkTW9OgWD2uj2O8ANzvSsIGjx7LTOc7QbS7sXdxHi6XvRnHPA==}
|
| 533 |
+
peerDependencies:
|
| 534 |
+
vue: ^3.0.11
|
| 535 |
+
|
| 536 |
+
snapshots:
|
| 537 |
+
|
| 538 |
+
'@babel/helper-string-parser@7.27.1': {}
|
| 539 |
+
|
| 540 |
+
'@babel/helper-validator-identifier@7.27.1': {}
|
| 541 |
+
|
| 542 |
+
'@babel/parser@7.27.5':
|
| 543 |
+
dependencies:
|
| 544 |
+
'@babel/types': 7.27.6
|
| 545 |
+
|
| 546 |
+
'@babel/types@7.27.6':
|
| 547 |
+
dependencies:
|
| 548 |
+
'@babel/helper-string-parser': 7.27.1
|
| 549 |
+
'@babel/helper-validator-identifier': 7.27.1
|
| 550 |
+
|
| 551 |
+
'@css-render/plugin-bem@0.15.14(css-render@0.15.14)':
|
| 552 |
+
dependencies:
|
| 553 |
+
css-render: 0.15.14
|
| 554 |
+
|
| 555 |
+
'@css-render/vue3-ssr@0.15.14(vue@3.5.16)':
|
| 556 |
+
dependencies:
|
| 557 |
+
vue: 3.5.16
|
| 558 |
+
|
| 559 |
+
'@emotion/hash@0.8.0': {}
|
| 560 |
+
|
| 561 |
+
'@esbuild/aix-ppc64@0.25.5':
|
| 562 |
+
optional: true
|
| 563 |
+
|
| 564 |
+
'@esbuild/android-arm64@0.25.5':
|
| 565 |
+
optional: true
|
| 566 |
+
|
| 567 |
+
'@esbuild/android-arm@0.25.5':
|
| 568 |
+
optional: true
|
| 569 |
+
|
| 570 |
+
'@esbuild/android-x64@0.25.5':
|
| 571 |
+
optional: true
|
| 572 |
+
|
| 573 |
+
'@esbuild/darwin-arm64@0.25.5':
|
| 574 |
+
optional: true
|
| 575 |
+
|
| 576 |
+
'@esbuild/darwin-x64@0.25.5':
|
| 577 |
+
optional: true
|
| 578 |
+
|
| 579 |
+
'@esbuild/freebsd-arm64@0.25.5':
|
| 580 |
+
optional: true
|
| 581 |
+
|
| 582 |
+
'@esbuild/freebsd-x64@0.25.5':
|
| 583 |
+
optional: true
|
| 584 |
+
|
| 585 |
+
'@esbuild/linux-arm64@0.25.5':
|
| 586 |
+
optional: true
|
| 587 |
+
|
| 588 |
+
'@esbuild/linux-arm@0.25.5':
|
| 589 |
+
optional: true
|
| 590 |
+
|
| 591 |
+
'@esbuild/linux-ia32@0.25.5':
|
| 592 |
+
optional: true
|
| 593 |
+
|
| 594 |
+
'@esbuild/linux-loong64@0.25.5':
|
| 595 |
+
optional: true
|
| 596 |
+
|
| 597 |
+
'@esbuild/linux-mips64el@0.25.5':
|
| 598 |
+
optional: true
|
| 599 |
+
|
| 600 |
+
'@esbuild/linux-ppc64@0.25.5':
|
| 601 |
+
optional: true
|
| 602 |
+
|
| 603 |
+
'@esbuild/linux-riscv64@0.25.5':
|
| 604 |
+
optional: true
|
| 605 |
+
|
| 606 |
+
'@esbuild/linux-s390x@0.25.5':
|
| 607 |
+
optional: true
|
| 608 |
+
|
| 609 |
+
'@esbuild/linux-x64@0.25.5':
|
| 610 |
+
optional: true
|
| 611 |
+
|
| 612 |
+
'@esbuild/netbsd-arm64@0.25.5':
|
| 613 |
+
optional: true
|
| 614 |
+
|
| 615 |
+
'@esbuild/netbsd-x64@0.25.5':
|
| 616 |
+
optional: true
|
| 617 |
+
|
| 618 |
+
'@esbuild/openbsd-arm64@0.25.5':
|
| 619 |
+
optional: true
|
| 620 |
+
|
| 621 |
+
'@esbuild/openbsd-x64@0.25.5':
|
| 622 |
+
optional: true
|
| 623 |
+
|
| 624 |
+
'@esbuild/sunos-x64@0.25.5':
|
| 625 |
+
optional: true
|
| 626 |
+
|
| 627 |
+
'@esbuild/win32-arm64@0.25.5':
|
| 628 |
+
optional: true
|
| 629 |
+
|
| 630 |
+
'@esbuild/win32-ia32@0.25.5':
|
| 631 |
+
optional: true
|
| 632 |
+
|
| 633 |
+
'@esbuild/win32-x64@0.25.5':
|
| 634 |
+
optional: true
|
| 635 |
+
|
| 636 |
+
'@jridgewell/sourcemap-codec@1.5.0': {}
|
| 637 |
+
|
| 638 |
+
'@juggle/resize-observer@3.4.0': {}
|
| 639 |
+
|
| 640 |
+
'@rollup/rollup-android-arm-eabi@4.43.0':
|
| 641 |
+
optional: true
|
| 642 |
+
|
| 643 |
+
'@rollup/rollup-android-arm64@4.43.0':
|
| 644 |
+
optional: true
|
| 645 |
+
|
| 646 |
+
'@rollup/rollup-darwin-arm64@4.43.0':
|
| 647 |
+
optional: true
|
| 648 |
+
|
| 649 |
+
'@rollup/rollup-darwin-x64@4.43.0':
|
| 650 |
+
optional: true
|
| 651 |
+
|
| 652 |
+
'@rollup/rollup-freebsd-arm64@4.43.0':
|
| 653 |
+
optional: true
|
| 654 |
+
|
| 655 |
+
'@rollup/rollup-freebsd-x64@4.43.0':
|
| 656 |
+
optional: true
|
| 657 |
+
|
| 658 |
+
'@rollup/rollup-linux-arm-gnueabihf@4.43.0':
|
| 659 |
+
optional: true
|
| 660 |
+
|
| 661 |
+
'@rollup/rollup-linux-arm-musleabihf@4.43.0':
|
| 662 |
+
optional: true
|
| 663 |
+
|
| 664 |
+
'@rollup/rollup-linux-arm64-gnu@4.43.0':
|
| 665 |
+
optional: true
|
| 666 |
+
|
| 667 |
+
'@rollup/rollup-linux-arm64-musl@4.43.0':
|
| 668 |
+
optional: true
|
| 669 |
+
|
| 670 |
+
'@rollup/rollup-linux-loongarch64-gnu@4.43.0':
|
| 671 |
+
optional: true
|
| 672 |
+
|
| 673 |
+
'@rollup/rollup-linux-powerpc64le-gnu@4.43.0':
|
| 674 |
+
optional: true
|
| 675 |
+
|
| 676 |
+
'@rollup/rollup-linux-riscv64-gnu@4.43.0':
|
| 677 |
+
optional: true
|
| 678 |
+
|
| 679 |
+
'@rollup/rollup-linux-riscv64-musl@4.43.0':
|
| 680 |
+
optional: true
|
| 681 |
+
|
| 682 |
+
'@rollup/rollup-linux-s390x-gnu@4.43.0':
|
| 683 |
+
optional: true
|
| 684 |
+
|
| 685 |
+
'@rollup/rollup-linux-x64-gnu@4.43.0':
|
| 686 |
+
optional: true
|
| 687 |
+
|
| 688 |
+
'@rollup/rollup-linux-x64-musl@4.43.0':
|
| 689 |
+
optional: true
|
| 690 |
+
|
| 691 |
+
'@rollup/rollup-win32-arm64-msvc@4.43.0':
|
| 692 |
+
optional: true
|
| 693 |
+
|
| 694 |
+
'@rollup/rollup-win32-ia32-msvc@4.43.0':
|
| 695 |
+
optional: true
|
| 696 |
+
|
| 697 |
+
'@rollup/rollup-win32-x64-msvc@4.43.0':
|
| 698 |
+
optional: true
|
| 699 |
+
|
| 700 |
+
'@types/estree@1.0.7': {}
|
| 701 |
+
|
| 702 |
+
'@types/katex@0.16.7': {}
|
| 703 |
+
|
| 704 |
+
'@types/lodash-es@4.17.12':
|
| 705 |
+
dependencies:
|
| 706 |
+
'@types/lodash': 4.17.17
|
| 707 |
+
|
| 708 |
+
'@types/lodash@4.17.17': {}
|
| 709 |
+
|
| 710 |
+
'@vitejs/plugin-vue@5.2.4(vite@6.3.5)(vue@3.5.16)':
|
| 711 |
+
dependencies:
|
| 712 |
+
vite: 6.3.5
|
| 713 |
+
vue: 3.5.16
|
| 714 |
+
|
| 715 |
+
'@vue/compiler-core@3.5.16':
|
| 716 |
+
dependencies:
|
| 717 |
+
'@babel/parser': 7.27.5
|
| 718 |
+
'@vue/shared': 3.5.16
|
| 719 |
+
entities: 4.5.0
|
| 720 |
+
estree-walker: 2.0.2
|
| 721 |
+
source-map-js: 1.2.1
|
| 722 |
+
|
| 723 |
+
'@vue/compiler-dom@3.5.16':
|
| 724 |
+
dependencies:
|
| 725 |
+
'@vue/compiler-core': 3.5.16
|
| 726 |
+
'@vue/shared': 3.5.16
|
| 727 |
+
|
| 728 |
+
'@vue/compiler-sfc@3.5.16':
|
| 729 |
+
dependencies:
|
| 730 |
+
'@babel/parser': 7.27.5
|
| 731 |
+
'@vue/compiler-core': 3.5.16
|
| 732 |
+
'@vue/compiler-dom': 3.5.16
|
| 733 |
+
'@vue/compiler-ssr': 3.5.16
|
| 734 |
+
'@vue/shared': 3.5.16
|
| 735 |
+
estree-walker: 2.0.2
|
| 736 |
+
magic-string: 0.30.17
|
| 737 |
+
postcss: 8.5.4
|
| 738 |
+
source-map-js: 1.2.1
|
| 739 |
+
|
| 740 |
+
'@vue/compiler-ssr@3.5.16':
|
| 741 |
+
dependencies:
|
| 742 |
+
'@vue/compiler-dom': 3.5.16
|
| 743 |
+
'@vue/shared': 3.5.16
|
| 744 |
+
|
| 745 |
+
'@vue/devtools-api@6.6.4': {}
|
| 746 |
+
|
| 747 |
+
'@vue/reactivity@3.5.16':
|
| 748 |
+
dependencies:
|
| 749 |
+
'@vue/shared': 3.5.16
|
| 750 |
+
|
| 751 |
+
'@vue/runtime-core@3.5.16':
|
| 752 |
+
dependencies:
|
| 753 |
+
'@vue/reactivity': 3.5.16
|
| 754 |
+
'@vue/shared': 3.5.16
|
| 755 |
+
|
| 756 |
+
'@vue/runtime-dom@3.5.16':
|
| 757 |
+
dependencies:
|
| 758 |
+
'@vue/reactivity': 3.5.16
|
| 759 |
+
'@vue/runtime-core': 3.5.16
|
| 760 |
+
'@vue/shared': 3.5.16
|
| 761 |
+
csstype: 3.1.3
|
| 762 |
+
|
| 763 |
+
'@vue/server-renderer@3.5.16(vue@3.5.16)':
|
| 764 |
+
dependencies:
|
| 765 |
+
'@vue/compiler-ssr': 3.5.16
|
| 766 |
+
'@vue/shared': 3.5.16
|
| 767 |
+
vue: 3.5.16
|
| 768 |
+
|
| 769 |
+
'@vue/shared@3.5.16': {}
|
| 770 |
+
|
| 771 |
+
async-validator@4.2.5: {}
|
| 772 |
+
|
| 773 |
+
css-render@0.15.14:
|
| 774 |
+
dependencies:
|
| 775 |
+
'@emotion/hash': 0.8.0
|
| 776 |
+
csstype: 3.0.11
|
| 777 |
+
|
| 778 |
+
csstype@3.0.11: {}
|
| 779 |
+
|
| 780 |
+
csstype@3.1.3: {}
|
| 781 |
+
|
| 782 |
+
date-fns-tz@3.2.0(date-fns@3.6.0):
|
| 783 |
+
dependencies:
|
| 784 |
+
date-fns: 3.6.0
|
| 785 |
+
|
| 786 |
+
date-fns@3.6.0: {}
|
| 787 |
+
|
| 788 |
+
entities@4.5.0: {}
|
| 789 |
+
|
| 790 |
+
esbuild@0.25.5:
|
| 791 |
+
optionalDependencies:
|
| 792 |
+
'@esbuild/aix-ppc64': 0.25.5
|
| 793 |
+
'@esbuild/android-arm': 0.25.5
|
| 794 |
+
'@esbuild/android-arm64': 0.25.5
|
| 795 |
+
'@esbuild/android-x64': 0.25.5
|
| 796 |
+
'@esbuild/darwin-arm64': 0.25.5
|
| 797 |
+
'@esbuild/darwin-x64': 0.25.5
|
| 798 |
+
'@esbuild/freebsd-arm64': 0.25.5
|
| 799 |
+
'@esbuild/freebsd-x64': 0.25.5
|
| 800 |
+
'@esbuild/linux-arm': 0.25.5
|
| 801 |
+
'@esbuild/linux-arm64': 0.25.5
|
| 802 |
+
'@esbuild/linux-ia32': 0.25.5
|
| 803 |
+
'@esbuild/linux-loong64': 0.25.5
|
| 804 |
+
'@esbuild/linux-mips64el': 0.25.5
|
| 805 |
+
'@esbuild/linux-ppc64': 0.25.5
|
| 806 |
+
'@esbuild/linux-riscv64': 0.25.5
|
| 807 |
+
'@esbuild/linux-s390x': 0.25.5
|
| 808 |
+
'@esbuild/linux-x64': 0.25.5
|
| 809 |
+
'@esbuild/netbsd-arm64': 0.25.5
|
| 810 |
+
'@esbuild/netbsd-x64': 0.25.5
|
| 811 |
+
'@esbuild/openbsd-arm64': 0.25.5
|
| 812 |
+
'@esbuild/openbsd-x64': 0.25.5
|
| 813 |
+
'@esbuild/sunos-x64': 0.25.5
|
| 814 |
+
'@esbuild/win32-arm64': 0.25.5
|
| 815 |
+
'@esbuild/win32-ia32': 0.25.5
|
| 816 |
+
'@esbuild/win32-x64': 0.25.5
|
| 817 |
+
|
| 818 |
+
estree-walker@2.0.2: {}
|
| 819 |
+
|
| 820 |
+
evtd@0.2.4: {}
|
| 821 |
+
|
| 822 |
+
fdir@6.4.6(picomatch@4.0.2):
|
| 823 |
+
optionalDependencies:
|
| 824 |
+
picomatch: 4.0.2
|
| 825 |
+
|
| 826 |
+
fsevents@2.3.3:
|
| 827 |
+
optional: true
|
| 828 |
+
|
| 829 |
+
highlight.js@11.11.1: {}
|
| 830 |
+
|
| 831 |
+
lodash-es@4.17.21: {}
|
| 832 |
+
|
| 833 |
+
lodash@4.17.21: {}
|
| 834 |
+
|
| 835 |
+
magic-string@0.30.17:
|
| 836 |
+
dependencies:
|
| 837 |
+
'@jridgewell/sourcemap-codec': 1.5.0
|
| 838 |
+
|
| 839 |
+
naive-ui@2.41.1(vue@3.5.16):
|
| 840 |
+
dependencies:
|
| 841 |
+
'@css-render/plugin-bem': 0.15.14(css-render@0.15.14)
|
| 842 |
+
'@css-render/vue3-ssr': 0.15.14(vue@3.5.16)
|
| 843 |
+
'@types/katex': 0.16.7
|
| 844 |
+
'@types/lodash': 4.17.17
|
| 845 |
+
'@types/lodash-es': 4.17.12
|
| 846 |
+
async-validator: 4.2.5
|
| 847 |
+
css-render: 0.15.14
|
| 848 |
+
csstype: 3.1.3
|
| 849 |
+
date-fns: 3.6.0
|
| 850 |
+
date-fns-tz: 3.2.0(date-fns@3.6.0)
|
| 851 |
+
evtd: 0.2.4
|
| 852 |
+
highlight.js: 11.11.1
|
| 853 |
+
lodash: 4.17.21
|
| 854 |
+
lodash-es: 4.17.21
|
| 855 |
+
seemly: 0.3.10
|
| 856 |
+
treemate: 0.3.11
|
| 857 |
+
vdirs: 0.1.8(vue@3.5.16)
|
| 858 |
+
vooks: 0.2.12(vue@3.5.16)
|
| 859 |
+
vue: 3.5.16
|
| 860 |
+
vueuc: 0.4.64(vue@3.5.16)
|
| 861 |
+
|
| 862 |
+
nanoid@3.3.11: {}
|
| 863 |
+
|
| 864 |
+
picocolors@1.1.1: {}
|
| 865 |
+
|
| 866 |
+
picomatch@4.0.2: {}
|
| 867 |
+
|
| 868 |
+
postcss@8.5.4:
|
| 869 |
+
dependencies:
|
| 870 |
+
nanoid: 3.3.11
|
| 871 |
+
picocolors: 1.1.1
|
| 872 |
+
source-map-js: 1.2.1
|
| 873 |
+
|
| 874 |
+
rollup@4.43.0:
|
| 875 |
+
dependencies:
|
| 876 |
+
'@types/estree': 1.0.7
|
| 877 |
+
optionalDependencies:
|
| 878 |
+
'@rollup/rollup-android-arm-eabi': 4.43.0
|
| 879 |
+
'@rollup/rollup-android-arm64': 4.43.0
|
| 880 |
+
'@rollup/rollup-darwin-arm64': 4.43.0
|
| 881 |
+
'@rollup/rollup-darwin-x64': 4.43.0
|
| 882 |
+
'@rollup/rollup-freebsd-arm64': 4.43.0
|
| 883 |
+
'@rollup/rollup-freebsd-x64': 4.43.0
|
| 884 |
+
'@rollup/rollup-linux-arm-gnueabihf': 4.43.0
|
| 885 |
+
'@rollup/rollup-linux-arm-musleabihf': 4.43.0
|
| 886 |
+
'@rollup/rollup-linux-arm64-gnu': 4.43.0
|
| 887 |
+
'@rollup/rollup-linux-arm64-musl': 4.43.0
|
| 888 |
+
'@rollup/rollup-linux-loongarch64-gnu': 4.43.0
|
| 889 |
+
'@rollup/rollup-linux-powerpc64le-gnu': 4.43.0
|
| 890 |
+
'@rollup/rollup-linux-riscv64-gnu': 4.43.0
|
| 891 |
+
'@rollup/rollup-linux-riscv64-musl': 4.43.0
|
| 892 |
+
'@rollup/rollup-linux-s390x-gnu': 4.43.0
|
| 893 |
+
'@rollup/rollup-linux-x64-gnu': 4.43.0
|
| 894 |
+
'@rollup/rollup-linux-x64-musl': 4.43.0
|
| 895 |
+
'@rollup/rollup-win32-arm64-msvc': 4.43.0
|
| 896 |
+
'@rollup/rollup-win32-ia32-msvc': 4.43.0
|
| 897 |
+
'@rollup/rollup-win32-x64-msvc': 4.43.0
|
| 898 |
+
fsevents: 2.3.3
|
| 899 |
+
|
| 900 |
+
seemly@0.3.10: {}
|
| 901 |
+
|
| 902 |
+
source-map-js@1.2.1: {}
|
| 903 |
+
|
| 904 |
+
tinyglobby@0.2.14:
|
| 905 |
+
dependencies:
|
| 906 |
+
fdir: 6.4.6(picomatch@4.0.2)
|
| 907 |
+
picomatch: 4.0.2
|
| 908 |
+
|
| 909 |
+
treemate@0.3.11: {}
|
| 910 |
+
|
| 911 |
+
vdirs@0.1.8(vue@3.5.16):
|
| 912 |
+
dependencies:
|
| 913 |
+
evtd: 0.2.4
|
| 914 |
+
vue: 3.5.16
|
| 915 |
+
|
| 916 |
+
vite@6.3.5:
|
| 917 |
+
dependencies:
|
| 918 |
+
esbuild: 0.25.5
|
| 919 |
+
fdir: 6.4.6(picomatch@4.0.2)
|
| 920 |
+
picomatch: 4.0.2
|
| 921 |
+
postcss: 8.5.4
|
| 922 |
+
rollup: 4.43.0
|
| 923 |
+
tinyglobby: 0.2.14
|
| 924 |
+
optionalDependencies:
|
| 925 |
+
fsevents: 2.3.3
|
| 926 |
+
|
| 927 |
+
vooks@0.2.12(vue@3.5.16):
|
| 928 |
+
dependencies:
|
| 929 |
+
evtd: 0.2.4
|
| 930 |
+
vue: 3.5.16
|
| 931 |
+
|
| 932 |
+
vue-router@4.5.1(vue@3.5.16):
|
| 933 |
+
dependencies:
|
| 934 |
+
'@vue/devtools-api': 6.6.4
|
| 935 |
+
vue: 3.5.16
|
| 936 |
+
|
| 937 |
+
vue@3.5.16:
|
| 938 |
+
dependencies:
|
| 939 |
+
'@vue/compiler-dom': 3.5.16
|
| 940 |
+
'@vue/compiler-sfc': 3.5.16
|
| 941 |
+
'@vue/runtime-dom': 3.5.16
|
| 942 |
+
'@vue/server-renderer': 3.5.16(vue@3.5.16)
|
| 943 |
+
'@vue/shared': 3.5.16
|
| 944 |
+
|
| 945 |
+
vueuc@0.4.64(vue@3.5.16):
|
| 946 |
+
dependencies:
|
| 947 |
+
'@css-render/vue3-ssr': 0.15.14(vue@3.5.16)
|
| 948 |
+
'@juggle/resize-observer': 3.4.0
|
| 949 |
+
css-render: 0.15.14
|
| 950 |
+
evtd: 0.2.4
|
| 951 |
+
seemly: 0.3.10
|
| 952 |
+
vdirs: 0.1.8(vue@3.5.16)
|
| 953 |
+
vooks: 0.2.12(vue@3.5.16)
|
| 954 |
+
vue: 3.5.16
|
public/vite.svg
ADDED
|
|
src/App.vue
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<script setup>
|
| 2 |
+
|
| 3 |
+
</script>
|
| 4 |
+
|
| 5 |
+
<template>
|
| 6 |
+
<router-view />
|
| 7 |
+
</template>
|
| 8 |
+
|
| 9 |
+
<style scoped>
|
| 10 |
+
.logo {
|
| 11 |
+
height: 6em;
|
| 12 |
+
padding: 1.5em;
|
| 13 |
+
will-change: filter;
|
| 14 |
+
transition: filter 300ms;
|
| 15 |
+
}
|
| 16 |
+
.logo:hover {
|
| 17 |
+
filter: drop-shadow(0 0 2em #646cffaa);
|
| 18 |
+
}
|
| 19 |
+
.logo.vue:hover {
|
| 20 |
+
filter: drop-shadow(0 0 2em #42b883aa);
|
| 21 |
+
}
|
| 22 |
+
</style>
|
src/assets/vue.svg
ADDED
|
|
src/components/onedrive/Callback.vue
ADDED
|
@@ -0,0 +1,118 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<script lang="ts" setup>
|
| 2 |
+
import { NAlert, NButton, NInput, NSpace, NSpin } from 'naive-ui';
|
| 3 |
+
import { reactive } from 'vue';
|
| 4 |
+
|
| 5 |
+
const url = new URL(window.location.href);
|
| 6 |
+
const code = url.searchParams.get("code");
|
| 7 |
+
const client = url.searchParams.get("state");
|
| 8 |
+
const error = url.searchParams.get("error");
|
| 9 |
+
const error_description = url.searchParams.get("error_description");
|
| 10 |
+
|
| 11 |
+
const data = reactive({
|
| 12 |
+
refreshToken: "",
|
| 13 |
+
accessToken: "",
|
| 14 |
+
error1: "",
|
| 15 |
+
errorMessage1: "",
|
| 16 |
+
siteUrl: "",
|
| 17 |
+
siteId: "",
|
| 18 |
+
error2: "",
|
| 19 |
+
errorMessage2: "",
|
| 20 |
+
gettingSiteId: false,
|
| 21 |
+
})
|
| 22 |
+
|
| 23 |
+
const getToken = () => {
|
| 24 |
+
fetch(`/api/onedrive/get_refresh_token`, {
|
| 25 |
+
method: "POST",
|
| 26 |
+
headers: {
|
| 27 |
+
"Content-Type": "application/json",
|
| 28 |
+
},
|
| 29 |
+
body: JSON.stringify({
|
| 30 |
+
code,
|
| 31 |
+
client,
|
| 32 |
+
}),
|
| 33 |
+
})
|
| 34 |
+
.then((resp) => resp.json())
|
| 35 |
+
.then((res) => {
|
| 36 |
+
console.log(res);
|
| 37 |
+
if (res.error) {
|
| 38 |
+
data.error1 = res.error;
|
| 39 |
+
data.errorMessage1 = res.error_description;
|
| 40 |
+
return;
|
| 41 |
+
}
|
| 42 |
+
data.refreshToken = res.refresh_token;
|
| 43 |
+
data.accessToken = res.access_token;
|
| 44 |
+
});
|
| 45 |
+
}
|
| 46 |
+
|
| 47 |
+
if (code && client && !error) {
|
| 48 |
+
getToken()
|
| 49 |
+
}
|
| 50 |
+
const [client_id, client_secret, zone,redirect_uri] = atob(client as string).split("::");
|
| 51 |
+
|
| 52 |
+
const getSiteId = () => {
|
| 53 |
+
data.gettingSiteId = true;
|
| 54 |
+
fetch(`/api/onedrive/get_site_id`, {
|
| 55 |
+
method: "POST",
|
| 56 |
+
headers: {
|
| 57 |
+
"Content-Type": "application/json",
|
| 58 |
+
},
|
| 59 |
+
body: JSON.stringify({
|
| 60 |
+
site_url: data.siteUrl,
|
| 61 |
+
access_token: data.accessToken,
|
| 62 |
+
zone,
|
| 63 |
+
}),
|
| 64 |
+
})
|
| 65 |
+
.then((resp) => {
|
| 66 |
+
data.gettingSiteId = false;
|
| 67 |
+
return resp.json()
|
| 68 |
+
})
|
| 69 |
+
.then((res) => {
|
| 70 |
+
if (res.error) {
|
| 71 |
+
data.error2 = res.error;
|
| 72 |
+
data.errorMessage2 = res.error.message;
|
| 73 |
+
return;
|
| 74 |
+
}
|
| 75 |
+
data.siteId = res.id;
|
| 76 |
+
});
|
| 77 |
+
}
|
| 78 |
+
|
| 79 |
+
|
| 80 |
+
</script>
|
| 81 |
+
|
| 82 |
+
<template>
|
| 83 |
+
<NAlert :title="error || 'Error'" type="error" v-if="!code || !client || error">
|
| 84 |
+
{{ error_description }}
|
| 85 |
+
</NAlert>
|
| 86 |
+
<NSpace v-else vertical size="large">
|
| 87 |
+
<p><b>client_id: </b>{{ client_id }}</p>
|
| 88 |
+
<p><b>client_secret: </b>{{ client_secret }}</p>
|
| 89 |
+
<p><b>zone: </b>{{ zone }}</p>
|
| 90 |
+
<p><b>redirect_uri: </b>{{ redirect_uri }}</p>
|
| 91 |
+
<NAlert :title="data.error1" type="error" v-if="data.error1 || data.errorMessage1">
|
| 92 |
+
{{ data.errorMessage1 }}
|
| 93 |
+
</NAlert>
|
| 94 |
+
<NSpace vertical>
|
| 95 |
+
<b>refresh_token:</b>
|
| 96 |
+
<NSpin v-if="!data.refreshToken && !data.errorMessage1" />
|
| 97 |
+
<NInput v-else type="textarea" autosize readonly :value="data.refreshToken" />
|
| 98 |
+
</NSpace>
|
| 99 |
+
<NSpace vertical size="large" v-if="data.accessToken">
|
| 100 |
+
<h3>Get sharepoint site ID</h3>
|
| 101 |
+
<NAlert :title="data.error2" type="error" v-if="data.error2 || data.errorMessage2">
|
| 102 |
+
{{ data.errorMessage2 }}
|
| 103 |
+
</NAlert>
|
| 104 |
+
<NInput placeholder="input site url (https://xx.sharepoint.xx/sites/xx)" size="large"
|
| 105 |
+
v-model:value="data.siteUrl" />
|
| 106 |
+
<NButton type="primary" size="large" @click="getSiteId">Get SiteID</NButton>
|
| 107 |
+
<NSpin v-if="data.gettingSiteId" />
|
| 108 |
+
<p v-else-if="data.siteId"><b>site_id: </b>{{ data.siteId }}</p>
|
| 109 |
+
</NSpace>
|
| 110 |
+
</NSpace>
|
| 111 |
+
</template>
|
| 112 |
+
|
| 113 |
+
<style scoped>
|
| 114 |
+
p {
|
| 115 |
+
margin: 0;
|
| 116 |
+
font-size: large;
|
| 117 |
+
}
|
| 118 |
+
</style>
|
src/components/onedrive/Request.vue
ADDED
|
@@ -0,0 +1,105 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<script lang="ts" setup>
|
| 2 |
+
import { NInput, NSelect, NButton, NSpace } from 'naive-ui'
|
| 3 |
+
import { reactive, watch } from 'vue';
|
| 4 |
+
|
| 5 |
+
const zones = {
|
| 6 |
+
global: [
|
| 7 |
+
"https://login.microsoftonline.com", //请求code与请求access_token
|
| 8 |
+
"https://graph.microsoft.com", //获取站点ID
|
| 9 |
+
"https://portal.azure.com", //管理后台 创建应用
|
| 10 |
+
"Global",
|
| 11 |
+
"https://www.office.com/", //创建Sharepoint
|
| 12 |
+
"0a2991a3-1674-4334-8561-671cc7349960", // client_id
|
| 13 |
+
"uw67Q~TCMqdJyH35hlcHHclv~mhNOGx.jfPFm", // client_secret
|
| 14 |
+
],
|
| 15 |
+
cn: [
|
| 16 |
+
"https://login.chinacloudapi.cn",
|
| 17 |
+
"https://microsoftgraph.chinacloudapi.cn",
|
| 18 |
+
"https://portal.azure.cn",
|
| 19 |
+
"21vianet(世纪互联)",
|
| 20 |
+
"https://portal.partner.microsoftonline.cn/Home",
|
| 21 |
+
"50ff485b-3bdc-4bd5-92a1-75b178187673",
|
| 22 |
+
"6v426lmVYKGM.bkuFu24-EqJAr_~~5_HKL",
|
| 23 |
+
],
|
| 24 |
+
de: [
|
| 25 |
+
"https://login.microsoftonline.de",
|
| 26 |
+
"https://graph.microsoft.de",
|
| 27 |
+
"https://portal.microsoftazure.de",
|
| 28 |
+
"Azure Germany",
|
| 29 |
+
],
|
| 30 |
+
us: [
|
| 31 |
+
"https://login.microsoftonline.us",
|
| 32 |
+
"https://graph.microsoft.us",
|
| 33 |
+
"https://portal.azure.us",
|
| 34 |
+
"Azure US GOV",
|
| 35 |
+
],
|
| 36 |
+
};
|
| 37 |
+
const data = reactive({
|
| 38 |
+
zone: "global",
|
| 39 |
+
client_id: "",
|
| 40 |
+
client_secret: "",
|
| 41 |
+
redirect_uri: ""
|
| 42 |
+
})
|
| 43 |
+
|
| 44 |
+
data.client_id = zones[data.zone][5]
|
| 45 |
+
data.client_secret = zones[data.zone][6]
|
| 46 |
+
|
| 47 |
+
watch(() => data.zone, (val) => {
|
| 48 |
+
data.client_id = zones[val][5] || ""
|
| 49 |
+
data.client_secret = zones[val][6] || ""
|
| 50 |
+
data.redirect_uri = ""
|
| 51 |
+
})
|
| 52 |
+
|
| 53 |
+
const createClient = () => {
|
| 54 |
+
window.open(zones[data.zone][2] + '/#blade/Microsoft_AAD_RegisteredApps/ApplicationsListBlade', "_blank")
|
| 55 |
+
}
|
| 56 |
+
|
| 57 |
+
const getToken = () => {
|
| 58 |
+
const url = new URL(
|
| 59 |
+
`${(zones as any)[data.zone][0]}/common/oauth2/v2.0/authorize`
|
| 60 |
+
);
|
| 61 |
+
url.searchParams.set("client_id", data.client_id);
|
| 62 |
+
url.searchParams.set("response_type", "code");
|
| 63 |
+
url.searchParams.set(
|
| 64 |
+
"redirect_uri",
|
| 65 |
+
data.redirect_uri
|
| 66 |
+
);
|
| 67 |
+
url.searchParams.set(
|
| 68 |
+
"scope",
|
| 69 |
+
"offline_access files.readwrite.all"
|
| 70 |
+
);
|
| 71 |
+
url.searchParams.set(
|
| 72 |
+
"state",
|
| 73 |
+
window.btoa(`${data.client_id}::${data.client_secret}::${data.zone}::${data.redirect_uri}`)
|
| 74 |
+
);
|
| 75 |
+
window.open(url.toString(), "_self");
|
| 76 |
+
}
|
| 77 |
+
</script>
|
| 78 |
+
|
| 79 |
+
<template>
|
| 80 |
+
<NSpace vertical size="large">
|
| 81 |
+
<h4>zone</h4>
|
| 82 |
+
<NSelect v-model:value="data.zone" size="large" :options="Object.keys(zones).map(zone => {
|
| 83 |
+
return {
|
| 84 |
+
label: zones[zone][3],
|
| 85 |
+
value: zone
|
| 86 |
+
}
|
| 87 |
+
})" />
|
| 88 |
+
<h4>client_id</h4>
|
| 89 |
+
<NInput size="large" v-model:value="data.client_id" />
|
| 90 |
+
<h4>client_secret</h4>
|
| 91 |
+
<NInput size="large" v-model:value="data.client_secret" />
|
| 92 |
+
<h4>redirect_uri</h4>
|
| 93 |
+
<NInput size="large" v-model:value="data.redirect_uri" />
|
| 94 |
+
<NSpace justify="center">
|
| 95 |
+
<NButton size="large" secondary @click="createClient">Create client</NButton>
|
| 96 |
+
<NButton size="large" type="primary" @click="getToken">Get Refresh Token</NButton>
|
| 97 |
+
</NSpace>
|
| 98 |
+
</NSpace>
|
| 99 |
+
</template>
|
| 100 |
+
|
| 101 |
+
<style scoped>
|
| 102 |
+
h4 {
|
| 103 |
+
margin: 0;
|
| 104 |
+
}
|
| 105 |
+
</style>
|
src/components/onedrive/WebDav.vue
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<script lang="ts" setup>
|
| 2 |
+
import { NButton, NInput, NSpace } from 'naive-ui';
|
| 3 |
+
import { reactive } from 'vue';
|
| 4 |
+
|
| 5 |
+
const data = reactive({
|
| 6 |
+
spUrl: "",
|
| 7 |
+
webdavUrl: ""
|
| 8 |
+
})
|
| 9 |
+
|
| 10 |
+
function calWebDavURL() {
|
| 11 |
+
let url = data.spUrl;
|
| 12 |
+
if (url.startsWith("https://")) {
|
| 13 |
+
url = url.replace("https://", "");
|
| 14 |
+
}
|
| 15 |
+
let ans = `https://` + url.split("/").slice(0, 3).join("/");
|
| 16 |
+
if (url.includes("/sites/")) {
|
| 17 |
+
data.webdavUrl = ans + `/Shared Documents`;
|
| 18 |
+
} else {
|
| 19 |
+
data.webdavUrl = ans + `/Documents`;
|
| 20 |
+
}
|
| 21 |
+
}
|
| 22 |
+
</script>
|
| 23 |
+
|
| 24 |
+
<template>
|
| 25 |
+
<NSpace vertical size="large">
|
| 26 |
+
<NInput size="large" placeholder="Input Onedrive/SharePoint URL" v-model:value="data.spUrl" />
|
| 27 |
+
<p>OneDrive: https://xx-my.sharepoint.xx/personal/xx_xx_xx/_layouts/15/onedrive.aspx</p>
|
| 28 |
+
<p>SharePoint: https://xx.sharepoint.xx/sites/xx</p>
|
| 29 |
+
<NButton block size="large" type="primary" @click="calWebDavURL">Get WebDav URL</NButton>
|
| 30 |
+
<NInput size="large" type="textarea" placeholder="WebDav URL" v-model:value="data.webdavUrl" readonly />
|
| 31 |
+
</NSpace>
|
| 32 |
+
</template>
|
| 33 |
+
<style scoped>
|
| 34 |
+
p {
|
| 35 |
+
margin: 0;
|
| 36 |
+
}
|
| 37 |
+
</style>
|
src/main.js
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import { createApp } from 'vue'
|
| 2 |
+
import './style.css'
|
| 3 |
+
import App from './App.vue'
|
| 4 |
+
import router from './router'
|
| 5 |
+
|
| 6 |
+
createApp(App).use(router).mount('#app')
|
src/router/index.js
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import { createRouter, createWebHistory } from 'vue-router'
|
| 2 |
+
import Request from '../components/onedrive/Request.vue'
|
| 3 |
+
import CallBack from '../components/onedrive/Callback.vue'
|
| 4 |
+
|
| 5 |
+
const routes = [
|
| 6 |
+
{
|
| 7 |
+
path: '/',
|
| 8 |
+
name: 'Home',
|
| 9 |
+
component: Request
|
| 10 |
+
},
|
| 11 |
+
{
|
| 12 |
+
path: '/callback',
|
| 13 |
+
name: 'CallBack',
|
| 14 |
+
component: CallBack
|
| 15 |
+
}
|
| 16 |
+
]
|
| 17 |
+
|
| 18 |
+
const router = createRouter({
|
| 19 |
+
history: createWebHistory(),
|
| 20 |
+
routes
|
| 21 |
+
})
|
| 22 |
+
|
| 23 |
+
export default router
|
src/style.css
ADDED
|
@@ -0,0 +1,79 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
:root {
|
| 2 |
+
font-family: system-ui, Avenir, Helvetica, Arial, sans-serif;
|
| 3 |
+
line-height: 1.5;
|
| 4 |
+
font-weight: 400;
|
| 5 |
+
|
| 6 |
+
color-scheme: light dark;
|
| 7 |
+
color: rgba(255, 255, 255, 0.87);
|
| 8 |
+
background-color: #242424;
|
| 9 |
+
|
| 10 |
+
font-synthesis: none;
|
| 11 |
+
text-rendering: optimizeLegibility;
|
| 12 |
+
-webkit-font-smoothing: antialiased;
|
| 13 |
+
-moz-osx-font-smoothing: grayscale;
|
| 14 |
+
}
|
| 15 |
+
|
| 16 |
+
a {
|
| 17 |
+
font-weight: 500;
|
| 18 |
+
color: #646cff;
|
| 19 |
+
text-decoration: inherit;
|
| 20 |
+
}
|
| 21 |
+
a:hover {
|
| 22 |
+
color: #535bf2;
|
| 23 |
+
}
|
| 24 |
+
|
| 25 |
+
body {
|
| 26 |
+
margin: 0;
|
| 27 |
+
display: flex;
|
| 28 |
+
place-items: center;
|
| 29 |
+
min-width: 320px;
|
| 30 |
+
min-height: 100vh;
|
| 31 |
+
}
|
| 32 |
+
|
| 33 |
+
h1 {
|
| 34 |
+
font-size: 3.2em;
|
| 35 |
+
line-height: 1.1;
|
| 36 |
+
}
|
| 37 |
+
|
| 38 |
+
button {
|
| 39 |
+
border-radius: 8px;
|
| 40 |
+
border: 1px solid transparent;
|
| 41 |
+
padding: 0.6em 1.2em;
|
| 42 |
+
font-size: 1em;
|
| 43 |
+
font-weight: 500;
|
| 44 |
+
font-family: inherit;
|
| 45 |
+
background-color: #1a1a1a;
|
| 46 |
+
cursor: pointer;
|
| 47 |
+
transition: border-color 0.25s;
|
| 48 |
+
}
|
| 49 |
+
button:hover {
|
| 50 |
+
border-color: #646cff;
|
| 51 |
+
}
|
| 52 |
+
button:focus,
|
| 53 |
+
button:focus-visible {
|
| 54 |
+
outline: 4px auto -webkit-focus-ring-color;
|
| 55 |
+
}
|
| 56 |
+
|
| 57 |
+
.card {
|
| 58 |
+
padding: 2em;
|
| 59 |
+
}
|
| 60 |
+
|
| 61 |
+
#app {
|
| 62 |
+
max-width: 1280px;
|
| 63 |
+
margin: 0 auto;
|
| 64 |
+
padding: 2rem;
|
| 65 |
+
text-align: center;
|
| 66 |
+
}
|
| 67 |
+
|
| 68 |
+
@media (prefers-color-scheme: light) {
|
| 69 |
+
:root {
|
| 70 |
+
color: #213547;
|
| 71 |
+
background-color: #ffffff;
|
| 72 |
+
}
|
| 73 |
+
a:hover {
|
| 74 |
+
color: #747bff;
|
| 75 |
+
}
|
| 76 |
+
button {
|
| 77 |
+
background-color: #f9f9f9;
|
| 78 |
+
}
|
| 79 |
+
}
|
utils/utils.go
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
package utils
|
| 2 |
+
|
| 3 |
+
import (
|
| 4 |
+
"crypto/tls"
|
| 5 |
+
"time"
|
| 6 |
+
|
| 7 |
+
"github.com/go-resty/resty/v2"
|
| 8 |
+
)
|
| 9 |
+
|
| 10 |
+
var (
|
| 11 |
+
RestyClient = newRestyClient()
|
| 12 |
+
)
|
| 13 |
+
|
| 14 |
+
func newRestyClient() *resty.Client {
|
| 15 |
+
client := resty.New()
|
| 16 |
+
client.SetDisableWarn(true)
|
| 17 |
+
|
| 18 |
+
client.SetTimeout(10 * time.Second)
|
| 19 |
+
|
| 20 |
+
client.SetRetryCount(3)
|
| 21 |
+
client.SetRetryWaitTime(2 * time.Second)
|
| 22 |
+
client.SetRetryMaxWaitTime(10 * time.Second)
|
| 23 |
+
|
| 24 |
+
client.SetTLSClientConfig(&tls.Config{InsecureSkipVerify: true})
|
| 25 |
+
|
| 26 |
+
return client
|
| 27 |
+
}
|
vite.config.js
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import { defineConfig } from 'vite'
|
| 2 |
+
import vue from '@vitejs/plugin-vue'
|
| 3 |
+
|
| 4 |
+
// https://vite.dev/config/
|
| 5 |
+
export default defineConfig({
|
| 6 |
+
plugins: [vue()],
|
| 7 |
+
})
|