From 6143cd20b0de3cd382fcf358fe8ba7ee0091b988 Mon Sep 17 00:00:00 2001 From: fffzlfk <1319933925qq@gmail.com> Date: Sat, 3 Sep 2022 14:21:46 +0800 Subject: [PATCH] feat: add vue-golang-mysql sample Signed-off-by: fffzlfk <1319933925qq@gmail.com> --- README.md | 1 + vue-golang-mysql/README.md | 62 + vue-golang-mysql/docker-compose.yml | 35 + vue-golang-mysql/server/.gitignore | 2 + vue-golang-mysql/server/Dockerfile | 8 + vue-golang-mysql/server/config.toml | 8 + vue-golang-mysql/server/controllers/create.go | 30 + vue-golang-mysql/server/controllers/read.go | 26 + vue-golang-mysql/server/cron/cron.go | 18 + vue-golang-mysql/server/database/conn.go | 38 + vue-golang-mysql/server/go.mod | 42 + vue-golang-mysql/server/go.sum | 122 + vue-golang-mysql/server/main.go | 58 + vue-golang-mysql/server/model/paste.go | 11 + vue-golang-mysql/web/.dockerignore | 1 + vue-golang-mysql/web/.gitignore | 9 + vue-golang-mysql/web/.npmrc | 2 + vue-golang-mysql/web/.vscode/extensions.json | 10 + vue-golang-mysql/web/.vscode/settings.json | 10 + vue-golang-mysql/web/Dockerfile | 12 + vue-golang-mysql/web/LICENSE | 21 + vue-golang-mysql/web/README.md | 1 + vue-golang-mysql/web/README.zh-CN.md | 86 + vue-golang-mysql/web/auto-imports.d.ts | 548 +++ vue-golang-mysql/web/components.d.ts | 16 + vue-golang-mysql/web/index.html | 24 + vue-golang-mysql/web/netlify.toml | 12 + vue-golang-mysql/web/package.json | 46 + vue-golang-mysql/web/pnpm-lock.yaml | 3260 +++++++++++++++++ .../web/public/android-chrome-192x192.png | Bin 0 -> 9489 bytes .../web/public/android-chrome-512x512.png | Bin 0 -> 32313 bytes .../web/public/apple-touch-icon.png | Bin 0 -> 8704 bytes vue-golang-mysql/web/public/favicon-16x16.png | Bin 0 -> 559 bytes vue-golang-mysql/web/public/favicon-32x32.png | Bin 0 -> 1067 bytes vue-golang-mysql/web/public/favicon.ico | Bin 0 -> 15406 bytes vue-golang-mysql/web/shims.d.ts | 5 + vue-golang-mysql/web/src/App.vue | 7 + .../web/src/components/CodeEditor.vue | 28 + .../web/src/components/Footer.vue | 15 + .../web/src/components/Header.vue | 8 + vue-golang-mysql/web/src/components/README.md | 9 + .../web/src/composables/config.ts | 9 + vue-golang-mysql/web/src/composables/dark.ts | 2 + vue-golang-mysql/web/src/composables/index.ts | 1 + .../web/src/composables/languages.ts | 21 + vue-golang-mysql/web/src/composables/types.ts | 7 + vue-golang-mysql/web/src/composables/utils.ts | 19 + vue-golang-mysql/web/src/main.ts | 16 + vue-golang-mysql/web/src/pages/README.md | 20 + vue-golang-mysql/web/src/pages/[...all].vue | 5 + vue-golang-mysql/web/src/pages/[id].vue | 60 + vue-golang-mysql/web/src/pages/index.vue | 64 + vue-golang-mysql/web/src/styles/main.css | 11 + .../test/__snapshots__/component.test.ts.snap | 3 + vue-golang-mysql/web/test/basic.test.ts | 7 + vue-golang-mysql/web/tsconfig.json | 26 + vue-golang-mysql/web/unocss.config.ts | 35 + vue-golang-mysql/web/vite.config.ts | 54 + 58 files changed, 4951 insertions(+) create mode 100644 vue-golang-mysql/README.md create mode 100644 vue-golang-mysql/docker-compose.yml create mode 100644 vue-golang-mysql/server/.gitignore create mode 100644 vue-golang-mysql/server/Dockerfile create mode 100644 vue-golang-mysql/server/config.toml create mode 100644 vue-golang-mysql/server/controllers/create.go create mode 100644 vue-golang-mysql/server/controllers/read.go create mode 100644 vue-golang-mysql/server/cron/cron.go create mode 100644 vue-golang-mysql/server/database/conn.go create mode 100644 vue-golang-mysql/server/go.mod create mode 100644 vue-golang-mysql/server/go.sum create mode 100644 vue-golang-mysql/server/main.go create mode 100644 vue-golang-mysql/server/model/paste.go create mode 100644 vue-golang-mysql/web/.dockerignore create mode 100644 vue-golang-mysql/web/.gitignore create mode 100644 vue-golang-mysql/web/.npmrc create mode 100644 vue-golang-mysql/web/.vscode/extensions.json create mode 100644 vue-golang-mysql/web/.vscode/settings.json create mode 100644 vue-golang-mysql/web/Dockerfile create mode 100644 vue-golang-mysql/web/LICENSE create mode 100644 vue-golang-mysql/web/README.md create mode 100644 vue-golang-mysql/web/README.zh-CN.md create mode 100644 vue-golang-mysql/web/auto-imports.d.ts create mode 100644 vue-golang-mysql/web/components.d.ts create mode 100644 vue-golang-mysql/web/index.html create mode 100755 vue-golang-mysql/web/netlify.toml create mode 100644 vue-golang-mysql/web/package.json create mode 100644 vue-golang-mysql/web/pnpm-lock.yaml create mode 100644 vue-golang-mysql/web/public/android-chrome-192x192.png create mode 100644 vue-golang-mysql/web/public/android-chrome-512x512.png create mode 100644 vue-golang-mysql/web/public/apple-touch-icon.png create mode 100644 vue-golang-mysql/web/public/favicon-16x16.png create mode 100644 vue-golang-mysql/web/public/favicon-32x32.png create mode 100644 vue-golang-mysql/web/public/favicon.ico create mode 100644 vue-golang-mysql/web/shims.d.ts create mode 100644 vue-golang-mysql/web/src/App.vue create mode 100644 vue-golang-mysql/web/src/components/CodeEditor.vue create mode 100644 vue-golang-mysql/web/src/components/Footer.vue create mode 100644 vue-golang-mysql/web/src/components/Header.vue create mode 100644 vue-golang-mysql/web/src/components/README.md create mode 100644 vue-golang-mysql/web/src/composables/config.ts create mode 100644 vue-golang-mysql/web/src/composables/dark.ts create mode 100644 vue-golang-mysql/web/src/composables/index.ts create mode 100644 vue-golang-mysql/web/src/composables/languages.ts create mode 100644 vue-golang-mysql/web/src/composables/types.ts create mode 100644 vue-golang-mysql/web/src/composables/utils.ts create mode 100644 vue-golang-mysql/web/src/main.ts create mode 100644 vue-golang-mysql/web/src/pages/README.md create mode 100755 vue-golang-mysql/web/src/pages/[...all].vue create mode 100644 vue-golang-mysql/web/src/pages/[id].vue create mode 100644 vue-golang-mysql/web/src/pages/index.vue create mode 100755 vue-golang-mysql/web/src/styles/main.css create mode 100644 vue-golang-mysql/web/test/__snapshots__/component.test.ts.snap create mode 100644 vue-golang-mysql/web/test/basic.test.ts create mode 100644 vue-golang-mysql/web/tsconfig.json create mode 100644 vue-golang-mysql/web/unocss.config.ts create mode 100644 vue-golang-mysql/web/vite.config.ts diff --git a/README.md b/README.md index 484e2ba..fe0661a 100644 --- a/README.md +++ b/README.md @@ -49,6 +49,7 @@ application with a Rust backend and a Postgres database. Use with Docker Dev Environments - [`Spring / PostgreSQL`](spring-postgres) - Sample Java application with Spring framework and a Postgres database. Use with Docker Dev Environments +- [`Vue / Golang / MySQL`](vue-golang-mysql/) - Vue3 application with Go backend and mysql database ## Single service samples diff --git a/vue-golang-mysql/README.md b/vue-golang-mysql/README.md new file mode 100644 index 0000000..2f3e8c6 --- /dev/null +++ b/vue-golang-mysql/README.md @@ -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. + +![](https://s1.ax1x.com/2022/09/03/voZz3q.png) + +## Stop and remove the containers + +```console +docker compose down +``` \ No newline at end of file diff --git a/vue-golang-mysql/docker-compose.yml b/vue-golang-mysql/docker-compose.yml new file mode 100644 index 0000000..9e1f51b --- /dev/null +++ b/vue-golang-mysql/docker-compose.yml @@ -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 \ No newline at end of file diff --git a/vue-golang-mysql/server/.gitignore b/vue-golang-mysql/server/.gitignore new file mode 100644 index 0000000..26ff970 --- /dev/null +++ b/vue-golang-mysql/server/.gitignore @@ -0,0 +1,2 @@ +log.txt +code-paste \ No newline at end of file diff --git a/vue-golang-mysql/server/Dockerfile b/vue-golang-mysql/server/Dockerfile new file mode 100644 index 0000000..d11fd4f --- /dev/null +++ b/vue-golang-mysql/server/Dockerfile @@ -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"] \ No newline at end of file diff --git a/vue-golang-mysql/server/config.toml b/vue-golang-mysql/server/config.toml new file mode 100644 index 0000000..93e55bf --- /dev/null +++ b/vue-golang-mysql/server/config.toml @@ -0,0 +1,8 @@ +[server] +port = 8080 + +[database] +host = "mydb" +port = 3306 +user = "root" +password = "114514" diff --git a/vue-golang-mysql/server/controllers/create.go b/vue-golang-mysql/server/controllers/create.go new file mode 100644 index 0000000..6eda3d3 --- /dev/null +++ b/vue-golang-mysql/server/controllers/create.go @@ -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, + }) +} diff --git a/vue-golang-mysql/server/controllers/read.go b/vue-golang-mysql/server/controllers/read.go new file mode 100644 index 0000000..9745227 --- /dev/null +++ b/vue-golang-mysql/server/controllers/read.go @@ -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) +} diff --git a/vue-golang-mysql/server/cron/cron.go b/vue-golang-mysql/server/cron/cron.go new file mode 100644 index 0000000..c4896bf --- /dev/null +++ b/vue-golang-mysql/server/cron/cron.go @@ -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{}) + }) +} diff --git a/vue-golang-mysql/server/database/conn.go b/vue-golang-mysql/server/database/conn.go new file mode 100644 index 0000000..d06eed4 --- /dev/null +++ b/vue-golang-mysql/server/database/conn.go @@ -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{}) +} diff --git a/vue-golang-mysql/server/go.mod b/vue-golang-mysql/server/go.mod new file mode 100644 index 0000000..a3a8b85 --- /dev/null +++ b/vue-golang-mysql/server/go.mod @@ -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 +) diff --git a/vue-golang-mysql/server/go.sum b/vue-golang-mysql/server/go.sum new file mode 100644 index 0000000..1c8f0f5 --- /dev/null +++ b/vue-golang-mysql/server/go.sum @@ -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= diff --git a/vue-golang-mysql/server/main.go b/vue-golang-mysql/server/main.go new file mode 100644 index 0000000..63e0e51 --- /dev/null +++ b/vue-golang-mysql/server/main.go @@ -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)) +} diff --git a/vue-golang-mysql/server/model/paste.go b/vue-golang-mysql/server/model/paste.go new file mode 100644 index 0000000..4fcc642 --- /dev/null +++ b/vue-golang-mysql/server/model/paste.go @@ -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"` +} diff --git a/vue-golang-mysql/web/.dockerignore b/vue-golang-mysql/web/.dockerignore new file mode 100644 index 0000000..07e6e47 --- /dev/null +++ b/vue-golang-mysql/web/.dockerignore @@ -0,0 +1 @@ +/node_modules diff --git a/vue-golang-mysql/web/.gitignore b/vue-golang-mysql/web/.gitignore new file mode 100644 index 0000000..912c396 --- /dev/null +++ b/vue-golang-mysql/web/.gitignore @@ -0,0 +1,9 @@ +.DS_Store +.vite-ssg-dist +.vite-ssg-temp +*.local +dist +dist-ssr +node_modules +.idea/ +*.log diff --git a/vue-golang-mysql/web/.npmrc b/vue-golang-mysql/web/.npmrc new file mode 100644 index 0000000..cf04042 --- /dev/null +++ b/vue-golang-mysql/web/.npmrc @@ -0,0 +1,2 @@ +shamefully-hoist=true +strict-peer-dependencies=false diff --git a/vue-golang-mysql/web/.vscode/extensions.json b/vue-golang-mysql/web/.vscode/extensions.json new file mode 100644 index 0000000..26b0f74 --- /dev/null +++ b/vue-golang-mysql/web/.vscode/extensions.json @@ -0,0 +1,10 @@ +{ + "recommendations": [ + "antfu.vite", + "antfu.iconify", + "antfu.unocss", + "antfu.goto-alias", + "vue.volar", + "dbaeumer.vscode-eslint" + ] +} diff --git a/vue-golang-mysql/web/.vscode/settings.json b/vue-golang-mysql/web/.vscode/settings.json new file mode 100644 index 0000000..b994829 --- /dev/null +++ b/vue-golang-mysql/web/.vscode/settings.json @@ -0,0 +1,10 @@ +{ + "cSpell.words": ["Vitesse"], + "prettier.enable": false, + "editor.codeActionsOnSave": { + "source.fixAll.eslint": true + }, + "files.associations": { + "*.css": "postcss" + } +} diff --git a/vue-golang-mysql/web/Dockerfile b/vue-golang-mysql/web/Dockerfile new file mode 100644 index 0000000..8432640 --- /dev/null +++ b/vue-golang-mysql/web/Dockerfile @@ -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" ] \ No newline at end of file diff --git a/vue-golang-mysql/web/LICENSE b/vue-golang-mysql/web/LICENSE new file mode 100644 index 0000000..670b1b3 --- /dev/null +++ b/vue-golang-mysql/web/LICENSE @@ -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. diff --git a/vue-golang-mysql/web/README.md b/vue-golang-mysql/web/README.md new file mode 100644 index 0000000..26f47ca --- /dev/null +++ b/vue-golang-mysql/web/README.md @@ -0,0 +1 @@ +# Code Paste \ No newline at end of file diff --git a/vue-golang-mysql/web/README.zh-CN.md b/vue-golang-mysql/web/README.zh-CN.md new file mode 100644 index 0000000..3d42f66 --- /dev/null +++ b/vue-golang-mysql/web/README.zh-CN.md @@ -0,0 +1,86 @@ +

+ Vitesse - Opinionated Vite Starter Template +

+ +
+在线 Demo +
+ +
+轻量版的 Vitesse +
+ +
+ +

+English | 简体中文 +

+ +
+ +## 特性 + +- ⚡️ [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) + +- 🔥 使用 [新的 ` + + + diff --git a/vue-golang-mysql/web/netlify.toml b/vue-golang-mysql/web/netlify.toml new file mode 100755 index 0000000..bd06a07 --- /dev/null +++ b/vue-golang-mysql/web/netlify.toml @@ -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 diff --git a/vue-golang-mysql/web/package.json b/vue-golang-mysql/web/package.json new file mode 100644 index 0000000..380ca0b --- /dev/null +++ b/vue-golang-mysql/web/package.json @@ -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" + } +} diff --git a/vue-golang-mysql/web/pnpm-lock.yaml b/vue-golang-mysql/web/pnpm-lock.yaml new file mode 100644 index 0000000..12a5d70 --- /dev/null +++ b/vue-golang-mysql/web/pnpm-lock.yaml @@ -0,0 +1,3260 @@ +lockfileVersion: 5.4 + +specifiers: + '@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 + '@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 + '@vueuse/core': ^9.1.1 + codemirror: ^6.0.1 + 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: ^3.2.38 + vue-codemirror: ^6.1.1 + vue-router: ^4.1.5 + vue-tsc: ^0.39.5 + +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_vue@3.2.38 + codemirror: 6.0.1 + vue: 3.2.38 + vue-codemirror: 6.1.1_dpkxt24ymugkjtb75cewnrlcay + vue-router: 4.1.5_vue@3.2.38 + +devDependencies: + '@iconify-json/carbon': 1.1.7 + '@types/node': 18.7.14 + '@unocss/reset': 0.45.13 + '@vitejs/plugin-vue': 2.3.4_vite@2.9.15+vue@3.2.38 + '@vue/test-utils': 2.0.2_vue@3.2.38 + eslint: 8.23.0 + jsdom: 20.0.0 + pnpm: 7.9.5 + typescript: 4.8.2 + unocss: 0.45.13_vite@2.9.15 + unplugin-auto-import: 0.11.2_uaaha2lz3g3d7gfm5wyhoztace + unplugin-vue-components: 0.21.2_vite@2.9.15+vue@3.2.38 + vite: 2.9.15 + vite-plugin-pages: 0.25.0_vite@2.9.15 + vitest: 0.21.1_jsdom@20.0.0 + vue-tsc: 0.39.5_typescript@4.8.2 + +packages: + + /@ampproject/remapping/2.2.0: + resolution: {integrity: sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/gen-mapping': 0.1.1 + '@jridgewell/trace-mapping': 0.3.15 + dev: true + + /@antfu/install-pkg/0.1.0: + resolution: {integrity: sha512-VaIJd3d1o7irZfK1U0nvBsHMyjkuyMP3HKYVV53z8DKyulkHKmjhhtccXO51WSPeeSHIeoJEoNOKavYpS7jkZw==} + dependencies: + execa: 5.1.1 + find-up: 5.0.0 + dev: true + + /@antfu/utils/0.5.2: + resolution: {integrity: sha512-CQkeV+oJxUazwjlHD0/3ZD08QWKuGQkhnrKo3e6ly5pd48VUpXbb77q0xMU4+vc2CkJnDS02Eq/M9ugyX20XZA==} + dev: true + + /@babel/helper-string-parser/7.18.10: + resolution: {integrity: sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw==} + engines: {node: '>=6.9.0'} + + /@babel/helper-validator-identifier/7.18.6: + resolution: {integrity: sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==} + engines: {node: '>=6.9.0'} + + /@babel/parser/7.18.13: + resolution: {integrity: sha512-dgXcIfMuQ0kgzLB2b9tRZs7TTFFaGM2AbtA4fJgUUYukzGH4jwsS7hzQHEGs67jdehpm22vkgKwvbU+aEflgwg==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + '@babel/types': 7.18.13 + + /@babel/types/7.18.13: + resolution: {integrity: sha512-ePqfTihzW0W6XAU+aMw2ykilisStJfDnsejDCXRchCcMJ4O0+8DhPXf2YUbZ6wjBlsEmZwLK/sPweWtu8hcJYQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-string-parser': 7.18.10 + '@babel/helper-validator-identifier': 7.18.6 + to-fast-properties: 2.0.0 + + /@codemirror/autocomplete/6.1.0: + resolution: {integrity: sha512-wtO4O5WDyXhhCd4q4utDIDZxnQfmJ++3dGBCG9LMtI79+92OcA1DVk/n7BEupKmjIr8AzvptDz7YQ9ud6OkU+A==} + dependencies: + '@codemirror/language': 6.2.1 + '@codemirror/state': 6.1.1 + '@codemirror/view': 6.2.2 + '@lezer/common': 1.0.1 + dev: false + + /@codemirror/commands/6.1.0: + resolution: {integrity: sha512-qCj2YqmbBjj0P1iumnlL5lBqZvJPzT+t2UvgjcaXErp5ZvMqFRVgQyrEfdXX6SX5UcvcHKBjXqno+MkUp0aYvQ==} + dependencies: + '@codemirror/language': 6.2.1 + '@codemirror/state': 6.1.1 + '@codemirror/view': 6.2.2 + '@lezer/common': 1.0.1 + dev: false + + /@codemirror/lang-cpp/6.0.1: + resolution: {integrity: sha512-46p3ohfhjzkLWJ3VwvzX0aqlXh8UkEqX1xo2Eds9l6Ql3uDoxI2IZEjR9cgJaGOZTXCkDzQuQH7sfYAxMvzLjA==} + dependencies: + '@codemirror/language': 6.2.1 + '@lezer/cpp': 1.0.0 + dev: false + + /@codemirror/lang-css/6.0.0: + resolution: {integrity: sha512-jBqc+BTuwhNOTlrimFghLlSrN6iFuE44HULKWoR4qKYObhOIl9Lci1iYj6zMIte1XTQmZguNvjXMyr43LUKwSw==} + dependencies: + '@codemirror/autocomplete': 6.1.0 + '@codemirror/language': 6.2.1 + '@codemirror/state': 6.1.1 + '@lezer/css': 1.0.0 + dev: false + + /@codemirror/lang-html/6.1.0: + resolution: {integrity: sha512-gA7NmJxqvnhwza05CvR7W/39Ap9r/4Vs9uiC0IeFYo1hSlJzc/8N6Evviz6vTW1x8SpHcRYyqKOf6rpl6LfWtg==} + dependencies: + '@codemirror/autocomplete': 6.1.0 + '@codemirror/lang-css': 6.0.0 + '@codemirror/lang-javascript': 6.0.2 + '@codemirror/language': 6.2.1 + '@codemirror/state': 6.1.1 + '@lezer/common': 1.0.1 + '@lezer/html': 1.0.1 + dev: false + + /@codemirror/lang-java/6.0.0: + resolution: {integrity: sha512-aeWq+ikUS6Eubk6RBbiMgxuBIT4Ih8Asb1qc2pSiMcstrwr4ODbazPXsBHbLBYg3aObvFyOm2bNQncbQJjZ3sQ==} + dependencies: + '@codemirror/language': 6.2.1 + '@lezer/java': 1.0.0 + dev: false + + /@codemirror/lang-javascript/6.0.2: + resolution: {integrity: sha512-BZRJ9u/zl16hLkSpDAWm73mrfIR7HJrr0lvnhoSOCQVea5BglguWI/slxexhvUb0CB5cXgKWuo2bM+N9EhIaZw==} + dependencies: + '@codemirror/autocomplete': 6.1.0 + '@codemirror/language': 6.2.1 + '@codemirror/lint': 6.0.0 + '@codemirror/state': 6.1.1 + '@codemirror/view': 6.2.2 + '@lezer/common': 1.0.1 + '@lezer/javascript': 1.0.2 + dev: false + + /@codemirror/lang-json/6.0.0: + resolution: {integrity: sha512-DvTcYTKLmg2viADXlTdufrT334M9jowe1qO02W28nvm+nejcvhM5vot5mE8/kPrxYw/HJHhwu1z2PyBpnMLCNQ==} + dependencies: + '@codemirror/language': 6.2.1 + '@lezer/json': 1.0.0 + dev: false + + /@codemirror/lang-markdown/6.0.1: + resolution: {integrity: sha512-pHPQuRwf9cUrmkmsTHRjtS9ZnGu3fA9YzAdh2++d+L9wbfnC2XbKh0Xvm/0YiUjdCnoCx9wDFEoCuAnkqKWLIw==} + dependencies: + '@codemirror/lang-html': 6.1.0 + '@codemirror/language': 6.2.1 + '@codemirror/state': 6.1.1 + '@codemirror/view': 6.2.2 + '@lezer/common': 1.0.1 + '@lezer/markdown': 1.0.1 + dev: false + + /@codemirror/lang-python/6.0.1: + resolution: {integrity: sha512-w2jTSY+LgXnK7iIBLgMxk6xtJhZHkcxcGGveuq9zYmncURmOTFXKnDvBaBClNIHKgjkHXZqGK8ZduCMK23hZPA==} + dependencies: + '@codemirror/language': 6.2.1 + '@lezer/python': 1.1.0 + dev: false + + /@codemirror/lang-rust/6.0.0: + resolution: {integrity: sha512-VQql3Qk1BwoXb3SUkeWll/EEwhsgQWc1bpia7CFqqp2PhQBb5A6r4Vj2JCkU/nE6A7TDPSGHTOoqJSG5s/VXtQ==} + dependencies: + '@codemirror/language': 6.2.1 + '@lezer/rust': 1.0.0 + dev: false + + /@codemirror/language/6.2.1: + resolution: {integrity: sha512-MC3svxuvIj0MRpFlGHxLS6vPyIdbTr2KKPEW46kCoCXw2ktb4NTkpkPBI/lSP/FoNXLCBJ0mrnUi1OoZxtpW1Q==} + dependencies: + '@codemirror/state': 6.1.1 + '@codemirror/view': 6.2.2 + '@lezer/common': 1.0.1 + '@lezer/highlight': 1.0.0 + '@lezer/lr': 1.2.3 + style-mod: 4.0.0 + dev: false + + /@codemirror/lint/6.0.0: + resolution: {integrity: sha512-nUUXcJW1Xp54kNs+a1ToPLK8MadO0rMTnJB8Zk4Z8gBdrN0kqV7uvUraU/T2yqg+grDNR38Vmy/MrhQN/RgwiA==} + dependencies: + '@codemirror/state': 6.1.1 + '@codemirror/view': 6.2.2 + crelt: 1.0.5 + dev: false + + /@codemirror/search/6.2.0: + resolution: {integrity: sha512-FVhpUvPFUJe8lg2EQJTTcF4RNI9d/OC3PVitvOfhv5OuY7ZgtMfJl22o5eMkzOEsUY2Wxe7BKGLpe2UI5Wq3PQ==} + dependencies: + '@codemirror/state': 6.1.1 + '@codemirror/view': 6.2.2 + crelt: 1.0.5 + dev: false + + /@codemirror/state/6.1.1: + resolution: {integrity: sha512-2s+aXsxmAwnR3Rd+JDHPG/1lw0YsA9PEwl7Re88gHJHGfxyfEzKBmsN4rr53RyPIR4lzbbhJX0DCq0WlqlBIRw==} + dev: false + + /@codemirror/theme-one-dark/6.0.0: + resolution: {integrity: sha512-jTCfi1I8QT++3m21Ui6sU8qwu3F/hLv161KLxfvkV1cYWSBwyUanmQFs89ChobQjBHi2x7s2k71wF9WYvE8fdw==} + dependencies: + '@codemirror/language': 6.2.1 + '@codemirror/state': 6.1.1 + '@codemirror/view': 6.2.2 + '@lezer/highlight': 1.0.0 + dev: false + + /@codemirror/view/6.2.2: + resolution: {integrity: sha512-RwtFlBM/+xnv95urH1D8bVsX3KYLZGygGyZG2TZoXW2Q/GMrI+AuUXh7jBE1M38IOX3YnLTlp6RdgCx3Xo2jVA==} + dependencies: + '@codemirror/state': 6.1.1 + style-mod: 4.0.0 + w3c-keyname: 2.2.6 + dev: false + + /@esbuild/linux-loong64/0.14.54: + resolution: {integrity: sha512-bZBrLAIX1kpWelV0XemxBZllyRmM6vgFQQG2GdNb+r3Fkp0FOh1NJSvekXDs7jq70k4euu1cryLMfU+mTXlEpw==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@eslint/eslintrc/1.3.1: + resolution: {integrity: sha512-OhSY22oQQdw3zgPOOwdoj01l/Dzl1Z+xyUP33tkSN+aqyEhymJCcPHyXt+ylW8FSe0TfRC2VG+ROQOapD0aZSQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + ajv: 6.12.6 + debug: 4.3.4 + espree: 9.4.0 + globals: 13.17.0 + ignore: 5.2.0 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@humanwhocodes/config-array/0.10.4: + resolution: {integrity: sha512-mXAIHxZT3Vcpg83opl1wGlVZ9xydbfZO3r5YfRSH6Gpp2J/PfdBP0wbDa2sO6/qRbcalpoevVyW6A/fI6LfeMw==} + engines: {node: '>=10.10.0'} + dependencies: + '@humanwhocodes/object-schema': 1.2.1 + debug: 4.3.4 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@humanwhocodes/gitignore-to-minimatch/1.0.2: + resolution: {integrity: sha512-rSqmMJDdLFUsyxR6FMtD00nfQKKLFb1kv+qBbOVKqErvloEIJLo5bDTJTQNTYgeyp78JsA7u/NPi5jT1GR/MuA==} + dev: true + + /@humanwhocodes/module-importer/1.0.1: + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + dev: true + + /@humanwhocodes/object-schema/1.2.1: + resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} + dev: true + + /@iconify-json/carbon/1.1.7: + resolution: {integrity: sha512-QULSpNWKaX4auIbjITDynfALdJYvOOy/xZb+aLOqCgvpBcmbz5tbqvow4r25FWtVsi4FHVpNQ8vyJZXsD1Hlxg==} + dependencies: + '@iconify/types': 1.1.0 + dev: true + + /@iconify/types/1.1.0: + resolution: {integrity: sha512-Jh0llaK2LRXQoYsorIH8maClebsnzTcve+7U3rQUSnC11X4jtPnFuyatqFLvMxZ8MLG8dB4zfHsbPfuvxluONw==} + dev: true + + /@iconify/utils/1.0.33: + resolution: {integrity: sha512-vGeAqo7aGPxOQmGdVoXFUOuyN+0V7Lcrx2EvaiRjxUD1x6Om0Tvq2bdm7E24l2Pz++4S0mWMCVFXe/17EtKImQ==} + dependencies: + '@antfu/install-pkg': 0.1.0 + '@antfu/utils': 0.5.2 + '@iconify/types': 1.1.0 + debug: 4.3.4 + kolorist: 1.5.1 + local-pkg: 0.4.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@jridgewell/gen-mapping/0.1.1: + resolution: {integrity: sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/set-array': 1.1.2 + '@jridgewell/sourcemap-codec': 1.4.14 + dev: true + + /@jridgewell/resolve-uri/3.1.0: + resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} + engines: {node: '>=6.0.0'} + dev: true + + /@jridgewell/set-array/1.1.2: + resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} + engines: {node: '>=6.0.0'} + dev: true + + /@jridgewell/sourcemap-codec/1.4.14: + resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} + dev: true + + /@jridgewell/trace-mapping/0.3.15: + resolution: {integrity: sha512-oWZNOULl+UbhsgB51uuZzglikfIKSUBO/M9W2OfEjn7cmqoAiCgmv9lyACTUacZwBz0ITnJ2NqjU8Tx0DHL88g==} + dependencies: + '@jridgewell/resolve-uri': 3.1.0 + '@jridgewell/sourcemap-codec': 1.4.14 + dev: true + + /@lezer/common/1.0.1: + resolution: {integrity: sha512-8TR5++Q/F//tpDsLd5zkrvEX5xxeemafEaek7mUp7Y+bI8cKQXdSqhzTOBaOogETcMOVr0pT3BBPXp13477ciw==} + dev: false + + /@lezer/cpp/1.0.0: + resolution: {integrity: sha512-Klk3/AIEKoptmm6cNm7xTulNXjdTKkD+hVOEcz/NeRg8tIestP5hsGHJeFDR/XtyDTxsjoPjKZRIGohht7zbKw==} + dependencies: + '@lezer/highlight': 1.0.0 + '@lezer/lr': 1.2.3 + dev: false + + /@lezer/css/1.0.0: + resolution: {integrity: sha512-616VqgDKumHmYIuxs3tnX1irEQmoDHgF/TlP4O5ICWwyHwLMErq+8iKVuzTkOdBqvYAVmObqThcDEAaaMJjAdg==} + dependencies: + '@lezer/highlight': 1.0.0 + '@lezer/lr': 1.2.3 + dev: false + + /@lezer/highlight/1.0.0: + resolution: {integrity: sha512-nsCnNtim90UKsB5YxoX65v3GEIw3iCHw9RM2DtdgkiqAbKh9pCdvi8AWNwkYf10Lu6fxNhXPpkpHbW6mihhvJA==} + dependencies: + '@lezer/common': 1.0.1 + dev: false + + /@lezer/html/1.0.1: + resolution: {integrity: sha512-sC00zEt3GBh3vVO6QaGX4YZCl41S9dHWN/WGBsDixy9G+sqOC7gsa4cxA/fmRVAiBvhqYkJk+5Ul4oul92CPVw==} + dependencies: + '@lezer/common': 1.0.1 + '@lezer/highlight': 1.0.0 + '@lezer/lr': 1.2.3 + dev: false + + /@lezer/java/1.0.0: + resolution: {integrity: sha512-z2EA0JHq2WoiKfQy5uOOd4t17PJtq8guh58gPkSzOnNcQ7DNbkrU+Axak+jL8+Noinwyz2tRNOseQFj+Tg+P0A==} + dependencies: + '@lezer/highlight': 1.0.0 + '@lezer/lr': 1.2.3 + dev: false + + /@lezer/javascript/1.0.2: + resolution: {integrity: sha512-IjOVeIRhM8IuafWNnk+UzRz7p4/JSOKBNINLYLsdSGuJS9Ju7vFdc82AlTt0jgtV5D8eBZf4g0vK4d3ttBNz7A==} + dependencies: + '@lezer/highlight': 1.0.0 + '@lezer/lr': 1.2.3 + dev: false + + /@lezer/json/1.0.0: + resolution: {integrity: sha512-zbAuUY09RBzCoCA3lJ1+ypKw5WSNvLqGMtasdW6HvVOqZoCpPr8eWrsGnOVWGKGn8Rh21FnrKRVlJXrGAVUqRw==} + dependencies: + '@lezer/highlight': 1.0.0 + '@lezer/lr': 1.2.3 + dev: false + + /@lezer/lr/1.2.3: + resolution: {integrity: sha512-qpB7rBzH8f6Mzjv2AVZRahcm+2Cf7nbIH++uXbvVOL1yIRvVWQ3HAM/saeBLCyz/togB7LGo76qdJYL1uKQlqA==} + dependencies: + '@lezer/common': 1.0.1 + dev: false + + /@lezer/markdown/1.0.1: + resolution: {integrity: sha512-LlpNWLqes3XQvd8TwpJTHf9ENl4fI6H32xQkMgltUITFMMdQpOASXQtDawWR03yS6hskh4bkhATQbgjdGMoUvA==} + dependencies: + '@lezer/common': 1.0.1 + '@lezer/highlight': 1.0.0 + dev: false + + /@lezer/python/1.1.0: + resolution: {integrity: sha512-FVPp2usfj3zZuc+2RidXAY94WAcsHQ3dbKDbXuZgoAwUungAcXwd3EWXiWQvwNqbae+ek51bWi8dwbiQqweWCg==} + dependencies: + '@lezer/highlight': 1.0.0 + '@lezer/lr': 1.2.3 + dev: false + + /@lezer/rust/1.0.0: + resolution: {integrity: sha512-IpGAxIjNxYmX9ra6GfQTSPegdCAWNeq23WNmrsMMQI7YNSvKtYxO4TX5rgZUmbhEucWn0KTBMeDEPXg99YKtTA==} + dependencies: + '@lezer/highlight': 1.0.0 + '@lezer/lr': 1.2.3 + dev: false + + /@nodelib/fs.scandir/2.1.5: + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + dev: true + + /@nodelib/fs.stat/2.0.5: + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + dev: true + + /@nodelib/fs.walk/1.2.8: + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.13.0 + dev: true + + /@polka/url/1.0.0-next.21: + resolution: {integrity: sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==} + dev: true + + /@rollup/pluginutils/4.2.1: + resolution: {integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==} + engines: {node: '>= 8.0.0'} + dependencies: + estree-walker: 2.0.2 + picomatch: 2.3.1 + dev: true + + /@tootallnate/once/2.0.0: + resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} + engines: {node: '>= 10'} + dev: true + + /@types/chai-subset/1.3.3: + resolution: {integrity: sha512-frBecisrNGz+F4T6bcc+NLeolfiojh5FxW2klu669+8BARtyQv2C/GkNW6FUodVe4BroGMP/wER/YDGc7rEllw==} + dependencies: + '@types/chai': 4.3.3 + dev: true + + /@types/chai/4.3.3: + resolution: {integrity: sha512-hC7OMnszpxhZPduX+m+nrx+uFoLkWOMiR4oa/AZF3MuSETYTZmFfJAHqZEM8MVlvfG7BEUcgvtwoCTxBp6hm3g==} + dev: true + + /@types/debug/4.1.7: + resolution: {integrity: sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==} + dependencies: + '@types/ms': 0.7.31 + dev: true + + /@types/ms/0.7.31: + resolution: {integrity: sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==} + dev: true + + /@types/node/18.7.14: + resolution: {integrity: sha512-6bbDaETVi8oyIARulOE9qF1/Qdi/23z6emrUh0fNJRUmjznqrixD4MpGDdgOFk5Xb0m2H6Xu42JGdvAxaJR/wA==} + dev: true + + /@types/web-bluetooth/0.0.15: + resolution: {integrity: sha512-w7hEHXnPMEZ+4nGKl/KDRVpxkwYxYExuHOYXyzIzCDzEZ9ZCGMAewulr9IqJu2LR4N37fcnb1XVeuZ09qgOxhA==} + + /@unocss/astro/0.45.13_vite@2.9.15: + resolution: {integrity: sha512-XoJeBwMiQAfF6XpfoE26MOFfHaeszQ9goWIZcTs/3oaLoBZI36jGFVOTumG7ls4X3Pl4tDS/SB7jn078aWBOhQ==} + dependencies: + '@unocss/core': 0.45.13 + '@unocss/reset': 0.45.13 + '@unocss/vite': 0.45.13_vite@2.9.15 + transitivePeerDependencies: + - vite + dev: true + + /@unocss/cli/0.45.13: + resolution: {integrity: sha512-X6D0VJ8OPY+1QxIMSIn/j/1I7vzVXAqiCL9lJ5DUAJFgLsKUunwb7NH3YiH+1BPwDxd+iiyv3eY1aqFxORVBAA==} + engines: {node: '>=14'} + hasBin: true + dependencies: + '@unocss/config': 0.45.13 + '@unocss/core': 0.45.13 + '@unocss/preset-uno': 0.45.13 + cac: 6.7.14 + chokidar: 3.5.3 + colorette: 2.0.19 + consola: 2.15.3 + fast-glob: 3.2.11 + pathe: 0.3.5 + perfect-debounce: 0.1.3 + dev: true + + /@unocss/config/0.45.13: + resolution: {integrity: sha512-LprNWU3AHaiVpYzmdHei/p67XNtHteyClB66L7eoNumTvztFcEooNWxP3lhrrEq2JuzfL8iqLpIVbbyFW7fQtA==} + engines: {node: '>=14'} + dependencies: + '@unocss/core': 0.45.13 + unconfig: 0.3.5 + dev: true + + /@unocss/core/0.45.13: + resolution: {integrity: sha512-EesxqFM6lPA6Ot5X4cyRcjJQsgpztrNFpxpu4HBIzbZvXLcoeG97bcLTASGSHPGWeL4baq0ur/47lM42dtjiMQ==} + dev: true + + /@unocss/inspector/0.45.13: + resolution: {integrity: sha512-2BMfCrLwjYFyZ9BXRshFLfpNq9mqYwWTy3SNNWfC/Vx/jDL+fYvbJy5s1QTpB6spHTJt2WWgN9HGkFtDMa7Ebw==} + dependencies: + gzip-size: 6.0.0 + sirv: 2.0.2 + dev: true + + /@unocss/preset-attributify/0.45.13: + resolution: {integrity: sha512-vEclkLqTNJjpgPrLJg0FR1ItQYTsua1XNDqUaNVypNC5LHcVO5AgJxwVGnMQTQpcK5Lx+9MM2F3tmIfLJR3KgA==} + dependencies: + '@unocss/core': 0.45.13 + dev: true + + /@unocss/preset-icons/0.45.13: + resolution: {integrity: sha512-f84rjUzbjL8j2gemygKMQ6H+8q9rSL86v9y2I6Xc8tI8D9vZeOrObsaHrfZutgFNlCmWsslPdtjB8PlHZ5gMMw==} + dependencies: + '@iconify/utils': 1.0.33 + '@unocss/core': 0.45.13 + ohmyfetch: 0.4.18 + transitivePeerDependencies: + - supports-color + dev: true + + /@unocss/preset-mini/0.45.13: + resolution: {integrity: sha512-aHnVtVu0twY0m/SzTzOLniFiBDHx1PaewJRfRdqeJdTu5d+FeWK9XA/kXudWBTvRSxOKz2yQJw3kReCVit8ueQ==} + dependencies: + '@unocss/core': 0.45.13 + dev: true + + /@unocss/preset-tagify/0.45.13: + resolution: {integrity: sha512-8gI6YGuoG99OKQv3lYklIsFmwy7N8a+NP8hVWjUfC85/kDJSIPR8BZs/eyr7vr20EkvDrTaFyRymrAAPyXVG1Q==} + dependencies: + '@unocss/core': 0.45.13 + dev: true + + /@unocss/preset-typography/0.45.13: + resolution: {integrity: sha512-zOivg+03ejd4cPWy37loItQkFh0y+snjfYvSDlaAkiZNpVltUe5qp+fD4dekC8RJvdgJcW727277nQnflF9JLA==} + dependencies: + '@unocss/core': 0.45.13 + dev: true + + /@unocss/preset-uno/0.45.13: + resolution: {integrity: sha512-j5ZdguEVHmJ105MimxvietXknYYA/Xii1+YAmr61NSHLBWGJqrwMGzYqko3tYXndB6jv8YWjq9CEB7U6SaTxdw==} + dependencies: + '@unocss/core': 0.45.13 + '@unocss/preset-mini': 0.45.13 + '@unocss/preset-wind': 0.45.13 + dev: true + + /@unocss/preset-web-fonts/0.45.13: + resolution: {integrity: sha512-tY9w5zvUU5p97wzJXa7qiN7HIl9t5Gr2TTAk6wdNpqU9BWkdO+eQEXV2/3djO50CS7tmIw/JdL7GtYrS466MbA==} + dependencies: + '@unocss/core': 0.45.13 + ohmyfetch: 0.4.18 + dev: true + + /@unocss/preset-wind/0.45.13: + resolution: {integrity: sha512-tmF8Gnmskc8B0uElaN3D9Ir/RvKfoVmhn5oKtny1rXpjpFBZsYlNYwUxzXWayH+Fzo//yppAx0FkmRxxIqOhmA==} + dependencies: + '@unocss/core': 0.45.13 + '@unocss/preset-mini': 0.45.13 + dev: true + + /@unocss/reset/0.45.13: + resolution: {integrity: sha512-BLnmfZNMNRu+qKNMm0v0xccGg8qEj4nLBKCGW739871qduN28KfqztYnY3UfGy6CJGIyMyZRI7lElhkjWO2NhA==} + dev: true + + /@unocss/scope/0.45.13: + resolution: {integrity: sha512-HJuvQVUGqAad/rPUqtjjza8yMMZTpPpVPg47w3jRUnoIS2DOVg/Ko7W3EEa+174hG2MrpoCcQLMu/o0QcYVCDg==} + dev: true + + /@unocss/transformer-attributify-jsx/0.45.13: + resolution: {integrity: sha512-ajw/3VPhJv4nJg/UgNQpdhOrF+6xGiGYD5UvsCyhJAFl4BHu10agylRXDd+37e7nHgjA+YB5+621zQ34J2o7Wg==} + dependencies: + '@unocss/core': 0.45.13 + dev: true + + /@unocss/transformer-compile-class/0.45.13: + resolution: {integrity: sha512-dfQKhJN/cS77YOTQ4O4uQJgFfy+adkKZBOYxa+9qJ22t/7q29Hge6fHQG+2R1c3B8OZjrpbq6X3EjRtsbD12Jw==} + dependencies: + '@unocss/core': 0.45.13 + dev: true + + /@unocss/transformer-directives/0.45.13: + resolution: {integrity: sha512-qEBj3zw06cFFUv4+P36ZKw0YKjNt/H9q2IivEOoQETxAiYAH+1ZfHP5gb1lPGSYQYoWHIGVezp56OGQcv7qkwQ==} + dependencies: + '@unocss/core': 0.45.13 + css-tree: 2.2.1 + dev: true + + /@unocss/transformer-variant-group/0.45.13: + resolution: {integrity: sha512-A1PoS9ijg9x/3Pu8vsBjdlAPLNKKAwFQSyVxFyQsLVG+0IEcqA/s7sRYam3QqM8RLn6lft4QPJ+q/K0+dJ84/A==} + dependencies: + '@unocss/core': 0.45.13 + dev: true + + /@unocss/vite/0.45.13_vite@2.9.15: + resolution: {integrity: sha512-uh9tGBhDX79j5tmTSsP2YBr6tplKx5ZWq/am+H9gNLLQjOo/YAMpLNyJsSvTQq0/TplxMarfXiWOmNFMMCiFjw==} + peerDependencies: + vite: ^2.9.0 || ^3.0.0-0 + dependencies: + '@ampproject/remapping': 2.2.0 + '@rollup/pluginutils': 4.2.1 + '@unocss/config': 0.45.13 + '@unocss/core': 0.45.13 + '@unocss/inspector': 0.45.13 + '@unocss/scope': 0.45.13 + '@unocss/transformer-directives': 0.45.13 + magic-string: 0.26.3 + vite: 2.9.15 + dev: true + + /@vitejs/plugin-vue/2.3.4_vite@2.9.15+vue@3.2.38: + resolution: {integrity: sha512-IfFNbtkbIm36O9KB8QodlwwYvTEsJb4Lll4c2IwB3VHc2gie2mSPtSzL0eYay7X2jd/2WX02FjSGTWR6OPr/zg==} + engines: {node: '>=12.0.0'} + peerDependencies: + vite: ^2.5.10 + vue: ^3.2.25 + dependencies: + vite: 2.9.15 + vue: 3.2.38 + dev: true + + /@volar/code-gen/0.39.5: + resolution: {integrity: sha512-vQr5VoCH8T2NHmqLc/AA1/4F8l41WB+24+I+VjxBaev/Hmwjye9K0GlmMHAOl84WB3hWGOqpHaPX6JkqzRNjJg==} + dependencies: + '@volar/source-map': 0.39.5 + dev: true + + /@volar/source-map/0.39.5: + resolution: {integrity: sha512-IVOX+v++Sr5Kok4/cLbDJp2vf1ia1rChpV7adgcnMle6uORBuGFEur234UzamK0iHRCcfFFRz7z+hSPf2CO23Q==} + dev: true + + /@volar/typescript-faster/0.39.5: + resolution: {integrity: sha512-IzLqlxefmKkjNKXC/8aFiqPcTqnj6RG31D2f9cIWxmW9pvUYJxLED+y9phnOxNxq0OmeRtQ3Pfmvu85tUBoZsQ==} + dependencies: + semver: 7.3.7 + dev: true + + /@volar/vue-code-gen/0.39.5: + resolution: {integrity: sha512-y+QUV9MuuasiIuRoGKQl+gMhDaAX6XNhckAyJCvD1FZ8f2eJuPY2VtoFxmu/Z2bGWBdtUW/g98jaeKJ+j3wwOw==} + dependencies: + '@volar/code-gen': 0.39.5 + '@volar/source-map': 0.39.5 + '@vue/compiler-core': 3.2.38 + '@vue/compiler-dom': 3.2.38 + '@vue/shared': 3.2.38 + dev: true + + /@volar/vue-language-core/0.39.5: + resolution: {integrity: sha512-m+e1tYuL/WRPhSeC7hZ0NuSwHsfnnGJVxCBHLaP7jR0f6xcC0DAegP3QF+gfu9ZJFPGznpZYFKadngMjuhQS9Q==} + dependencies: + '@volar/code-gen': 0.39.5 + '@volar/source-map': 0.39.5 + '@volar/vue-code-gen': 0.39.5 + '@vue/compiler-sfc': 3.2.38 + '@vue/reactivity': 3.2.38 + dev: true + + /@volar/vue-typescript/0.39.5: + resolution: {integrity: sha512-ckhWD1xOi0OMr702XVkv/Npsb9FKAp5gvhxyLv0QqWekPdSo04t4KrZfwosJLGERIEcyr50SuB7HqBp8ndQmzA==} + dependencies: + '@volar/code-gen': 0.39.5 + '@volar/typescript-faster': 0.39.5 + '@volar/vue-language-core': 0.39.5 + dev: true + + /@vue/compiler-core/3.2.38: + resolution: {integrity: sha512-/FsvnSu7Z+lkd/8KXMa4yYNUiqQrI22135gfsQYVGuh5tqEgOB0XqrUdb/KnCLa5+TmQLPwvyUnKMyCpu+SX3Q==} + dependencies: + '@babel/parser': 7.18.13 + '@vue/shared': 3.2.38 + estree-walker: 2.0.2 + source-map: 0.6.1 + + /@vue/compiler-dom/3.2.38: + resolution: {integrity: sha512-zqX4FgUbw56kzHlgYuEEJR8mefFiiyR3u96498+zWPsLeh1WKvgIReoNE+U7gG8bCUdvsrJ0JRmev0Ky6n2O0g==} + dependencies: + '@vue/compiler-core': 3.2.38 + '@vue/shared': 3.2.38 + + /@vue/compiler-sfc/3.2.38: + resolution: {integrity: sha512-KZjrW32KloMYtTcHAFuw3CqsyWc5X6seb8KbkANSWt3Cz9p2qA8c1GJpSkksFP9ABb6an0FLCFl46ZFXx3kKpg==} + dependencies: + '@babel/parser': 7.18.13 + '@vue/compiler-core': 3.2.38 + '@vue/compiler-dom': 3.2.38 + '@vue/compiler-ssr': 3.2.38 + '@vue/reactivity-transform': 3.2.38 + '@vue/shared': 3.2.38 + estree-walker: 2.0.2 + magic-string: 0.25.9 + postcss: 8.4.16 + source-map: 0.6.1 + + /@vue/compiler-ssr/3.2.38: + resolution: {integrity: sha512-bm9jOeyv1H3UskNm4S6IfueKjUNFmi2kRweFIGnqaGkkRePjwEcfCVqyS3roe7HvF4ugsEkhf4+kIvDhip6XzQ==} + dependencies: + '@vue/compiler-dom': 3.2.38 + '@vue/shared': 3.2.38 + + /@vue/devtools-api/6.2.1: + resolution: {integrity: sha512-OEgAMeQXvCoJ+1x8WyQuVZzFo0wcyCmUR3baRVLmKBo1LmYZWMlRiXlux5jd0fqVJu6PfDbOrZItVqUEzLobeQ==} + dev: false + + /@vue/reactivity-transform/3.2.38: + resolution: {integrity: sha512-3SD3Jmi1yXrDwiNJqQ6fs1x61WsDLqVk4NyKVz78mkaIRh6d3IqtRnptgRfXn+Fzf+m6B1KxBYWq1APj6h4qeA==} + dependencies: + '@babel/parser': 7.18.13 + '@vue/compiler-core': 3.2.38 + '@vue/shared': 3.2.38 + estree-walker: 2.0.2 + magic-string: 0.25.9 + + /@vue/reactivity/3.2.38: + resolution: {integrity: sha512-6L4myYcH9HG2M25co7/BSo0skKFHpAN8PhkNPM4xRVkyGl1K5M3Jx4rp5bsYhvYze2K4+l+pioN4e6ZwFLUVtw==} + dependencies: + '@vue/shared': 3.2.38 + + /@vue/runtime-core/3.2.38: + resolution: {integrity: sha512-kk0qiSiXUU/IKxZw31824rxmFzrLr3TL6ZcbrxWTKivadoKupdlzbQM4SlGo4MU6Zzrqv4fzyUasTU1jDoEnzg==} + dependencies: + '@vue/reactivity': 3.2.38 + '@vue/shared': 3.2.38 + + /@vue/runtime-dom/3.2.38: + resolution: {integrity: sha512-4PKAb/ck2TjxdMSzMsnHViOrrwpudk4/A56uZjhzvusoEU9xqa5dygksbzYepdZeB5NqtRw5fRhWIiQlRVK45A==} + dependencies: + '@vue/runtime-core': 3.2.38 + '@vue/shared': 3.2.38 + csstype: 2.6.20 + + /@vue/server-renderer/3.2.38_vue@3.2.38: + resolution: {integrity: sha512-pg+JanpbOZ5kEfOZzO2bt02YHd+ELhYP8zPeLU1H0e7lg079NtuuSB8fjLdn58c4Ou8UQ6C1/P+528nXnLPAhA==} + peerDependencies: + vue: 3.2.38 + dependencies: + '@vue/compiler-ssr': 3.2.38 + '@vue/shared': 3.2.38 + vue: 3.2.38 + + /@vue/shared/3.2.38: + resolution: {integrity: sha512-dTyhTIRmGXBjxJE+skC8tTWCGLCVc4wQgRRLt8+O9p5ewBAjoBwtCAkLPrtToSr1xltoe3st21Pv953aOZ7alg==} + + /@vue/test-utils/2.0.2_vue@3.2.38: + resolution: {integrity: sha512-E2P4oXSaWDqTZNbmKZFVLrNN/siVN78YkEqs7pHryWerrlZR9bBFLWdJwRoguX45Ru6HxIflzKl4vQvwRMwm5g==} + peerDependencies: + vue: ^3.0.1 + dependencies: + vue: 3.2.38 + dev: true + + /@vueuse/core/9.1.1_vue@3.2.38: + resolution: {integrity: sha512-QfuaNWRDMQcCUwXylCyYhPC3ScS9Tiiz4J0chdwr3vOemBwRToSywq8MP+ZegKYFnbETzRY8G/5zC+ca30wrRQ==} + dependencies: + '@types/web-bluetooth': 0.0.15 + '@vueuse/metadata': 9.1.1 + '@vueuse/shared': 9.1.1_vue@3.2.38 + vue-demi: 0.13.11_vue@3.2.38 + transitivePeerDependencies: + - '@vue/composition-api' + - vue + + /@vueuse/metadata/9.1.1: + resolution: {integrity: sha512-XZ2KtSW+85LLHB/IdGILPAtbIVHasPsAW7aqz3BRMzJdAQWRiM/FGa1OKBwLbXtUw/AmjKYFlZJo7eOFIBXRog==} + + /@vueuse/shared/9.1.1_vue@3.2.38: + resolution: {integrity: sha512-c+IfcOYmHiHqoEa3ED1Tbpue5GHmoUmTp8PtO4YbczthtY155Rt6DmWhjxMLXBF1Bcidagxljmp/7xtAzEHXLw==} + dependencies: + vue-demi: 0.13.11_vue@3.2.38 + transitivePeerDependencies: + - '@vue/composition-api' + - vue + + /abab/2.0.6: + resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==} + dev: true + + /acorn-globals/6.0.0: + resolution: {integrity: sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==} + dependencies: + acorn: 7.4.1 + acorn-walk: 7.2.0 + dev: true + + /acorn-jsx/5.3.2_acorn@8.8.0: + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + acorn: 8.8.0 + dev: true + + /acorn-walk/7.2.0: + resolution: {integrity: sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==} + engines: {node: '>=0.4.0'} + dev: true + + /acorn/7.4.1: + resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} + engines: {node: '>=0.4.0'} + hasBin: true + dev: true + + /acorn/8.8.0: + resolution: {integrity: sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==} + engines: {node: '>=0.4.0'} + hasBin: true + dev: true + + /agent-base/6.0.2: + resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} + engines: {node: '>= 6.0.0'} + dependencies: + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + dev: true + + /ajv/6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + dev: true + + /ansi-regex/5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + dev: true + + /ansi-styles/4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + dependencies: + color-convert: 2.0.1 + dev: true + + /anymatch/3.1.2: + resolution: {integrity: sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==} + engines: {node: '>= 8'} + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + dev: true + + /argparse/2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + dev: true + + /array-union/2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} + dev: true + + /assertion-error/1.1.0: + resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} + dev: true + + /asynckit/0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + dev: true + + /available-typed-arrays/1.0.5: + resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} + engines: {node: '>= 0.4'} + dev: true + + /balanced-match/1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + dev: true + + /binary-extensions/2.2.0: + resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} + engines: {node: '>=8'} + dev: true + + /brace-expansion/1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + dev: true + + /brace-expansion/2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + dependencies: + balanced-match: 1.0.2 + dev: true + + /braces/3.0.2: + resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} + engines: {node: '>=8'} + dependencies: + fill-range: 7.0.1 + dev: true + + /browser-process-hrtime/1.0.0: + resolution: {integrity: sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==} + dev: true + + /cac/6.7.14: + resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} + engines: {node: '>=8'} + dev: true + + /call-bind/1.0.2: + resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} + dependencies: + function-bind: 1.1.1 + get-intrinsic: 1.1.2 + dev: true + + /callsites/3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + dev: true + + /chai/4.3.6: + resolution: {integrity: sha512-bbcp3YfHCUzMOvKqsztczerVgBKSsEijCySNlHHbX3VG1nskvqjz5Rfso1gGwD6w6oOV3eI60pKuMOV5MV7p3Q==} + engines: {node: '>=4'} + dependencies: + assertion-error: 1.1.0 + check-error: 1.0.2 + deep-eql: 3.0.1 + get-func-name: 2.0.0 + loupe: 2.3.4 + pathval: 1.1.1 + type-detect: 4.0.8 + dev: true + + /chalk/4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + dev: true + + /check-error/1.0.2: + resolution: {integrity: sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==} + dev: true + + /chokidar/3.5.3: + resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} + engines: {node: '>= 8.10.0'} + dependencies: + anymatch: 3.1.2 + braces: 3.0.2 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.2 + dev: true + + /codemirror/6.0.1: + resolution: {integrity: sha512-J8j+nZ+CdWmIeFIGXEFbFPtpiYacFMDR8GlHK3IyHQJMCaVRfGx9NT+Hxivv1ckLWPvNdZqndbr/7lVhrf/Svg==} + dependencies: + '@codemirror/autocomplete': 6.1.0 + '@codemirror/commands': 6.1.0 + '@codemirror/language': 6.2.1 + '@codemirror/lint': 6.0.0 + '@codemirror/search': 6.2.0 + '@codemirror/state': 6.1.1 + '@codemirror/view': 6.2.2 + dev: false + + /color-convert/2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + dependencies: + color-name: 1.1.4 + dev: true + + /color-name/1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + dev: true + + /colorette/2.0.19: + resolution: {integrity: sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==} + dev: true + + /combined-stream/1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + dependencies: + delayed-stream: 1.0.0 + dev: true + + /concat-map/0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + dev: true + + /consola/2.15.3: + resolution: {integrity: sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==} + dev: true + + /crelt/1.0.5: + resolution: {integrity: sha512-+BO9wPPi+DWTDcNYhr/W90myha8ptzftZT+LwcmUbbok0rcP/fequmFYCw8NMoH7pkAZQzU78b3kYrlua5a9eA==} + dev: false + + /cross-spawn/7.0.3: + resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + engines: {node: '>= 8'} + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + dev: true + + /css-tree/2.2.1: + resolution: {integrity: sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} + dependencies: + mdn-data: 2.0.28 + source-map-js: 1.0.2 + dev: true + + /cssom/0.3.8: + resolution: {integrity: sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==} + dev: true + + /cssom/0.5.0: + resolution: {integrity: sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==} + dev: true + + /cssstyle/2.3.0: + resolution: {integrity: sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==} + engines: {node: '>=8'} + dependencies: + cssom: 0.3.8 + dev: true + + /csstype/2.6.20: + resolution: {integrity: sha512-/WwNkdXfckNgw6S5R125rrW8ez139lBHWouiBvX8dfMFtcn6V81REDqnH7+CRpRipfYlyU1CmOnOxrmGcFOjeA==} + + /data-urls/3.0.2: + resolution: {integrity: sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==} + engines: {node: '>=12'} + dependencies: + abab: 2.0.6 + whatwg-mimetype: 3.0.0 + whatwg-url: 11.0.0 + dev: true + + /debug/4.3.4: + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + dev: true + + /decimal.js/10.4.0: + resolution: {integrity: sha512-Nv6ENEzyPQ6AItkGwLE2PGKinZZ9g59vSh2BeH6NqPu0OTKZ5ruJsVqh/orbAnqXc9pBbgXAIrc2EyaCj8NpGg==} + dev: true + + /deep-eql/3.0.1: + resolution: {integrity: sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==} + engines: {node: '>=0.12'} + dependencies: + type-detect: 4.0.8 + dev: true + + /deep-equal/2.0.5: + resolution: {integrity: sha512-nPiRgmbAtm1a3JsnLCf6/SLfXcjyN5v8L1TXzdCmHrXJ4hx+gW/w1YCcn7z8gJtSiDArZCgYtbao3QqLm/N1Sw==} + dependencies: + call-bind: 1.0.2 + es-get-iterator: 1.1.2 + get-intrinsic: 1.1.2 + is-arguments: 1.1.1 + is-date-object: 1.0.5 + is-regex: 1.1.4 + isarray: 2.0.5 + object-is: 1.1.5 + object-keys: 1.1.1 + object.assign: 4.1.4 + regexp.prototype.flags: 1.4.3 + side-channel: 1.0.4 + which-boxed-primitive: 1.0.2 + which-collection: 1.0.1 + which-typed-array: 1.1.8 + dev: true + + /deep-is/0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + dev: true + + /define-properties/1.1.4: + resolution: {integrity: sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==} + engines: {node: '>= 0.4'} + dependencies: + has-property-descriptors: 1.0.0 + object-keys: 1.1.1 + dev: true + + /defu/6.1.0: + resolution: {integrity: sha512-pOFYRTIhoKujrmbTRhcW5lYQLBXw/dlTwfI8IguF1QCDJOcJzNH1w+YFjxqy6BAuJrClTy6MUE8q+oKJ2FLsIw==} + dev: true + + /delayed-stream/1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + dev: true + + /destr/1.1.1: + resolution: {integrity: sha512-QqkneF8LrYmwATMdnuD2MLI3GHQIcBnG6qFC2q9bSH430VTCDAVjcspPmUaKhPGtAtPAftIUFqY1obQYQuwmbg==} + dev: true + + /dir-glob/3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} + dependencies: + path-type: 4.0.0 + dev: true + + /doctrine/3.0.0: + resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} + engines: {node: '>=6.0.0'} + dependencies: + esutils: 2.0.3 + dev: true + + /domexception/4.0.0: + resolution: {integrity: sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==} + engines: {node: '>=12'} + dependencies: + webidl-conversions: 7.0.0 + dev: true + + /duplexer/0.1.2: + resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} + dev: true + + /entities/4.4.0: + resolution: {integrity: sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA==} + engines: {node: '>=0.12'} + dev: true + + /es-abstract/1.20.1: + resolution: {integrity: sha512-WEm2oBhfoI2sImeM4OF2zE2V3BYdSF+KnSi9Sidz51fQHd7+JuF8Xgcj9/0o+OWeIeIS/MiuNnlruQrJf16GQA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + es-to-primitive: 1.2.1 + function-bind: 1.1.1 + function.prototype.name: 1.1.5 + get-intrinsic: 1.1.2 + get-symbol-description: 1.0.0 + has: 1.0.3 + has-property-descriptors: 1.0.0 + has-symbols: 1.0.3 + internal-slot: 1.0.3 + is-callable: 1.2.4 + is-negative-zero: 2.0.2 + is-regex: 1.1.4 + is-shared-array-buffer: 1.0.2 + is-string: 1.0.7 + is-weakref: 1.0.2 + object-inspect: 1.12.2 + object-keys: 1.1.1 + object.assign: 4.1.4 + regexp.prototype.flags: 1.4.3 + string.prototype.trimend: 1.0.5 + string.prototype.trimstart: 1.0.5 + unbox-primitive: 1.0.2 + dev: true + + /es-get-iterator/1.1.2: + resolution: {integrity: sha512-+DTO8GYwbMCwbywjimwZMHp8AuYXOS2JZFWoi2AlPOS3ebnII9w/NLpNZtA7A0YLaVDw+O7KFCeoIV7OPvM7hQ==} + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.1.2 + has-symbols: 1.0.3 + is-arguments: 1.1.1 + is-map: 2.0.2 + is-set: 2.0.2 + is-string: 1.0.7 + isarray: 2.0.5 + dev: true + + /es-to-primitive/1.2.1: + resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} + engines: {node: '>= 0.4'} + dependencies: + is-callable: 1.2.4 + is-date-object: 1.0.5 + is-symbol: 1.0.4 + dev: true + + /esbuild-android-64/0.14.54: + resolution: {integrity: sha512-Tz2++Aqqz0rJ7kYBfz+iqyE3QMycD4vk7LBRyWaAVFgFtQ/O8EJOnVmTOiDWYZ/uYzB4kvP+bqejYdVKzE5lAQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /esbuild-android-arm64/0.14.54: + resolution: {integrity: sha512-F9E+/QDi9sSkLaClO8SOV6etqPd+5DgJje1F9lOWoNncDdOBL2YF59IhsWATSt0TLZbYCf3pNlTHvVV5VfHdvg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /esbuild-darwin-64/0.14.54: + resolution: {integrity: sha512-jtdKWV3nBviOd5v4hOpkVmpxsBy90CGzebpbO9beiqUYVMBtSc0AL9zGftFuBon7PNDcdvNCEuQqw2x0wP9yug==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /esbuild-darwin-arm64/0.14.54: + resolution: {integrity: sha512-OPafJHD2oUPyvJMrsCvDGkRrVCar5aVyHfWGQzY1dWnzErjrDuSETxwA2HSsyg2jORLY8yBfzc1MIpUkXlctmw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /esbuild-freebsd-64/0.14.54: + resolution: {integrity: sha512-OKwd4gmwHqOTp4mOGZKe/XUlbDJ4Q9TjX0hMPIDBUWWu/kwhBAudJdBoxnjNf9ocIB6GN6CPowYpR/hRCbSYAg==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /esbuild-freebsd-arm64/0.14.54: + resolution: {integrity: sha512-sFwueGr7OvIFiQT6WeG0jRLjkjdqWWSrfbVwZp8iMP+8UHEHRBvlaxL6IuKNDwAozNUmbb8nIMXa7oAOARGs1Q==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-32/0.14.54: + resolution: {integrity: sha512-1ZuY+JDI//WmklKlBgJnglpUL1owm2OX+8E1syCD6UAxcMM/XoWd76OHSjl/0MR0LisSAXDqgjT3uJqT67O3qw==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-64/0.14.54: + resolution: {integrity: sha512-EgjAgH5HwTbtNsTqQOXWApBaPVdDn7XcK+/PtJwZLT1UmpLoznPd8c5CxqsH2dQK3j05YsB3L17T8vE7cp4cCg==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-arm/0.14.54: + resolution: {integrity: sha512-qqz/SjemQhVMTnvcLGoLOdFpCYbz4v4fUo+TfsWG+1aOu70/80RV6bgNpR2JCrppV2moUQkww+6bWxXRL9YMGw==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-arm64/0.14.54: + resolution: {integrity: sha512-WL71L+0Rwv+Gv/HTmxTEmpv0UgmxYa5ftZILVi2QmZBgX3q7+tDeOQNqGtdXSdsL8TQi1vIaVFHUPDe0O0kdig==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-mips64le/0.14.54: + resolution: {integrity: sha512-qTHGQB8D1etd0u1+sB6p0ikLKRVuCWhYQhAHRPkO+OF3I/iSlTKNNS0Lh2Oc0g0UFGguaFZZiPJdJey3AGpAlw==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-ppc64le/0.14.54: + resolution: {integrity: sha512-j3OMlzHiqwZBDPRCDFKcx595XVfOfOnv68Ax3U4UKZ3MTYQB5Yz3X1mn5GnodEVYzhtZgxEBidLWeIs8FDSfrQ==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-riscv64/0.14.54: + resolution: {integrity: sha512-y7Vt7Wl9dkOGZjxQZnDAqqn+XOqFD7IMWiewY5SPlNlzMX39ocPQlOaoxvT4FllA5viyV26/QzHtvTjVNOxHZg==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-s390x/0.14.54: + resolution: {integrity: sha512-zaHpW9dziAsi7lRcyV4r8dhfG1qBidQWUXweUjnw+lliChJqQr+6XD71K41oEIC3Mx1KStovEmlzm+MkGZHnHA==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-netbsd-64/0.14.54: + resolution: {integrity: sha512-PR01lmIMnfJTgeU9VJTDY9ZerDWVFIUzAtJuDHwwceppW7cQWjBBqP48NdeRtoP04/AtO9a7w3viI+PIDr6d+w==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: true + optional: true + + /esbuild-openbsd-64/0.14.54: + resolution: {integrity: sha512-Qyk7ikT2o7Wu76UsvvDS5q0amJvmRzDyVlL0qf5VLsLchjCa1+IAvd8kTBgUxD7VBUUVgItLkk609ZHUc1oCaw==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: true + optional: true + + /esbuild-sunos-64/0.14.54: + resolution: {integrity: sha512-28GZ24KmMSeKi5ueWzMcco6EBHStL3B6ubM7M51RmPwXQGLe0teBGJocmWhgwccA1GeFXqxzILIxXpHbl9Q/Kw==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: true + optional: true + + /esbuild-windows-32/0.14.54: + resolution: {integrity: sha512-T+rdZW19ql9MjS7pixmZYVObd9G7kcaZo+sETqNH4RCkuuYSuv9AGHUVnPoP9hhuE1WM1ZimHz1CIBHBboLU7w==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /esbuild-windows-64/0.14.54: + resolution: {integrity: sha512-AoHTRBUuYwXtZhjXZbA1pGfTo8cJo3vZIcWGLiUcTNgHpJJMC1rVA44ZereBHMJtotyN71S8Qw0npiCIkW96cQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /esbuild-windows-arm64/0.14.54: + resolution: {integrity: sha512-M0kuUvXhot1zOISQGXwWn6YtS+Y/1RT9WrVIOywZnJHo3jCDyewAc79aKNQWFCQm+xNHVTq9h8dZKvygoXQQRg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /esbuild/0.14.54: + resolution: {integrity: sha512-Cy9llcy8DvET5uznocPyqL3BFRrFXSVqbgpMJ9Wz8oVjZlh/zUSNbPRbov0VX7VxN2JH1Oa0uNxZ7eLRb62pJA==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/linux-loong64': 0.14.54 + esbuild-android-64: 0.14.54 + esbuild-android-arm64: 0.14.54 + esbuild-darwin-64: 0.14.54 + esbuild-darwin-arm64: 0.14.54 + esbuild-freebsd-64: 0.14.54 + esbuild-freebsd-arm64: 0.14.54 + esbuild-linux-32: 0.14.54 + esbuild-linux-64: 0.14.54 + esbuild-linux-arm: 0.14.54 + esbuild-linux-arm64: 0.14.54 + esbuild-linux-mips64le: 0.14.54 + esbuild-linux-ppc64le: 0.14.54 + esbuild-linux-riscv64: 0.14.54 + esbuild-linux-s390x: 0.14.54 + esbuild-netbsd-64: 0.14.54 + esbuild-openbsd-64: 0.14.54 + esbuild-sunos-64: 0.14.54 + esbuild-windows-32: 0.14.54 + esbuild-windows-64: 0.14.54 + esbuild-windows-arm64: 0.14.54 + dev: true + + /escape-string-regexp/4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + dev: true + + /escape-string-regexp/5.0.0: + resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} + engines: {node: '>=12'} + dev: true + + /escodegen/2.0.0: + resolution: {integrity: sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==} + engines: {node: '>=6.0'} + hasBin: true + dependencies: + esprima: 4.0.1 + estraverse: 5.3.0 + esutils: 2.0.3 + optionator: 0.8.3 + optionalDependencies: + source-map: 0.6.1 + dev: true + + /eslint-scope/7.1.1: + resolution: {integrity: sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + dev: true + + /eslint-utils/3.0.0_eslint@8.23.0: + resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} + engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} + peerDependencies: + eslint: '>=5' + dependencies: + eslint: 8.23.0 + eslint-visitor-keys: 2.1.0 + dev: true + + /eslint-visitor-keys/2.1.0: + resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} + engines: {node: '>=10'} + dev: true + + /eslint-visitor-keys/3.3.0: + resolution: {integrity: sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + + /eslint/8.23.0: + resolution: {integrity: sha512-pBG/XOn0MsJcKcTRLr27S5HpzQo4kLr+HjLQIyK4EiCsijDl/TB+h5uEuJU6bQ8Edvwz1XWOjpaP2qgnXGpTcA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + hasBin: true + dependencies: + '@eslint/eslintrc': 1.3.1 + '@humanwhocodes/config-array': 0.10.4 + '@humanwhocodes/gitignore-to-minimatch': 1.0.2 + '@humanwhocodes/module-importer': 1.0.1 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.3 + debug: 4.3.4 + doctrine: 3.0.0 + escape-string-regexp: 4.0.0 + eslint-scope: 7.1.1 + eslint-utils: 3.0.0_eslint@8.23.0 + eslint-visitor-keys: 3.3.0 + espree: 9.4.0 + esquery: 1.4.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 6.0.1 + find-up: 5.0.0 + functional-red-black-tree: 1.0.1 + glob-parent: 6.0.2 + globals: 13.17.0 + globby: 11.1.0 + grapheme-splitter: 1.0.4 + ignore: 5.2.0 + import-fresh: 3.3.0 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + js-yaml: 4.1.0 + json-stable-stringify-without-jsonify: 1.0.1 + levn: 0.4.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.1 + regexpp: 3.2.0 + strip-ansi: 6.0.1 + strip-json-comments: 3.1.1 + text-table: 0.2.0 + transitivePeerDependencies: + - supports-color + dev: true + + /espree/9.4.0: + resolution: {integrity: sha512-DQmnRpLj7f6TgN/NYb0MTzJXL+vJF9h3pHy4JhCIs3zwcgez8xmGg3sXHcEO97BrmO2OSvCwMdfdlyl+E9KjOw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + acorn: 8.8.0 + acorn-jsx: 5.3.2_acorn@8.8.0 + eslint-visitor-keys: 3.3.0 + dev: true + + /esprima-extract-comments/1.1.0: + resolution: {integrity: sha512-sBQUnvJwpeE9QnPrxh7dpI/dp67erYG4WXEAreAMoelPRpMR7NWb4YtwRPn9b+H1uLQKl/qS8WYmyaljTpjIsw==} + engines: {node: '>=4'} + dependencies: + esprima: 4.0.1 + dev: true + + /esprima/4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true + dev: true + + /esquery/1.4.0: + resolution: {integrity: sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==} + engines: {node: '>=0.10'} + dependencies: + estraverse: 5.3.0 + dev: true + + /esrecurse/4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + dependencies: + estraverse: 5.3.0 + dev: true + + /estraverse/5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + dev: true + + /estree-walker/2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + + /esutils/2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + dev: true + + /execa/5.1.1: + resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} + engines: {node: '>=10'} + dependencies: + cross-spawn: 7.0.3 + get-stream: 6.0.1 + human-signals: 2.1.0 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 + dev: true + + /extract-comments/1.1.0: + resolution: {integrity: sha512-dzbZV2AdSSVW/4E7Ti5hZdHWbA+Z80RJsJhr5uiL10oyjl/gy7/o+HI1HwK4/WSZhlq4SNKU3oUzXlM13Qx02Q==} + engines: {node: '>=6'} + dependencies: + esprima-extract-comments: 1.1.0 + parse-code-context: 1.0.0 + dev: true + + /fast-deep-equal/3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + dev: true + + /fast-glob/3.2.11: + resolution: {integrity: sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==} + engines: {node: '>=8.6.0'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.5 + dev: true + + /fast-json-stable-stringify/2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + dev: true + + /fast-levenshtein/2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + dev: true + + /fastq/1.13.0: + resolution: {integrity: sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==} + dependencies: + reusify: 1.0.4 + dev: true + + /file-entry-cache/6.0.1: + resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} + engines: {node: ^10.12.0 || >=12.0.0} + dependencies: + flat-cache: 3.0.4 + dev: true + + /fill-range/7.0.1: + resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} + engines: {node: '>=8'} + dependencies: + to-regex-range: 5.0.1 + dev: true + + /find-up/5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + dev: true + + /flat-cache/3.0.4: + resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==} + engines: {node: ^10.12.0 || >=12.0.0} + dependencies: + flatted: 3.2.7 + rimraf: 3.0.2 + dev: true + + /flatted/3.2.7: + resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} + dev: true + + /for-each/0.3.3: + resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} + dependencies: + is-callable: 1.2.4 + dev: true + + /form-data/4.0.0: + resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} + engines: {node: '>= 6'} + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + dev: true + + /fs.realpath/1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + dev: true + + /fsevents/2.3.2: + resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /function-bind/1.1.1: + resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} + dev: true + + /function.prototype.name/1.1.5: + resolution: {integrity: sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.4 + es-abstract: 1.20.1 + functions-have-names: 1.2.3 + dev: true + + /functional-red-black-tree/1.0.1: + resolution: {integrity: sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==} + dev: true + + /functions-have-names/1.2.3: + resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + dev: true + + /get-func-name/2.0.0: + resolution: {integrity: sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==} + dev: true + + /get-intrinsic/1.1.2: + resolution: {integrity: sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA==} + dependencies: + function-bind: 1.1.1 + has: 1.0.3 + has-symbols: 1.0.3 + dev: true + + /get-stream/6.0.1: + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + engines: {node: '>=10'} + dev: true + + /get-symbol-description/1.0.0: + resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.1.2 + dev: true + + /glob-parent/5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + dependencies: + is-glob: 4.0.3 + dev: true + + /glob-parent/6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + dependencies: + is-glob: 4.0.3 + dev: true + + /glob/7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + dev: true + + /globals/13.17.0: + resolution: {integrity: sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==} + engines: {node: '>=8'} + dependencies: + type-fest: 0.20.2 + dev: true + + /globby/11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} + dependencies: + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.2.11 + ignore: 5.2.0 + merge2: 1.4.1 + slash: 3.0.0 + dev: true + + /grapheme-splitter/1.0.4: + resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} + dev: true + + /gzip-size/6.0.0: + resolution: {integrity: sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==} + engines: {node: '>=10'} + dependencies: + duplexer: 0.1.2 + dev: true + + /has-bigints/1.0.2: + resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} + dev: true + + /has-flag/4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + dev: true + + /has-property-descriptors/1.0.0: + resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==} + dependencies: + get-intrinsic: 1.1.2 + dev: true + + /has-symbols/1.0.3: + resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} + engines: {node: '>= 0.4'} + dev: true + + /has-tostringtag/1.0.0: + resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} + engines: {node: '>= 0.4'} + dependencies: + has-symbols: 1.0.3 + dev: true + + /has/1.0.3: + resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} + engines: {node: '>= 0.4.0'} + dependencies: + function-bind: 1.1.1 + dev: true + + /html-encoding-sniffer/3.0.0: + resolution: {integrity: sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==} + engines: {node: '>=12'} + dependencies: + whatwg-encoding: 2.0.0 + dev: true + + /http-proxy-agent/5.0.0: + resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==} + engines: {node: '>= 6'} + dependencies: + '@tootallnate/once': 2.0.0 + agent-base: 6.0.2 + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + dev: true + + /https-proxy-agent/5.0.1: + resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} + engines: {node: '>= 6'} + dependencies: + agent-base: 6.0.2 + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + dev: true + + /human-signals/2.1.0: + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} + engines: {node: '>=10.17.0'} + dev: true + + /iconv-lite/0.6.3: + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} + engines: {node: '>=0.10.0'} + dependencies: + safer-buffer: 2.1.2 + dev: true + + /ignore/5.2.0: + resolution: {integrity: sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==} + engines: {node: '>= 4'} + dev: true + + /import-fresh/3.3.0: + resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} + engines: {node: '>=6'} + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + dev: true + + /imurmurhash/0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + dev: true + + /inflight/1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + dev: true + + /inherits/2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + dev: true + + /internal-slot/1.0.3: + resolution: {integrity: sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.1.2 + has: 1.0.3 + side-channel: 1.0.4 + dev: true + + /is-arguments/1.1.1: + resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + has-tostringtag: 1.0.0 + dev: true + + /is-bigint/1.0.4: + resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} + dependencies: + has-bigints: 1.0.2 + dev: true + + /is-binary-path/2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + dependencies: + binary-extensions: 2.2.0 + dev: true + + /is-boolean-object/1.1.2: + resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + has-tostringtag: 1.0.0 + dev: true + + /is-callable/1.2.4: + resolution: {integrity: sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==} + engines: {node: '>= 0.4'} + dev: true + + /is-core-module/2.10.0: + resolution: {integrity: sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==} + dependencies: + has: 1.0.3 + dev: true + + /is-date-object/1.0.5: + resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 + dev: true + + /is-extglob/2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + dev: true + + /is-glob/4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + dependencies: + is-extglob: 2.1.1 + dev: true + + /is-map/2.0.2: + resolution: {integrity: sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==} + dev: true + + /is-negative-zero/2.0.2: + resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} + engines: {node: '>= 0.4'} + dev: true + + /is-number-object/1.0.7: + resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 + dev: true + + /is-number/7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + dev: true + + /is-potential-custom-element-name/1.0.1: + resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} + dev: true + + /is-regex/1.1.4: + resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + has-tostringtag: 1.0.0 + dev: true + + /is-set/2.0.2: + resolution: {integrity: sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==} + dev: true + + /is-shared-array-buffer/1.0.2: + resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} + dependencies: + call-bind: 1.0.2 + dev: true + + /is-stream/2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} + dev: true + + /is-string/1.0.7: + resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 + dev: true + + /is-symbol/1.0.4: + resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} + engines: {node: '>= 0.4'} + dependencies: + has-symbols: 1.0.3 + dev: true + + /is-typed-array/1.1.9: + resolution: {integrity: sha512-kfrlnTTn8pZkfpJMUgYD7YZ3qzeJgWUn8XfVYBARc4wnmNOmLbmuuaAs3q5fvB0UJOn6yHAKaGTPM7d6ezoD/A==} + engines: {node: '>= 0.4'} + dependencies: + available-typed-arrays: 1.0.5 + call-bind: 1.0.2 + es-abstract: 1.20.1 + for-each: 0.3.3 + has-tostringtag: 1.0.0 + dev: true + + /is-weakmap/2.0.1: + resolution: {integrity: sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==} + dev: true + + /is-weakref/1.0.2: + resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} + dependencies: + call-bind: 1.0.2 + dev: true + + /is-weakset/2.0.2: + resolution: {integrity: sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==} + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.1.2 + dev: true + + /isarray/2.0.5: + resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} + dev: true + + /isexe/2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + dev: true + + /jiti/1.14.0: + resolution: {integrity: sha512-4IwstlaKQc9vCTC+qUXLM1hajy2ImiL9KnLvVYiaHOtS/v3wRjhLlGl121AmgDgx/O43uKmxownJghS5XMya2A==} + hasBin: true + dev: true + + /js-yaml/4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + dependencies: + argparse: 2.0.1 + dev: true + + /jsdom/20.0.0: + resolution: {integrity: sha512-x4a6CKCgx00uCmP+QakBDFXwjAJ69IkkIWHmtmjd3wvXPcdOS44hfX2vqkOQrVrq8l9DhNNADZRXaCEWvgXtVA==} + engines: {node: '>=14'} + peerDependencies: + canvas: ^2.5.0 + peerDependenciesMeta: + canvas: + optional: true + dependencies: + abab: 2.0.6 + acorn: 8.8.0 + acorn-globals: 6.0.0 + cssom: 0.5.0 + cssstyle: 2.3.0 + data-urls: 3.0.2 + decimal.js: 10.4.0 + domexception: 4.0.0 + escodegen: 2.0.0 + form-data: 4.0.0 + html-encoding-sniffer: 3.0.0 + http-proxy-agent: 5.0.0 + https-proxy-agent: 5.0.1 + is-potential-custom-element-name: 1.0.1 + nwsapi: 2.2.1 + parse5: 7.0.0 + saxes: 6.0.0 + symbol-tree: 3.2.4 + tough-cookie: 4.1.2 + w3c-hr-time: 1.0.2 + w3c-xmlserializer: 3.0.0 + webidl-conversions: 7.0.0 + whatwg-encoding: 2.0.0 + whatwg-mimetype: 3.0.0 + whatwg-url: 11.0.0 + ws: 8.8.1 + xml-name-validator: 4.0.0 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + dev: true + + /json-schema-traverse/0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + dev: true + + /json-stable-stringify-without-jsonify/1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + dev: true + + /json5/2.2.1: + resolution: {integrity: sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==} + engines: {node: '>=6'} + hasBin: true + dev: true + + /jsonc-parser/3.2.0: + resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} + dev: true + + /kolorist/1.5.1: + resolution: {integrity: sha512-lxpCM3HTvquGxKGzHeknB/sUjuVoUElLlfYnXZT73K8geR9jQbroGlSCFBax9/0mpGoD3kzcMLnOlGQPJJNyqQ==} + dev: true + + /levn/0.3.0: + resolution: {integrity: sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.1.2 + type-check: 0.3.2 + dev: true + + /levn/0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + dev: true + + /local-pkg/0.4.2: + resolution: {integrity: sha512-mlERgSPrbxU3BP4qBqAvvwlgW4MTg78iwJdGGnv7kibKjWcJksrG3t6LB5lXI93wXRDvG4NpUgJFmTG4T6rdrg==} + engines: {node: '>=14'} + dev: true + + /locate-path/6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + dependencies: + p-locate: 5.0.0 + dev: true + + /lodash.merge/4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + dev: true + + /loupe/2.3.4: + resolution: {integrity: sha512-OvKfgCC2Ndby6aSTREl5aCCPTNIzlDfQZvZxNUrBrihDhL3xcrYegTblhmEiCrg2kKQz4XsFIaemE5BF4ybSaQ==} + dependencies: + get-func-name: 2.0.0 + dev: true + + /lru-cache/6.0.0: + resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} + engines: {node: '>=10'} + dependencies: + yallist: 4.0.0 + dev: true + + /magic-string/0.25.9: + resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==} + dependencies: + sourcemap-codec: 1.4.8 + + /magic-string/0.26.3: + resolution: {integrity: sha512-u1Po0NDyFcwdg2nzHT88wSK0+Rih0N1M+Ph1Sp08k8yvFFU3KR72wryS7e1qMPJypt99WB7fIFVCA92mQrMjrg==} + engines: {node: '>=12'} + dependencies: + sourcemap-codec: 1.4.8 + dev: true + + /mdn-data/2.0.28: + resolution: {integrity: sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==} + dev: true + + /merge-stream/2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + dev: true + + /merge2/1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + dev: true + + /micromatch/4.0.5: + resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} + engines: {node: '>=8.6'} + dependencies: + braces: 3.0.2 + picomatch: 2.3.1 + dev: true + + /mime-db/1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + dev: true + + /mime-types/2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + dependencies: + mime-db: 1.52.0 + dev: true + + /mimic-fn/2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + dev: true + + /minimatch/3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + dependencies: + brace-expansion: 1.1.11 + dev: true + + /minimatch/5.1.0: + resolution: {integrity: sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==} + engines: {node: '>=10'} + dependencies: + brace-expansion: 2.0.1 + dev: true + + /mlly/0.5.14: + resolution: {integrity: sha512-DgRgNUSX9NIxxCxygX4Xeg9C7GX7OUx1wuQ8cXx9o9LE0e9wrH+OZ9fcnrlEedsC/rtqry3ZhUddC759XD/L0w==} + dependencies: + acorn: 8.8.0 + pathe: 0.3.5 + pkg-types: 0.3.4 + ufo: 0.8.5 + dev: true + + /mrmime/1.0.1: + resolution: {integrity: sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==} + engines: {node: '>=10'} + dev: true + + /ms/2.1.2: + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + dev: true + + /nanoid/3.3.4: + resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + /natural-compare/1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + dev: true + + /node-fetch-native/0.1.4: + resolution: {integrity: sha512-10EKpOCQPXwZVFh3U1ptOMWBgKTbsN7Vvo6WVKt5pw4hp8zbv6ZVBZPlXw+5M6Tyi1oc1iD4/sNPd71KYA16tQ==} + dev: true + + /normalize-path/3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + dev: true + + /npm-run-path/4.0.1: + resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} + engines: {node: '>=8'} + dependencies: + path-key: 3.1.1 + dev: true + + /nwsapi/2.2.1: + resolution: {integrity: sha512-JYOWTeFoS0Z93587vRJgASD5Ut11fYl5NyihP3KrYBvMe1FRRs6RN7m20SA/16GM4P6hTnZjT+UmDOt38UeXNg==} + dev: true + + /object-inspect/1.12.2: + resolution: {integrity: sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==} + dev: true + + /object-is/1.1.5: + resolution: {integrity: sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.4 + dev: true + + /object-keys/1.1.1: + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + engines: {node: '>= 0.4'} + dev: true + + /object.assign/4.1.4: + resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.4 + has-symbols: 1.0.3 + object-keys: 1.1.1 + dev: true + + /ohmyfetch/0.4.18: + resolution: {integrity: sha512-MslzNrQzBLtZHmiZBI8QMOcMpdNFlK61OJ34nFNFynZ4v+4BonfCQ7VIN4EGXvGGq5zhDzgdJoY3o9S1l2T7KQ==} + dependencies: + destr: 1.1.1 + node-fetch-native: 0.1.4 + ufo: 0.8.5 + undici: 5.10.0 + dev: true + + /once/1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + dependencies: + wrappy: 1.0.2 + dev: true + + /onetime/5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} + dependencies: + mimic-fn: 2.1.0 + dev: true + + /optionator/0.8.3: + resolution: {integrity: sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==} + engines: {node: '>= 0.8.0'} + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.3.0 + prelude-ls: 1.1.2 + type-check: 0.3.2 + word-wrap: 1.2.3 + dev: true + + /optionator/0.9.1: + resolution: {integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==} + engines: {node: '>= 0.8.0'} + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + word-wrap: 1.2.3 + dev: true + + /p-limit/3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + dependencies: + yocto-queue: 0.1.0 + dev: true + + /p-locate/5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + dependencies: + p-limit: 3.1.0 + dev: true + + /parent-module/1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + dependencies: + callsites: 3.1.0 + dev: true + + /parse-code-context/1.0.0: + resolution: {integrity: sha512-OZQaqKaQnR21iqhlnPfVisFjBWjhnMl5J9MgbP8xC+EwoVqbXrq78lp+9Zb3ahmLzrIX5Us/qbvBnaS3hkH6OA==} + engines: {node: '>=6'} + dev: true + + /parse5/7.0.0: + resolution: {integrity: sha512-y/t8IXSPWTuRZqXc0ajH/UwDj4mnqLEbSttNbThcFhGrZuOyoyvNBO85PBp2jQa55wY9d07PBNjsK8ZP3K5U6g==} + dependencies: + entities: 4.4.0 + dev: true + + /path-exists/4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + dev: true + + /path-is-absolute/1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + dev: true + + /path-key/3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + dev: true + + /path-parse/1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + dev: true + + /path-type/4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + dev: true + + /pathe/0.3.5: + resolution: {integrity: sha512-grU/QeYP0ChuE5kjU2/k8VtAeODzbernHlue0gTa27+ayGIu3wqYBIPGfP9r5xSqgCgDd4nWrjKXEfxMillByg==} + dev: true + + /pathval/1.1.1: + resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} + dev: true + + /perfect-debounce/0.1.3: + resolution: {integrity: sha512-NOT9AcKiDGpnV/HBhI22Str++XWcErO/bALvHCuhv33owZW/CjH8KAFLZDCmu3727sihe0wTxpDhyGc6M8qacQ==} + dev: true + + /picocolors/1.0.0: + resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} + + /picomatch/2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + dev: true + + /pkg-types/0.3.4: + resolution: {integrity: sha512-s214f/xkRpwlwVBToWq9Mu0XlU3HhZMYCnr2var8+jjbavBHh/VCh4pBLsJW29rJ//B1jb4HlpMIaNIMH+W2/w==} + dependencies: + jsonc-parser: 3.2.0 + mlly: 0.5.14 + pathe: 0.3.5 + dev: true + + /pnpm/7.9.5: + resolution: {integrity: sha512-+r7+PlBIsblqia8eUOUsBp/R+lHmGAm55jyQRt3DWMUI0srVR1aNJhQECfx24L53Ckz9g48mVxQXEniQMWQPmw==} + engines: {node: '>=14.6'} + hasBin: true + dev: true + + /postcss/8.4.16: + resolution: {integrity: sha512-ipHE1XBvKzm5xI7hiHCZJCSugxvsdq2mPnsq5+UF+VHCjiBvtDrlxJfMBToWaP9D5XlgNmcFGqoHmUn0EYEaRQ==} + engines: {node: ^10 || ^12 || >=14} + dependencies: + nanoid: 3.3.4 + picocolors: 1.0.0 + source-map-js: 1.0.2 + + /prelude-ls/1.1.2: + resolution: {integrity: sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==} + engines: {node: '>= 0.8.0'} + dev: true + + /prelude-ls/1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + dev: true + + /psl/1.9.0: + resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} + dev: true + + /punycode/2.1.1: + resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==} + engines: {node: '>=6'} + dev: true + + /querystringify/2.2.0: + resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} + dev: true + + /queue-microtask/1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + dev: true + + /readdirp/3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + dependencies: + picomatch: 2.3.1 + dev: true + + /regexp.prototype.flags/1.4.3: + resolution: {integrity: sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.4 + functions-have-names: 1.2.3 + dev: true + + /regexpp/3.2.0: + resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==} + engines: {node: '>=8'} + dev: true + + /requires-port/1.0.0: + resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} + dev: true + + /resolve-from/4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + dev: true + + /resolve/1.22.1: + resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==} + hasBin: true + dependencies: + is-core-module: 2.10.0 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + dev: true + + /reusify/1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + dev: true + + /rimraf/3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + hasBin: true + dependencies: + glob: 7.2.3 + dev: true + + /rollup/2.77.3: + resolution: {integrity: sha512-/qxNTG7FbmefJWoeeYJFbHehJ2HNWnjkAFRKzWN/45eNBBF/r8lo992CwcJXEzyVxs5FmfId+vTSTQDb+bxA+g==} + engines: {node: '>=10.0.0'} + hasBin: true + optionalDependencies: + fsevents: 2.3.2 + dev: true + + /run-parallel/1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + dependencies: + queue-microtask: 1.2.3 + dev: true + + /safer-buffer/2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + dev: true + + /saxes/6.0.0: + resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} + engines: {node: '>=v12.22.7'} + dependencies: + xmlchars: 2.2.0 + dev: true + + /scule/0.3.2: + resolution: {integrity: sha512-zIvPdjOH8fv8CgrPT5eqtxHQXmPNnV/vHJYffZhE43KZkvULvpCTvOt1HPlFaCZx287INL9qaqrZg34e8NgI4g==} + dev: true + + /semver/7.3.7: + resolution: {integrity: sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==} + engines: {node: '>=10'} + hasBin: true + dependencies: + lru-cache: 6.0.0 + dev: true + + /shebang-command/2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + dependencies: + shebang-regex: 3.0.0 + dev: true + + /shebang-regex/3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + dev: true + + /side-channel/1.0.4: + resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.1.2 + object-inspect: 1.12.2 + dev: true + + /signal-exit/3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + dev: true + + /sirv/2.0.2: + resolution: {integrity: sha512-4Qog6aE29nIjAOKe/wowFTxOdmbEZKb+3tsLljaBRzJwtqto0BChD2zzH0LhgCSXiI+V7X+Y45v14wBZQ1TK3w==} + engines: {node: '>= 10'} + dependencies: + '@polka/url': 1.0.0-next.21 + mrmime: 1.0.1 + totalist: 3.0.0 + dev: true + + /slash/3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + dev: true + + /source-map-js/1.0.2: + resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} + engines: {node: '>=0.10.0'} + + /source-map/0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + + /sourcemap-codec/1.4.8: + resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} + + /string.prototype.trimend/1.0.5: + resolution: {integrity: sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==} + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.4 + es-abstract: 1.20.1 + dev: true + + /string.prototype.trimstart/1.0.5: + resolution: {integrity: sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==} + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.4 + es-abstract: 1.20.1 + dev: true + + /strip-ansi/6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + dependencies: + ansi-regex: 5.0.1 + dev: true + + /strip-final-newline/2.0.0: + resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} + engines: {node: '>=6'} + dev: true + + /strip-json-comments/3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + dev: true + + /strip-literal/0.4.0: + resolution: {integrity: sha512-ql/sBDoJOybTKSIOWrrh8kgUEMjXMwRAkZTD0EwiwxQH/6tTPkZvMIEjp0CRlpi6V5FMiJyvxeRkEi1KrGISoA==} + dependencies: + acorn: 8.8.0 + dev: true + + /style-mod/4.0.0: + resolution: {integrity: sha512-OPhtyEjyyN9x3nhPsu76f52yUGXiZcgvsrFVtvTkyGRQJ0XK+GPc6ov1z+lRpbeabka+MYEQxOYRnt5nF30aMw==} + dev: false + + /supports-color/7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + dependencies: + has-flag: 4.0.0 + dev: true + + /supports-preserve-symlinks-flag/1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + dev: true + + /symbol-tree/3.2.4: + resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} + dev: true + + /text-table/0.2.0: + resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + dev: true + + /tinypool/0.2.4: + resolution: {integrity: sha512-Vs3rhkUH6Qq1t5bqtb816oT+HeJTXfwt2cbPH17sWHIYKTotQIFPk3tf2fgqRrVyMDVOc1EnPgzIxfIulXVzwQ==} + engines: {node: '>=14.0.0'} + dev: true + + /tinyspy/1.0.2: + resolution: {integrity: sha512-bSGlgwLBYf7PnUsQ6WOc6SJ3pGOcd+d8AA6EUnLDDM0kWEstC1JIlSZA3UNliDXhd9ABoS7hiRBDCu+XP/sf1Q==} + engines: {node: '>=14.0.0'} + dev: true + + /to-fast-properties/2.0.0: + resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} + engines: {node: '>=4'} + + /to-regex-range/5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + dependencies: + is-number: 7.0.0 + dev: true + + /totalist/3.0.0: + resolution: {integrity: sha512-eM+pCBxXO/njtF7vdFsHuqb+ElbxqtI4r5EAvk6grfAFyJ6IvWlSkfZ5T9ozC6xWw3Fj1fGoSmrl0gUs46JVIw==} + engines: {node: '>=6'} + dev: true + + /tough-cookie/4.1.2: + resolution: {integrity: sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ==} + engines: {node: '>=6'} + dependencies: + psl: 1.9.0 + punycode: 2.1.1 + universalify: 0.2.0 + url-parse: 1.5.10 + dev: true + + /tr46/3.0.0: + resolution: {integrity: sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==} + engines: {node: '>=12'} + dependencies: + punycode: 2.1.1 + dev: true + + /type-check/0.3.2: + resolution: {integrity: sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.1.2 + dev: true + + /type-check/0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.2.1 + dev: true + + /type-detect/4.0.8: + resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} + engines: {node: '>=4'} + dev: true + + /type-fest/0.20.2: + resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} + engines: {node: '>=10'} + dev: true + + /typescript/4.8.2: + resolution: {integrity: sha512-C0I1UsrrDHo2fYI5oaCGbSejwX4ch+9Y5jTQELvovfmFkK3HHSZJB8MSJcWLmCUBzQBchCrZ9rMRV6GuNrvGtw==} + engines: {node: '>=4.2.0'} + hasBin: true + dev: true + + /ufo/0.8.5: + resolution: {integrity: sha512-e4+UtA5IRO+ha6hYklwj6r7BjiGMxS0O+UaSg9HbaTefg4kMkzj4tXzEBajRR+wkxf+golgAWKzLbytCUDMJAA==} + dev: true + + /unbox-primitive/1.0.2: + resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} + dependencies: + call-bind: 1.0.2 + has-bigints: 1.0.2 + has-symbols: 1.0.3 + which-boxed-primitive: 1.0.2 + dev: true + + /unconfig/0.3.5: + resolution: {integrity: sha512-YMnPPUSfW0pT4Zzy4inM8tRHJZmhH+KcuFW/3qxkLKPhswEw18gQYe1jt57jY6ctFB0fnpiCpQ2Jtkbg4y/IPA==} + dependencies: + '@antfu/utils': 0.5.2 + defu: 6.1.0 + jiti: 1.14.0 + dev: true + + /undici/5.10.0: + resolution: {integrity: sha512-c8HsD3IbwmjjbLvoZuRI26TZic+TSEe8FPMLLOkN1AfYRhdjnKBU6yL+IwcSCbdZiX4e5t0lfMDLDCqj4Sq70g==} + engines: {node: '>=12.18'} + dev: true + + /unimport/0.6.7_vite@2.9.15: + resolution: {integrity: sha512-EMoVqDjswHkU+nD098QYHXH7Mkw7KwGDQAyeRF2lgairJnuO+wpkhIcmCqrD1OPJmsjkTbJ2tW6Ap8St0PuWZA==} + dependencies: + '@rollup/pluginutils': 4.2.1 + escape-string-regexp: 5.0.0 + fast-glob: 3.2.11 + local-pkg: 0.4.2 + magic-string: 0.26.3 + mlly: 0.5.14 + pathe: 0.3.5 + scule: 0.3.2 + strip-literal: 0.4.0 + unplugin: 0.9.5_vite@2.9.15 + transitivePeerDependencies: + - esbuild + - rollup + - vite + - webpack + dev: true + + /universalify/0.2.0: + resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} + engines: {node: '>= 4.0.0'} + dev: true + + /unocss/0.45.13_vite@2.9.15: + resolution: {integrity: sha512-LNLfSN1kafeIJnEBG1aWlPDShZZN+szNfYCcz6iFnKP2rDwSQ2piFJ+ATn6EwT62DY3uGOoGmlPgxzHhbYKTSQ==} + engines: {node: '>=14'} + peerDependencies: + '@unocss/webpack': 0.45.13 + peerDependenciesMeta: + '@unocss/webpack': + optional: true + dependencies: + '@unocss/astro': 0.45.13_vite@2.9.15 + '@unocss/cli': 0.45.13 + '@unocss/core': 0.45.13 + '@unocss/preset-attributify': 0.45.13 + '@unocss/preset-icons': 0.45.13 + '@unocss/preset-mini': 0.45.13 + '@unocss/preset-tagify': 0.45.13 + '@unocss/preset-typography': 0.45.13 + '@unocss/preset-uno': 0.45.13 + '@unocss/preset-web-fonts': 0.45.13 + '@unocss/preset-wind': 0.45.13 + '@unocss/reset': 0.45.13 + '@unocss/transformer-attributify-jsx': 0.45.13 + '@unocss/transformer-compile-class': 0.45.13 + '@unocss/transformer-directives': 0.45.13 + '@unocss/transformer-variant-group': 0.45.13 + '@unocss/vite': 0.45.13_vite@2.9.15 + transitivePeerDependencies: + - supports-color + - vite + dev: true + + /unplugin-auto-import/0.11.2_uaaha2lz3g3d7gfm5wyhoztace: + resolution: {integrity: sha512-1+VwBfn9dtiYv9SQLKP1AvZolUbK9xTVeAT+iOcEk4EHSFUlmIqBVLEKI76cifSQTLOJ3rZyPrEgptf3SZNLlQ==} + engines: {node: '>=14'} + peerDependencies: + '@vueuse/core': '*' + peerDependenciesMeta: + '@vueuse/core': + optional: true + dependencies: + '@antfu/utils': 0.5.2 + '@rollup/pluginutils': 4.2.1 + '@vueuse/core': 9.1.1_vue@3.2.38 + local-pkg: 0.4.2 + magic-string: 0.26.3 + unimport: 0.6.7_vite@2.9.15 + unplugin: 0.9.5_vite@2.9.15 + transitivePeerDependencies: + - esbuild + - rollup + - vite + - webpack + dev: true + + /unplugin-vue-components/0.21.2_vite@2.9.15+vue@3.2.38: + resolution: {integrity: sha512-HBU+EuesDj/HRs7EtYH7gBACljVhqLylltrCLModRmCToIIrrNvMh54aylUt4AD4qiwylgOx4Vgb9sBlrIcRDw==} + engines: {node: '>=14'} + peerDependencies: + '@babel/parser': ^7.15.8 + vue: 2 || 3 + peerDependenciesMeta: + '@babel/parser': + optional: true + dependencies: + '@antfu/utils': 0.5.2 + '@rollup/pluginutils': 4.2.1 + chokidar: 3.5.3 + debug: 4.3.4 + fast-glob: 3.2.11 + local-pkg: 0.4.2 + magic-string: 0.26.3 + minimatch: 5.1.0 + resolve: 1.22.1 + unplugin: 0.7.2_vite@2.9.15 + vue: 3.2.38 + transitivePeerDependencies: + - esbuild + - rollup + - supports-color + - vite + - webpack + dev: true + + /unplugin/0.7.2_vite@2.9.15: + resolution: {integrity: sha512-m7thX4jP8l5sETpLdUASoDOGOcHaOVtgNyrYlToyQUvILUtEzEnngRBrHnAX3IKqooJVmXpoa/CwQ/QqzvGaHQ==} + peerDependencies: + esbuild: '>=0.13' + rollup: ^2.50.0 + vite: ^2.3.0 || ^3.0.0-0 + webpack: 4 || 5 + peerDependenciesMeta: + esbuild: + optional: true + rollup: + optional: true + vite: + optional: true + webpack: + optional: true + dependencies: + acorn: 8.8.0 + chokidar: 3.5.3 + vite: 2.9.15 + webpack-sources: 3.2.3 + webpack-virtual-modules: 0.4.4 + dev: true + + /unplugin/0.9.5_vite@2.9.15: + resolution: {integrity: sha512-luraheyfxwtvkvHpsOvMNv7IjLdORTWKZp0gWYNHGLi2ImON3iIZOj464qEyyEwLA/EMt12fC415HW9zRpOfTg==} + peerDependencies: + esbuild: '>=0.13' + rollup: ^2.50.0 + vite: ^2.3.0 || ^3.0.0-0 + webpack: 4 || 5 + peerDependenciesMeta: + esbuild: + optional: true + rollup: + optional: true + vite: + optional: true + webpack: + optional: true + dependencies: + acorn: 8.8.0 + chokidar: 3.5.3 + vite: 2.9.15 + webpack-sources: 3.2.3 + webpack-virtual-modules: 0.4.4 + dev: true + + /uri-js/4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + dependencies: + punycode: 2.1.1 + dev: true + + /url-parse/1.5.10: + resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} + dependencies: + querystringify: 2.2.0 + requires-port: 1.0.0 + dev: true + + /vite-plugin-pages/0.25.0_vite@2.9.15: + resolution: {integrity: sha512-q0SX2iSw0UrTnivkzsPb19ZxamShq1nE/e/CKOe8+uVg70/e14uJuzKnw7dZ2omPjmV9Lhks38nzJL6RDRGmeA==} + peerDependencies: + '@vue/compiler-sfc': ^2.7.0 || ^3.0.0 + vite: ^2.0.0 || ^3.0.0-0 + peerDependenciesMeta: + '@vue/compiler-sfc': + optional: true + dependencies: + '@types/debug': 4.1.7 + debug: 4.3.4 + deep-equal: 2.0.5 + extract-comments: 1.1.0 + fast-glob: 3.2.11 + json5: 2.2.1 + local-pkg: 0.4.2 + picocolors: 1.0.0 + vite: 2.9.15 + yaml: 2.1.1 + transitivePeerDependencies: + - supports-color + dev: true + + /vite/2.9.15: + resolution: {integrity: sha512-fzMt2jK4vQ3yK56te3Kqpkaeq9DkcZfBbzHwYpobasvgYmP2SoAr6Aic05CsB4CzCZbsDv4sujX3pkEGhLabVQ==} + engines: {node: '>=12.2.0'} + hasBin: true + peerDependencies: + less: '*' + sass: '*' + stylus: '*' + peerDependenciesMeta: + less: + optional: true + sass: + optional: true + stylus: + optional: true + dependencies: + esbuild: 0.14.54 + postcss: 8.4.16 + resolve: 1.22.1 + rollup: 2.77.3 + optionalDependencies: + fsevents: 2.3.2 + dev: true + + /vitest/0.21.1_jsdom@20.0.0: + resolution: {integrity: sha512-WBIxuFmIDPuK47GO6Lu9eNeRMqHj/FWL3dk73OHH3eyPPWPiu+UB3QHLkLK2PEggCqJW4FaWoWg8R68S7p9+9Q==} + engines: {node: '>=v14.16.0'} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@vitest/browser': '*' + '@vitest/ui': '*' + c8: '*' + happy-dom: '*' + jsdom: '*' + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@vitest/browser': + optional: true + '@vitest/ui': + optional: true + c8: + optional: true + happy-dom: + optional: true + jsdom: + optional: true + dependencies: + '@types/chai': 4.3.3 + '@types/chai-subset': 1.3.3 + '@types/node': 18.7.14 + chai: 4.3.6 + debug: 4.3.4 + jsdom: 20.0.0 + local-pkg: 0.4.2 + tinypool: 0.2.4 + tinyspy: 1.0.2 + vite: 2.9.15 + transitivePeerDependencies: + - less + - sass + - stylus + - supports-color + dev: true + + /vue-codemirror/6.1.1_dpkxt24ymugkjtb75cewnrlcay: + resolution: {integrity: sha512-rTAYo44owd282yVxKtJtnOi7ERAcXTeviwoPXjIc6K/IQYUsoDkzPvw/JDFtSP6T7Cz/2g3EHaEyeyaQCKoDMg==} + peerDependencies: + codemirror: 6.x + vue: 3.x + dependencies: + '@codemirror/commands': 6.1.0 + '@codemirror/language': 6.2.1 + '@codemirror/state': 6.1.1 + '@codemirror/view': 6.2.2 + codemirror: 6.0.1 + vue: 3.2.38 + dev: false + + /vue-demi/0.13.11_vue@3.2.38: + resolution: {integrity: sha512-IR8HoEEGM65YY3ZJYAjMlKygDQn25D5ajNFNoKh9RSDMQtlzCxtfQjdQgv9jjK+m3377SsJXY8ysq8kLCZL25A==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + peerDependencies: + '@vue/composition-api': ^1.0.0-rc.1 + vue: ^3.0.0-0 || ^2.6.0 + peerDependenciesMeta: + '@vue/composition-api': + optional: true + dependencies: + vue: 3.2.38 + + /vue-router/4.1.5_vue@3.2.38: + resolution: {integrity: sha512-IsvoF5D2GQ/EGTs/Th4NQms9gd2NSqV+yylxIyp/OYp8xOwxmU8Kj/74E9DTSYAyH5LX7idVUngN3JSj1X4xcQ==} + peerDependencies: + vue: ^3.2.0 + dependencies: + '@vue/devtools-api': 6.2.1 + vue: 3.2.38 + dev: false + + /vue-tsc/0.39.5_typescript@4.8.2: + resolution: {integrity: sha512-jhTsrKhZkafpIeN4Cbhr1K53hNfa/oesSrlh7hUaeHyCk55VhZT6oJkwJbtqN4MYkWZIwPrm3/xTwsELuf2ocg==} + hasBin: true + peerDependencies: + typescript: '*' + dependencies: + '@volar/vue-language-core': 0.39.5 + '@volar/vue-typescript': 0.39.5 + typescript: 4.8.2 + dev: true + + /vue/3.2.38: + resolution: {integrity: sha512-hHrScEFSmDAWL0cwO4B6WO7D3sALZPbfuThDsGBebthrNlDxdJZpGR3WB87VbjpPh96mep1+KzukYEhpHDFa8Q==} + dependencies: + '@vue/compiler-dom': 3.2.38 + '@vue/compiler-sfc': 3.2.38 + '@vue/runtime-dom': 3.2.38 + '@vue/server-renderer': 3.2.38_vue@3.2.38 + '@vue/shared': 3.2.38 + + /w3c-hr-time/1.0.2: + resolution: {integrity: sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==} + dependencies: + browser-process-hrtime: 1.0.0 + dev: true + + /w3c-keyname/2.2.6: + resolution: {integrity: sha512-f+fciywl1SJEniZHD6H+kUO8gOnwIr7f4ijKA6+ZvJFjeGi1r4PDLl53Ayud9O/rk64RqgoQine0feoeOU0kXg==} + dev: false + + /w3c-xmlserializer/3.0.0: + resolution: {integrity: sha512-3WFqGEgSXIyGhOmAFtlicJNMjEps8b1MG31NCA0/vOF9+nKMUW1ckhi9cnNHmf88Rzw5V+dwIwsm2C7X8k9aQg==} + engines: {node: '>=12'} + dependencies: + xml-name-validator: 4.0.0 + dev: true + + /webidl-conversions/7.0.0: + resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} + engines: {node: '>=12'} + dev: true + + /webpack-sources/3.2.3: + resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} + engines: {node: '>=10.13.0'} + dev: true + + /webpack-virtual-modules/0.4.4: + resolution: {integrity: sha512-h9atBP/bsZohWpHnr+2sic8Iecb60GxftXsWNLLLSqewgIsGzByd2gcIID4nXcG+3tNe4GQG3dLcff3kXupdRA==} + dev: true + + /whatwg-encoding/2.0.0: + resolution: {integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==} + engines: {node: '>=12'} + dependencies: + iconv-lite: 0.6.3 + dev: true + + /whatwg-mimetype/3.0.0: + resolution: {integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==} + engines: {node: '>=12'} + dev: true + + /whatwg-url/11.0.0: + resolution: {integrity: sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==} + engines: {node: '>=12'} + dependencies: + tr46: 3.0.0 + webidl-conversions: 7.0.0 + dev: true + + /which-boxed-primitive/1.0.2: + resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} + dependencies: + is-bigint: 1.0.4 + is-boolean-object: 1.1.2 + is-number-object: 1.0.7 + is-string: 1.0.7 + is-symbol: 1.0.4 + dev: true + + /which-collection/1.0.1: + resolution: {integrity: sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==} + dependencies: + is-map: 2.0.2 + is-set: 2.0.2 + is-weakmap: 2.0.1 + is-weakset: 2.0.2 + dev: true + + /which-typed-array/1.1.8: + resolution: {integrity: sha512-Jn4e5PItbcAHyLoRDwvPj1ypu27DJbtdYXUa5zsinrUx77Uvfb0cXwwnGMTn7cjUfhhqgVQnVJCwF+7cgU7tpw==} + engines: {node: '>= 0.4'} + dependencies: + available-typed-arrays: 1.0.5 + call-bind: 1.0.2 + es-abstract: 1.20.1 + for-each: 0.3.3 + has-tostringtag: 1.0.0 + is-typed-array: 1.1.9 + dev: true + + /which/2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + dependencies: + isexe: 2.0.0 + dev: true + + /word-wrap/1.2.3: + resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==} + engines: {node: '>=0.10.0'} + dev: true + + /wrappy/1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + dev: true + + /ws/8.8.1: + resolution: {integrity: sha512-bGy2JzvzkPowEJV++hF07hAD6niYSr0JzBNo/J29WsB57A2r7Wlc1UFcTR9IzrPvuNVO4B8LGqF8qcpsVOhJCA==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + dev: true + + /xml-name-validator/4.0.0: + resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} + engines: {node: '>=12'} + dev: true + + /xmlchars/2.2.0: + resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} + dev: true + + /yallist/4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + dev: true + + /yaml/2.1.1: + resolution: {integrity: sha512-o96x3OPo8GjWeSLF+wOAbrPfhFOGY0W00GNaxCDv+9hkcDJEnev1yh8S7pgHF0ik6zc8sQLuL8hjHjJULZp8bw==} + engines: {node: '>= 14'} + dev: true + + /yocto-queue/0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + dev: true diff --git a/vue-golang-mysql/web/public/android-chrome-192x192.png b/vue-golang-mysql/web/public/android-chrome-192x192.png new file mode 100644 index 0000000000000000000000000000000000000000..e15b8e135abdb07bca51c63641312311b3095e49 GIT binary patch literal 9489 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 literal 0 HcmV?d00001 diff --git a/vue-golang-mysql/web/public/android-chrome-512x512.png b/vue-golang-mysql/web/public/android-chrome-512x512.png new file mode 100644 index 0000000000000000000000000000000000000000..4ff1909f5d8d04c7d6ca6c74e9743b29ab59fb1b GIT binary patch literal 32313 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 literal 0 HcmV?d00001 diff --git a/vue-golang-mysql/web/public/apple-touch-icon.png b/vue-golang-mysql/web/public/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..fa35db9a5b516790bcb0fd2703deb1aba08e169e GIT binary patch literal 8704 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 literal 0 HcmV?d00001 diff --git a/vue-golang-mysql/web/public/favicon-32x32.png b/vue-golang-mysql/web/public/favicon-32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..21c8f3a2fb325eec67b42ecec8489af862919be4 GIT binary patch literal 1067 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 KfBb(_1OEY6M-amR literal 0 HcmV?d00001 diff --git a/vue-golang-mysql/web/shims.d.ts b/vue-golang-mysql/web/shims.d.ts new file mode 100644 index 0000000..2b97bd9 --- /dev/null +++ b/vue-golang-mysql/web/shims.d.ts @@ -0,0 +1,5 @@ +declare module '*.vue' { + import type { DefineComponent } from 'vue' + const component: DefineComponent<{}, {}, any> + export default component +} diff --git a/vue-golang-mysql/web/src/App.vue b/vue-golang-mysql/web/src/App.vue new file mode 100644 index 0000000..d971e74 --- /dev/null +++ b/vue-golang-mysql/web/src/App.vue @@ -0,0 +1,7 @@ + diff --git a/vue-golang-mysql/web/src/components/CodeEditor.vue b/vue-golang-mysql/web/src/components/CodeEditor.vue new file mode 100644 index 0000000..46cd019 --- /dev/null +++ b/vue-golang-mysql/web/src/components/CodeEditor.vue @@ -0,0 +1,28 @@ + + + + diff --git a/vue-golang-mysql/web/src/components/Footer.vue b/vue-golang-mysql/web/src/components/Footer.vue new file mode 100644 index 0000000..5beefa6 --- /dev/null +++ b/vue-golang-mysql/web/src/components/Footer.vue @@ -0,0 +1,15 @@ + diff --git a/vue-golang-mysql/web/src/components/Header.vue b/vue-golang-mysql/web/src/components/Header.vue new file mode 100644 index 0000000..b99d082 --- /dev/null +++ b/vue-golang-mysql/web/src/components/Header.vue @@ -0,0 +1,8 @@ + \ No newline at end of file diff --git a/vue-golang-mysql/web/src/components/README.md b/vue-golang-mysql/web/src/components/README.md new file mode 100644 index 0000000..ccafa35 --- /dev/null +++ b/vue-golang-mysql/web/src/components/README.md @@ -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. diff --git a/vue-golang-mysql/web/src/composables/config.ts b/vue-golang-mysql/web/src/composables/config.ts new file mode 100644 index 0000000..1170005 --- /dev/null +++ b/vue-golang-mysql/web/src/composables/config.ts @@ -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 +} diff --git a/vue-golang-mysql/web/src/composables/dark.ts b/vue-golang-mysql/web/src/composables/dark.ts new file mode 100644 index 0000000..a2a21dd --- /dev/null +++ b/vue-golang-mysql/web/src/composables/dark.ts @@ -0,0 +1,2 @@ +export const isDark = useDark() +export const toggleDark = useToggle(isDark) diff --git a/vue-golang-mysql/web/src/composables/index.ts b/vue-golang-mysql/web/src/composables/index.ts new file mode 100644 index 0000000..e8d1566 --- /dev/null +++ b/vue-golang-mysql/web/src/composables/index.ts @@ -0,0 +1 @@ +export * from './dark' diff --git a/vue-golang-mysql/web/src/composables/languages.ts b/vue-golang-mysql/web/src/composables/languages.ts new file mode 100644 index 0000000..36b7837 --- /dev/null +++ b/vue-golang-mysql/web/src/composables/languages.ts @@ -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, +})) + diff --git a/vue-golang-mysql/web/src/composables/types.ts b/vue-golang-mysql/web/src/composables/types.ts new file mode 100644 index 0000000..f4da194 --- /dev/null +++ b/vue-golang-mysql/web/src/composables/types.ts @@ -0,0 +1,7 @@ +export interface Paste { + id: string + expired_at: string + expired_days: number + type: string + data: string +} diff --git a/vue-golang-mysql/web/src/composables/utils.ts b/vue-golang-mysql/web/src/composables/utils.ts new file mode 100644 index 0000000..bd8cf9d --- /dev/null +++ b/vue-golang-mysql/web/src/composables/utils.ts @@ -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); +} \ No newline at end of file diff --git a/vue-golang-mysql/web/src/main.ts b/vue-golang-mysql/web/src/main.ts new file mode 100644 index 0000000..e110b67 --- /dev/null +++ b/vue-golang-mysql/web/src/main.ts @@ -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') diff --git a/vue-golang-mysql/web/src/pages/README.md b/vue-golang-mysql/web/src/pages/README.md new file mode 100644 index 0000000..929b7c9 --- /dev/null +++ b/vue-golang-mysql/web/src/pages/README.md @@ -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' +``` diff --git a/vue-golang-mysql/web/src/pages/[...all].vue b/vue-golang-mysql/web/src/pages/[...all].vue new file mode 100755 index 0000000..241e7e2 --- /dev/null +++ b/vue-golang-mysql/web/src/pages/[...all].vue @@ -0,0 +1,5 @@ + diff --git a/vue-golang-mysql/web/src/pages/[id].vue b/vue-golang-mysql/web/src/pages/[id].vue new file mode 100644 index 0000000..ae88b2b --- /dev/null +++ b/vue-golang-mysql/web/src/pages/[id].vue @@ -0,0 +1,60 @@ + + + diff --git a/vue-golang-mysql/web/src/pages/index.vue b/vue-golang-mysql/web/src/pages/index.vue new file mode 100644 index 0000000..c6100a1 --- /dev/null +++ b/vue-golang-mysql/web/src/pages/index.vue @@ -0,0 +1,64 @@ + + + diff --git a/vue-golang-mysql/web/src/styles/main.css b/vue-golang-mysql/web/src/styles/main.css new file mode 100755 index 0000000..271f6f0 --- /dev/null +++ b/vue-golang-mysql/web/src/styles/main.css @@ -0,0 +1,11 @@ +html, +body, +#app { + height: 100%; + margin: 0; + padding: 0; +} + +html.dark { + background: #121212; +} diff --git a/vue-golang-mysql/web/test/__snapshots__/component.test.ts.snap b/vue-golang-mysql/web/test/__snapshots__/component.test.ts.snap new file mode 100644 index 0000000..f5a07c8 --- /dev/null +++ b/vue-golang-mysql/web/test/__snapshots__/component.test.ts.snap @@ -0,0 +1,3 @@ +// Vitest Snapshot v1 + +exports[`Counter.vue > should render 1`] = `"
10
"`; diff --git a/vue-golang-mysql/web/test/basic.test.ts b/vue-golang-mysql/web/test/basic.test.ts new file mode 100644 index 0000000..ed8d435 --- /dev/null +++ b/vue-golang-mysql/web/test/basic.test.ts @@ -0,0 +1,7 @@ +import { describe, expect, it } from 'vitest' + +describe('Hi', () => { + it('should works', () => { + expect(1 + 1).toEqual(2) + }) +}) diff --git a/vue-golang-mysql/web/tsconfig.json b/vue-golang-mysql/web/tsconfig.json new file mode 100644 index 0000000..c3ca8ac --- /dev/null +++ b/vue-golang-mysql/web/tsconfig.json @@ -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"] +} diff --git a/vue-golang-mysql/web/unocss.config.ts b/vue-golang-mysql/web/unocss.config.ts new file mode 100644 index 0000000..77aeffa --- /dev/null +++ b/vue-golang-mysql/web/unocss.config.ts @@ -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(), + // ], +}) diff --git a/vue-golang-mysql/web/vite.config.ts b/vue-golang-mysql/web/vite.config.ts new file mode 100644 index 0000000..7a81c4e --- /dev/null +++ b/vue-golang-mysql/web/vite.config.ts @@ -0,0 +1,54 @@ +/// + +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', + }, +})