feat: add vue-golang-mysql sample
Signed-off-by: fffzlfk <1319933925qq@gmail.com>
This commit is contained in:
		| @@ -49,6 +49,7 @@ application with a Rust backend and a Postgres database. <a href="react-rus | |||||||
| - [`React / Nginx`](react-nginx) - Sample React application with Nginx. <a href="react-nginx"><img src="icon_devenvs.svg" alt="Use with Docker Dev Environments" height="30" align="top"/></a> | - [`React / Nginx`](react-nginx) - Sample React application with Nginx. <a href="react-nginx"><img src="icon_devenvs.svg" alt="Use with Docker Dev Environments" height="30" align="top"/></a> | ||||||
| - [`Spring / PostgreSQL`](spring-postgres) - Sample Java application | - [`Spring / PostgreSQL`](spring-postgres) - Sample Java application | ||||||
| with Spring framework and a Postgres database. <a href="spring-postgres"><img src="icon_devenvs.svg" alt="Use with Docker Dev Environments" height="30" align="top"/></a> | with Spring framework and a Postgres database. <a href="spring-postgres"><img src="icon_devenvs.svg" alt="Use with Docker Dev Environments" height="30" align="top"/></a> | ||||||
|  | - [`Vue / Golang / MySQL`](vue-golang-mysql/) - Vue3 application with Go backend and mysql database | ||||||
|  |  | ||||||
| ## Single service samples | ## Single service samples | ||||||
|  |  | ||||||
|   | |||||||
							
								
								
									
										62
									
								
								vue-golang-mysql/README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										62
									
								
								vue-golang-mysql/README.md
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,62 @@ | |||||||
|  | ## Compose sample application | ||||||
|  |  | ||||||
|  | ### Vue3 application with Go backend and mysql database | ||||||
|  |  | ||||||
|  | Project structure | ||||||
|  | ```yaml | ||||||
|  | . | ||||||
|  | ├── docker-compose.yml | ||||||
|  | ├── README.md | ||||||
|  | ├── server | ||||||
|  | └── web | ||||||
|  | ``` | ||||||
|  |  | ||||||
|  | [docker-compose.yml](docker-compose.yml) | ||||||
|  | ```yaml | ||||||
|  | version: '3' | ||||||
|  | services: | ||||||
|  |   mydb: | ||||||
|  |     restart: always | ||||||
|  |     image: mysql:8.0 | ||||||
|  |     ... | ||||||
|  |   server: | ||||||
|  |     build: | ||||||
|  |       context: ./server | ||||||
|  |     ... | ||||||
|  |   web: | ||||||
|  |     build: | ||||||
|  |       context: ./web | ||||||
|  |     ... | ||||||
|  | ``` | ||||||
|  |  | ||||||
|  |  | ||||||
|  | ## Deploy with docker composeTech | ||||||
|  |  | ||||||
|  | ```console | ||||||
|  | ➜ sudo docker compose up -d | ||||||
|  | [+] Running 3/3 | ||||||
|  |  ⠿ Container web Started 1.2s | ||||||
|  |  ⠿ Container mydb    Started 0.4s | ||||||
|  |  ⠿ Container server  Started 0.4s | ||||||
|  | ``` | ||||||
|  |  | ||||||
|  |  | ||||||
|  | ## Expected result | ||||||
|  |  | ||||||
|  | Listing containers must show two containers running and the port mapping as below: | ||||||
|  | ```console | ||||||
|  | CONTAINER ID   IMAGE                     COMMAND                  CREATED         STATUS         PORTS                                                  NAMES | ||||||
|  | 2eed57a008a0   vue-golang-mysql-web      "docker-entrypoint.s…"   3 minutes ago   Up 3 minutes   0.0.0.0:80->3000/tcp, :::80->3000/tcp                  web | ||||||
|  | 5bdbeda7b734   vue-golang-mysql-server   "./code-paste"           3 minutes ago   Up 3 minutes   0.0.0.0:8080->8080/tcp, :::8080->8080/tcp              server | ||||||
|  | d07aeb384642   mysql:8.0                 "docker-entrypoint.s…"   3 minutes ago   Up 3 minutes   0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp   mydb | ||||||
|  | ``` | ||||||
|  |  | ||||||
|  | After the application starts, navigate to http://localhost in your web browser to use app. | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | ## Stop and remove the containers | ||||||
|  |  | ||||||
|  | ```console | ||||||
|  | docker compose down | ||||||
|  | ``` | ||||||
							
								
								
									
										35
									
								
								vue-golang-mysql/docker-compose.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										35
									
								
								vue-golang-mysql/docker-compose.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,35 @@ | |||||||
|  | version: '3' | ||||||
|  | services: | ||||||
|  |   mydb: | ||||||
|  |     restart: always | ||||||
|  |     image: mysql:8.0 | ||||||
|  |     environment: | ||||||
|  |       MYSQL_ROOT_PASSWORD: '114514' | ||||||
|  |       MYSQL_DATABASE: code_paste | ||||||
|  |     container_name: mydb | ||||||
|  |     ports: | ||||||
|  |       - "3306:3306" | ||||||
|  |     tty: true | ||||||
|  |   server: | ||||||
|  |     build: | ||||||
|  |       context: ./server | ||||||
|  |     restart: on-failure:10 | ||||||
|  |     container_name: server | ||||||
|  |     ports: | ||||||
|  |       - "8080:8080" | ||||||
|  |     environment: | ||||||
|  |        GIN_MODE: release | ||||||
|  |     tty: true | ||||||
|  |     depends_on: | ||||||
|  |       - mydb | ||||||
|  |   web: | ||||||
|  |     build: | ||||||
|  |       context: ./web | ||||||
|  |       args: | ||||||
|  |         VITE_API_BASE_URL: http://127.0.0.1:8080/api | ||||||
|  |     container_name: web | ||||||
|  |     ports: | ||||||
|  |       - "80:3000" | ||||||
|  |     tty: true | ||||||
|  |     depends_on: | ||||||
|  |       - server | ||||||
							
								
								
									
										2
									
								
								vue-golang-mysql/server/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								vue-golang-mysql/server/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,2 @@ | |||||||
|  | log.txt | ||||||
|  | code-paste | ||||||
							
								
								
									
										8
									
								
								vue-golang-mysql/server/Dockerfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								vue-golang-mysql/server/Dockerfile
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,8 @@ | |||||||
|  | FROM golang:latest | ||||||
|  | ENV GO111MODULE=on | ||||||
|  | WORKDIR /server | ||||||
|  | COPY . . | ||||||
|  | RUN go env -w GOPROXY=https://goproxy.cn | ||||||
|  | RUN go build | ||||||
|  | EXPOSE 8080 | ||||||
|  | CMD ["./code-paste"] | ||||||
							
								
								
									
										8
									
								
								vue-golang-mysql/server/config.toml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								vue-golang-mysql/server/config.toml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,8 @@ | |||||||
|  | [server] | ||||||
|  | port = 8080 | ||||||
|  |  | ||||||
|  | [database] | ||||||
|  | host = "mydb" | ||||||
|  | port = 3306 | ||||||
|  | user = "root" | ||||||
|  | password = "114514" | ||||||
							
								
								
									
										30
									
								
								vue-golang-mysql/server/controllers/create.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								vue-golang-mysql/server/controllers/create.go
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,30 @@ | |||||||
|  | package controllers | ||||||
|  |  | ||||||
|  | import ( | ||||||
|  | 	"code-paste/database" | ||||||
|  | 	"code-paste/model" | ||||||
|  | 	"net/http" | ||||||
|  | 	"time" | ||||||
|  |  | ||||||
|  | 	"github.com/gin-gonic/gin" | ||||||
|  | 	"github.com/google/uuid" | ||||||
|  | ) | ||||||
|  |  | ||||||
|  | func generateUUID() string { | ||||||
|  | 	return uuid.New().String() | ||||||
|  | } | ||||||
|  |  | ||||||
|  | func CreatePaste(c *gin.Context) { | ||||||
|  | 	var p model.Paste | ||||||
|  | 	if err := c.BindJSON(&p); err != nil { | ||||||
|  | 		c.AbortWithStatus(http.StatusBadRequest) | ||||||
|  | 		return | ||||||
|  | 	} | ||||||
|  | 	p.ExpiredAt = time.Now().AddDate(0, 0, p.ExpiredDays) | ||||||
|  | 	p.ID = generateUUID() | ||||||
|  | 	database.DB.Create(&p) | ||||||
|  | 	c.JSON(http.StatusAccepted, gin.H{ | ||||||
|  | 		"status": "ok", | ||||||
|  | 		"uuid":   p.ID, | ||||||
|  | 	}) | ||||||
|  | } | ||||||
							
								
								
									
										26
									
								
								vue-golang-mysql/server/controllers/read.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								vue-golang-mysql/server/controllers/read.go
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,26 @@ | |||||||
|  | package controllers | ||||||
|  |  | ||||||
|  | import ( | ||||||
|  | 	"code-paste/database" | ||||||
|  | 	"code-paste/model" | ||||||
|  | 	"net/http" | ||||||
|  | 	"time" | ||||||
|  |  | ||||||
|  | 	"github.com/gin-gonic/gin" | ||||||
|  | ) | ||||||
|  |  | ||||||
|  | func ReadPaste(c *gin.Context) { | ||||||
|  | 	id := c.Param("id") | ||||||
|  | 	var p model.Paste | ||||||
|  | 	res := database.DB.First(&p, "id = ?", id) | ||||||
|  | 	if res.Error != nil { | ||||||
|  | 		c.AbortWithStatus(http.StatusNotFound) | ||||||
|  | 		return | ||||||
|  | 	} | ||||||
|  | 	if p.ExpiredAt.Before(time.Now()) { | ||||||
|  | 		database.DB.Delete(&p) | ||||||
|  | 		ReadPaste(c) | ||||||
|  | 		return | ||||||
|  | 	} | ||||||
|  | 	c.JSON(http.StatusAccepted, p) | ||||||
|  | } | ||||||
							
								
								
									
										18
									
								
								vue-golang-mysql/server/cron/cron.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								vue-golang-mysql/server/cron/cron.go
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,18 @@ | |||||||
|  | package cron | ||||||
|  |  | ||||||
|  | import ( | ||||||
|  | 	"code-paste/database" | ||||||
|  | 	"code-paste/model" | ||||||
|  | 	"time" | ||||||
|  |  | ||||||
|  | 	"github.com/robfig/cron/v3" | ||||||
|  | ) | ||||||
|  |  | ||||||
|  | func Start() { | ||||||
|  | 	c := cron.New() | ||||||
|  |  | ||||||
|  | 	c.AddFunc("@midnight", func() { | ||||||
|  | 		now := time.Now().Format("2006-01-02 15:04:05") | ||||||
|  | 		database.DB.Where("expired_at <= ?", now).Delete(&model.Paste{}) | ||||||
|  | 	}) | ||||||
|  | } | ||||||
							
								
								
									
										38
									
								
								vue-golang-mysql/server/database/conn.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										38
									
								
								vue-golang-mysql/server/database/conn.go
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,38 @@ | |||||||
|  | package database | ||||||
|  |  | ||||||
|  | import ( | ||||||
|  | 	"code-paste/model" | ||||||
|  | 	"fmt" | ||||||
|  | 	"log" | ||||||
|  | 	"os" | ||||||
|  | 	"time" | ||||||
|  |  | ||||||
|  | 	"gorm.io/driver/mysql" | ||||||
|  | 	"gorm.io/gorm" | ||||||
|  | 	"gorm.io/gorm/logger" | ||||||
|  | ) | ||||||
|  |  | ||||||
|  | var DB *gorm.DB | ||||||
|  |  | ||||||
|  | func Init(logFile *os.File, host, user, password string, port int) { | ||||||
|  | 	dsn := fmt.Sprintf("%s:%s@tcp(%s:%d)/code_paste?charset=utf8&parseTime=True&loc=Local", user, password, host, port) | ||||||
|  | 	newLogger := logger.New( | ||||||
|  | 		log.New(logFile, "\r\n", log.LstdFlags), | ||||||
|  | 		logger.Config{ | ||||||
|  | 			SlowThreshold: time.Second, | ||||||
|  | 			LogLevel:      logger.Silent, | ||||||
|  | 			Colorful:      false, | ||||||
|  | 		}, | ||||||
|  | 	) | ||||||
|  |  | ||||||
|  | 	db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{ | ||||||
|  | 		Logger: newLogger, | ||||||
|  | 	}) | ||||||
|  | 	if err != nil { | ||||||
|  | 		log.Fatal(err) | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	DB = db | ||||||
|  |  | ||||||
|  | 	db.AutoMigrate(model.Paste{}) | ||||||
|  | } | ||||||
							
								
								
									
										42
									
								
								vue-golang-mysql/server/go.mod
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										42
									
								
								vue-golang-mysql/server/go.mod
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,42 @@ | |||||||
|  | module code-paste | ||||||
|  |  | ||||||
|  | go 1.17 | ||||||
|  |  | ||||||
|  | require ( | ||||||
|  | 	github.com/BurntSushi/toml v1.2.0 | ||||||
|  | 	github.com/gin-contrib/cors v1.4.0 | ||||||
|  | 	github.com/gin-gonic/gin v1.8.1 | ||||||
|  | 	github.com/google/uuid v1.3.0 | ||||||
|  | 	github.com/robfig/cron/v3 v3.0.1 | ||||||
|  | 	gorm.io/driver/mysql v1.3.6 | ||||||
|  | 	gorm.io/gorm v1.23.8 | ||||||
|  | ) | ||||||
|  |  | ||||||
|  | require ( | ||||||
|  | 	github.com/bradfitz/gomemcache v0.0.0-20220106215444-fb4bf637b56d // indirect | ||||||
|  | 	github.com/gin-contrib/cache v1.2.0 // indirect | ||||||
|  | 	github.com/gin-contrib/sse v0.1.0 // indirect | ||||||
|  | 	github.com/go-playground/locales v0.14.0 // indirect | ||||||
|  | 	github.com/go-playground/universal-translator v0.18.0 // indirect | ||||||
|  | 	github.com/go-playground/validator/v10 v10.10.0 // indirect | ||||||
|  | 	github.com/go-sql-driver/mysql v1.6.0 // indirect | ||||||
|  | 	github.com/goccy/go-json v0.9.7 // indirect | ||||||
|  | 	github.com/gomodule/redigo v1.8.9 // indirect | ||||||
|  | 	github.com/jinzhu/inflection v1.0.0 // indirect | ||||||
|  | 	github.com/jinzhu/now v1.1.5 // indirect | ||||||
|  | 	github.com/json-iterator/go v1.1.12 // indirect | ||||||
|  | 	github.com/leodido/go-urn v1.2.1 // indirect | ||||||
|  | 	github.com/mattn/go-isatty v0.0.14 // indirect | ||||||
|  | 	github.com/memcachier/mc/v3 v3.0.3 // indirect | ||||||
|  | 	github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421 // indirect | ||||||
|  | 	github.com/modern-go/reflect2 v1.0.2 // indirect | ||||||
|  | 	github.com/pelletier/go-toml/v2 v2.0.1 // indirect | ||||||
|  | 	github.com/robfig/go-cache v0.0.0-20130306151617-9fc39e0dbf62 // indirect | ||||||
|  | 	github.com/ugorji/go/codec v1.2.7 // indirect | ||||||
|  | 	golang.org/x/crypto v0.0.0-20220214200702-86341886e292 // indirect | ||||||
|  | 	golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2 // indirect | ||||||
|  | 	golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069 // indirect | ||||||
|  | 	golang.org/x/text v0.3.6 // indirect | ||||||
|  | 	google.golang.org/protobuf v1.28.0 // indirect | ||||||
|  | 	gopkg.in/yaml.v2 v2.4.0 // indirect | ||||||
|  | ) | ||||||
							
								
								
									
										122
									
								
								vue-golang-mysql/server/go.sum
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										122
									
								
								vue-golang-mysql/server/go.sum
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,122 @@ | |||||||
|  | github.com/BurntSushi/toml v1.2.0 h1:Rt8g24XnyGTyglgET/PRUNlrUeu9F5L+7FilkXfZgs0= | ||||||
|  | github.com/BurntSushi/toml v1.2.0/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= | ||||||
|  | github.com/bradfitz/gomemcache v0.0.0-20220106215444-fb4bf637b56d h1:pVrfxiGfwelyab6n21ZBkbkmbevaf+WvMIiR7sr97hw= | ||||||
|  | github.com/bradfitz/gomemcache v0.0.0-20220106215444-fb4bf637b56d/go.mod h1:H0wQNHz2YrLsuXOZozoeDmnHXkNCRmMW0gwFWDfEZDA= | ||||||
|  | github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= | ||||||
|  | github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= | ||||||
|  | github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= | ||||||
|  | github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= | ||||||
|  | github.com/gin-contrib/cache v1.2.0 h1:WA+AJR4kmHDTaLLShCHo/IeWVmmGRZ3Lsr3JQ46tFlE= | ||||||
|  | github.com/gin-contrib/cache v1.2.0/go.mod h1:2KkFL8PSnPF3Tt5E2Jpc3HWuBAUKqGZnClCFMm0tXQI= | ||||||
|  | github.com/gin-contrib/cors v1.4.0 h1:oJ6gwtUl3lqV0WEIwM/LxPF1QZ5qe2lGWdY2+bz7y0g= | ||||||
|  | github.com/gin-contrib/cors v1.4.0/go.mod h1:bs9pNM0x/UsmHPBWT2xZz9ROh8xYjYkiURUfmBoMlcs= | ||||||
|  | github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE= | ||||||
|  | github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= | ||||||
|  | github.com/gin-gonic/gin v1.8.1 h1:4+fr/el88TOO3ewCmQr8cx/CtZ/umlIRIs5M4NTNjf8= | ||||||
|  | github.com/gin-gonic/gin v1.8.1/go.mod h1:ji8BvRH1azfM+SYow9zQ6SZMvR8qOMZHmsCuWR9tTTk= | ||||||
|  | github.com/go-playground/assert/v2 v2.0.1 h1:MsBgLAaY856+nPRTKrp3/OZK38U/wa0CcBYNjji3q3A= | ||||||
|  | github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= | ||||||
|  | github.com/go-playground/locales v0.14.0 h1:u50s323jtVGugKlcYeyzC0etD1HifMjqmJqb8WugfUU= | ||||||
|  | github.com/go-playground/locales v0.14.0/go.mod h1:sawfccIbzZTqEDETgFXqTho0QybSa7l++s0DH+LDiLs= | ||||||
|  | github.com/go-playground/universal-translator v0.18.0 h1:82dyy6p4OuJq4/CByFNOn/jYrnRPArHwAcmLoJZxyho= | ||||||
|  | github.com/go-playground/universal-translator v0.18.0/go.mod h1:UvRDBj+xPUEGrFYl+lu/H90nyDXpg0fqeB/AQUGNTVA= | ||||||
|  | github.com/go-playground/validator/v10 v10.10.0 h1:I7mrTYv78z8k8VXa/qJlOlEXn/nBh+BF8dHX5nt/dr0= | ||||||
|  | github.com/go-playground/validator/v10 v10.10.0/go.mod h1:74x4gJWsvQexRdW8Pn3dXSGrTK4nAUsbPlLADvpJkos= | ||||||
|  | github.com/go-sql-driver/mysql v1.6.0 h1:BCTh4TKNUYmOmMUcQ3IipzF5prigylS7XXjEkfCHuOE= | ||||||
|  | github.com/go-sql-driver/mysql v1.6.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= | ||||||
|  | github.com/goccy/go-json v0.9.7 h1:IcB+Aqpx/iMHu5Yooh7jEzJk1JZ7Pjtmys2ukPr7EeM= | ||||||
|  | github.com/goccy/go-json v0.9.7/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= | ||||||
|  | github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= | ||||||
|  | github.com/gomodule/redigo v1.8.9 h1:Sl3u+2BI/kk+VEatbj0scLdrFhjPmbxOc1myhDP41ws= | ||||||
|  | github.com/gomodule/redigo v1.8.9/go.mod h1:7ArFNvsTjH8GMMzB4uy1snslv2BwmginuMs06a1uzZE= | ||||||
|  | github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU= | ||||||
|  | github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= | ||||||
|  | github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= | ||||||
|  | github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= | ||||||
|  | github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= | ||||||
|  | github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E= | ||||||
|  | github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc= | ||||||
|  | github.com/jinzhu/now v1.1.4/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8= | ||||||
|  | github.com/jinzhu/now v1.1.5 h1:/o9tlHleP7gOFmsnYNz3RGnqzefHA47wQpKrrdTIwXQ= | ||||||
|  | github.com/jinzhu/now v1.1.5/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8= | ||||||
|  | github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= | ||||||
|  | github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= | ||||||
|  | github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= | ||||||
|  | github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= | ||||||
|  | github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0= | ||||||
|  | github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk= | ||||||
|  | github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= | ||||||
|  | github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= | ||||||
|  | github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= | ||||||
|  | github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= | ||||||
|  | github.com/leodido/go-urn v1.2.1 h1:BqpAaACuzVSgi/VLzGZIobT2z4v53pjosyNd9Yv6n/w= | ||||||
|  | github.com/leodido/go-urn v1.2.1/go.mod h1:zt4jvISO2HfUBqxjfIshjdMTYS56ZS/qv49ictyFfxY= | ||||||
|  | github.com/mattn/go-isatty v0.0.14 h1:yVuAays6BHfxijgZPzw+3Zlu5yQgKGP2/hcQbHb7S9Y= | ||||||
|  | github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= | ||||||
|  | github.com/memcachier/mc/v3 v3.0.3 h1:qii+lDiPKi36O4Xg+HVKwHu6Oq+Gt17b+uEiA0Drwv4= | ||||||
|  | github.com/memcachier/mc/v3 v3.0.3/go.mod h1:GzjocBahcXPxt2cmqzknrgqCOmMxiSzhVKPOe90Tpug= | ||||||
|  | github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421 h1:ZqeYNhU3OHLH3mGKHDcjJRFFRrJa6eAM5H+CtDdOsPc= | ||||||
|  | github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= | ||||||
|  | github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= | ||||||
|  | github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= | ||||||
|  | github.com/pelletier/go-toml/v2 v2.0.1 h1:8e3L2cCQzLFi2CR4g7vGFuFxX7Jl1kKX8gW+iV0GUKU= | ||||||
|  | github.com/pelletier/go-toml/v2 v2.0.1/go.mod h1:r9LEWfGN8R5k0VXJ+0BkIe7MYkRdwZOjgMj2KwnJFUo= | ||||||
|  | github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= | ||||||
|  | github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= | ||||||
|  | github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= | ||||||
|  | github.com/robfig/cron/v3 v3.0.1 h1:WdRxkvbJztn8LMz/QEvLN5sBU+xKpSqwwUO1Pjr4qDs= | ||||||
|  | github.com/robfig/cron/v3 v3.0.1/go.mod h1:eQICP3HwyT7UooqI/z+Ov+PtYAWygg1TEWWzGIFLtro= | ||||||
|  | github.com/robfig/go-cache v0.0.0-20130306151617-9fc39e0dbf62 h1:pyecQtsPmlkCsMkYhT5iZ+sUXuwee+OvfuJjinEA3ko= | ||||||
|  | github.com/robfig/go-cache v0.0.0-20130306151617-9fc39e0dbf62/go.mod h1:65XQgovT59RWatovFwnwocoUxiI/eENTnOY5GK3STuY= | ||||||
|  | github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= | ||||||
|  | github.com/rogpeppe/go-internal v1.8.0 h1:FCbCCtXNOY3UtUuHUYaghJg4y7Fd14rXifAYUAtL9R8= | ||||||
|  | github.com/rogpeppe/go-internal v1.8.0/go.mod h1:WmiCO8CzOY8rg0OYDC4/i/2WRWAB6poM+XZ2dLUbcbE= | ||||||
|  | github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= | ||||||
|  | github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= | ||||||
|  | github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= | ||||||
|  | github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= | ||||||
|  | github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= | ||||||
|  | github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= | ||||||
|  | github.com/stretchr/testify v1.8.0 h1:pSgiaMZlXftHpm5L7V1+rVB+AZJydKsMxsQBIJw4PKk= | ||||||
|  | github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= | ||||||
|  | github.com/ugorji/go v1.2.7 h1:qYhyWUUd6WbiM+C6JZAUkIJt/1WrjzNHY9+KCIjVqTo= | ||||||
|  | github.com/ugorji/go v1.2.7/go.mod h1:nF9osbDWLy6bDVv/Rtoh6QgnvNDpmCalQV5urGCCS6M= | ||||||
|  | github.com/ugorji/go/codec v1.2.7 h1:YPXUKf7fYbp/y8xloBqZOw2qaVggbfwMlI8WM3wZUJ0= | ||||||
|  | github.com/ugorji/go/codec v1.2.7/go.mod h1:WGN1fab3R1fzQlVQTkfxVtIBhWDRqOviHU95kRgeqEY= | ||||||
|  | golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= | ||||||
|  | golang.org/x/crypto v0.0.0-20220214200702-86341886e292 h1:f+lwQ+GtmgoY+A2YaQxlSOnDjXcQ7ZRLWOHbC6HtRqE= | ||||||
|  | golang.org/x/crypto v0.0.0-20220214200702-86341886e292/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= | ||||||
|  | golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= | ||||||
|  | golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2 h1:CIJ76btIcR3eFI5EgSo6k1qKw9KJexJuRLI9G7Hp5wE= | ||||||
|  | golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= | ||||||
|  | golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||||
|  | golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||||
|  | golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | ||||||
|  | golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | ||||||
|  | golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069 h1:siQdpVirKtzPhKl3lZWozZraCFObP8S1v6PRp0bLrtU= | ||||||
|  | golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | ||||||
|  | golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= | ||||||
|  | golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= | ||||||
|  | golang.org/x/text v0.3.6 h1:aRYxNxv6iGQlyVaZmk6ZgYEDa+Jg18DxebPSrd6bg1M= | ||||||
|  | golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= | ||||||
|  | golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= | ||||||
|  | golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= | ||||||
|  | golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= | ||||||
|  | google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= | ||||||
|  | google.golang.org/protobuf v1.28.0 h1:w43yiav+6bVFTBQFZX0r7ipe9JQ1QsbMgHwbBziscLw= | ||||||
|  | google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= | ||||||
|  | gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= | ||||||
|  | gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= | ||||||
|  | gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= | ||||||
|  | gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= | ||||||
|  | gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= | ||||||
|  | gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= | ||||||
|  | gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= | ||||||
|  | gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= | ||||||
|  | gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= | ||||||
|  | gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= | ||||||
|  | gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= | ||||||
|  | gorm.io/driver/mysql v1.3.6 h1:BhX1Y/RyALb+T9bZ3t07wLnPZBukt+IRkMn8UZSNbGM= | ||||||
|  | gorm.io/driver/mysql v1.3.6/go.mod h1:sSIebwZAVPiT+27jK9HIwvsqOGKx3YMPmrA3mBJR10c= | ||||||
|  | gorm.io/gorm v1.23.8 h1:h8sGJ+biDgBA1AD1Ha9gFCx7h8npU7AsLdlkX0n2TpE= | ||||||
|  | gorm.io/gorm v1.23.8/go.mod h1:l2lP/RyAtc1ynaTjFksBde/O8v9oOGIApu2/xRitmZk= | ||||||
							
								
								
									
										58
									
								
								vue-golang-mysql/server/main.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										58
									
								
								vue-golang-mysql/server/main.go
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,58 @@ | |||||||
|  | package main | ||||||
|  |  | ||||||
|  | import ( | ||||||
|  | 	"code-paste/controllers" | ||||||
|  | 	"code-paste/cron" | ||||||
|  | 	"code-paste/database" | ||||||
|  | 	"fmt" | ||||||
|  | 	"os" | ||||||
|  | 	"time" | ||||||
|  |  | ||||||
|  | 	"github.com/BurntSushi/toml" | ||||||
|  | 	"github.com/gin-contrib/cache" | ||||||
|  | 	"github.com/gin-contrib/cache/persistence" | ||||||
|  | 	"github.com/gin-contrib/cors" | ||||||
|  | 	"github.com/gin-gonic/gin" | ||||||
|  | ) | ||||||
|  |  | ||||||
|  | type configs struct { | ||||||
|  | 	Server   serverConfig | ||||||
|  | 	Database databaseConfig | ||||||
|  | } | ||||||
|  |  | ||||||
|  | type serverConfig struct { | ||||||
|  | 	Port int | ||||||
|  | } | ||||||
|  |  | ||||||
|  | type databaseConfig struct { | ||||||
|  | 	Host     string | ||||||
|  | 	User     string | ||||||
|  | 	Password string | ||||||
|  | 	Port     int | ||||||
|  | } | ||||||
|  |  | ||||||
|  | func main() { | ||||||
|  | 	var config configs | ||||||
|  | 	toml.DecodeFile("./config.toml", &config) | ||||||
|  |  | ||||||
|  | 	logFile, _ := os.Create("log.txt") | ||||||
|  |  | ||||||
|  | 	database.Init(logFile, config.Database.Host, config.Database.User, config.Database.Password, config.Database.Port) | ||||||
|  |  | ||||||
|  | 	cron.Start() | ||||||
|  |  | ||||||
|  | 	e := gin.Default() | ||||||
|  |  | ||||||
|  | 	e.Use(gin.LoggerWithWriter(logFile)) | ||||||
|  |  | ||||||
|  | 	corsConfig := cors.DefaultConfig() | ||||||
|  | 	corsConfig.AllowAllOrigins = true | ||||||
|  | 	e.Use(cors.New(corsConfig)) | ||||||
|  |  | ||||||
|  | 	store := persistence.NewInMemoryStore(time.Second) | ||||||
|  |  | ||||||
|  | 	e.POST("/api/create", controllers.CreatePaste) | ||||||
|  | 	e.GET("/api/read/:id", cache.CachePage(store, time.Minute, controllers.ReadPaste)) | ||||||
|  |  | ||||||
|  | 	e.Run(fmt.Sprintf(":%d", config.Server.Port)) | ||||||
|  | } | ||||||
							
								
								
									
										11
									
								
								vue-golang-mysql/server/model/paste.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								vue-golang-mysql/server/model/paste.go
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,11 @@ | |||||||
|  | package model | ||||||
|  |  | ||||||
|  | import "time" | ||||||
|  |  | ||||||
|  | type Paste struct { | ||||||
|  | 	ID          string    `json:"id" gorm:"primaryKey"` | ||||||
|  | 	ExpiredAt   time.Time `json:"expired_at"` | ||||||
|  | 	ExpiredDays int       `json:"expired_days"` | ||||||
|  | 	Type        string    `json:"type"` | ||||||
|  | 	Data        string    `json:"data"` | ||||||
|  | } | ||||||
							
								
								
									
										1
									
								
								vue-golang-mysql/web/.dockerignore
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								vue-golang-mysql/web/.dockerignore
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1 @@ | |||||||
|  | /node_modules | ||||||
							
								
								
									
										9
									
								
								vue-golang-mysql/web/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								vue-golang-mysql/web/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,9 @@ | |||||||
|  | .DS_Store | ||||||
|  | .vite-ssg-dist | ||||||
|  | .vite-ssg-temp | ||||||
|  | *.local | ||||||
|  | dist | ||||||
|  | dist-ssr | ||||||
|  | node_modules | ||||||
|  | .idea/ | ||||||
|  | *.log | ||||||
							
								
								
									
										2
									
								
								vue-golang-mysql/web/.npmrc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								vue-golang-mysql/web/.npmrc
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,2 @@ | |||||||
|  | shamefully-hoist=true | ||||||
|  | strict-peer-dependencies=false | ||||||
							
								
								
									
										10
									
								
								vue-golang-mysql/web/.vscode/extensions.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								vue-golang-mysql/web/.vscode/extensions.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,10 @@ | |||||||
|  | { | ||||||
|  |   "recommendations": [ | ||||||
|  |     "antfu.vite", | ||||||
|  |     "antfu.iconify", | ||||||
|  |     "antfu.unocss", | ||||||
|  |     "antfu.goto-alias", | ||||||
|  |     "vue.volar", | ||||||
|  |     "dbaeumer.vscode-eslint" | ||||||
|  |   ] | ||||||
|  | } | ||||||
							
								
								
									
										10
									
								
								vue-golang-mysql/web/.vscode/settings.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								vue-golang-mysql/web/.vscode/settings.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,10 @@ | |||||||
|  | { | ||||||
|  |   "cSpell.words": ["Vitesse"], | ||||||
|  |   "prettier.enable": false, | ||||||
|  |   "editor.codeActionsOnSave": { | ||||||
|  |     "source.fixAll.eslint": true | ||||||
|  |   }, | ||||||
|  |   "files.associations": { | ||||||
|  |     "*.css": "postcss" | ||||||
|  |   } | ||||||
|  | } | ||||||
							
								
								
									
										12
									
								
								vue-golang-mysql/web/Dockerfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								vue-golang-mysql/web/Dockerfile
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,12 @@ | |||||||
|  | FROM node:16 | ||||||
|  | WORKDIR /web | ||||||
|  | RUN curl -f https://get.pnpm.io/v6.16.js | node - add --global pnpm | ||||||
|  | COPY .npmrc package.json pnpm-lock.yaml ./ | ||||||
|  | RUN pnpm install | ||||||
|  | COPY . . | ||||||
|  | ARG VITE_API_BASE_URL | ||||||
|  | RUN echo VITE_API_BASE_URL=${VITE_API_BASE_URL} > .env | ||||||
|  | RUN pnpm build | ||||||
|  | RUN npm install --global serve | ||||||
|  | EXPOSE 3000 | ||||||
|  | CMD [ "serve", "-n", "-s", "dist" ] | ||||||
							
								
								
									
										21
									
								
								vue-golang-mysql/web/LICENSE
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								vue-golang-mysql/web/LICENSE
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,21 @@ | |||||||
|  | MIT License | ||||||
|  |  | ||||||
|  | Copyright (c) 2020-PRESENT Anthony Fu | ||||||
|  |  | ||||||
|  | Permission is hereby granted, free of charge, to any person obtaining a copy | ||||||
|  | of this software and associated documentation files (the "Software"), to deal | ||||||
|  | in the Software without restriction, including without limitation the rights | ||||||
|  | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||||||
|  | copies of the Software, and to permit persons to whom the Software is | ||||||
|  | furnished to do so, subject to the following conditions: | ||||||
|  |  | ||||||
|  | The above copyright notice and this permission notice shall be included in all | ||||||
|  | copies or substantial portions of the Software. | ||||||
|  |  | ||||||
|  | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||||
|  | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||||
|  | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||||||
|  | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||||||
|  | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||||||
|  | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | ||||||
|  | SOFTWARE. | ||||||
							
								
								
									
										1
									
								
								vue-golang-mysql/web/README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								vue-golang-mysql/web/README.md
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1 @@ | |||||||
|  | # Code Paste | ||||||
							
								
								
									
										86
									
								
								vue-golang-mysql/web/README.zh-CN.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										86
									
								
								vue-golang-mysql/web/README.zh-CN.md
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,86 @@ | |||||||
|  | <p align='center'> | ||||||
|  |   <img src='https://user-images.githubusercontent.com/11247099/111864893-a457fd00-899e-11eb-9f05-f4b88987541d.png' alt='Vitesse - Opinionated Vite Starter Template' width='600'/> | ||||||
|  | </p> | ||||||
|  |  | ||||||
|  | <h6 align='center'> | ||||||
|  | <a href="https://vitesse-lite.netlify.app/">在线 Demo</a> | ||||||
|  | </h6> | ||||||
|  |  | ||||||
|  | <h5 align='center'> | ||||||
|  | <b>轻量版的 <a href="https://github.com/antfu/vitesse">Vitesse</a></b> | ||||||
|  | </h5> | ||||||
|  |  | ||||||
|  | <br> | ||||||
|  |  | ||||||
|  | <p align='center'> | ||||||
|  | <a href="https://github.com/antfu/vitesse-lite/blob/main/README.md">English</a> | <b>简体中文</b> | ||||||
|  | </p> | ||||||
|  |  | ||||||
|  | <br> | ||||||
|  |  | ||||||
|  | ## 特性 | ||||||
|  |  | ||||||
|  | - ⚡️ [Vue 3](https://github.com/vuejs/core), [Vite 2](https://github.com/vitejs/vite), [pnpm](https://pnpm.io/), [ESBuild](https://github.com/evanw/esbuild) - 就是快! | ||||||
|  |  | ||||||
|  | - 🗂 [基于文件的路由](./src/pages) | ||||||
|  |  | ||||||
|  | - 📦 [组件自动化加载](./src/components) | ||||||
|  |  | ||||||
|  | - 🎨 [UnoCSS](https://github.com/unocss/unocss) - 高性能且极具灵活性的即时原子化 CSS 引擎 | ||||||
|  |  | ||||||
|  | - 😃 [各种图标集为你所用](https://github.com/antfu/unocss/tree/main/packages/preset-icons) | ||||||
|  |  | ||||||
|  | - 🔥 使用 [新的 `<script setup>` 语法](https://github.com/vuejs/rfcs/pull/227) | ||||||
|  |  | ||||||
|  | - ✅ 使用 [Vitest](http://vitest.dev/) 进行单元和组件测试 | ||||||
|  |  | ||||||
|  | - 🦾 TypeScript, 当然 | ||||||
|  |  | ||||||
|  | - ☁️ 零配置部署 Netlify | ||||||
|  |  | ||||||
|  | <br> | ||||||
|  |  | ||||||
|  | 完整特性,请查看 [Vitesse](https://github.com/antfu/vitesse) | ||||||
|  |  | ||||||
|  | ## 从 [Vitesse](https://github.com/antfu/vitesse) 中删除了以下特性 | ||||||
|  |  | ||||||
|  | - ~~i18n~~ | ||||||
|  | - ~~Layouts~~ | ||||||
|  | - ~~SSG~~ | ||||||
|  | - ~~PWA~~ | ||||||
|  | - ~~Markdown~~ | ||||||
|  |  | ||||||
|  | ## 预配置 | ||||||
|  |  | ||||||
|  | ### UI 框架 | ||||||
|  |  | ||||||
|  | - [UnoCSS](https://github.com/antfu/unocss) - 高性能且极具灵活性的即时原子化 CSS 引擎 | ||||||
|  |  | ||||||
|  | ### Icons | ||||||
|  |  | ||||||
|  | - [Iconify](https://iconify.design) - 使用任意的图标集,浏览:[🔍Icônes](https://icones.netlify.app/) | ||||||
|  | - [UnoCSS 的纯 CSS 图标方案](https://github.com/antfu/unocss/tree/main/packages/preset-icons) | ||||||
|  |  | ||||||
|  | ### 插件 | ||||||
|  |  | ||||||
|  | - [Vue Router](https://github.com/vuejs/vue-router) | ||||||
|  |   - [`vite-plugin-pages`](https://github.com/hannoeru/vite-plugin-pages) - 以文件系统为基础的路由 | ||||||
|  | - [`unplugin-auto-import`](https://github.com/antfu/unplugin-auto-import) - 直接使用 Composition API 等,无需导入 | ||||||
|  | - [`unplugin-vue-components`](https://github.com/antfu/unplugin-vue-components) - 自动加载组件 | ||||||
|  | - [VueUse](https://github.com/antfu/vueuse) - 实用的 Composition API 工具合集 | ||||||
|  |  | ||||||
|  | ## 现在可以试试! | ||||||
|  |  | ||||||
|  | ### GitHub 模板 | ||||||
|  |  | ||||||
|  | [使用这个模板创建仓库](https://github.com/antfu/vitesse-lite/generate). | ||||||
|  |  | ||||||
|  | ### 克隆到本地 | ||||||
|  |  | ||||||
|  | 如果您更喜欢使用更干净的 git 历史记录手动执行此操作 | ||||||
|  |  | ||||||
|  | ```bash | ||||||
|  | npx degit antfu/vitesse-lite my-vitesse-app | ||||||
|  | cd my-vitesse-app | ||||||
|  | pnpm i # 如果你没装过 pnpm, 可以先运行: npm install -g pnpm | ||||||
|  | ``` | ||||||
							
								
								
									
										548
									
								
								vue-golang-mysql/web/auto-imports.d.ts
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										548
									
								
								vue-golang-mysql/web/auto-imports.d.ts
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,548 @@ | |||||||
|  | // Generated by 'unplugin-auto-import' | ||||||
|  | export {} | ||||||
|  | declare global { | ||||||
|  |   const $$: typeof import('vue/macros')['$$'] | ||||||
|  |   const $: typeof import('vue/macros')['$'] | ||||||
|  |   const $computed: typeof import('vue/macros')['$computed'] | ||||||
|  |   const $customRef: typeof import('vue/macros')['$customRef'] | ||||||
|  |   const $ref: typeof import('vue/macros')['$ref'] | ||||||
|  |   const $shallowRef: typeof import('vue/macros')['$shallowRef'] | ||||||
|  |   const $toRef: typeof import('vue/macros')['$toRef'] | ||||||
|  |   const EffectScope: typeof import('vue')['EffectScope'] | ||||||
|  |   const UTC2Local: typeof import('./src/composables/utils')['UTC2Local'] | ||||||
|  |   const asyncComputed: typeof import('@vueuse/core')['asyncComputed'] | ||||||
|  |   const autoResetRef: typeof import('@vueuse/core')['autoResetRef'] | ||||||
|  |   const cmOptions: typeof import('./src/composables/config')['cmOptions'] | ||||||
|  |   const computed: typeof import('vue')['computed'] | ||||||
|  |   const computedAsync: typeof import('@vueuse/core')['computedAsync'] | ||||||
|  |   const computedEager: typeof import('@vueuse/core')['computedEager'] | ||||||
|  |   const computedInject: typeof import('@vueuse/core')['computedInject'] | ||||||
|  |   const computedWithControl: typeof import('@vueuse/core')['computedWithControl'] | ||||||
|  |   const controlledComputed: typeof import('@vueuse/core')['controlledComputed'] | ||||||
|  |   const controlledRef: typeof import('@vueuse/core')['controlledRef'] | ||||||
|  |   const createApp: typeof import('vue')['createApp'] | ||||||
|  |   const createEventHook: typeof import('@vueuse/core')['createEventHook'] | ||||||
|  |   const createGlobalState: typeof import('@vueuse/core')['createGlobalState'] | ||||||
|  |   const createInjectionState: typeof import('@vueuse/core')['createInjectionState'] | ||||||
|  |   const createReactiveFn: typeof import('@vueuse/core')['createReactiveFn'] | ||||||
|  |   const createSharedComposable: typeof import('@vueuse/core')['createSharedComposable'] | ||||||
|  |   const createUnrefFn: typeof import('@vueuse/core')['createUnrefFn'] | ||||||
|  |   const customRef: typeof import('vue')['customRef'] | ||||||
|  |   const debouncedRef: typeof import('@vueuse/core')['debouncedRef'] | ||||||
|  |   const debouncedWatch: typeof import('@vueuse/core')['debouncedWatch'] | ||||||
|  |   const defineAsyncComponent: typeof import('vue')['defineAsyncComponent'] | ||||||
|  |   const defineComponent: typeof import('vue')['defineComponent'] | ||||||
|  |   const eagerComputed: typeof import('@vueuse/core')['eagerComputed'] | ||||||
|  |   const effectScope: typeof import('vue')['effectScope'] | ||||||
|  |   const extendRef: typeof import('@vueuse/core')['extendRef'] | ||||||
|  |   const getCurrentInstance: typeof import('vue')['getCurrentInstance'] | ||||||
|  |   const getCurrentScope: typeof import('vue')['getCurrentScope'] | ||||||
|  |   const h: typeof import('vue')['h'] | ||||||
|  |   const ignorableWatch: typeof import('@vueuse/core')['ignorableWatch'] | ||||||
|  |   const inject: typeof import('vue')['inject'] | ||||||
|  |   const isDark: typeof import('./src/composables/dark')['isDark'] | ||||||
|  |   const isDefined: typeof import('@vueuse/core')['isDefined'] | ||||||
|  |   const isProxy: typeof import('vue')['isProxy'] | ||||||
|  |   const isReactive: typeof import('vue')['isReactive'] | ||||||
|  |   const isReadonly: typeof import('vue')['isReadonly'] | ||||||
|  |   const isRef: typeof import('vue')['isRef'] | ||||||
|  |   const languages: typeof import('./src/composables/languages')['languages'] | ||||||
|  |   const makeDestructurable: typeof import('@vueuse/core')['makeDestructurable'] | ||||||
|  |   const markRaw: typeof import('vue')['markRaw'] | ||||||
|  |   const nextTick: typeof import('vue')['nextTick'] | ||||||
|  |   const onActivated: typeof import('vue')['onActivated'] | ||||||
|  |   const onBeforeMount: typeof import('vue')['onBeforeMount'] | ||||||
|  |   const onBeforeUnmount: typeof import('vue')['onBeforeUnmount'] | ||||||
|  |   const onBeforeUpdate: typeof import('vue')['onBeforeUpdate'] | ||||||
|  |   const onClickOutside: typeof import('@vueuse/core')['onClickOutside'] | ||||||
|  |   const onDeactivated: typeof import('vue')['onDeactivated'] | ||||||
|  |   const onErrorCaptured: typeof import('vue')['onErrorCaptured'] | ||||||
|  |   const onKeyStroke: typeof import('@vueuse/core')['onKeyStroke'] | ||||||
|  |   const onLongPress: typeof import('@vueuse/core')['onLongPress'] | ||||||
|  |   const onMounted: typeof import('vue')['onMounted'] | ||||||
|  |   const onRenderTracked: typeof import('vue')['onRenderTracked'] | ||||||
|  |   const onRenderTriggered: typeof import('vue')['onRenderTriggered'] | ||||||
|  |   const onScopeDispose: typeof import('vue')['onScopeDispose'] | ||||||
|  |   const onServerPrefetch: typeof import('vue')['onServerPrefetch'] | ||||||
|  |   const onStartTyping: typeof import('@vueuse/core')['onStartTyping'] | ||||||
|  |   const onUnmounted: typeof import('vue')['onUnmounted'] | ||||||
|  |   const onUpdated: typeof import('vue')['onUpdated'] | ||||||
|  |   const pausableWatch: typeof import('@vueuse/core')['pausableWatch'] | ||||||
|  |   const provide: typeof import('vue')['provide'] | ||||||
|  |   const reactify: typeof import('@vueuse/core')['reactify'] | ||||||
|  |   const reactifyObject: typeof import('@vueuse/core')['reactifyObject'] | ||||||
|  |   const reactive: typeof import('vue')['reactive'] | ||||||
|  |   const reactiveComputed: typeof import('@vueuse/core')['reactiveComputed'] | ||||||
|  |   const reactiveOmit: typeof import('@vueuse/core')['reactiveOmit'] | ||||||
|  |   const reactivePick: typeof import('@vueuse/core')['reactivePick'] | ||||||
|  |   const readonly: typeof import('vue')['readonly'] | ||||||
|  |   const ref: typeof import('vue')['ref'] | ||||||
|  |   const refAutoReset: typeof import('@vueuse/core')['refAutoReset'] | ||||||
|  |   const refDebounced: typeof import('@vueuse/core')['refDebounced'] | ||||||
|  |   const refDefault: typeof import('@vueuse/core')['refDefault'] | ||||||
|  |   const refThrottled: typeof import('@vueuse/core')['refThrottled'] | ||||||
|  |   const refWithControl: typeof import('@vueuse/core')['refWithControl'] | ||||||
|  |   const resolveComponent: typeof import('vue')['resolveComponent'] | ||||||
|  |   const resolveRef: typeof import('@vueuse/core')['resolveRef'] | ||||||
|  |   const resolveUnref: typeof import('@vueuse/core')['resolveUnref'] | ||||||
|  |   const shallowReactive: typeof import('vue')['shallowReactive'] | ||||||
|  |   const shallowReadonly: typeof import('vue')['shallowReadonly'] | ||||||
|  |   const shallowRef: typeof import('vue')['shallowRef'] | ||||||
|  |   const syncRef: typeof import('@vueuse/core')['syncRef'] | ||||||
|  |   const syncRefs: typeof import('@vueuse/core')['syncRefs'] | ||||||
|  |   const templateRef: typeof import('@vueuse/core')['templateRef'] | ||||||
|  |   const throttledRef: typeof import('@vueuse/core')['throttledRef'] | ||||||
|  |   const throttledWatch: typeof import('@vueuse/core')['throttledWatch'] | ||||||
|  |   const toRaw: typeof import('vue')['toRaw'] | ||||||
|  |   const toReactive: typeof import('@vueuse/core')['toReactive'] | ||||||
|  |   const toRef: typeof import('vue')['toRef'] | ||||||
|  |   const toRefs: typeof import('vue')['toRefs'] | ||||||
|  |   const toggleDark: typeof import('./src/composables/dark')['toggleDark'] | ||||||
|  |   const triggerRef: typeof import('vue')['triggerRef'] | ||||||
|  |   const tryOnBeforeMount: typeof import('@vueuse/core')['tryOnBeforeMount'] | ||||||
|  |   const tryOnBeforeUnmount: typeof import('@vueuse/core')['tryOnBeforeUnmount'] | ||||||
|  |   const tryOnMounted: typeof import('@vueuse/core')['tryOnMounted'] | ||||||
|  |   const tryOnScopeDispose: typeof import('@vueuse/core')['tryOnScopeDispose'] | ||||||
|  |   const tryOnUnmounted: typeof import('@vueuse/core')['tryOnUnmounted'] | ||||||
|  |   const unref: typeof import('vue')['unref'] | ||||||
|  |   const unrefElement: typeof import('@vueuse/core')['unrefElement'] | ||||||
|  |   const unsecuredCopyToClipboard: typeof import('./src/composables/utils')['unsecuredCopyToClipboard'] | ||||||
|  |   const until: typeof import('@vueuse/core')['until'] | ||||||
|  |   const useActiveElement: typeof import('@vueuse/core')['useActiveElement'] | ||||||
|  |   const useArrayEvery: typeof import('@vueuse/core')['useArrayEvery'] | ||||||
|  |   const useArrayFilter: typeof import('@vueuse/core')['useArrayFilter'] | ||||||
|  |   const useArrayFind: typeof import('@vueuse/core')['useArrayFind'] | ||||||
|  |   const useArrayFindIndex: typeof import('@vueuse/core')['useArrayFindIndex'] | ||||||
|  |   const useArrayJoin: typeof import('@vueuse/core')['useArrayJoin'] | ||||||
|  |   const useArrayMap: typeof import('@vueuse/core')['useArrayMap'] | ||||||
|  |   const useArrayReduce: typeof import('@vueuse/core')['useArrayReduce'] | ||||||
|  |   const useArraySome: typeof import('@vueuse/core')['useArraySome'] | ||||||
|  |   const useAsyncQueue: typeof import('@vueuse/core')['useAsyncQueue'] | ||||||
|  |   const useAsyncState: typeof import('@vueuse/core')['useAsyncState'] | ||||||
|  |   const useAttrs: typeof import('vue')['useAttrs'] | ||||||
|  |   const useBase64: typeof import('@vueuse/core')['useBase64'] | ||||||
|  |   const useBattery: typeof import('@vueuse/core')['useBattery'] | ||||||
|  |   const useBluetooth: typeof import('@vueuse/core')['useBluetooth'] | ||||||
|  |   const useBreakpoints: typeof import('@vueuse/core')['useBreakpoints'] | ||||||
|  |   const useBroadcastChannel: typeof import('@vueuse/core')['useBroadcastChannel'] | ||||||
|  |   const useBrowserLocation: typeof import('@vueuse/core')['useBrowserLocation'] | ||||||
|  |   const useCached: typeof import('@vueuse/core')['useCached'] | ||||||
|  |   const useClipboard: typeof import('@vueuse/core')['useClipboard'] | ||||||
|  |   const useColorMode: typeof import('@vueuse/core')['useColorMode'] | ||||||
|  |   const useConfirmDialog: typeof import('@vueuse/core')['useConfirmDialog'] | ||||||
|  |   const useCounter: typeof import('@vueuse/core')['useCounter'] | ||||||
|  |   const useCssModule: typeof import('vue')['useCssModule'] | ||||||
|  |   const useCssVar: typeof import('@vueuse/core')['useCssVar'] | ||||||
|  |   const useCssVars: typeof import('vue')['useCssVars'] | ||||||
|  |   const useCurrentElement: typeof import('@vueuse/core')['useCurrentElement'] | ||||||
|  |   const useCycleList: typeof import('@vueuse/core')['useCycleList'] | ||||||
|  |   const useDark: typeof import('@vueuse/core')['useDark'] | ||||||
|  |   const useDateFormat: typeof import('@vueuse/core')['useDateFormat'] | ||||||
|  |   const useDebounce: typeof import('@vueuse/core')['useDebounce'] | ||||||
|  |   const useDebounceFn: typeof import('@vueuse/core')['useDebounceFn'] | ||||||
|  |   const useDebouncedRefHistory: typeof import('@vueuse/core')['useDebouncedRefHistory'] | ||||||
|  |   const useDeviceMotion: typeof import('@vueuse/core')['useDeviceMotion'] | ||||||
|  |   const useDeviceOrientation: typeof import('@vueuse/core')['useDeviceOrientation'] | ||||||
|  |   const useDevicePixelRatio: typeof import('@vueuse/core')['useDevicePixelRatio'] | ||||||
|  |   const useDevicesList: typeof import('@vueuse/core')['useDevicesList'] | ||||||
|  |   const useDisplayMedia: typeof import('@vueuse/core')['useDisplayMedia'] | ||||||
|  |   const useDocumentVisibility: typeof import('@vueuse/core')['useDocumentVisibility'] | ||||||
|  |   const useDraggable: typeof import('@vueuse/core')['useDraggable'] | ||||||
|  |   const useDropZone: typeof import('@vueuse/core')['useDropZone'] | ||||||
|  |   const useElementBounding: typeof import('@vueuse/core')['useElementBounding'] | ||||||
|  |   const useElementByPoint: typeof import('@vueuse/core')['useElementByPoint'] | ||||||
|  |   const useElementHover: typeof import('@vueuse/core')['useElementHover'] | ||||||
|  |   const useElementSize: typeof import('@vueuse/core')['useElementSize'] | ||||||
|  |   const useElementVisibility: typeof import('@vueuse/core')['useElementVisibility'] | ||||||
|  |   const useEventBus: typeof import('@vueuse/core')['useEventBus'] | ||||||
|  |   const useEventListener: typeof import('@vueuse/core')['useEventListener'] | ||||||
|  |   const useEventSource: typeof import('@vueuse/core')['useEventSource'] | ||||||
|  |   const useEyeDropper: typeof import('@vueuse/core')['useEyeDropper'] | ||||||
|  |   const useFavicon: typeof import('@vueuse/core')['useFavicon'] | ||||||
|  |   const useFetch: typeof import('@vueuse/core')['useFetch'] | ||||||
|  |   const useFileDialog: typeof import('@vueuse/core')['useFileDialog'] | ||||||
|  |   const useFileSystemAccess: typeof import('@vueuse/core')['useFileSystemAccess'] | ||||||
|  |   const useFocus: typeof import('@vueuse/core')['useFocus'] | ||||||
|  |   const useFocusWithin: typeof import('@vueuse/core')['useFocusWithin'] | ||||||
|  |   const useFps: typeof import('@vueuse/core')['useFps'] | ||||||
|  |   const useFullscreen: typeof import('@vueuse/core')['useFullscreen'] | ||||||
|  |   const useGamepad: typeof import('@vueuse/core')['useGamepad'] | ||||||
|  |   const useGeolocation: typeof import('@vueuse/core')['useGeolocation'] | ||||||
|  |   const useIdle: typeof import('@vueuse/core')['useIdle'] | ||||||
|  |   const useImage: typeof import('@vueuse/core')['useImage'] | ||||||
|  |   const useInfiniteScroll: typeof import('@vueuse/core')['useInfiniteScroll'] | ||||||
|  |   const useIntersectionObserver: typeof import('@vueuse/core')['useIntersectionObserver'] | ||||||
|  |   const useInterval: typeof import('@vueuse/core')['useInterval'] | ||||||
|  |   const useIntervalFn: typeof import('@vueuse/core')['useIntervalFn'] | ||||||
|  |   const useKeyModifier: typeof import('@vueuse/core')['useKeyModifier'] | ||||||
|  |   const useLastChanged: typeof import('@vueuse/core')['useLastChanged'] | ||||||
|  |   const useLocalStorage: typeof import('@vueuse/core')['useLocalStorage'] | ||||||
|  |   const useMagicKeys: typeof import('@vueuse/core')['useMagicKeys'] | ||||||
|  |   const useManualRefHistory: typeof import('@vueuse/core')['useManualRefHistory'] | ||||||
|  |   const useMediaControls: typeof import('@vueuse/core')['useMediaControls'] | ||||||
|  |   const useMediaQuery: typeof import('@vueuse/core')['useMediaQuery'] | ||||||
|  |   const useMemoize: typeof import('@vueuse/core')['useMemoize'] | ||||||
|  |   const useMemory: typeof import('@vueuse/core')['useMemory'] | ||||||
|  |   const useMounted: typeof import('@vueuse/core')['useMounted'] | ||||||
|  |   const useMouse: typeof import('@vueuse/core')['useMouse'] | ||||||
|  |   const useMouseInElement: typeof import('@vueuse/core')['useMouseInElement'] | ||||||
|  |   const useMousePressed: typeof import('@vueuse/core')['useMousePressed'] | ||||||
|  |   const useMutationObserver: typeof import('@vueuse/core')['useMutationObserver'] | ||||||
|  |   const useNavigatorLanguage: typeof import('@vueuse/core')['useNavigatorLanguage'] | ||||||
|  |   const useNetwork: typeof import('@vueuse/core')['useNetwork'] | ||||||
|  |   const useNow: typeof import('@vueuse/core')['useNow'] | ||||||
|  |   const useObjectUrl: typeof import('@vueuse/core')['useObjectUrl'] | ||||||
|  |   const useOffsetPagination: typeof import('@vueuse/core')['useOffsetPagination'] | ||||||
|  |   const useOnline: typeof import('@vueuse/core')['useOnline'] | ||||||
|  |   const usePageLeave: typeof import('@vueuse/core')['usePageLeave'] | ||||||
|  |   const useParallax: typeof import('@vueuse/core')['useParallax'] | ||||||
|  |   const usePermission: typeof import('@vueuse/core')['usePermission'] | ||||||
|  |   const usePointer: typeof import('@vueuse/core')['usePointer'] | ||||||
|  |   const usePointerSwipe: typeof import('@vueuse/core')['usePointerSwipe'] | ||||||
|  |   const usePreferredColorScheme: typeof import('@vueuse/core')['usePreferredColorScheme'] | ||||||
|  |   const usePreferredContrast: typeof import('@vueuse/core')['usePreferredContrast'] | ||||||
|  |   const usePreferredDark: typeof import('@vueuse/core')['usePreferredDark'] | ||||||
|  |   const usePreferredLanguages: typeof import('@vueuse/core')['usePreferredLanguages'] | ||||||
|  |   const usePreferredReducedMotion: typeof import('@vueuse/core')['usePreferredReducedMotion'] | ||||||
|  |   const useRafFn: typeof import('@vueuse/core')['useRafFn'] | ||||||
|  |   const useRefHistory: typeof import('@vueuse/core')['useRefHistory'] | ||||||
|  |   const useResizeObserver: typeof import('@vueuse/core')['useResizeObserver'] | ||||||
|  |   const useRoute: typeof import('vue-router')['useRoute'] | ||||||
|  |   const useRouter: typeof import('vue-router')['useRouter'] | ||||||
|  |   const useScreenOrientation: typeof import('@vueuse/core')['useScreenOrientation'] | ||||||
|  |   const useScreenSafeArea: typeof import('@vueuse/core')['useScreenSafeArea'] | ||||||
|  |   const useScriptTag: typeof import('@vueuse/core')['useScriptTag'] | ||||||
|  |   const useScroll: typeof import('@vueuse/core')['useScroll'] | ||||||
|  |   const useScrollLock: typeof import('@vueuse/core')['useScrollLock'] | ||||||
|  |   const useSessionStorage: typeof import('@vueuse/core')['useSessionStorage'] | ||||||
|  |   const useShare: typeof import('@vueuse/core')['useShare'] | ||||||
|  |   const useSlots: typeof import('vue')['useSlots'] | ||||||
|  |   const useSpeechRecognition: typeof import('@vueuse/core')['useSpeechRecognition'] | ||||||
|  |   const useSpeechSynthesis: typeof import('@vueuse/core')['useSpeechSynthesis'] | ||||||
|  |   const useStepper: typeof import('@vueuse/core')['useStepper'] | ||||||
|  |   const useStorage: typeof import('@vueuse/core')['useStorage'] | ||||||
|  |   const useStorageAsync: typeof import('@vueuse/core')['useStorageAsync'] | ||||||
|  |   const useStyleTag: typeof import('@vueuse/core')['useStyleTag'] | ||||||
|  |   const useSupported: typeof import('@vueuse/core')['useSupported'] | ||||||
|  |   const useSwipe: typeof import('@vueuse/core')['useSwipe'] | ||||||
|  |   const useTemplateRefsList: typeof import('@vueuse/core')['useTemplateRefsList'] | ||||||
|  |   const useTextDirection: typeof import('@vueuse/core')['useTextDirection'] | ||||||
|  |   const useTextSelection: typeof import('@vueuse/core')['useTextSelection'] | ||||||
|  |   const useTextareaAutosize: typeof import('@vueuse/core')['useTextareaAutosize'] | ||||||
|  |   const useThrottle: typeof import('@vueuse/core')['useThrottle'] | ||||||
|  |   const useThrottleFn: typeof import('@vueuse/core')['useThrottleFn'] | ||||||
|  |   const useThrottledRefHistory: typeof import('@vueuse/core')['useThrottledRefHistory'] | ||||||
|  |   const useTimeAgo: typeof import('@vueuse/core')['useTimeAgo'] | ||||||
|  |   const useTimeout: typeof import('@vueuse/core')['useTimeout'] | ||||||
|  |   const useTimeoutFn: typeof import('@vueuse/core')['useTimeoutFn'] | ||||||
|  |   const useTimeoutPoll: typeof import('@vueuse/core')['useTimeoutPoll'] | ||||||
|  |   const useTimestamp: typeof import('@vueuse/core')['useTimestamp'] | ||||||
|  |   const useTitle: typeof import('@vueuse/core')['useTitle'] | ||||||
|  |   const useToNumber: typeof import('@vueuse/core')['useToNumber'] | ||||||
|  |   const useToString: typeof import('@vueuse/core')['useToString'] | ||||||
|  |   const useToggle: typeof import('@vueuse/core')['useToggle'] | ||||||
|  |   const useTransition: typeof import('@vueuse/core')['useTransition'] | ||||||
|  |   const useUrlSearchParams: typeof import('@vueuse/core')['useUrlSearchParams'] | ||||||
|  |   const useUserMedia: typeof import('@vueuse/core')['useUserMedia'] | ||||||
|  |   const useVModel: typeof import('@vueuse/core')['useVModel'] | ||||||
|  |   const useVModels: typeof import('@vueuse/core')['useVModels'] | ||||||
|  |   const useVibrate: typeof import('@vueuse/core')['useVibrate'] | ||||||
|  |   const useVirtualList: typeof import('@vueuse/core')['useVirtualList'] | ||||||
|  |   const useWakeLock: typeof import('@vueuse/core')['useWakeLock'] | ||||||
|  |   const useWebNotification: typeof import('@vueuse/core')['useWebNotification'] | ||||||
|  |   const useWebSocket: typeof import('@vueuse/core')['useWebSocket'] | ||||||
|  |   const useWebWorker: typeof import('@vueuse/core')['useWebWorker'] | ||||||
|  |   const useWebWorkerFn: typeof import('@vueuse/core')['useWebWorkerFn'] | ||||||
|  |   const useWindowFocus: typeof import('@vueuse/core')['useWindowFocus'] | ||||||
|  |   const useWindowScroll: typeof import('@vueuse/core')['useWindowScroll'] | ||||||
|  |   const useWindowSize: typeof import('@vueuse/core')['useWindowSize'] | ||||||
|  |   const watch: typeof import('vue')['watch'] | ||||||
|  |   const watchArray: typeof import('@vueuse/core')['watchArray'] | ||||||
|  |   const watchAtMost: typeof import('@vueuse/core')['watchAtMost'] | ||||||
|  |   const watchDebounced: typeof import('@vueuse/core')['watchDebounced'] | ||||||
|  |   const watchEffect: typeof import('vue')['watchEffect'] | ||||||
|  |   const watchIgnorable: typeof import('@vueuse/core')['watchIgnorable'] | ||||||
|  |   const watchOnce: typeof import('@vueuse/core')['watchOnce'] | ||||||
|  |   const watchPausable: typeof import('@vueuse/core')['watchPausable'] | ||||||
|  |   const watchPostEffect: typeof import('vue')['watchPostEffect'] | ||||||
|  |   const watchSyncEffect: typeof import('vue')['watchSyncEffect'] | ||||||
|  |   const watchThrottled: typeof import('@vueuse/core')['watchThrottled'] | ||||||
|  |   const watchTriggerable: typeof import('@vueuse/core')['watchTriggerable'] | ||||||
|  |   const watchWithFilter: typeof import('@vueuse/core')['watchWithFilter'] | ||||||
|  |   const whenever: typeof import('@vueuse/core')['whenever'] | ||||||
|  | } | ||||||
|  | // for vue template auto import | ||||||
|  | import { UnwrapRef } from 'vue' | ||||||
|  | declare module '@vue/runtime-core' { | ||||||
|  |   interface ComponentCustomProperties { | ||||||
|  |     readonly $$: UnwrapRef<typeof import('vue/macros')['$$']> | ||||||
|  |     readonly $: UnwrapRef<typeof import('vue/macros')['$']> | ||||||
|  |     readonly $computed: UnwrapRef<typeof import('vue/macros')['$computed']> | ||||||
|  |     readonly $customRef: UnwrapRef<typeof import('vue/macros')['$customRef']> | ||||||
|  |     readonly $ref: UnwrapRef<typeof import('vue/macros')['$ref']> | ||||||
|  |     readonly $shallowRef: UnwrapRef<typeof import('vue/macros')['$shallowRef']> | ||||||
|  |     readonly $toRef: UnwrapRef<typeof import('vue/macros')['$toRef']> | ||||||
|  |     readonly EffectScope: UnwrapRef<typeof import('vue')['EffectScope']> | ||||||
|  |     readonly UTC2Local: UnwrapRef<typeof import('./src/composables/utils')['UTC2Local']> | ||||||
|  |     readonly asyncComputed: UnwrapRef<typeof import('@vueuse/core')['asyncComputed']> | ||||||
|  |     readonly autoResetRef: UnwrapRef<typeof import('@vueuse/core')['autoResetRef']> | ||||||
|  |     readonly cmOptions: UnwrapRef<typeof import('./src/composables/config')['cmOptions']> | ||||||
|  |     readonly computed: UnwrapRef<typeof import('vue')['computed']> | ||||||
|  |     readonly computedAsync: UnwrapRef<typeof import('@vueuse/core')['computedAsync']> | ||||||
|  |     readonly computedEager: UnwrapRef<typeof import('@vueuse/core')['computedEager']> | ||||||
|  |     readonly computedInject: UnwrapRef<typeof import('@vueuse/core')['computedInject']> | ||||||
|  |     readonly computedWithControl: UnwrapRef<typeof import('@vueuse/core')['computedWithControl']> | ||||||
|  |     readonly controlledComputed: UnwrapRef<typeof import('@vueuse/core')['controlledComputed']> | ||||||
|  |     readonly controlledRef: UnwrapRef<typeof import('@vueuse/core')['controlledRef']> | ||||||
|  |     readonly createApp: UnwrapRef<typeof import('vue')['createApp']> | ||||||
|  |     readonly createEventHook: UnwrapRef<typeof import('@vueuse/core')['createEventHook']> | ||||||
|  |     readonly createGlobalState: UnwrapRef<typeof import('@vueuse/core')['createGlobalState']> | ||||||
|  |     readonly createInjectionState: UnwrapRef<typeof import('@vueuse/core')['createInjectionState']> | ||||||
|  |     readonly createReactiveFn: UnwrapRef<typeof import('@vueuse/core')['createReactiveFn']> | ||||||
|  |     readonly createSharedComposable: UnwrapRef<typeof import('@vueuse/core')['createSharedComposable']> | ||||||
|  |     readonly createUnrefFn: UnwrapRef<typeof import('@vueuse/core')['createUnrefFn']> | ||||||
|  |     readonly customRef: UnwrapRef<typeof import('vue')['customRef']> | ||||||
|  |     readonly debouncedRef: UnwrapRef<typeof import('@vueuse/core')['debouncedRef']> | ||||||
|  |     readonly debouncedWatch: UnwrapRef<typeof import('@vueuse/core')['debouncedWatch']> | ||||||
|  |     readonly defineAsyncComponent: UnwrapRef<typeof import('vue')['defineAsyncComponent']> | ||||||
|  |     readonly defineComponent: UnwrapRef<typeof import('vue')['defineComponent']> | ||||||
|  |     readonly eagerComputed: UnwrapRef<typeof import('@vueuse/core')['eagerComputed']> | ||||||
|  |     readonly effectScope: UnwrapRef<typeof import('vue')['effectScope']> | ||||||
|  |     readonly extendRef: UnwrapRef<typeof import('@vueuse/core')['extendRef']> | ||||||
|  |     readonly getCurrentInstance: UnwrapRef<typeof import('vue')['getCurrentInstance']> | ||||||
|  |     readonly getCurrentScope: UnwrapRef<typeof import('vue')['getCurrentScope']> | ||||||
|  |     readonly h: UnwrapRef<typeof import('vue')['h']> | ||||||
|  |     readonly ignorableWatch: UnwrapRef<typeof import('@vueuse/core')['ignorableWatch']> | ||||||
|  |     readonly inject: UnwrapRef<typeof import('vue')['inject']> | ||||||
|  |     readonly isDark: UnwrapRef<typeof import('./src/composables/dark')['isDark']> | ||||||
|  |     readonly isDefined: UnwrapRef<typeof import('@vueuse/core')['isDefined']> | ||||||
|  |     readonly isProxy: UnwrapRef<typeof import('vue')['isProxy']> | ||||||
|  |     readonly isReactive: UnwrapRef<typeof import('vue')['isReactive']> | ||||||
|  |     readonly isReadonly: UnwrapRef<typeof import('vue')['isReadonly']> | ||||||
|  |     readonly isRef: UnwrapRef<typeof import('vue')['isRef']> | ||||||
|  |     readonly languages: UnwrapRef<typeof import('./src/composables/languages')['languages']> | ||||||
|  |     readonly makeDestructurable: UnwrapRef<typeof import('@vueuse/core')['makeDestructurable']> | ||||||
|  |     readonly markRaw: UnwrapRef<typeof import('vue')['markRaw']> | ||||||
|  |     readonly nextTick: UnwrapRef<typeof import('vue')['nextTick']> | ||||||
|  |     readonly onActivated: UnwrapRef<typeof import('vue')['onActivated']> | ||||||
|  |     readonly onBeforeMount: UnwrapRef<typeof import('vue')['onBeforeMount']> | ||||||
|  |     readonly onBeforeUnmount: UnwrapRef<typeof import('vue')['onBeforeUnmount']> | ||||||
|  |     readonly onBeforeUpdate: UnwrapRef<typeof import('vue')['onBeforeUpdate']> | ||||||
|  |     readonly onClickOutside: UnwrapRef<typeof import('@vueuse/core')['onClickOutside']> | ||||||
|  |     readonly onDeactivated: UnwrapRef<typeof import('vue')['onDeactivated']> | ||||||
|  |     readonly onErrorCaptured: UnwrapRef<typeof import('vue')['onErrorCaptured']> | ||||||
|  |     readonly onKeyStroke: UnwrapRef<typeof import('@vueuse/core')['onKeyStroke']> | ||||||
|  |     readonly onLongPress: UnwrapRef<typeof import('@vueuse/core')['onLongPress']> | ||||||
|  |     readonly onMounted: UnwrapRef<typeof import('vue')['onMounted']> | ||||||
|  |     readonly onRenderTracked: UnwrapRef<typeof import('vue')['onRenderTracked']> | ||||||
|  |     readonly onRenderTriggered: UnwrapRef<typeof import('vue')['onRenderTriggered']> | ||||||
|  |     readonly onScopeDispose: UnwrapRef<typeof import('vue')['onScopeDispose']> | ||||||
|  |     readonly onServerPrefetch: UnwrapRef<typeof import('vue')['onServerPrefetch']> | ||||||
|  |     readonly onStartTyping: UnwrapRef<typeof import('@vueuse/core')['onStartTyping']> | ||||||
|  |     readonly onUnmounted: UnwrapRef<typeof import('vue')['onUnmounted']> | ||||||
|  |     readonly onUpdated: UnwrapRef<typeof import('vue')['onUpdated']> | ||||||
|  |     readonly pausableWatch: UnwrapRef<typeof import('@vueuse/core')['pausableWatch']> | ||||||
|  |     readonly provide: UnwrapRef<typeof import('vue')['provide']> | ||||||
|  |     readonly reactify: UnwrapRef<typeof import('@vueuse/core')['reactify']> | ||||||
|  |     readonly reactifyObject: UnwrapRef<typeof import('@vueuse/core')['reactifyObject']> | ||||||
|  |     readonly reactive: UnwrapRef<typeof import('vue')['reactive']> | ||||||
|  |     readonly reactiveComputed: UnwrapRef<typeof import('@vueuse/core')['reactiveComputed']> | ||||||
|  |     readonly reactiveOmit: UnwrapRef<typeof import('@vueuse/core')['reactiveOmit']> | ||||||
|  |     readonly reactivePick: UnwrapRef<typeof import('@vueuse/core')['reactivePick']> | ||||||
|  |     readonly readonly: UnwrapRef<typeof import('vue')['readonly']> | ||||||
|  |     readonly ref: UnwrapRef<typeof import('vue')['ref']> | ||||||
|  |     readonly refAutoReset: UnwrapRef<typeof import('@vueuse/core')['refAutoReset']> | ||||||
|  |     readonly refDebounced: UnwrapRef<typeof import('@vueuse/core')['refDebounced']> | ||||||
|  |     readonly refDefault: UnwrapRef<typeof import('@vueuse/core')['refDefault']> | ||||||
|  |     readonly refThrottled: UnwrapRef<typeof import('@vueuse/core')['refThrottled']> | ||||||
|  |     readonly refWithControl: UnwrapRef<typeof import('@vueuse/core')['refWithControl']> | ||||||
|  |     readonly resolveComponent: UnwrapRef<typeof import('vue')['resolveComponent']> | ||||||
|  |     readonly resolveRef: UnwrapRef<typeof import('@vueuse/core')['resolveRef']> | ||||||
|  |     readonly resolveUnref: UnwrapRef<typeof import('@vueuse/core')['resolveUnref']> | ||||||
|  |     readonly shallowReactive: UnwrapRef<typeof import('vue')['shallowReactive']> | ||||||
|  |     readonly shallowReadonly: UnwrapRef<typeof import('vue')['shallowReadonly']> | ||||||
|  |     readonly shallowRef: UnwrapRef<typeof import('vue')['shallowRef']> | ||||||
|  |     readonly syncRef: UnwrapRef<typeof import('@vueuse/core')['syncRef']> | ||||||
|  |     readonly syncRefs: UnwrapRef<typeof import('@vueuse/core')['syncRefs']> | ||||||
|  |     readonly templateRef: UnwrapRef<typeof import('@vueuse/core')['templateRef']> | ||||||
|  |     readonly throttledRef: UnwrapRef<typeof import('@vueuse/core')['throttledRef']> | ||||||
|  |     readonly throttledWatch: UnwrapRef<typeof import('@vueuse/core')['throttledWatch']> | ||||||
|  |     readonly toRaw: UnwrapRef<typeof import('vue')['toRaw']> | ||||||
|  |     readonly toReactive: UnwrapRef<typeof import('@vueuse/core')['toReactive']> | ||||||
|  |     readonly toRef: UnwrapRef<typeof import('vue')['toRef']> | ||||||
|  |     readonly toRefs: UnwrapRef<typeof import('vue')['toRefs']> | ||||||
|  |     readonly toggleDark: UnwrapRef<typeof import('./src/composables/dark')['toggleDark']> | ||||||
|  |     readonly triggerRef: UnwrapRef<typeof import('vue')['triggerRef']> | ||||||
|  |     readonly tryOnBeforeMount: UnwrapRef<typeof import('@vueuse/core')['tryOnBeforeMount']> | ||||||
|  |     readonly tryOnBeforeUnmount: UnwrapRef<typeof import('@vueuse/core')['tryOnBeforeUnmount']> | ||||||
|  |     readonly tryOnMounted: UnwrapRef<typeof import('@vueuse/core')['tryOnMounted']> | ||||||
|  |     readonly tryOnScopeDispose: UnwrapRef<typeof import('@vueuse/core')['tryOnScopeDispose']> | ||||||
|  |     readonly tryOnUnmounted: UnwrapRef<typeof import('@vueuse/core')['tryOnUnmounted']> | ||||||
|  |     readonly unref: UnwrapRef<typeof import('vue')['unref']> | ||||||
|  |     readonly unrefElement: UnwrapRef<typeof import('@vueuse/core')['unrefElement']> | ||||||
|  |     readonly unsecuredCopyToClipboard: UnwrapRef<typeof import('./src/composables/utils')['unsecuredCopyToClipboard']> | ||||||
|  |     readonly until: UnwrapRef<typeof import('@vueuse/core')['until']> | ||||||
|  |     readonly useActiveElement: UnwrapRef<typeof import('@vueuse/core')['useActiveElement']> | ||||||
|  |     readonly useArrayEvery: UnwrapRef<typeof import('@vueuse/core')['useArrayEvery']> | ||||||
|  |     readonly useArrayFilter: UnwrapRef<typeof import('@vueuse/core')['useArrayFilter']> | ||||||
|  |     readonly useArrayFind: UnwrapRef<typeof import('@vueuse/core')['useArrayFind']> | ||||||
|  |     readonly useArrayFindIndex: UnwrapRef<typeof import('@vueuse/core')['useArrayFindIndex']> | ||||||
|  |     readonly useArrayJoin: UnwrapRef<typeof import('@vueuse/core')['useArrayJoin']> | ||||||
|  |     readonly useArrayMap: UnwrapRef<typeof import('@vueuse/core')['useArrayMap']> | ||||||
|  |     readonly useArrayReduce: UnwrapRef<typeof import('@vueuse/core')['useArrayReduce']> | ||||||
|  |     readonly useArraySome: UnwrapRef<typeof import('@vueuse/core')['useArraySome']> | ||||||
|  |     readonly useAsyncQueue: UnwrapRef<typeof import('@vueuse/core')['useAsyncQueue']> | ||||||
|  |     readonly useAsyncState: UnwrapRef<typeof import('@vueuse/core')['useAsyncState']> | ||||||
|  |     readonly useAttrs: UnwrapRef<typeof import('vue')['useAttrs']> | ||||||
|  |     readonly useBase64: UnwrapRef<typeof import('@vueuse/core')['useBase64']> | ||||||
|  |     readonly useBattery: UnwrapRef<typeof import('@vueuse/core')['useBattery']> | ||||||
|  |     readonly useBluetooth: UnwrapRef<typeof import('@vueuse/core')['useBluetooth']> | ||||||
|  |     readonly useBreakpoints: UnwrapRef<typeof import('@vueuse/core')['useBreakpoints']> | ||||||
|  |     readonly useBroadcastChannel: UnwrapRef<typeof import('@vueuse/core')['useBroadcastChannel']> | ||||||
|  |     readonly useBrowserLocation: UnwrapRef<typeof import('@vueuse/core')['useBrowserLocation']> | ||||||
|  |     readonly useCached: UnwrapRef<typeof import('@vueuse/core')['useCached']> | ||||||
|  |     readonly useClipboard: UnwrapRef<typeof import('@vueuse/core')['useClipboard']> | ||||||
|  |     readonly useColorMode: UnwrapRef<typeof import('@vueuse/core')['useColorMode']> | ||||||
|  |     readonly useConfirmDialog: UnwrapRef<typeof import('@vueuse/core')['useConfirmDialog']> | ||||||
|  |     readonly useCounter: UnwrapRef<typeof import('@vueuse/core')['useCounter']> | ||||||
|  |     readonly useCssModule: UnwrapRef<typeof import('vue')['useCssModule']> | ||||||
|  |     readonly useCssVar: UnwrapRef<typeof import('@vueuse/core')['useCssVar']> | ||||||
|  |     readonly useCssVars: UnwrapRef<typeof import('vue')['useCssVars']> | ||||||
|  |     readonly useCurrentElement: UnwrapRef<typeof import('@vueuse/core')['useCurrentElement']> | ||||||
|  |     readonly useCycleList: UnwrapRef<typeof import('@vueuse/core')['useCycleList']> | ||||||
|  |     readonly useDark: UnwrapRef<typeof import('@vueuse/core')['useDark']> | ||||||
|  |     readonly useDateFormat: UnwrapRef<typeof import('@vueuse/core')['useDateFormat']> | ||||||
|  |     readonly useDebounce: UnwrapRef<typeof import('@vueuse/core')['useDebounce']> | ||||||
|  |     readonly useDebounceFn: UnwrapRef<typeof import('@vueuse/core')['useDebounceFn']> | ||||||
|  |     readonly useDebouncedRefHistory: UnwrapRef<typeof import('@vueuse/core')['useDebouncedRefHistory']> | ||||||
|  |     readonly useDeviceMotion: UnwrapRef<typeof import('@vueuse/core')['useDeviceMotion']> | ||||||
|  |     readonly useDeviceOrientation: UnwrapRef<typeof import('@vueuse/core')['useDeviceOrientation']> | ||||||
|  |     readonly useDevicePixelRatio: UnwrapRef<typeof import('@vueuse/core')['useDevicePixelRatio']> | ||||||
|  |     readonly useDevicesList: UnwrapRef<typeof import('@vueuse/core')['useDevicesList']> | ||||||
|  |     readonly useDisplayMedia: UnwrapRef<typeof import('@vueuse/core')['useDisplayMedia']> | ||||||
|  |     readonly useDocumentVisibility: UnwrapRef<typeof import('@vueuse/core')['useDocumentVisibility']> | ||||||
|  |     readonly useDraggable: UnwrapRef<typeof import('@vueuse/core')['useDraggable']> | ||||||
|  |     readonly useDropZone: UnwrapRef<typeof import('@vueuse/core')['useDropZone']> | ||||||
|  |     readonly useElementBounding: UnwrapRef<typeof import('@vueuse/core')['useElementBounding']> | ||||||
|  |     readonly useElementByPoint: UnwrapRef<typeof import('@vueuse/core')['useElementByPoint']> | ||||||
|  |     readonly useElementHover: UnwrapRef<typeof import('@vueuse/core')['useElementHover']> | ||||||
|  |     readonly useElementSize: UnwrapRef<typeof import('@vueuse/core')['useElementSize']> | ||||||
|  |     readonly useElementVisibility: UnwrapRef<typeof import('@vueuse/core')['useElementVisibility']> | ||||||
|  |     readonly useEventBus: UnwrapRef<typeof import('@vueuse/core')['useEventBus']> | ||||||
|  |     readonly useEventListener: UnwrapRef<typeof import('@vueuse/core')['useEventListener']> | ||||||
|  |     readonly useEventSource: UnwrapRef<typeof import('@vueuse/core')['useEventSource']> | ||||||
|  |     readonly useEyeDropper: UnwrapRef<typeof import('@vueuse/core')['useEyeDropper']> | ||||||
|  |     readonly useFavicon: UnwrapRef<typeof import('@vueuse/core')['useFavicon']> | ||||||
|  |     readonly useFetch: UnwrapRef<typeof import('@vueuse/core')['useFetch']> | ||||||
|  |     readonly useFileDialog: UnwrapRef<typeof import('@vueuse/core')['useFileDialog']> | ||||||
|  |     readonly useFileSystemAccess: UnwrapRef<typeof import('@vueuse/core')['useFileSystemAccess']> | ||||||
|  |     readonly useFocus: UnwrapRef<typeof import('@vueuse/core')['useFocus']> | ||||||
|  |     readonly useFocusWithin: UnwrapRef<typeof import('@vueuse/core')['useFocusWithin']> | ||||||
|  |     readonly useFps: UnwrapRef<typeof import('@vueuse/core')['useFps']> | ||||||
|  |     readonly useFullscreen: UnwrapRef<typeof import('@vueuse/core')['useFullscreen']> | ||||||
|  |     readonly useGamepad: UnwrapRef<typeof import('@vueuse/core')['useGamepad']> | ||||||
|  |     readonly useGeolocation: UnwrapRef<typeof import('@vueuse/core')['useGeolocation']> | ||||||
|  |     readonly useIdle: UnwrapRef<typeof import('@vueuse/core')['useIdle']> | ||||||
|  |     readonly useImage: UnwrapRef<typeof import('@vueuse/core')['useImage']> | ||||||
|  |     readonly useInfiniteScroll: UnwrapRef<typeof import('@vueuse/core')['useInfiniteScroll']> | ||||||
|  |     readonly useIntersectionObserver: UnwrapRef<typeof import('@vueuse/core')['useIntersectionObserver']> | ||||||
|  |     readonly useInterval: UnwrapRef<typeof import('@vueuse/core')['useInterval']> | ||||||
|  |     readonly useIntervalFn: UnwrapRef<typeof import('@vueuse/core')['useIntervalFn']> | ||||||
|  |     readonly useKeyModifier: UnwrapRef<typeof import('@vueuse/core')['useKeyModifier']> | ||||||
|  |     readonly useLastChanged: UnwrapRef<typeof import('@vueuse/core')['useLastChanged']> | ||||||
|  |     readonly useLocalStorage: UnwrapRef<typeof import('@vueuse/core')['useLocalStorage']> | ||||||
|  |     readonly useMagicKeys: UnwrapRef<typeof import('@vueuse/core')['useMagicKeys']> | ||||||
|  |     readonly useManualRefHistory: UnwrapRef<typeof import('@vueuse/core')['useManualRefHistory']> | ||||||
|  |     readonly useMediaControls: UnwrapRef<typeof import('@vueuse/core')['useMediaControls']> | ||||||
|  |     readonly useMediaQuery: UnwrapRef<typeof import('@vueuse/core')['useMediaQuery']> | ||||||
|  |     readonly useMemoize: UnwrapRef<typeof import('@vueuse/core')['useMemoize']> | ||||||
|  |     readonly useMemory: UnwrapRef<typeof import('@vueuse/core')['useMemory']> | ||||||
|  |     readonly useMounted: UnwrapRef<typeof import('@vueuse/core')['useMounted']> | ||||||
|  |     readonly useMouse: UnwrapRef<typeof import('@vueuse/core')['useMouse']> | ||||||
|  |     readonly useMouseInElement: UnwrapRef<typeof import('@vueuse/core')['useMouseInElement']> | ||||||
|  |     readonly useMousePressed: UnwrapRef<typeof import('@vueuse/core')['useMousePressed']> | ||||||
|  |     readonly useMutationObserver: UnwrapRef<typeof import('@vueuse/core')['useMutationObserver']> | ||||||
|  |     readonly useNavigatorLanguage: UnwrapRef<typeof import('@vueuse/core')['useNavigatorLanguage']> | ||||||
|  |     readonly useNetwork: UnwrapRef<typeof import('@vueuse/core')['useNetwork']> | ||||||
|  |     readonly useNow: UnwrapRef<typeof import('@vueuse/core')['useNow']> | ||||||
|  |     readonly useObjectUrl: UnwrapRef<typeof import('@vueuse/core')['useObjectUrl']> | ||||||
|  |     readonly useOffsetPagination: UnwrapRef<typeof import('@vueuse/core')['useOffsetPagination']> | ||||||
|  |     readonly useOnline: UnwrapRef<typeof import('@vueuse/core')['useOnline']> | ||||||
|  |     readonly usePageLeave: UnwrapRef<typeof import('@vueuse/core')['usePageLeave']> | ||||||
|  |     readonly useParallax: UnwrapRef<typeof import('@vueuse/core')['useParallax']> | ||||||
|  |     readonly usePermission: UnwrapRef<typeof import('@vueuse/core')['usePermission']> | ||||||
|  |     readonly usePointer: UnwrapRef<typeof import('@vueuse/core')['usePointer']> | ||||||
|  |     readonly usePointerSwipe: UnwrapRef<typeof import('@vueuse/core')['usePointerSwipe']> | ||||||
|  |     readonly usePreferredColorScheme: UnwrapRef<typeof import('@vueuse/core')['usePreferredColorScheme']> | ||||||
|  |     readonly usePreferredContrast: UnwrapRef<typeof import('@vueuse/core')['usePreferredContrast']> | ||||||
|  |     readonly usePreferredDark: UnwrapRef<typeof import('@vueuse/core')['usePreferredDark']> | ||||||
|  |     readonly usePreferredLanguages: UnwrapRef<typeof import('@vueuse/core')['usePreferredLanguages']> | ||||||
|  |     readonly usePreferredReducedMotion: UnwrapRef<typeof import('@vueuse/core')['usePreferredReducedMotion']> | ||||||
|  |     readonly useRafFn: UnwrapRef<typeof import('@vueuse/core')['useRafFn']> | ||||||
|  |     readonly useRefHistory: UnwrapRef<typeof import('@vueuse/core')['useRefHistory']> | ||||||
|  |     readonly useResizeObserver: UnwrapRef<typeof import('@vueuse/core')['useResizeObserver']> | ||||||
|  |     readonly useRoute: UnwrapRef<typeof import('vue-router')['useRoute']> | ||||||
|  |     readonly useRouter: UnwrapRef<typeof import('vue-router')['useRouter']> | ||||||
|  |     readonly useScreenOrientation: UnwrapRef<typeof import('@vueuse/core')['useScreenOrientation']> | ||||||
|  |     readonly useScreenSafeArea: UnwrapRef<typeof import('@vueuse/core')['useScreenSafeArea']> | ||||||
|  |     readonly useScriptTag: UnwrapRef<typeof import('@vueuse/core')['useScriptTag']> | ||||||
|  |     readonly useScroll: UnwrapRef<typeof import('@vueuse/core')['useScroll']> | ||||||
|  |     readonly useScrollLock: UnwrapRef<typeof import('@vueuse/core')['useScrollLock']> | ||||||
|  |     readonly useSessionStorage: UnwrapRef<typeof import('@vueuse/core')['useSessionStorage']> | ||||||
|  |     readonly useShare: UnwrapRef<typeof import('@vueuse/core')['useShare']> | ||||||
|  |     readonly useSlots: UnwrapRef<typeof import('vue')['useSlots']> | ||||||
|  |     readonly useSpeechRecognition: UnwrapRef<typeof import('@vueuse/core')['useSpeechRecognition']> | ||||||
|  |     readonly useSpeechSynthesis: UnwrapRef<typeof import('@vueuse/core')['useSpeechSynthesis']> | ||||||
|  |     readonly useStepper: UnwrapRef<typeof import('@vueuse/core')['useStepper']> | ||||||
|  |     readonly useStorage: UnwrapRef<typeof import('@vueuse/core')['useStorage']> | ||||||
|  |     readonly useStorageAsync: UnwrapRef<typeof import('@vueuse/core')['useStorageAsync']> | ||||||
|  |     readonly useStyleTag: UnwrapRef<typeof import('@vueuse/core')['useStyleTag']> | ||||||
|  |     readonly useSupported: UnwrapRef<typeof import('@vueuse/core')['useSupported']> | ||||||
|  |     readonly useSwipe: UnwrapRef<typeof import('@vueuse/core')['useSwipe']> | ||||||
|  |     readonly useTemplateRefsList: UnwrapRef<typeof import('@vueuse/core')['useTemplateRefsList']> | ||||||
|  |     readonly useTextDirection: UnwrapRef<typeof import('@vueuse/core')['useTextDirection']> | ||||||
|  |     readonly useTextSelection: UnwrapRef<typeof import('@vueuse/core')['useTextSelection']> | ||||||
|  |     readonly useTextareaAutosize: UnwrapRef<typeof import('@vueuse/core')['useTextareaAutosize']> | ||||||
|  |     readonly useThrottle: UnwrapRef<typeof import('@vueuse/core')['useThrottle']> | ||||||
|  |     readonly useThrottleFn: UnwrapRef<typeof import('@vueuse/core')['useThrottleFn']> | ||||||
|  |     readonly useThrottledRefHistory: UnwrapRef<typeof import('@vueuse/core')['useThrottledRefHistory']> | ||||||
|  |     readonly useTimeAgo: UnwrapRef<typeof import('@vueuse/core')['useTimeAgo']> | ||||||
|  |     readonly useTimeout: UnwrapRef<typeof import('@vueuse/core')['useTimeout']> | ||||||
|  |     readonly useTimeoutFn: UnwrapRef<typeof import('@vueuse/core')['useTimeoutFn']> | ||||||
|  |     readonly useTimeoutPoll: UnwrapRef<typeof import('@vueuse/core')['useTimeoutPoll']> | ||||||
|  |     readonly useTimestamp: UnwrapRef<typeof import('@vueuse/core')['useTimestamp']> | ||||||
|  |     readonly useTitle: UnwrapRef<typeof import('@vueuse/core')['useTitle']> | ||||||
|  |     readonly useToNumber: UnwrapRef<typeof import('@vueuse/core')['useToNumber']> | ||||||
|  |     readonly useToString: UnwrapRef<typeof import('@vueuse/core')['useToString']> | ||||||
|  |     readonly useToggle: UnwrapRef<typeof import('@vueuse/core')['useToggle']> | ||||||
|  |     readonly useTransition: UnwrapRef<typeof import('@vueuse/core')['useTransition']> | ||||||
|  |     readonly useUrlSearchParams: UnwrapRef<typeof import('@vueuse/core')['useUrlSearchParams']> | ||||||
|  |     readonly useUserMedia: UnwrapRef<typeof import('@vueuse/core')['useUserMedia']> | ||||||
|  |     readonly useVModel: UnwrapRef<typeof import('@vueuse/core')['useVModel']> | ||||||
|  |     readonly useVModels: UnwrapRef<typeof import('@vueuse/core')['useVModels']> | ||||||
|  |     readonly useVibrate: UnwrapRef<typeof import('@vueuse/core')['useVibrate']> | ||||||
|  |     readonly useVirtualList: UnwrapRef<typeof import('@vueuse/core')['useVirtualList']> | ||||||
|  |     readonly useWakeLock: UnwrapRef<typeof import('@vueuse/core')['useWakeLock']> | ||||||
|  |     readonly useWebNotification: UnwrapRef<typeof import('@vueuse/core')['useWebNotification']> | ||||||
|  |     readonly useWebSocket: UnwrapRef<typeof import('@vueuse/core')['useWebSocket']> | ||||||
|  |     readonly useWebWorker: UnwrapRef<typeof import('@vueuse/core')['useWebWorker']> | ||||||
|  |     readonly useWebWorkerFn: UnwrapRef<typeof import('@vueuse/core')['useWebWorkerFn']> | ||||||
|  |     readonly useWindowFocus: UnwrapRef<typeof import('@vueuse/core')['useWindowFocus']> | ||||||
|  |     readonly useWindowScroll: UnwrapRef<typeof import('@vueuse/core')['useWindowScroll']> | ||||||
|  |     readonly useWindowSize: UnwrapRef<typeof import('@vueuse/core')['useWindowSize']> | ||||||
|  |     readonly watch: UnwrapRef<typeof import('vue')['watch']> | ||||||
|  |     readonly watchArray: UnwrapRef<typeof import('@vueuse/core')['watchArray']> | ||||||
|  |     readonly watchAtMost: UnwrapRef<typeof import('@vueuse/core')['watchAtMost']> | ||||||
|  |     readonly watchDebounced: UnwrapRef<typeof import('@vueuse/core')['watchDebounced']> | ||||||
|  |     readonly watchEffect: UnwrapRef<typeof import('vue')['watchEffect']> | ||||||
|  |     readonly watchIgnorable: UnwrapRef<typeof import('@vueuse/core')['watchIgnorable']> | ||||||
|  |     readonly watchOnce: UnwrapRef<typeof import('@vueuse/core')['watchOnce']> | ||||||
|  |     readonly watchPausable: UnwrapRef<typeof import('@vueuse/core')['watchPausable']> | ||||||
|  |     readonly watchPostEffect: UnwrapRef<typeof import('vue')['watchPostEffect']> | ||||||
|  |     readonly watchSyncEffect: UnwrapRef<typeof import('vue')['watchSyncEffect']> | ||||||
|  |     readonly watchThrottled: UnwrapRef<typeof import('@vueuse/core')['watchThrottled']> | ||||||
|  |     readonly watchTriggerable: UnwrapRef<typeof import('@vueuse/core')['watchTriggerable']> | ||||||
|  |     readonly watchWithFilter: UnwrapRef<typeof import('@vueuse/core')['watchWithFilter']> | ||||||
|  |     readonly whenever: UnwrapRef<typeof import('@vueuse/core')['whenever']> | ||||||
|  |   } | ||||||
|  | } | ||||||
							
								
								
									
										16
									
								
								vue-golang-mysql/web/components.d.ts
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								vue-golang-mysql/web/components.d.ts
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,16 @@ | |||||||
|  | // generated by unplugin-vue-components | ||||||
|  | // We suggest you to commit this file into source control | ||||||
|  | // Read more: https://github.com/vuejs/core/pull/3399 | ||||||
|  | import '@vue/runtime-core' | ||||||
|  |  | ||||||
|  | export {} | ||||||
|  |  | ||||||
|  | declare module '@vue/runtime-core' { | ||||||
|  |   export interface GlobalComponents { | ||||||
|  |     CodeEditor: typeof import('./src/components/CodeEditor.vue')['default'] | ||||||
|  |     Footer: typeof import('./src/components/Footer.vue')['default'] | ||||||
|  |     Header: typeof import('./src/components/Header.vue')['default'] | ||||||
|  |     RouterLink: typeof import('vue-router')['RouterLink'] | ||||||
|  |     RouterView: typeof import('vue-router')['RouterView'] | ||||||
|  |   } | ||||||
|  | } | ||||||
							
								
								
									
										24
									
								
								vue-golang-mysql/web/index.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								vue-golang-mysql/web/index.html
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,24 @@ | |||||||
|  | <!DOCTYPE html> | ||||||
|  | <html lang="en"> | ||||||
|  | <head> | ||||||
|  |   <meta charset="UTF-8"> | ||||||
|  |   <meta name="viewport" content="width=device-width, initial-scale=1.0"> | ||||||
|  |   <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png"> | ||||||
|  |   <link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png"> | ||||||
|  |   <link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png"> | ||||||
|  |   <title>Code Paste</title> | ||||||
|  |   <meta name="description" content="Opinionated Vite Starter Template"> | ||||||
|  | </head> | ||||||
|  | <body class="font-sans dark:text-white dark:bg-hex-121212"> | ||||||
|  |   <div id="app"></div> | ||||||
|  |   <script> | ||||||
|  |     (function() { | ||||||
|  |       const prefersDark = window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches | ||||||
|  |       const setting = localStorage.getItem('color-schema') || 'auto' | ||||||
|  |       if (setting === 'dark' || (prefersDark && setting !== 'light')) | ||||||
|  |         document.documentElement.classList.toggle('dark', true) | ||||||
|  |     })() | ||||||
|  |   </script> | ||||||
|  |   <script type="module" src="/src/main.ts"></script> | ||||||
|  | </body> | ||||||
|  | </html> | ||||||
							
								
								
									
										12
									
								
								vue-golang-mysql/web/netlify.toml
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										12
									
								
								vue-golang-mysql/web/netlify.toml
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,12 @@ | |||||||
|  | [build.environment] | ||||||
|  |   NPM_FLAGS = "--version" | ||||||
|  |   NODE_VERSION = "16" | ||||||
|  |  | ||||||
|  | [build] | ||||||
|  |   publish = "dist" | ||||||
|  |   command = "npx pnpm i --store=node_modules/.pnpm-store && npx pnpm run build" | ||||||
|  |  | ||||||
|  | [[redirects]] | ||||||
|  |   from = "/*" | ||||||
|  |   to = "/index.html" | ||||||
|  |   status = 200 | ||||||
							
								
								
									
										46
									
								
								vue-golang-mysql/web/package.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										46
									
								
								vue-golang-mysql/web/package.json
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,46 @@ | |||||||
|  | { | ||||||
|  |   "private": true, | ||||||
|  |   "packageManager": "pnpm@7.4.0", | ||||||
|  |   "scripts": { | ||||||
|  |     "build": "vite build", | ||||||
|  |     "dev": "vite --port 3333 --open", | ||||||
|  |     "lint": "eslint", | ||||||
|  |     "typecheck": "vue-tsc --noEmit", | ||||||
|  |     "preview": "vite preview", | ||||||
|  |     "test": "vitest" | ||||||
|  |   }, | ||||||
|  |   "dependencies": { | ||||||
|  |     "@codemirror/lang-cpp": "^6.0.1", | ||||||
|  |     "@codemirror/lang-html": "^6.1.0", | ||||||
|  |     "@codemirror/lang-java": "^6.0.0", | ||||||
|  |     "@codemirror/lang-javascript": "^6.0.2", | ||||||
|  |     "@codemirror/lang-json": "^6.0.0", | ||||||
|  |     "@codemirror/lang-markdown": "^6.0.1", | ||||||
|  |     "@codemirror/lang-python": "^6.0.1", | ||||||
|  |     "@codemirror/lang-rust": "^6.0.0", | ||||||
|  |     "@codemirror/theme-one-dark": "^6.0.0", | ||||||
|  |     "@vueuse/core": "^9.1.1", | ||||||
|  |     "codemirror": "^6.0.1", | ||||||
|  |     "vue": "^3.2.38", | ||||||
|  |     "vue-codemirror": "^6.1.1", | ||||||
|  |     "vue-router": "^4.1.5" | ||||||
|  |   }, | ||||||
|  |   "devDependencies": { | ||||||
|  |     "@iconify-json/carbon": "^1.1.7", | ||||||
|  |     "@types/node": "^18.7.14", | ||||||
|  |     "@unocss/reset": "^0.45.13", | ||||||
|  |     "@vitejs/plugin-vue": "^2.3.4", | ||||||
|  |     "@vue/test-utils": "^2.0.2", | ||||||
|  |     "eslint": "^8.23.0", | ||||||
|  |     "jsdom": "^20.0.0", | ||||||
|  |     "pnpm": "^7.9.5", | ||||||
|  |     "typescript": "^4.8.2", | ||||||
|  |     "unocss": "^0.45.13", | ||||||
|  |     "unplugin-auto-import": "^0.11.2", | ||||||
|  |     "unplugin-vue-components": "^0.21.2", | ||||||
|  |     "vite": "^2.9.15", | ||||||
|  |     "vite-plugin-pages": "^0.25.0", | ||||||
|  |     "vitest": "^0.21.1", | ||||||
|  |     "vue-tsc": "^0.39.5" | ||||||
|  |   } | ||||||
|  | } | ||||||
							
								
								
									
										3260
									
								
								vue-golang-mysql/web/pnpm-lock.yaml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										3260
									
								
								vue-golang-mysql/web/pnpm-lock.yaml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								vue-golang-mysql/web/public/android-chrome-192x192.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								vue-golang-mysql/web/public/android-chrome-192x192.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 9.3 KiB | 
							
								
								
									
										
											BIN
										
									
								
								vue-golang-mysql/web/public/android-chrome-512x512.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								vue-golang-mysql/web/public/android-chrome-512x512.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 32 KiB | 
							
								
								
									
										
											BIN
										
									
								
								vue-golang-mysql/web/public/apple-touch-icon.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								vue-golang-mysql/web/public/apple-touch-icon.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 8.5 KiB | 
							
								
								
									
										
											BIN
										
									
								
								vue-golang-mysql/web/public/favicon-16x16.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								vue-golang-mysql/web/public/favicon-16x16.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 559 B | 
							
								
								
									
										
											BIN
										
									
								
								vue-golang-mysql/web/public/favicon-32x32.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								vue-golang-mysql/web/public/favicon-32x32.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 1.0 KiB | 
							
								
								
									
										
											BIN
										
									
								
								vue-golang-mysql/web/public/favicon.ico
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								vue-golang-mysql/web/public/favicon.ico
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 15 KiB | 
							
								
								
									
										5
									
								
								vue-golang-mysql/web/shims.d.ts
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								vue-golang-mysql/web/shims.d.ts
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,5 @@ | |||||||
|  | declare module '*.vue' { | ||||||
|  |   import type { DefineComponent } from 'vue' | ||||||
|  |   const component: DefineComponent<{}, {}, any> | ||||||
|  |   export default component | ||||||
|  | } | ||||||
							
								
								
									
										7
									
								
								vue-golang-mysql/web/src/App.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								vue-golang-mysql/web/src/App.vue
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,7 @@ | |||||||
|  | <template> | ||||||
|  |   <main font-sans text="center gray-700 dark:gray-200"> | ||||||
|  |     <Header /> | ||||||
|  |     <router-view /> | ||||||
|  |     <Footer /> | ||||||
|  |   </main> | ||||||
|  | </template> | ||||||
							
								
								
									
										28
									
								
								vue-golang-mysql/web/src/components/CodeEditor.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								vue-golang-mysql/web/src/components/CodeEditor.vue
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,28 @@ | |||||||
|  | <script setup lang="ts"> | ||||||
|  | import { Codemirror } from 'vue-codemirror' | ||||||
|  |  | ||||||
|  | import { oneDark } from '@codemirror/theme-one-dark' | ||||||
|  | import type { Paste } from '~/composables/types' | ||||||
|  |  | ||||||
|  | const { paste } = defineProps<{ paste: Paste, readonly: boolean }>() | ||||||
|  | const emits = defineEmits(['setCode', 'setType', 'setExpiredDays']) | ||||||
|  |  | ||||||
|  | function setCode(code: string) { | ||||||
|  |   emits('setCode', code) | ||||||
|  | } | ||||||
|  |  | ||||||
|  | const extensions = $computed(() => { | ||||||
|  |   const languagesFunction = languages.get(paste.type) | ||||||
|  |   const extensions = [oneDark] | ||||||
|  |   if (languagesFunction) | ||||||
|  |     extensions.push(languagesFunction) | ||||||
|  |   return extensions | ||||||
|  | }) | ||||||
|  | </script> | ||||||
|  |  | ||||||
|  | <template> | ||||||
|  |   <Codemirror :model-value="paste.data" :disabled="readonly" placeholder="Code goes here..." | ||||||
|  |     :style="{ height: '400px', width: '900px', textAlign: 'left' }" :autofocus="true" :indent-with-tab="true" | ||||||
|  |     :tab-size="2" :extensions="extensions" @change="setCode" /> | ||||||
|  | </template> | ||||||
|  |  | ||||||
							
								
								
									
										15
									
								
								vue-golang-mysql/web/src/components/Footer.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								vue-golang-mysql/web/src/components/Footer.vue
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,15 @@ | |||||||
|  | <template> | ||||||
|  |   <nav text-xl mt-6 inline-flex gap-2> | ||||||
|  |     <button icon-btn @click="toggleDark()"> | ||||||
|  |       <div dark:i-carbon-moon i-carbon-sun /> | ||||||
|  |     </button> | ||||||
|  |  | ||||||
|  |     <a | ||||||
|  |       icon-btn i-carbon-logo-github | ||||||
|  |       rel="noreferrer" | ||||||
|  |       href="https://github.com/fffzlfk/code-paste" | ||||||
|  |       target="_blank" | ||||||
|  |       title="GitHub" | ||||||
|  |     /> | ||||||
|  |   </nav> | ||||||
|  | </template> | ||||||
							
								
								
									
										8
									
								
								vue-golang-mysql/web/src/components/Header.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								vue-golang-mysql/web/src/components/Header.vue
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,8 @@ | |||||||
|  | <template> | ||||||
|  |     <nav mb-6 bg="green-500/50" p-1> | ||||||
|  |         <a href="/" flex-inline gap-2> | ||||||
|  |             <h3 text-xl font-serif font-bold>Code Paste</h3> | ||||||
|  |             <img w-6 h-6 src="/favicon.ico" /> | ||||||
|  |         </a> | ||||||
|  |     </nav> | ||||||
|  | </template> | ||||||
							
								
								
									
										9
									
								
								vue-golang-mysql/web/src/components/README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								vue-golang-mysql/web/src/components/README.md
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,9 @@ | |||||||
|  | ## Components | ||||||
|  |  | ||||||
|  | Components in this dir will be auto-registered and on-demand, powered by [`unplugin-vue-components`](https://github.com/antfu/unplugin-vue-components). | ||||||
|  |  | ||||||
|  | ### Icons | ||||||
|  |  | ||||||
|  | You can use icons from almost any icon sets by the power of [Iconify](https://iconify.design/). | ||||||
|  |  | ||||||
|  | It will only bundle the icons you use. Check out [`unplugin-icons`](https://github.com/antfu/unplugin-icons) for more details. | ||||||
							
								
								
									
										9
									
								
								vue-golang-mysql/web/src/composables/config.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								vue-golang-mysql/web/src/composables/config.ts
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,9 @@ | |||||||
|  | export const cmOptions = { | ||||||
|  |   mode: 'text/javascript', // Language mode | ||||||
|  |   theme: 'dracula', // Theme | ||||||
|  |   lineNumbers: true, // Show line number | ||||||
|  |   smartIndent: true, // Smart indent | ||||||
|  |   indentUnit: 2, // The smart indent unit is 2 spaces in length | ||||||
|  |   foldGutter: true, // Code folding | ||||||
|  |   styleActiveLine: true, // Display the style of the selected row | ||||||
|  | } | ||||||
							
								
								
									
										2
									
								
								vue-golang-mysql/web/src/composables/dark.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								vue-golang-mysql/web/src/composables/dark.ts
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,2 @@ | |||||||
|  | export const isDark = useDark() | ||||||
|  | export const toggleDark = useToggle(isDark) | ||||||
							
								
								
									
										1
									
								
								vue-golang-mysql/web/src/composables/index.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								vue-golang-mysql/web/src/composables/index.ts
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1 @@ | |||||||
|  | export * from './dark' | ||||||
							
								
								
									
										21
									
								
								vue-golang-mysql/web/src/composables/languages.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								vue-golang-mysql/web/src/composables/languages.ts
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,21 @@ | |||||||
|  | import { javascript } from '@codemirror/lang-javascript' | ||||||
|  | import { html } from '@codemirror/lang-html' | ||||||
|  | import { json } from '@codemirror/lang-json' | ||||||
|  | import { rust } from '@codemirror/lang-rust' | ||||||
|  | import { cpp } from '@codemirror/lang-cpp' | ||||||
|  | import { java } from '@codemirror/lang-java' | ||||||
|  | import { python } from '@codemirror/lang-python' | ||||||
|  | import { markdown } from '@codemirror/lang-markdown' | ||||||
|  |  | ||||||
|  | export const languages = new Map(Object.entries({ | ||||||
|  |   'JavaScript': javascript(), | ||||||
|  |   'HTML': html(), | ||||||
|  |   'JSON': json(), | ||||||
|  |   'Rust': rust(), | ||||||
|  |   'C++': cpp(), | ||||||
|  |   'Java': java(), | ||||||
|  |   'Python': python(), | ||||||
|  |   'Markdown': markdown(), | ||||||
|  |   'Text': undefined, | ||||||
|  | })) | ||||||
|  |  | ||||||
							
								
								
									
										7
									
								
								vue-golang-mysql/web/src/composables/types.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								vue-golang-mysql/web/src/composables/types.ts
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,7 @@ | |||||||
|  | export interface Paste { | ||||||
|  |   id: string | ||||||
|  |   expired_at: string | ||||||
|  |   expired_days: number | ||||||
|  |   type: string | ||||||
|  |   data: string | ||||||
|  | } | ||||||
							
								
								
									
										19
									
								
								vue-golang-mysql/web/src/composables/utils.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								vue-golang-mysql/web/src/composables/utils.ts
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,19 @@ | |||||||
|  | export function UTC2Local(date: string): string { | ||||||
|  |   const dateObj = new Date(date) | ||||||
|  |   const localDate = dateObj.toLocaleString([], { year: 'numeric', month: 'numeric', day: 'numeric', hour: '2-digit', minute: '2-digit' }) | ||||||
|  |   return localDate | ||||||
|  | } | ||||||
|  |  | ||||||
|  | export function unsecuredCopyToClipboard(text: string) { | ||||||
|  |   const textArea = document.createElement("textarea"); | ||||||
|  |   textArea.value = text; | ||||||
|  |   document.body.appendChild(textArea); | ||||||
|  |   textArea.focus(); | ||||||
|  |   textArea.select(); | ||||||
|  |   try { | ||||||
|  |     document.execCommand('copy'); | ||||||
|  |   } catch (err) { | ||||||
|  |     console.error('Unable to copy to clipboard', err); | ||||||
|  |   } | ||||||
|  |   document.body.removeChild(textArea); | ||||||
|  | } | ||||||
							
								
								
									
										16
									
								
								vue-golang-mysql/web/src/main.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								vue-golang-mysql/web/src/main.ts
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,16 @@ | |||||||
|  | import { createApp } from 'vue' | ||||||
|  | import { createRouter, createWebHistory } from 'vue-router' | ||||||
|  | import routes from 'virtual:generated-pages' | ||||||
|  | import App from './App.vue' | ||||||
|  |  | ||||||
|  | import '@unocss/reset/tailwind.css' | ||||||
|  | import './styles/main.css' | ||||||
|  | import 'uno.css' | ||||||
|  |  | ||||||
|  | const app = createApp(App) | ||||||
|  | const router = createRouter({ | ||||||
|  |   history: createWebHistory(import.meta.env.BASE_URL), | ||||||
|  |   routes, | ||||||
|  | }) | ||||||
|  | app.use(router) | ||||||
|  | app.mount('#app') | ||||||
							
								
								
									
										20
									
								
								vue-golang-mysql/web/src/pages/README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								vue-golang-mysql/web/src/pages/README.md
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,20 @@ | |||||||
|  | ## File-based Routing | ||||||
|  |  | ||||||
|  | Routes will be auto-generated for Vue files in this dir with the same file structure. | ||||||
|  | Check out [`vite-plugin-pages`](https://github.com/hannoeru/vite-plugin-pages) for more details. | ||||||
|  |  | ||||||
|  | ### Path Aliasing | ||||||
|  |  | ||||||
|  | `~/` is aliased to `./src/` folder. | ||||||
|  |  | ||||||
|  | For example, instead of having | ||||||
|  |  | ||||||
|  | ```ts | ||||||
|  | import { isDark } from '../../../../composables' | ||||||
|  | ``` | ||||||
|  |  | ||||||
|  | now, you can use | ||||||
|  |  | ||||||
|  | ```ts | ||||||
|  | import { isDark } from '~/composables' | ||||||
|  | ``` | ||||||
							
								
								
									
										5
									
								
								vue-golang-mysql/web/src/pages/[...all].vue
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										5
									
								
								vue-golang-mysql/web/src/pages/[...all].vue
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,5 @@ | |||||||
|  | <template> | ||||||
|  |   <div> | ||||||
|  |     Not Found | ||||||
|  |   </div> | ||||||
|  | </template> | ||||||
							
								
								
									
										60
									
								
								vue-golang-mysql/web/src/pages/[id].vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										60
									
								
								vue-golang-mysql/web/src/pages/[id].vue
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,60 @@ | |||||||
|  | <script setup lang="ts"> | ||||||
|  | import type { Paste } from '~/composables/types' | ||||||
|  | import { unsecuredCopyToClipboard } from '~/composables/utils'; | ||||||
|  |  | ||||||
|  | const { id } = defineProps<{ id: string }>() | ||||||
|  |  | ||||||
|  | let paste = $ref({} as Paste) | ||||||
|  |  | ||||||
|  | const router = useRouter() | ||||||
|  |  | ||||||
|  | function fetchPaste(id: string) { | ||||||
|  |   fetch(`${import.meta.env.VITE_API_BASE_URL}/read/${id}`) | ||||||
|  |     .then(res => res.json()) | ||||||
|  |     .then((res) => { | ||||||
|  |       paste = res | ||||||
|  |     }) | ||||||
|  |     .catch((err) => { | ||||||
|  |       console.error(err) | ||||||
|  |       router.push('/') | ||||||
|  |     }) | ||||||
|  | } | ||||||
|  |  | ||||||
|  | function copyToClipboard() { | ||||||
|  |   const content = paste.data | ||||||
|  |   if (window.isSecureContext && navigator.clipboard) { | ||||||
|  |     navigator.clipboard.writeText(content) | ||||||
|  |   } else { | ||||||
|  |     unsecuredCopyToClipboard(content); | ||||||
|  |   } | ||||||
|  |   alert('Successfully copied to clipboard!') | ||||||
|  | } | ||||||
|  |  | ||||||
|  | onMounted(() => { | ||||||
|  |   fetchPaste(id) | ||||||
|  | }) | ||||||
|  | </script> | ||||||
|  |  | ||||||
|  | <template> | ||||||
|  |   <div flex="~" flex-col items-center justify-center> | ||||||
|  |     <div flex="~" flex-row items-center justify-center space-x-5 pb-5> | ||||||
|  |       <div text-lg font-mono font-bold> | ||||||
|  |         <span> | ||||||
|  |           Type: | ||||||
|  |           <select rounded-md class="bg-gray-200/50 text-gray-800/90" disabled> | ||||||
|  |             <option class="text-gray-800/80" value="paste.type">{{  paste.type  }}</option> | ||||||
|  |           </select> | ||||||
|  |         </span> | ||||||
|  |         <span> | ||||||
|  |           ExpiredAt: | ||||||
|  |           <select rounded-md class="bg-gray-200/50 text-gray-800/90" disabled> | ||||||
|  |             <option class="text-gray-800/80" value="UTC2Local(paste.expired_at)">{{  UTC2Local(paste.expired_at)  }} | ||||||
|  |             </option> | ||||||
|  |           </select> | ||||||
|  |         </span> | ||||||
|  |       </div> | ||||||
|  |       <button btn @click="copyToClipboard()">copy</button> | ||||||
|  |     </div> | ||||||
|  |     <CodeEditor :paste="paste" :readonly="true" /> | ||||||
|  |   </div> | ||||||
|  | </template> | ||||||
							
								
								
									
										64
									
								
								vue-golang-mysql/web/src/pages/index.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										64
									
								
								vue-golang-mysql/web/src/pages/index.vue
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,64 @@ | |||||||
|  | <script setup lang="ts"> | ||||||
|  | import type { Paste } from '~/composables/types' | ||||||
|  |  | ||||||
|  | const types = Array.from(languages.keys()) | ||||||
|  |  | ||||||
|  | const expiredDaysOptions = { | ||||||
|  |   '1 Day': 1, | ||||||
|  |   '1 Week': 7, | ||||||
|  |   '1 Month': 30, | ||||||
|  | } | ||||||
|  |  | ||||||
|  | const paste = $ref({ expired_days: 7, type: 'Text' } as Paste) | ||||||
|  |  | ||||||
|  | function setCode(code: string) { | ||||||
|  |   paste.data = code | ||||||
|  | } | ||||||
|  |  | ||||||
|  | const router = useRouter() | ||||||
|  |  | ||||||
|  | function onPaste() { | ||||||
|  |   fetch(`${import.meta.env.VITE_API_BASE_URL}/create`, { | ||||||
|  |     method: 'POST', | ||||||
|  |     headers: { | ||||||
|  |       'Content-Type': 'application/json', | ||||||
|  |     }, | ||||||
|  |     body: JSON.stringify(paste), | ||||||
|  |   }) | ||||||
|  |     .then(res => res.json(), | ||||||
|  |   ) | ||||||
|  |     .then((res) => { | ||||||
|  |       router.push(`/${res.uuid}`) | ||||||
|  |     }) | ||||||
|  |     .catch((err) => { | ||||||
|  |       console.error(err) | ||||||
|  |     }) | ||||||
|  | } | ||||||
|  | </script> | ||||||
|  |  | ||||||
|  | <template> | ||||||
|  |   <div flex="~" flex-col items-center justify-center> | ||||||
|  |     <div flex="~" flex-row items-center justify-center space-x-5 pb-5> | ||||||
|  |       <div text-lg font-mono font-bold> | ||||||
|  |         <span> | ||||||
|  |           Type: | ||||||
|  |           <select rounded-md class="bg-gray-200/50 text-gray-800/90" v-model="paste.type"> | ||||||
|  |             <option class="text-gray-800/80" v-for="type in types" :key="type" :value="type">{{  type  }}</option> | ||||||
|  |           </select> | ||||||
|  |         </span> | ||||||
|  |         <span> | ||||||
|  |           Expired Days: | ||||||
|  |           <select rounded-md class="bg-gray-200/50 text-gray-800/90" v-model="paste.expired_days"> | ||||||
|  |             <option class="text-gray-800/80" v-for="[k, v] in Object.entries(expiredDaysOptions)" :key="k" :value="v">{{ | ||||||
|  |                k  }} | ||||||
|  |             </option> | ||||||
|  |           </select> | ||||||
|  |         </span> | ||||||
|  |       </div> | ||||||
|  |       <button btn @click="onPaste"> | ||||||
|  |         paste | ||||||
|  |       </button> | ||||||
|  |     </div> | ||||||
|  |     <CodeEditor :paste="paste" :readonly="false" @set-code="setCode" /> | ||||||
|  |   </div> | ||||||
|  | </template> | ||||||
							
								
								
									
										11
									
								
								vue-golang-mysql/web/src/styles/main.css
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										11
									
								
								vue-golang-mysql/web/src/styles/main.css
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,11 @@ | |||||||
|  | html, | ||||||
|  | body, | ||||||
|  | #app { | ||||||
|  |   height: 100%; | ||||||
|  |   margin: 0; | ||||||
|  |   padding: 0; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | html.dark { | ||||||
|  |   background: #121212; | ||||||
|  | } | ||||||
| @@ -0,0 +1,3 @@ | |||||||
|  | // Vitest Snapshot v1 | ||||||
|  |  | ||||||
|  | exports[`Counter.vue > should render 1`] = `"<div>10 <button class=\\"inc\\"> + </button><button class=\\"dec\\"> - </button></div>"`; | ||||||
							
								
								
									
										7
									
								
								vue-golang-mysql/web/test/basic.test.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								vue-golang-mysql/web/test/basic.test.ts
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,7 @@ | |||||||
|  | import { describe, expect, it } from 'vitest' | ||||||
|  |  | ||||||
|  | describe('Hi', () => { | ||||||
|  |   it('should works', () => { | ||||||
|  |     expect(1 + 1).toEqual(2) | ||||||
|  |   }) | ||||||
|  | }) | ||||||
							
								
								
									
										26
									
								
								vue-golang-mysql/web/tsconfig.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								vue-golang-mysql/web/tsconfig.json
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,26 @@ | |||||||
|  | { | ||||||
|  |   "compilerOptions": { | ||||||
|  |     "baseUrl": ".", | ||||||
|  |     "module": "ESNext", | ||||||
|  |     "target": "es2016", | ||||||
|  |     "lib": ["DOM", "ESNext"], | ||||||
|  |     "strict": true, | ||||||
|  |     "jsx": "preserve", | ||||||
|  |     "esModuleInterop": true, | ||||||
|  |     "skipLibCheck": true, | ||||||
|  |     "moduleResolution": "node", | ||||||
|  |     "resolveJsonModule": true, | ||||||
|  |     "noUnusedLocals": true, | ||||||
|  |     "strictNullChecks": true, | ||||||
|  |     "allowJs": true, | ||||||
|  |     "forceConsistentCasingInFileNames": true, | ||||||
|  |     "types": [ | ||||||
|  |       "vite/client", | ||||||
|  |       "vite-plugin-pages/client" | ||||||
|  |     ], | ||||||
|  |     "paths": { | ||||||
|  |       "~/*": ["src/*"] | ||||||
|  |     } | ||||||
|  |   }, | ||||||
|  |   "exclude": ["dist", "node_modules"] | ||||||
|  | } | ||||||
							
								
								
									
										35
									
								
								vue-golang-mysql/web/unocss.config.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										35
									
								
								vue-golang-mysql/web/unocss.config.ts
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,35 @@ | |||||||
|  | import { | ||||||
|  |   defineConfig, | ||||||
|  |   presetAttributify, | ||||||
|  |   presetIcons, | ||||||
|  |   presetUno, | ||||||
|  |   presetWebFonts, | ||||||
|  |   // transformerDirectives, | ||||||
|  |   // transformerVariantGroup, | ||||||
|  | } from 'unocss' | ||||||
|  |  | ||||||
|  | export default defineConfig({ | ||||||
|  |   shortcuts: [ | ||||||
|  |     ['btn', 'px-4 py-1 rounded inline-block bg-teal-600 text-white cursor-pointer hover:bg-teal-700 disabled:cursor-default disabled:bg-gray-600 disabled:opacity-50'], | ||||||
|  |     ['icon-btn', 'text-[0.9em] inline-block cursor-pointer select-none opacity-75 transition duration-200 ease-in-out hover:opacity-100 hover:text-teal-600 !outline-none'], | ||||||
|  |   ], | ||||||
|  |   presets: [ | ||||||
|  |     presetUno(), | ||||||
|  |     presetAttributify(), | ||||||
|  |     presetIcons({ | ||||||
|  |       scale: 1.2, | ||||||
|  |       warn: true, | ||||||
|  |     }), | ||||||
|  |     presetWebFonts({ | ||||||
|  |       fonts: { | ||||||
|  |         sans: 'DM Sans', | ||||||
|  |         serif: 'DM Serif Display', | ||||||
|  |         mono: 'DM Mono', | ||||||
|  |       }, | ||||||
|  |     }), | ||||||
|  |   ], | ||||||
|  |   // transformers: [ | ||||||
|  |   //   transformerDirectives(), | ||||||
|  |   //   transformerVariantGroup(), | ||||||
|  |   // ], | ||||||
|  | }) | ||||||
							
								
								
									
										54
									
								
								vue-golang-mysql/web/vite.config.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										54
									
								
								vue-golang-mysql/web/vite.config.ts
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,54 @@ | |||||||
|  | /// <reference types="vitest" /> | ||||||
|  |  | ||||||
|  | import path from 'path' | ||||||
|  | import { defineConfig } from 'vite' | ||||||
|  | import Vue from '@vitejs/plugin-vue' | ||||||
|  | import Pages from 'vite-plugin-pages' | ||||||
|  | import Components from 'unplugin-vue-components/vite' | ||||||
|  | import AutoImport from 'unplugin-auto-import/vite' | ||||||
|  | import Unocss from 'unocss/vite' | ||||||
|  |  | ||||||
|  | export default defineConfig({ | ||||||
|  |   resolve: { | ||||||
|  |     alias: { | ||||||
|  |       '~/': `${path.resolve(__dirname, 'src')}/`, | ||||||
|  |     }, | ||||||
|  |   }, | ||||||
|  |   plugins: [ | ||||||
|  |     Vue({ | ||||||
|  |       reactivityTransform: true, | ||||||
|  |     }), | ||||||
|  |  | ||||||
|  |     // https://github.com/hannoeru/vite-plugin-pages | ||||||
|  |     Pages(), | ||||||
|  |  | ||||||
|  |     // https://github.com/antfu/unplugin-auto-import | ||||||
|  |     AutoImport({ | ||||||
|  |       imports: [ | ||||||
|  |         'vue', | ||||||
|  |         'vue/macros', | ||||||
|  |         'vue-router', | ||||||
|  |         '@vueuse/core', | ||||||
|  |       ], | ||||||
|  |       dts: true, | ||||||
|  |       dirs: [ | ||||||
|  |         './src/composables', | ||||||
|  |       ], | ||||||
|  |       vueTemplate: true, | ||||||
|  |     }), | ||||||
|  |  | ||||||
|  |     // https://github.com/antfu/vite-plugin-components | ||||||
|  |     Components({ | ||||||
|  |       dts: true, | ||||||
|  |     }), | ||||||
|  |  | ||||||
|  |     // https://github.com/antfu/unocss | ||||||
|  |     // see unocss.config.ts for config | ||||||
|  |     Unocss(), | ||||||
|  |   ], | ||||||
|  |  | ||||||
|  |   // https://github.com/vitest-dev/vitest | ||||||
|  |   test: { | ||||||
|  |     environment: 'jsdom', | ||||||
|  |   }, | ||||||
|  | }) | ||||||
		Reference in New Issue
	
	Block a user