diff --git a/BUILD.md b/BUILD.md
index 19adc4b..7d2bda0 100644
--- a/BUILD.md
+++ b/BUILD.md
@@ -1,13 +1,3 @@
-## Projekt anlegen
-
-npm init vite@latest ui -- --template react-ts
-cd ui
-npm install
-
-cd ..
-go get
-
-
## Ausführen
set GOTMPDIR=C:\MYCOMP
diff --git a/README.md b/README.md
index ea61fc2..3ba6b72 100644
--- a/README.md
+++ b/README.md
@@ -1,3 +1,32 @@
# ncDocConverter
-A Go program able to convert Office Documents automatically to PDF / EPUB Files via OnlyOffice
\ No newline at end of file
+A Go program able to convert documents automatically to PDF / EPUB Files.
+
+Currently, the following sources for documents are supported:
+
+* Nextcloud with OnlyOffice
+* Boockstack
+
+As a destination to save the converted files only **Nextcloud** is supported.
+
+
+## Setting it up
+
+For using the
+
+
+### BookStack
+
+For converting books of BookStack you need to create an API token for the user to access the books:
+1. Login as Admin
+2. Go to *Settings → Users*
+3. Select user for API access
+4. Scroll down to `API Tokens` and click `CREATE TOKEN`
+5. Set a name and expire date. Click `save`
+6. Copy the ID and Token. The field `apiToken` will contain the combination from `id:token`
+
+Now you need also create a new role or edit an existing role.
+1. Go to *Settings → Roles*
+2. Edit and existing Role (the role which the user have) or create a new role
+3. Check the box `Access system API` and `Export content` in `System permissions`
+4. Assing View Role *(all and own)* for *Shelves, Books, Chapters and Pages*
diff --git a/cmd/ncDocConverth/main.go b/cmd/ncDocConverth/main.go
index 0f4801f..f19f54b 100644
--- a/cmd/ncDocConverth/main.go
+++ b/cmd/ncDocConverth/main.go
@@ -55,12 +55,12 @@ func main() {
if err != nil {
logger.Error("Unable to parse the file %s: %s", "dd", err)
}
- ncworker.NewScheduler(ncConvertUsers)
+ ncworker.NewScheduler(ncConvertUsers, config)
if 1 == 1 {
return
}
-
+
logger.Info("Server started on %s", config.Server.Address)
var errw error
if config.Server.Certificate == "" {
diff --git a/cmd/ncDocConverth/routes.go b/cmd/ncDocConverth/routes.go
index 361b3e6..ab90467 100644
--- a/cmd/ncDocConverth/routes.go
+++ b/cmd/ncDocConverth/routes.go
@@ -6,18 +6,15 @@ import (
"github.com/go-chi/chi/v5"
"github.com/go-chi/chi/v5/middleware"
"rpjosh.de/ncDocConverter/internal/api"
- "rpjosh.de/ncDocConverter/internal/frontend"
)
func (app *WebApplication) routes() http.Handler {
- frontend := frontend.Frontend{Logger: app.logger, Config: app.config}
api := api.Api{Logger: app.logger, Config: app.config}
router := chi.NewRouter()
router.Use(middleware.RealIP, app.recoverPanic, app.logRequest, secureHeaders)
- frontend.SetupServer(router)
api.SetupServer(router)
return router
-}
\ No newline at end of file
+}
diff --git a/configs/config.yaml b/configs/config.yaml
index 1db4c4d..e1cbe82 100644
--- a/configs/config.yaml
+++ b/configs/config.yaml
@@ -1,13 +1,13 @@
server:
+ # Address to listen on
address: ":4000"
# Path to the folder with the certificates file (cert.pem and key.pem) for using TLS
certificate: "/etc/letsencrypt/live/"
- # Enables the development server with hot reload function (spans a vite server)
- developmentServer: false
- # Port on which the development server should listen to
- developmentServerPort: 5173
+ # If this parameter is given, all jobs are executed immediately after starting the program.
+ # Afterward the program does exit -> The "execution" field in the jobs are going to be ignored
+ oneShot: false
logging:
# Minimum log Level for printing to the console (debug, info, warning, error, fatal)
diff --git a/configs/ncConverter.hjson b/configs/ncConverter.hjson
new file mode 100644
index 0000000..129282b
--- /dev/null
+++ b/configs/ncConverter.hjson
@@ -0,0 +1,78 @@
+{
+ "nextcloudUsers": [
+ {
+ // Nextcloud user and instance to save the converted files
+ "nextcloudUrl": "https://cloud.rpjosh.de",
+ "username": "exchange",
+ "password": "Zj9cQ-eF3n6-R6DSt-8sJXf-kYseJ",
+
+ // OnlyOffice (docx, xlsx, ...) convertion to pdf
+ "jobs": [
+ {
+ "jobName": "Convert my books",
+ "sourceDir": "api/",
+ "destinationDir": "ebooks/",
+
+ // Keep folders of source
+ // Otherwise all files will be saved in the destination dir
+ "keepFolders": true,
+
+ // If the folder should be searched recursive
+ "recursive": true,
+
+ // Execution date in the cron format
+ "execution": "45 23 * * 6"
+ }
+ ],
+
+ // Conversion from bookStack to pdf/html
+ "bookStack": {
+ "url": "https://wiki.rpjosh.de",
+ "username": "test@rpjosh.de",
+ "apiToken": "typCf2LoSQDHicpeeAZQCDZwAq7BvVdl:PcKMZVDrIwEJeKIKyaD7w0cf20JCjpZz",
+
+ "jobs": [
+ {
+ "jobName": "Convert my favorite books",
+
+ // Shelves to filter -> convert only shelves with the names "Work" and "Linux"
+ // Leave empty to convert books in all shelves
+ "shelves": [ "Work", "Linux" ],
+ // Regex to filter after the shelv name
+ "shelveRegex": "",
+
+ // Books to filter (see shelves for more informations)
+ "books": [],
+ "booksRegex": "",
+
+ // If books which doesn't belong to an shelf should also be converted.
+ // The will be placed in the root folder.
+ // Note that the field "shelves" and "shelveRegex" doesn't work as expected
+ // (Books inside this shelve won't be excluded but will be placed in the root)
+ "includeBooksWithoutShelve": false,
+
+ // Destination folder to save the converted documents in nextcloud
+ "destinationDir": "ebooks/wiki/",
+
+ // Export format (html or pdf)
+ "format": "html",
+
+ // If the books should be saved inside the shelves folder
+ // Otherwise all files will be saved in the destination dir
+ "keepStructure": true,
+
+ // Execution date in the cron format
+ "execution": "45 23 * * 6",
+
+ // The fetching of books and shelves can be ressource hungry. This value specifies the number
+ // of jobs that are executed with cached data.
+ // Note that new or deleted books and shelves won't be converted until the cache counter
+ // expires. Changes in existing books will still be noted.
+ // Specify zero to disable the cache
+ "cache": 3
+ }
+ ]
+ }
+ }
+ ]
+}
\ No newline at end of file
diff --git a/go.mod b/go.mod
index d55a4ef..5e65781 100644
--- a/go.mod
+++ b/go.mod
@@ -3,12 +3,14 @@ module rpjosh.de/ncDocConverter
go 1.18
require (
- github.com/go-chi/chi/v5 v5.0.7 // indirect
+ github.com/go-chi/chi/v5 v5.0.8 // indirect
+ github.com/go-co-op/gocron v1.18.0 // indirect
github.com/go-yaml/yaml v2.1.0+incompatible // indirect
github.com/justinas/nosurf v1.1.1 // indirect
- github.com/studio-b12/gowebdav v0.0.0-20220128162035-c7b1ff8a5e62 // indirect
+ github.com/robfig/cron/v3 v3.0.1 // indirect
+ golang.org/x/sync v0.1.0 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
)
// https://zhwt.github.io/yaml-to-go/
-// https://www.onlinetool.io/xmltogo/
\ No newline at end of file
+// https://www.onlinetool.io/xmltogo/
diff --git a/go.sum b/go.sum
index d45980b..949e466 100644
--- a/go.sum
+++ b/go.sum
@@ -1,11 +1,21 @@
github.com/go-chi/chi/v5 v5.0.7 h1:rDTPXLDHGATaeHvVlLcR4Qe0zftYethFucbjVQ1PxU8=
github.com/go-chi/chi/v5 v5.0.7/go.mod h1:DslCQbL2OYiznFReuXYUmQ2hGd1aDpCnlMNITLSKoi8=
+github.com/go-chi/chi/v5 v5.0.8 h1:lD+NLqFcAi1ovnVZpsnObHGW4xb4J8lNmoYVfECH1Y0=
+github.com/go-chi/chi/v5 v5.0.8/go.mod h1:DslCQbL2OYiznFReuXYUmQ2hGd1aDpCnlMNITLSKoi8=
+github.com/go-co-op/gocron v1.18.0 h1:SxTyJ5xnSN4byCq7b10LmmszFdxQlSQJod8s3gbnXxA=
+github.com/go-co-op/gocron v1.18.0/go.mod h1:sD/a0Aadtw5CpflUJ/lpP9Vfdk979Wl1Sg33HPHg0FY=
github.com/go-yaml/yaml v2.1.0+incompatible h1:RYi2hDdss1u4YE7GwixGzWwVo47T8UQwnTLB6vQiq+o=
github.com/go-yaml/yaml v2.1.0+incompatible/go.mod h1:w2MrLa16VYP0jy6N7M5kHaCkaLENm+P+Tv+MfurjSw0=
github.com/justinas/nosurf v1.1.1 h1:92Aw44hjSK4MxJeMSyDa7jwuI9GR2J/JCQiaKvXXSlk=
github.com/justinas/nosurf v1.1.1/go.mod h1:ALpWdSbuNGy2lZWtyXdjkYv4edL23oSEgfBT1gPJ5BQ=
+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/studio-b12/gowebdav v0.0.0-20220128162035-c7b1ff8a5e62 h1:b2nJXyPCa9HY7giGM+kYcnQ71m14JnGdQabMPmyt++8=
github.com/studio-b12/gowebdav v0.0.0-20220128162035-c7b1ff8a5e62/go.mod h1:bHA7t77X/QFExdeAnDzK6vKM34kEZAcE1OX4MfiwjkE=
+golang.org/x/sync v0.0.0-20210220032951-036812b2e83c h1:5KslGYwFpkhGh+Q16bwMP3cOontH8FOep7tGV86Y7SQ=
+golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.1.0 h1:wsuoTGHzEhffawBOhz5CYhcrV4IdKZbEyZjBMuTp12o=
+golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
diff --git a/internal/frontend/app.go b/internal/frontend/app.go
deleted file mode 100644
index d13687b..0000000
--- a/internal/frontend/app.go
+++ /dev/null
@@ -1,28 +0,0 @@
-package frontend
-
-import (
- "text/template"
-
- "github.com/go-chi/chi/v5"
- "rpjosh.de/ncDocConverter/internal/models"
- "rpjosh.de/ncDocConverter/pkg/logger"
-)
-
-// Contains the shared dependencies needed for the WebApplication
-type Frontend struct {
- Logger *logger.Logger
- Config *models.WebConfig
- templateCache map[string]*template.Template
-}
-
-func (app *Frontend) SetupServer(router *chi.Mux) {
- templateCache, err := newTemplateCache()
- if err != nil {
- logger.Fatal("Failed to parse the templates", err)
- }
- app.templateCache = templateCache
-
- app.setServerConfiguration()
-
- app.routes(router)
-}
diff --git a/internal/frontend/handler.go b/internal/frontend/handler.go
deleted file mode 100644
index bfc4fd2..0000000
--- a/internal/frontend/handler.go
+++ /dev/null
@@ -1,31 +0,0 @@
-package frontend
-
-import (
- "bytes"
- "fmt"
- "net/http"
-)
-
-func (app *Frontend) home(w http.ResponseWriter, r *http.Request) {
- app.render(w, http.StatusOK, "main.tmpl.html", app.newTemplateData(r))
-}
-
-func (app *Frontend) render(w http.ResponseWriter, status int, page string, data *templateData) {
- ts, ok := app.templateCache[page]
- if !ok {
- err := fmt.Errorf("the template %s does not exist", page)
- app.serverError(w, err)
- return
- }
-
- buf := new(bytes.Buffer)
-
- err := ts.ExecuteTemplate(buf, "base", data)
- if err != nil {
- app.serverError(w, err)
- return
- }
-
- w.WriteHeader(status)
- buf.WriteTo(w)
-}
diff --git a/internal/frontend/helpers.go b/internal/frontend/helpers.go
deleted file mode 100644
index b4ad718..0000000
--- a/internal/frontend/helpers.go
+++ /dev/null
@@ -1,32 +0,0 @@
-package frontend
-
-import (
- "fmt"
- "net/http"
- "runtime/debug"
-
- "rpjosh.de/ncDocConverter/pkg/logger"
-)
-
-// The serverError helper writes an error message and stack trace to the errorLog,
-// then sends a generic 500 Internal Server Error response to the user.
-func (app *Frontend) serverError(w http.ResponseWriter, err error) {
- trace := fmt.Sprintf("%s\n%s", err.Error(), debug.Stack())
- logger.Error(trace)
-
- http.Error(w, http.StatusText(http.StatusInternalServerError), http.StatusInternalServerError)
-}
-
-// The clientError helper sends a specific status code and corresponding description
-// to the user. We'll use this later in the book to send responses like 400 "Bad
-// Request" when there's a problem with the request that the user sent.
-func (app *Frontend) clientError(w http.ResponseWriter, status int) {
- http.Error(w, http.StatusText(status), status)
-}
-
-// For consistency, we'll also implement a notFound helper. This is simply a
-// convenience wrapper around clientError which sends a 404 Not Found response to
-// the user.
-func (app *Frontend) notFound(w http.ResponseWriter) {
- app.clientError(w, http.StatusNotFound)
-}
\ No newline at end of file
diff --git a/internal/frontend/routes.go b/internal/frontend/routes.go
deleted file mode 100644
index 7926c2b..0000000
--- a/internal/frontend/routes.go
+++ /dev/null
@@ -1,83 +0,0 @@
-package frontend
-
-import (
- "fmt"
- "io/fs"
- "net/http"
- "os"
- "os/exec"
- "path/filepath"
- "strings"
-
- "github.com/go-chi/chi/v5"
- "rpjosh.de/ncDocConverter/pkg/logger"
- "rpjosh.de/ncDocConverter/web"
-)
-
-func (app *Frontend) routes(router *chi.Mux) {
-
- if app.Config.Server.DevelopmentServer {
- app.renderForDev(router)
- } else {
- app.renderForProd(router)
- }
-
- router.Route("/", func(mainRouter chi.Router) {
- mainRouter.Get("/", app.home)
- })
-
- router.NotFound(func(w http.ResponseWriter, r *http.Request) {
- app.notFound(w)
- })
-}
-
-// Runs the vite Server as an sub process for serving the files with the hot reload function.
-// The src directory will also be exposed from within this server for the asserts
-func (app *Frontend) renderForDev(router *chi.Mux) {
- // serve assets from src folder
- FileServer(router, "/src", http.Dir("./web/app/src"))
-
- logger.Info("[DEV] Started vite dev server on http://localhost:%d", app.Config.Server.DevelopmentServerPort)
- vite := exec.Command(filepath.Join(".", "node_modules", ".bin", "vite"), "--mode", "development", "--port", fmt.Sprint(app.Config.Server.DevelopmentServerPort))
- vite.Dir = "./web/app/"
- vite.Stdout = os.Stdout
- vite.Stderr = os.Stderr
- err := vite.Start()
- if err != nil {
- logger.Error("Failed to start the vite development server: %s", err)
- }
-}
-
-// This serves all the needed files from the ebedded file system within the binary
-// -> no additional WebServer
-func (app *Frontend) renderForProd(router *chi.Mux) {
- staticFolder, err := fs.Sub(web.FrontendFiles, "app/dist/assets")
- if err != nil {
- logger.Fatal("Cannot access the embedded directory 'src'. %s", err)
- }
- FileServer(router, "/assets", http.FS(staticFolder))
-}
-
-func FileServer(r chi.Router, path string, root http.FileSystem) {
- if strings.ContainsAny(path, "{}*") {
- logger.Info("FileServer does not permit any URL parameters.")
- }
-
- if path != "/" && path[len(path)-1] != '/' {
- r.Get(path, http.RedirectHandler(path+"/", http.StatusMovedPermanently).ServeHTTP)
- path += "/"
- }
- path += "*"
-
- r.Get(path, func(w http.ResponseWriter, r *http.Request) {
- if strings.HasSuffix(r.URL.Path, "/") {
- http.NotFound(w, r)
- return
- }
-
- rctx := chi.RouteContext(r.Context())
- pathPrefix := strings.TrimSuffix(rctx.RoutePattern(), "/*")
- fs := http.StripPrefix(pathPrefix, http.FileServer(root))
- fs.ServeHTTP(w, r)
- })
-}
diff --git a/internal/frontend/templates.go b/internal/frontend/templates.go
deleted file mode 100644
index 22ea3c2..0000000
--- a/internal/frontend/templates.go
+++ /dev/null
@@ -1,89 +0,0 @@
-package frontend
-
-import (
- "fmt"
- "io/fs"
- "net/http"
- "path/filepath"
- "text/template"
-
- "rpjosh.de/ncDocConverter/web"
-)
-
-type serverConfig struct {
- Version string
- Development bool
- SourceServer string
-}
-
-// the server config does never change again -> set this once at startup
-var serverConf *serverConfig = &serverConfig{
- Version: "1.0.0",
-}
-
-type templateData struct {
- Version string
- ServerConfig *serverConfig
-}
-
-// Returns the absolute URL on the WebServer to the given TypeScript file given without the file extension
-// main -> http://localhost:4000/assets/main.js
-func getJSFile(file string) string {
- if serverConf.Development {
- return serverConf.SourceServer + "src/" + file + ".tsx"
- }
-
- return serverConf.SourceServer + "assets/" + file + ".js"
-}
-
-var functions = template.FuncMap{
- "getJSFile": getJSFile,
-}
-
-func (app *Frontend) setServerConfiguration() {
- serverConf.Development = app.Config.Server.DevelopmentServer
-
- sourceServer := ""
- if serverConf.Development {
- sourceServer = fmt.Sprintf("http://localhost:%d/", app.Config.Server.DevelopmentServerPort)
- } else {
- sourceServer = fmt.Sprintf("http://localhost%s/", app.Config.Server.Address)
- }
- serverConf.SourceServer = sourceServer
-}
-
-func (app *Frontend) newTemplateData(r *http.Request) *templateData {
- return &templateData{
- ServerConfig: serverConf,
- }
-}
-
-// Initializes a new cache containing all templates of the application
-// from the embedded file system
-func newTemplateCache() (map[string]*template.Template, error) {
- cache := map[string]*template.Template{}
-
- pages, err := fs.Glob(&web.TemplateFiles, "template/pages/*.tmpl.html")
- if err != nil {
- return nil, err
- }
-
- for _, page := range pages {
- name := filepath.Base(page)
-
- patterns := []string{
- "template/base.tmpl.html",
- "template/vitejs.tmpl.html",
- page,
- }
-
- ts, err := template.New(name).Funcs(functions).ParseFS(web.TemplateFiles, patterns...)
- if err != nil {
- return nil, err
- }
-
- cache[name] = ts
- }
-
- return cache, nil
-}
diff --git a/internal/models/bookstack.go b/internal/models/bookstack.go
new file mode 100644
index 0000000..d1de163
--- /dev/null
+++ b/internal/models/bookstack.go
@@ -0,0 +1,38 @@
+package models
+
+// BookStack details to fetch books from
+type BookStack struct {
+ URL string `json:"url"`
+ Username string `json:"username"`
+ Token string `json:"apiToken"`
+
+ Jobs []BookStackJob `json:"jobs"`
+}
+
+// A concrete BookStacksJob
+type BookStackJob struct {
+ JobName string `json:"jobName"`
+ DestinationDir string `json:"destinationDir"`
+
+ Shelves []string `json:"shelves"`
+ ShelvesRegex string `json:"shelveRegex"`
+
+ Books []string `json:"books"`
+ BooksRegex string `json:"booksRegex"`
+
+ IncludeBooksWithoutShelve bool `json:"includeBooksWithoutShelve"`
+ Format Format `json:"format"`
+ KeepStructure bool `json:"keepStructure"`
+
+ Recursive string `json:"recursive"`
+ Execution string `json:"execution"`
+
+ CacheCount int `json:"cache"`
+}
+
+type Format string
+
+const (
+ HTML Format = "html"
+ PDF Format = "pdf"
+)
diff --git a/internal/models/ncconvert.go b/internal/models/ncconvert.go
index ee0d19b..5a3cabb 100644
--- a/internal/models/ncconvert.go
+++ b/internal/models/ncconvert.go
@@ -7,25 +7,32 @@ import (
"os"
)
-type User struct {
- AuthUser string`json:"authUser"`
- NextcloudBaseUrl string`json:"nextcloudUrl"`
- Username string`json:"username"`
- Password string`json:"password"`
- ConvertJobs []ConvertJob`json:"jobs"`
+// The root nextcloud user where the files are stored
+// and the files for onlyoffice jobs are defined
+type NextcloudUser struct {
+ NextcloudBaseUrl string `json:"nextcloudUrl"`
+ Username string `json:"username"`
+ Password string `json:"password"`
+
+ // OnlyOffice
+ ConvertJobs []NcConvertJob `json:"jobs"`
+
+ // BookStack
+ BookStack BookStack `json:"bookStack"`
}
-type ConvertJob struct {
- JobName string`json:"jobName"`
- SourceDir string`json:"sourceDir"`
- DestinationDir string`json:"destinationDir"`
- KeepFolders string`json:"keepFolders"`
- Recursive string`json:"recursive"`
- Executions []string`json:"execution"`
+// A OnlyOffice docs convert job
+type NcConvertJob struct {
+ JobName string `json:"jobName"`
+ SourceDir string `json:"sourceDir"`
+ DestinationDir string `json:"destinationDir"`
+ KeepFolders string `json:"keepFolders"`
+ Recursive string `json:"recursive"`
+ Execution string `json:"execution"`
}
type NcConvertUsers struct {
- Users []User`json:"users"`
+ Users []NextcloudUser `json:"nextcloudUsers"`
}
// Parses the given file to the in memory struct
@@ -47,4 +54,4 @@ func ParseConvertUsers(filePath string) (*NcConvertUsers, error) {
json.Unmarshal(byteValue, &conv)
return &conv, nil
-}
\ No newline at end of file
+}
diff --git a/internal/models/webconfig.go b/internal/models/webconfig.go
index 0d66c51..20e24ec 100644
--- a/internal/models/webconfig.go
+++ b/internal/models/webconfig.go
@@ -14,10 +14,9 @@ type WebConfig struct {
}
type Server struct {
- Address string `yaml:"address"`
- Certificate string `yaml:"certificate"`
- DevelopmentServer bool `yaml:"developmentServer"`
- DevelopmentServerPort int `yaml:"developmentServerPort"`
+ Address string `yaml:"address"`
+ Certificate string `yaml:"certificate"`
+ OneShot bool `yaml:"oneShot"`
}
type Logging struct {
@@ -26,7 +25,7 @@ type Logging struct {
LogFilePath string `yaml:"logFilePath"`
}
-// Parses the given configuration file (.yaml file) to an WebConfiguration
+// Parses the configuration file (.yaml file) to an WebConfiguration
func ParseWebConfig(webConfig *WebConfig, file string) (*WebConfig, error) {
if file == "" {
return webConfig, nil
@@ -47,8 +46,7 @@ func ParseWebConfig(webConfig *WebConfig, file string) (*WebConfig, error) {
func getDefaultConfig() *WebConfig {
return &WebConfig{
Server: Server{
- Address: ":4000",
- DevelopmentServerPort: 5173,
+ Address: ":4000",
},
Logging: Logging{
PrintLogLevel: "info",
@@ -78,12 +76,12 @@ func SetConfig() (*WebConfig, error) {
_ = flag.String("config", "./config.yaml", "Path to the configuration file (see configs/config.yaml) for an example")
address := flag.String("address", webConfig.Server.Address, "Address and port on which the api and the web server should listen to")
printLogLevel := flag.String("printLogLevel", webConfig.Logging.PrintLogLevel, "Minimum log level to log (debug, info, warning, error, fatal)")
- devServer := flag.Bool("dev", webConfig.Server.DevelopmentServer, "Enables the development server with hot reload support")
+ oneShot := flag.Bool("oneShot", webConfig.Server.OneShot, "All jobs are executed immediately and the program exists afterwards")
flag.Parse()
webConfig.Server.Address = *address
webConfig.Logging.PrintLogLevel = *printLogLevel
- webConfig.Server.DevelopmentServer = *devServer
+ webConfig.Server.OneShot = *oneShot
defaultLogger := logger.Logger{
PrintLevel: logger.GetLevelByName(webConfig.Logging.PrintLogLevel),
diff --git a/internal/ncworker/bookStack.go b/internal/ncworker/bookStack.go
new file mode 100644
index 0000000..d090491
--- /dev/null
+++ b/internal/ncworker/bookStack.go
@@ -0,0 +1,589 @@
+package ncworker
+
+// @TODO delete folders for shelves that doesn't exist anyore
+
+import (
+ "encoding/json"
+ "fmt"
+ "io"
+ "net/http"
+ "net/url"
+ "path/filepath"
+ "regexp"
+ "strings"
+ "sync"
+ "time"
+
+ "rpjosh.de/ncDocConverter/internal/models"
+ "rpjosh.de/ncDocConverter/internal/nextcloud"
+ "rpjosh.de/ncDocConverter/pkg/logger"
+ "rpjosh.de/ncDocConverter/pkg/utils"
+)
+
+type BsJob struct {
+ job *models.BookStackJob
+ ncUser *models.NextcloudUser
+
+ cacheCount int
+ cacheBooks map[int]book
+ cacheShelves []shelf
+ // If the cache should be usedi n the current execution
+ useCache bool
+}
+
+type shelf struct {
+ ID int `json:"id"`
+ Name string `json:"name"`
+
+ // This has to be fetched extra
+ books []int
+}
+type shelfDetails struct {
+ ID int `json:"id"`
+ Name string `json:"name"`
+ Tags []string `json:"tags"`
+ Books []struct {
+ ID int `json:"id"`
+ Name string `json:"name"`
+ } `json:"books"`
+}
+type shelves struct {
+ Data []shelf `json:"data"`
+}
+
+type book struct {
+ ID int `json:"id"`
+ Name string `json:"name"`
+
+ // This has to be calculated of the latest modify page of a page
+ lastModified time.Time
+ // If the book should be ignored to convert
+ ignore bool
+
+ // If the book has been already converted
+ converted bool
+}
+type books struct {
+ Data []book `json:"data"`
+}
+type bookDetails struct {
+ ID int `json:"id"`
+ Name string `json:"name"`
+ Contents []struct {
+ ID int `json:"id"`
+ Name string `json:"name"`
+ Slug string `json:"slug"`
+ BookID int `json:"book_id"`
+ ChapterID int `json:"chapter_id"`
+ Draft bool `json:"draft"`
+ Template bool `json:"template"`
+ UpdatedAt time.Time `json:"updated_at"`
+ URL string `json:"url"`
+ Type string `json:"type"`
+ } `json:"contents"`
+ Tags []string `json:"tags"`
+}
+
+func NewBsJob(job *models.BookStackJob, ncUser *models.NextcloudUser) *BsJob {
+ bsJob := BsJob{
+ job: job,
+ ncUser: ncUser,
+ }
+
+ return &bsJob
+}
+
+func (job *BsJob) ExecuteJob() {
+ // Get all existing files in the destination folder
+ destination, err := nextcloud.SearchInDirectory(
+ job.ncUser, job.job.DestinationDir,
+ []string{
+ "text/html",
+ "application/pdf",
+ },
+ )
+ if err != nil {
+ logger.Error("Failed to get files in destination directory '%s': %s", job.job.DestinationDir, err)
+ return
+ }
+
+ // Make a map with path as index
+ destinationMap := make(map[string]ncFiles)
+
+ preCount := len("/remote.php/dav/files/" + job.ncUser.Username + "/")
+ for _, file := range destination.Response {
+ href, _ := url.QueryUnescape(file.Href)
+ path := href[preCount:]
+ var extension = filepath.Ext(path)
+ var name = path[0 : len(path)-len(extension)][len(job.job.DestinationDir):]
+
+ destinationMap[name] = ncFiles{
+ extension: extension,
+ path: path,
+ lastModified: file.GetLastModified(),
+ }
+ }
+
+ // Check for cache
+ job.cache()
+
+ // Get all shelves
+ shelves, err := job.getShelves()
+ if err != nil {
+ logger.Error("Failed to get shelves: %s", err)
+ return
+ }
+
+ // Get all books
+ books, err := job.getBooks()
+ if err != nil {
+ logger.Error("Failed to get books: %s", err)
+ return
+ }
+
+ // Index books by path
+ indexedBooks := job.getIndexedBooks(shelves, books)
+
+ // Cache data
+ if job.job.CacheCount > 0 && !job.useCache {
+ job.cacheCount = job.job.CacheCount
+
+ job.cacheShelves = *shelves
+ job.cacheBooks = utils.CopyMap(*books)
+ }
+
+ // Now finally convert the books :)
+ convertCount := 0
+ var wg sync.WaitGroup
+ for i, b := range indexedBooks {
+ // mark as converted
+ indexedBooks[i].converted = true
+ (*books)[b.ID] = *indexedBooks[i]
+
+ // check if it has to be converted again (updated) or for the first time
+ des, exists := destinationMap[i]
+
+ if (!exists || b.lastModified.After(des.lastModified)) && !b.ignore {
+ wg.Add(1)
+ convertCount++
+ go func(book book, path string) {
+ defer wg.Done()
+ job.convertBook(book, path)
+ }(*b, i)
+ } else if b.ignore {
+ logger.Debug("Duplicate book name: %s", b.Name)
+ }
+
+ // Ignore states that a book with a duplicate name exists → delete the orig also
+ if !b.ignore {
+ delete(destinationMap, i)
+ }
+ }
+ wg.Wait()
+
+ // Convert remaining books
+ if job.job.IncludeBooksWithoutShelve {
+ for _, b := range *books {
+ // check if it has to be converted again (updated) or for the first time
+ des, exists := destinationMap[b.Name]
+
+ if !b.converted && !b.ignore && (!exists || b.lastModified.After(des.lastModified)) {
+ wg.Add(1)
+ convertCount++
+ go func(book book, path string) {
+ defer wg.Done()
+ job.convertBook(book, path)
+ }(b, b.Name)
+ }
+ delete(destinationMap, b.Name)
+ }
+ wg.Wait()
+ }
+
+ // Delete the files which are not available anymore
+ for _, dest := range destinationMap {
+ err := nextcloud.DeleteFile(job.ncUser, dest.path)
+ if err != nil {
+ logger.Error(utils.FirstCharToUppercase(err.Error()))
+ }
+ }
+
+ logger.Info("Finished BookStack job \"%s\": %d books converted", job.job.JobName, convertCount)
+}
+
+// Checks and initializes the cache
+func (job *BsJob) cache() {
+ if job.job.CacheCount > 0 {
+ job.cacheCount--
+ if job.cacheCount < 0 {
+ job.useCache = false
+ } else {
+ job.useCache = true
+ }
+ }
+}
+
+// Return the relative path of the book to save in nextcloud
+func (job *BsJob) getPath(bookName string, shelfName string) string {
+ if job.job.KeepStructure {
+ return shelfName + "/" + bookName
+ } else {
+ return bookName
+ }
+}
+
+// Gets all shelves
+func (job *BsJob) getShelves() (*[]shelf, error) {
+ if job.useCache {
+ return &job.cacheShelves, nil
+ }
+
+ client := http.Client{Timeout: 10 * time.Second}
+
+ req := job.getRequest(http.MethodGet, "shelves", nil)
+
+ // Add shelve filter
+ q := req.URL.Query()
+ for _, j := range job.job.Shelves {
+ q.Add("filter[name:eq]", j)
+ }
+ req.URL.RawQuery = q.Encode()
+
+ res, err := client.Do(req)
+ if err != nil {
+ return nil, err
+ }
+ defer res.Body.Close()
+
+ if res.StatusCode != 200 {
+ return nil, fmt.Errorf("expected status code 200, got %d", res.StatusCode)
+ }
+
+ rtc := shelves{}
+ if err = json.NewDecoder(res.Body).Decode(&rtc); err != nil {
+ return nil, fmt.Errorf("failed to decode response: %s", err)
+ }
+
+ if job.job.ShelvesRegex != "" {
+ reg, err := regexp.Compile(job.job.ShelvesRegex)
+ // This is fatal
+ logger.Fatal("Failed to parse the regex '%s': %s", job.job.ShelvesRegex, err)
+
+ rtc2 := shelves{}
+
+ for i, shelve := range rtc.Data {
+ if reg.Match([]byte(shelve.Name)) {
+ rtc2.Data = append(rtc2.Data, rtc.Data[i])
+ } else {
+ logger.Debug("Ignoring shelve %s", shelve.Name)
+ }
+ }
+
+ rtc = rtc2
+ }
+
+ return &rtc.Data, nil
+}
+
+// Returns the IDs of books which belongs to the shelf
+func (job *BsJob) getBooksInShelve(id int) ([]int, error) {
+ client := http.Client{Timeout: 10 * time.Second}
+ req := job.getRequest(http.MethodGet, "shelves/"+fmt.Sprintf("%d", id), nil)
+
+ res, err := client.Do(req)
+ if err != nil {
+ return nil, err
+ }
+ defer res.Body.Close()
+
+ if res.StatusCode != 200 {
+ return nil, fmt.Errorf("expected status code 200, got %d", res.StatusCode)
+ }
+
+ shelfDetails := shelfDetails{}
+ if err = json.NewDecoder(res.Body).Decode(&shelfDetails); err != nil {
+ return nil, fmt.Errorf("failed to decode response: %s", err)
+ }
+
+ rtc := make([]int, len(shelfDetails.Books))
+ for i, details := range shelfDetails.Books {
+ rtc[i] = details.ID
+ }
+
+ return rtc, nil
+}
+
+// Indexes the books by the relative path
+func (job *BsJob) getIndexedBooks(shelves *[]shelf, books *map[int]book) map[string]*book {
+ // Now it has to be checked which book belongs to which shelve.
+ // When cached this was already done
+ if !job.useCache {
+ var wg sync.WaitGroup
+ for i, shelv := range *shelves {
+ wg.Add(1)
+
+ go func(shelf shelf, index int) {
+ defer wg.Done()
+
+ ids, err := job.getBooksInShelve(shelf.ID)
+ if err != nil {
+ logger.Error("Failed to get shelf details: %s", err)
+ } else {
+ b := make([]int, 0)
+
+ for _, id := range ids {
+ // Check if book should be excluded → it is not contained in the book map
+ book, exists := (*books)[id]
+ if exists {
+ b = append(b, book.ID)
+ }
+ }
+
+ (*shelves)[index].books = b
+ }
+ }(shelv, i)
+ }
+ wg.Wait()
+ }
+
+ // A book can have the same name. This would lead to conflicts
+ // if they are in the same shelve / folder.
+ // In such a case the ID of the book will be appended to the name "bookName_123".
+ // Because of that a map indexed by the path will be created and AFTERWARDS the file is converted
+ indexedBooks := make(map[string]*book)
+ for _, shelf := range *shelves {
+ for _, bookId := range shelf.books {
+ b := (*books)[bookId]
+ bookPath := job.getPath(b.Name, shelf.Name)
+ existingBook, doesExists := indexedBooks[bookPath]
+
+ if doesExists {
+ // The book path will be appended
+ newBookPath := fmt.Sprintf("%s_%d", bookPath, b.ID)
+ indexedBooks[newBookPath] = &b
+
+ // Also add the other book with the ID
+ otherNewBookPath := fmt.Sprintf("%s_%d", bookPath, existingBook.ID)
+ indexedBooks[otherNewBookPath] = existingBook
+
+ // The original book won't be removed because otherwise a third book with the same
+ // name will be inserted using its real name.
+ // But because this is a pointer, a copy is needed
+ var existingBookCopy book
+ utils.Copy(existingBook, &existingBookCopy)
+ existingBookCopy.ignore = true
+ indexedBooks[bookPath] = &existingBookCopy
+ } else {
+ indexedBooks[bookPath] = &b
+ }
+ }
+
+ // If the structure should be keept, a folder for every shelve has to be created
+ if job.job.KeepStructure && !job.useCache {
+ nextcloud.CreateFoldersRecursively(job.ncUser, job.job.DestinationDir+shelf.Name+"/")
+ }
+ }
+
+ return indexedBooks
+}
+
+// Gets all books and returns a map indexed by the ID of the book
+func (job *BsJob) getBooks() (*map[int]book, error) {
+ if job.useCache {
+ books := utils.CopyMap(job.cacheBooks)
+
+ // The last Change date has to be updated even in cache
+ var wg sync.WaitGroup
+ var mut = &sync.Mutex{}
+ for i, b := range books {
+ wg.Add(1)
+
+ go func(book book, index int) {
+ defer wg.Done()
+ lastModified, err := job.getLastModifiedOfBook(book.ID)
+ if err != nil {
+ logger.Warning("Failed to get last modified date of book %s (%d) - using old date: %s", book.Name, book.ID, err)
+ return
+ }
+
+ book.lastModified = *lastModified
+
+ mut.Lock()
+ books[index] = book
+ mut.Unlock()
+ }(b, i)
+ }
+ wg.Wait()
+
+ return &books, nil
+ }
+
+ client := http.Client{Timeout: 10 * time.Second}
+ req := job.getRequest(http.MethodGet, "books", nil)
+
+ // Add shelve filter
+ q := req.URL.Query()
+ for _, j := range job.job.Books {
+ q.Add("filter[name:eq]", j)
+ }
+ req.URL.RawQuery = q.Encode()
+
+ res, err := client.Do(req)
+ if err != nil {
+ return nil, err
+ }
+ defer res.Body.Close()
+
+ if res.StatusCode != 200 {
+ return nil, fmt.Errorf("expected status code 200, got %d", res.StatusCode)
+ }
+
+ booksArray := books{}
+ if err = json.NewDecoder(res.Body).Decode(&booksArray); err != nil {
+ return nil, fmt.Errorf("failed to decode response: %s", err)
+ }
+
+ if job.job.BooksRegex != "" {
+ reg, err := regexp.Compile(job.job.BooksRegex)
+ // This is fatal
+ logger.Fatal("Failed to parse the regex '%s': %s", job.job.BooksRegex, err)
+
+ booksArray2 := books{}
+
+ for i, book := range booksArray.Data {
+ if reg.Match([]byte(book.Name)) {
+ booksArray2.Data = append(booksArray2.Data, booksArray.Data[i])
+ } else {
+ logger.Debug("Ignoring shelve %s", book.Name)
+ }
+ }
+
+ booksArray = booksArray2
+ }
+
+ // Create indexed map
+ rtc := make(map[int]book)
+ var wg sync.WaitGroup
+ var mut = &sync.Mutex{}
+ for _, b := range booksArray.Data {
+ wg.Add(1)
+
+ go func(b book) {
+ defer wg.Done()
+ lastModified, err := job.getLastModifiedOfBook(b.ID)
+ if err != nil {
+ logger.Warning("Failed to get last modified date of book %s (%d) - skipping: %s", b.Name, b.ID, err)
+ return
+ }
+
+ if lastModified.Unix() == 0 {
+ logger.Info("Skipping book %s (%d) because of no content", b.Name, b.ID)
+ return
+ }
+
+ mut.Lock()
+ rtc[b.ID] = book{
+ ID: b.ID,
+ Name: b.Name,
+ lastModified: *lastModified,
+ }
+ mut.Unlock()
+ }(b)
+ }
+ wg.Wait()
+
+ return &rtc, nil
+}
+
+// Returns the last modified time of a book
+func (job *BsJob) getLastModifiedOfBook(id int) (*time.Time, error) {
+ client := http.Client{Timeout: 10 * time.Second}
+ req := job.getRequest(http.MethodGet, "books/"+fmt.Sprintf("%d", id), nil)
+
+ res, err := client.Do(req)
+ if err != nil {
+ return nil, err
+ }
+ defer res.Body.Close()
+
+ if res.StatusCode != 200 {
+ return nil, fmt.Errorf("expected status code 200, got %d", res.StatusCode)
+ }
+
+ bd := bookDetails{}
+ if err = json.NewDecoder(res.Body).Decode(&bd); err != nil {
+ return nil, fmt.Errorf("failed to decode response: %s", err)
+ }
+
+ lastMod := time.Unix(0, 0)
+ for i, content := range bd.Contents {
+ if content.Template || content.Draft {
+ continue
+ }
+
+ if content.UpdatedAt.After(lastMod) {
+ lastMod = bd.Contents[i].UpdatedAt
+ }
+ }
+
+ return &lastMod, nil
+}
+
+// Returns a new request to the bookStack API.
+// The path beginning AFTER /api/ should be given (e.g.: shelves)
+func (job *BsJob) getRequest(method string, path string, body io.Reader) *http.Request {
+ req, err := http.NewRequest(method, job.ncUser.BookStack.URL+"/api/"+path, body)
+ if err != nil {
+ logger.Error("%s", err)
+ }
+ req.Header.Set("Authorization", "Token "+job.ncUser.BookStack.Token)
+
+ return req
+}
+
+// Converts the given book and uploads it to nextcloud.
+// The path is being expected relative to the root dir of the jobs directory and does
+// not contain a file extension
+func (job *BsJob) convertBook(book book, path string) {
+ fileExtension, url := job.getFileExtension()
+
+ client := http.Client{Timeout: 10 * time.Second}
+ req := job.getRequest(http.MethodGet, fmt.Sprintf("books/%d/export/%s", book.ID, url), nil)
+
+ res, err := client.Do(req)
+ if err != nil {
+ logger.Error("Failed to convert book: %s", err)
+ }
+ defer res.Body.Close()
+
+ if res.StatusCode != 200 {
+ logger.Error("Failed to convert book: expected status code 200, got %d", res.StatusCode)
+ return
+ }
+
+ err = nextcloud.UploadFile(job.ncUser, job.job.DestinationDir+path+fileExtension, res.Body)
+ if err != nil {
+ logger.Error("Failed to upload book to nextcloud: %s", err)
+ }
+}
+
+func (job *BsJob) getFileExtension() (fileExtension string, url string) {
+ switch strings.ToLower(string(job.job.Format)) {
+ case "html":
+ {
+ fileExtension = ".html"
+ url = "html"
+ }
+ case "pdf":
+ {
+ fileExtension = ".pdf"
+ url = "pdf"
+ }
+ default:
+ {
+ logger.Fatal("Invalid format given: '%s'. Expected 'html' or 'pdf'", job.job.Format)
+ }
+ }
+
+ return
+}
diff --git a/internal/ncworker/convertscheduler.go b/internal/ncworker/convertscheduler.go
index 7039eb0..c51b702 100644
--- a/internal/ncworker/convertscheduler.go
+++ b/internal/ncworker/convertscheduler.go
@@ -1,30 +1,114 @@
package ncworker
import (
+ "bufio"
+ "fmt"
+ "os"
+ "strings"
+ "sync"
+ "time"
+ "github.com/go-co-op/gocron"
"rpjosh.de/ncDocConverter/internal/models"
+ "rpjosh.de/ncDocConverter/pkg/logger"
)
type NcConvertScheduler struct {
- users *models.NcConvertUsers
+ users *models.NcConvertUsers
+ config *models.WebConfig
+
+ scheduler *gocron.Scheduler
}
-func NewScheduler(users *models.NcConvertUsers) *NcConvertScheduler {
- scheduler := NcConvertScheduler {
- users: users,
+func NewScheduler(users *models.NcConvertUsers, config *models.WebConfig) *NcConvertScheduler {
+ scheduler := NcConvertScheduler{
+ users: users,
+ config: config,
+ scheduler: gocron.NewScheduler(time.Local),
+ }
+ // Don't reschedule a task if it's still running
+ scheduler.scheduler.SingletonMode()
+ scheduler.scheduler.StartAsync()
+
+ if config.Server.OneShot {
+ scheduler.ScheduleExecutionsOneShot()
+ } else {
+ scheduler.ScheduleExecutions()
+
+ fmt.Println("Started in schedule mode.\nType \"exit\" to leave or \"execute\" to execute all jobs")
+ // Endless loop
+ for {
+ reader := bufio.NewReader(os.Stdin)
+ text, err := reader.ReadString('\n')
+ if err != nil {
+ // No console input
+ var wg sync.WaitGroup
+ logger.Debug("No console available")
+ wg.Add(1)
+ wg.Wait()
+ }
+
+ input := strings.Trim(strings.ToLower(text), "\n")
+ if input == "exit" {
+ break
+ } else if input == "execute" {
+ scheduler.scheduler.RunAll()
+ }
+ }
}
- scheduler.ScheduleExecutions()
-
return &scheduler
}
-func (scheduler NcConvertScheduler) ScheduleExecutions() {
+// Executes all jobs and exits the program afterwards
+func (scheduler NcConvertScheduler) ScheduleExecutionsOneShot() {
for _, user := range scheduler.users.Users {
+
+ // Schedule Nextcloud jobs
for _, job := range user.ConvertJobs {
- convJob := NewJob(&job, &user)
+ convJob := NewNcJob(&job, &user)
convJob.ExecuteJob()
}
+ // Schedule boockstack jobs
+ if user.BookStack.URL != "" {
+ for _, job := range user.BookStack.Jobs {
+ bsJob := NewBsJob(&job, &user)
+ bsJob.ExecuteJob()
+ }
+ }
+
}
-}
\ No newline at end of file
+}
+
+// Schedules all jobs with gocron
+func (s NcConvertScheduler) ScheduleExecutions() {
+ for ui, user := range s.users.Users {
+
+ // Schedule Nextcloud jobs
+ for i, job := range user.ConvertJobs {
+ convJob := NewNcJob(&s.users.Users[ui].ConvertJobs[i], &s.users.Users[i])
+
+ _, err := s.scheduler.Cron(job.Execution).DoWithJobDetails(s.executeJob, convJob)
+ if err != nil {
+ logger.Fatal("Failed to schedule office job '%s': %s", job.JobName, err)
+ }
+ }
+
+ // Schedule boockstack jobs
+ if user.BookStack.URL != "" {
+ for i, job := range user.BookStack.Jobs {
+ bsJob := NewBsJob(&s.users.Users[ui].BookStack.Jobs[i], &s.users.Users[i])
+
+ _, err := s.scheduler.Cron(job.Execution).DoWithJobDetails(s.executeJob, bsJob)
+ if err != nil {
+ logger.Fatal("Failed to schedule BookStack job '%s': %s", job.JobName, err)
+ }
+ }
+ }
+ }
+}
+
+func (s NcConvertScheduler) executeJob(job Job, scheduledJob gocron.Job) {
+ job.ExecuteJob()
+}
diff --git a/internal/ncworker/job.go b/internal/ncworker/job.go
new file mode 100644
index 0000000..c477db1
--- /dev/null
+++ b/internal/ncworker/job.go
@@ -0,0 +1,5 @@
+package ncworker
+
+type Job interface {
+ ExecuteJob()
+}
diff --git a/internal/ncworker/ncconverter.go b/internal/ncworker/ncconverter.go
deleted file mode 100644
index 4f0d529..0000000
--- a/internal/ncworker/ncconverter.go
+++ /dev/null
@@ -1,307 +0,0 @@
-package ncworker
-
-import (
- "bytes"
- "encoding/xml"
- "fmt"
- "io"
- "net/http"
- "path/filepath"
- "strconv"
- "strings"
- "text/template"
- "time"
-
- "rpjosh.de/ncDocConverter/internal/models"
- "rpjosh.de/ncDocConverter/pkg/logger"
- "rpjosh.de/ncDocConverter/web"
-)
-
-type convertJob struct {
- job *models.ConvertJob
- user *models.User
-}
-
-type searchResult struct {
- XMLName xml.Name `xml:"multistatus"`
- Text string `xml:",chardata"`
- D string `xml:"d,attr"`
- S string `xml:"s,attr"`
- Oc string `xml:"oc,attr"`
- Nc string `xml:"nc,attr"`
- Response []struct {
- Text string `xml:",chardata"`
- Href string `xml:"href"`
- Propstat struct {
- Text string `xml:",chardata"`
- Prop struct {
- Text string `xml:",chardata"`
- Getcontenttype string `xml:"getcontenttype"`
- Getlastmodified string `xml:"getlastmodified"`
- Size string `xml:"size"`
- Fileid int `xml:"fileid"`
- } `xml:"prop"`
- Status string `xml:"status"`
- } `xml:"propstat"`
- } `xml:"response"`
-}
-
-type ncFiles struct {
- extension string
- path string
- lastModified time.Time
- contentType string
- size int
- fileid int
-}
-
-type searchTemplateData struct {
- Username string
- Directory string
- ContentType []string
-}
-
-func NewJob(job *models.ConvertJob, user *models.User) *convertJob {
- convJob := &convertJob{
- job: job,
- user: user,
-
- }
-
- return convJob
-}
-
-func (job *convertJob) ExecuteJob() {
- source := job.searchInDirectory(
- job.job.SourceDir,
- []string {
- "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
- "application/msword",
- },
- )
- destination := job.searchInDirectory(
- job.job.DestinationDir,
- []string {
- "application/pdf",
- },
- )
-
-
- preCount := len("/remote.php/dav/files/" + job.user.Username + "/")
- // store the files in a map
- sourceMap := make(map[string]ncFiles)
- destinationMap := make(map[string]ncFiles)
-
- for _, file := range source.Response {
- path := file.Href[preCount:]
- var extension = filepath.Ext(path)
- var name = path[0:len(path)-len(extension)][len(job.job.SourceDir):]
- // Time format: Fri, 23 Sep 2022 05:46:31 GMT
- time, err := time.Parse("Mon, 02 Jan 2006 15:04:05 GMT", file.Propstat.Prop.Getlastmodified)
- if err != nil {
- logger.Error("%s", err)
- }
- size, err := strconv.Atoi(file.Propstat.Prop.Size)
- if err != nil {
- logger.Error("%s", err)
- }
- sourceMap[name] = ncFiles{
- extension: extension,
- path: path,
- lastModified: time,
- size: size,
- contentType: file.Propstat.Prop.Getcontenttype,
- fileid: file.Propstat.Prop.Fileid,
- }
- }
-
- for _, file := range destination.Response {
- path := file.Href[preCount:]
- var extension = filepath.Ext(path)
- var name = path[0:len(path)-len(extension)][len(job.job.DestinationDir):]
-
- time, err := time.Parse("Mon, 02 Jan 2006 15:04:05 GMT", file.Propstat.Prop.Getlastmodified)
- if err != nil {
- logger.Error("%s", err)
- }
- size, err := strconv.Atoi(file.Propstat.Prop.Size)
- if err != nil {
- logger.Error("%s", err)
- }
- destinationMap[name] = ncFiles{
- extension: extension,
- path: path,
- lastModified: time,
- size: size,
- contentType: file.Propstat.Prop.Getcontenttype,
- fileid: file.Propstat.Prop.Fileid,
- }
- }
-
- for index, source := range sourceMap {
- // check if the file exists in the destination map
- if dest, exists := destinationMap[index]; exists {
- // compare timestamp and size
- if dest.lastModified.Before(source.lastModified) {
- job.convertFile(source.path, source.fileid, dest.path)
- }
- delete(destinationMap, index)
- } else {
- job.convertFile(
- source.path, source.fileid, job.getDestinationDir(source.path),
- )
- delete(destinationMap, index)
- }
- }
-
- // delete the files which are not available anymore
- for _, dest := range destinationMap {
- job.deleteFile(dest.path)
- }
-}
-
-func (job *convertJob) getDestinationDir(sourceFile string) string {
- sourceFile = sourceFile[len(job.job.SourceDir):]
- var extension = filepath.Ext(sourceFile)
- var name = sourceFile[0:len(sourceFile)-len(extension)]
-
- return job.job.DestinationDir + name + ".pdf"
-}
-
-func (job *convertJob) createFoldersRecursively(destinationFile string) {
- s := strings.Split(destinationFile, "/")
- folderTree := ""
-
- logger.Debug("Creating directory for file '%s'", destinationFile)
-
- // webdav doesn't have an function to create directories recursively
- for _, folder := range s[:len(s) - 1] {
- folderTree += folder + "/"
-
- client := http.Client{Timeout: 5 * time.Second}
- req, err := http.NewRequest("MKCOL", job.user.NextcloudBaseUrl + "/remote.php/dav/files/" + job.user.Username + "/" + folderTree, nil)
- if err != nil {
- logger.Error("%s", err)
- }
- req.SetBasicAuth(job.user.Username, job.user.Password)
-
- res, err := client.Do(req)
- if err != nil {
- logger.Error("%s", err)
- }
- if (res.StatusCode != 201 && res.StatusCode != 405) {
-
- }
- // status code 201 or 405 (already existing)
- }
-}
-
-func (job *convertJob) convertFile(sourceFile string, sourceid int, destinationFile string) {
- logger.Debug("Trying to convert %s (%d) to %s", sourceFile, sourceid, destinationFile)
-
- job.createFoldersRecursively(destinationFile)
-
- client := http.Client{Timeout: 10 * time.Second}
- req, err := http.NewRequest(http.MethodGet, job.user.NextcloudBaseUrl + "/apps/onlyoffice/downloadas", nil)
- if err != nil {
- logger.Error("%s", err)
- }
- req.SetBasicAuth(job.user.Username, job.user.Password)
-
- q := req.URL.Query()
- q.Add("fileId", fmt.Sprint(sourceid))
- q.Add("toExtension", "pdf")
- req.URL.RawQuery = q.Encode()
-
- res, err := client.Do(req)
- if err != nil {
- logger.Error("%s", err)
- }
- // Status Code 200
- defer res.Body.Close()
-
- uploadClient := http.Client{Timeout: 10 * time.Second}
- uploadReq, err := http.NewRequest(http.MethodPut, job.user.NextcloudBaseUrl + "/remote.php/dav/files/" + job.user.Username + "/" + destinationFile, res.Body)
-
- if err != nil {
- logger.Error("%s", err)
- }
- uploadReq.SetBasicAuth(job.user.Username, job.user.Password)
- uploadReq.Header.Set("Content-Type", "application/binary")
-
- res, err = uploadClient.Do(uploadReq)
- if err != nil {
- logger.Error("%s", err)
- }
-
- if (res.StatusCode != 204 && res.StatusCode != 201) {
- logger.Error("Failed to create file %s (#%d)", destinationFile, res.StatusCode)
- }
- // Status Code 201
- res.Body.Close()
-}
-
-func (job *convertJob) deleteFile(filePath string) {
- client := http.Client{Timeout: 5 * time.Second}
-
- req, err := http.NewRequest(http.MethodDelete, job.user.NextcloudBaseUrl + "/remote.php/dav/files/" + job.user.Username + "/" + filePath, nil)
- if err != nil {
- logger.Error("%s", err)
- }
- req.SetBasicAuth(job.user.Username, job.user.Password)
-
- res, err := client.Do(req)
- if err != nil {
- logger.Error("%s", err)
- }
-
- if (res.StatusCode != 204) {
- logger.Error("Failed to delete file %s (%d)", filePath, res.StatusCode)
- }
-}
-
-// Searches all doc files in the source directory
-func (job *convertJob) searchInDirectory(directory string, contentType []string) *searchResult {
- client := http.Client{Timeout: 5 * time.Second}
-
- template, err := template.ParseFS(web.ApiTemplateFiles, "apitemplate/ncsearch.tmpl.xml")
- if err != nil {
- logger.Error("%s", err)
- }
- var buf bytes.Buffer
- templateData := searchTemplateData{
- Username: job.user.Username,
- Directory: directory,
- ContentType: contentType,
- }
- if err = template.Execute(&buf, templateData); err != nil {
- logger.Error("%s", err)
- }
- // Status code 207
- req, err := http.NewRequest("SEARCH", job.user.NextcloudBaseUrl + "/remote.php/dav/", &buf)
- if err != nil {
- logger.Error("%s", err)
- }
- req.SetBasicAuth(job.user.Username, job.user.Password)
- req.Header.Set("Content-Type", "application/xml")
-
- res, err := client.Do(req)
- if err != nil {
- logger.Error("%s", err)
- }
-
- defer res.Body.Close()
-
- resBody, err := io.ReadAll(res.Body)
- if err != nil {
- logger.Error("%s", err)
- }
-
- fmt.Print(res.StatusCode)
- var result searchResult
- if err = xml.Unmarshal(resBody, &result); err != nil {
- logger.Error("%s", err)
- }
-
- return &result
-}
\ No newline at end of file
diff --git a/internal/ncworker/office.go b/internal/ncworker/office.go
new file mode 100644
index 0000000..c6aabec
--- /dev/null
+++ b/internal/ncworker/office.go
@@ -0,0 +1,199 @@
+package ncworker
+
+import (
+ "fmt"
+ "net/http"
+ "net/url"
+ "path/filepath"
+ "strconv"
+ "time"
+
+ "rpjosh.de/ncDocConverter/internal/models"
+ "rpjosh.de/ncDocConverter/internal/nextcloud"
+ "rpjosh.de/ncDocConverter/pkg/logger"
+ "rpjosh.de/ncDocConverter/pkg/utils"
+)
+
+type convertJob struct {
+ job *models.NcConvertJob
+ ncUser *models.NextcloudUser
+}
+
+type ncFiles struct {
+ extension string
+ path string
+ lastModified time.Time
+ contentType string
+ size int
+ fileid int
+}
+
+func NewNcJob(job *models.NcConvertJob, ncUser *models.NextcloudUser) *convertJob {
+ convJob := &convertJob{
+ job: job,
+ ncUser: ncUser,
+ }
+
+ return convJob
+}
+
+func (job *convertJob) ExecuteJob() {
+
+ // Get existing directory contents
+ source, err := nextcloud.SearchInDirectory(
+ job.ncUser,
+ job.job.SourceDir,
+ []string{
+ "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
+ "application/msword",
+ },
+ )
+ if err != nil {
+ logger.Error("Failed to get files in source directory '%s': %s", job.job.SourceDir, err)
+ return
+ }
+
+ destination, err := nextcloud.SearchInDirectory(
+ job.ncUser,
+ job.job.DestinationDir,
+ []string{
+ "application/pdf",
+ },
+ )
+ if err != nil {
+ logger.Error("Failed to get files in destination directory '%s': %s", job.job.DestinationDir, err)
+ return
+ }
+
+ preCount := len("/remote.php/dav/files/" + job.ncUser.Username + "/")
+ // Store the files in a map
+ sourceMap := make(map[string]ncFiles)
+ destinationMap := make(map[string]ncFiles)
+
+ for _, file := range source.Response {
+ href, _ := url.QueryUnescape(file.Href)
+ path := href[preCount:]
+ var extension = filepath.Ext(path)
+ var name = path[0 : len(path)-len(extension)][len(job.job.SourceDir):]
+ time := file.GetLastModified()
+ size, err := strconv.Atoi(file.Propstat.Prop.Size)
+ if err != nil {
+ logger.Error("%s", err)
+ }
+ sourceMap[name] = ncFiles{
+ extension: extension,
+ path: path,
+ lastModified: time,
+ size: size,
+ contentType: file.Propstat.Prop.Getcontenttype,
+ fileid: file.Propstat.Prop.Fileid,
+ }
+ }
+
+ for _, file := range destination.Response {
+ href, _ := url.QueryUnescape(file.Href)
+ path := href[preCount:]
+ var extension = filepath.Ext(path)
+ var name = path[0 : len(path)-len(extension)][len(job.job.DestinationDir):]
+
+ time, err := time.Parse("Mon, 02 Jan 2006 15:04:05 GMT", file.Propstat.Prop.Getlastmodified)
+ if err != nil {
+ logger.Error("%s", err)
+ }
+ size, err := strconv.Atoi(file.Propstat.Prop.Size)
+ if err != nil {
+ logger.Error("%s", err)
+ }
+ destinationMap[name] = ncFiles{
+ extension: extension,
+ path: path,
+ lastModified: time,
+ size: size,
+ contentType: file.Propstat.Prop.Getcontenttype,
+ fileid: file.Propstat.Prop.Fileid,
+ }
+ }
+
+ convertCount := 0
+ for index, source := range sourceMap {
+ // check if the file exists in the destination map
+ if dest, exists := destinationMap[index]; exists {
+ // compare timestamp and size
+ if dest.lastModified.Before(source.lastModified) {
+ job.convertFile(source.path, source.fileid, dest.path)
+ convertCount++
+ }
+ delete(destinationMap, index)
+ } else {
+ job.convertFile(
+ source.path, source.fileid, job.getDestinationDir(source.path),
+ )
+ convertCount++
+ delete(destinationMap, index)
+ }
+ }
+
+ // Delete the files which are not available anymore
+ for _, dest := range destinationMap {
+ err := nextcloud.DeleteFile(job.ncUser, dest.path)
+ if err != nil {
+ logger.Error(utils.FirstCharToUppercase(err.Error()))
+ }
+ }
+
+ logger.Info("Finished Nextcloud job \"%s\": %d documents converted", job.job.JobName, convertCount)
+}
+
+func (job *convertJob) getDestinationDir(sourceFile string) string {
+ sourceFile = sourceFile[len(job.job.SourceDir):]
+ var extension = filepath.Ext(sourceFile)
+ var name = sourceFile[0 : len(sourceFile)-len(extension)]
+
+ return job.job.DestinationDir + name + ".pdf"
+}
+
+// Converts the source file to the destination file utilizing the onlyoffice convert api
+func (job *convertJob) convertFile(sourceFile string, sourceid int, destinationFile string) {
+ logger.Debug("Trying to convert %s (%d) to %s", sourceFile, sourceid, destinationFile)
+
+ nextcloud.CreateFoldersRecursively(job.ncUser, destinationFile)
+
+ client := http.Client{Timeout: 10 * time.Second}
+ req, err := http.NewRequest(http.MethodGet, job.ncUser.NextcloudBaseUrl+"/apps/onlyoffice/downloadas", nil)
+ if err != nil {
+ logger.Error("%s", err)
+ }
+ req.SetBasicAuth(job.ncUser.Username, job.ncUser.Password)
+
+ q := req.URL.Query()
+ q.Add("fileId", fmt.Sprint(sourceid))
+ q.Add("toExtension", "pdf")
+ req.URL.RawQuery = q.Encode()
+
+ res, err := client.Do(req)
+ if err != nil {
+ logger.Error("%s", err)
+ }
+ // Status Code 200
+ defer res.Body.Close()
+
+ uploadClient := http.Client{Timeout: 10 * time.Second}
+ uploadReq, err := http.NewRequest(http.MethodPut, job.ncUser.NextcloudBaseUrl+"/remote.php/dav/files/"+job.ncUser.Username+"/"+destinationFile, res.Body)
+
+ if err != nil {
+ logger.Error("%s", err)
+ }
+ uploadReq.SetBasicAuth(job.ncUser.Username, job.ncUser.Password)
+ uploadReq.Header.Set("Content-Type", "application/binary")
+
+ res, err = uploadClient.Do(uploadReq)
+ if err != nil {
+ logger.Error("%s", err)
+ }
+
+ if res.StatusCode != 204 && res.StatusCode != 201 {
+ logger.Error("Failed to create file %s (#%d)", destinationFile, res.StatusCode)
+ }
+ // Status Code 201
+ res.Body.Close()
+}
diff --git a/internal/nextcloud/nextcloud.go b/internal/nextcloud/nextcloud.go
new file mode 100644
index 0000000..7baa7d6
--- /dev/null
+++ b/internal/nextcloud/nextcloud.go
@@ -0,0 +1,178 @@
+package nextcloud
+
+import (
+ "bytes"
+ "encoding/xml"
+ "fmt"
+ "io"
+ "net/http"
+ "strings"
+ "text/template"
+ "time"
+
+ "rpjosh.de/ncDocConverter/internal/models"
+ "rpjosh.de/ncDocConverter/pkg/logger"
+ "rpjosh.de/ncDocConverter/web"
+)
+
+type searchTemplateData struct {
+ Username string
+ Directory string
+ ContentType []string
+}
+
+type searchResult struct {
+ XMLName xml.Name `xml:"multistatus"`
+ Text string `xml:",chardata"`
+ D string `xml:"d,attr"`
+ S string `xml:"s,attr"`
+ Oc string `xml:"oc,attr"`
+ Nc string `xml:"nc,attr"`
+ Response []searchResultResponse `xml:"response"`
+}
+type searchResultResponse struct {
+ Text string `xml:",chardata"`
+ Href string `xml:"href"`
+ Propstat struct {
+ Text string `xml:",chardata"`
+ Prop struct {
+ Text string `xml:",chardata"`
+ Getcontenttype string `xml:"getcontenttype"`
+ Getlastmodified string `xml:"getlastmodified"`
+ Size string `xml:"size"`
+ Fileid int `xml:"fileid"`
+ } `xml:"prop"`
+ Status string `xml:"status"`
+ } `xml:"propstat"`
+}
+
+func (r *searchResultResponse) GetLastModified() time.Time {
+ // Time format: Fri, 23 Sep 2022 05:46:31 GMT
+ rtc, err := time.Parse("Mon, 02 Jan 2006 15:04:05 GMT", r.Propstat.Prop.Getlastmodified)
+ if err != nil {
+ logger.Warning("%s", err)
+ rtc = time.Unix(0, 1)
+ }
+
+ return rtc
+}
+
+// Returns a new request to the Nexcloud API.
+// The path beginning AFTER /dav/ should be given (e.g.: myUser/folder/file.txt)
+func getRequest(method string, path string, body io.Reader, ncUser *models.NextcloudUser) *http.Request {
+ req, err := http.NewRequest(method, ncUser.NextcloudBaseUrl+"/remote.php/dav/"+path, body)
+ if err != nil {
+ logger.Error("%s", err)
+ }
+ req.SetBasicAuth(ncUser.Username, ncUser.Password)
+
+ return req
+}
+
+// Searches for all files of the given content type starting in the given directory.
+func SearchInDirectory(ncUser *models.NextcloudUser, directory string, contentType []string) (*searchResult, error) {
+ client := http.Client{Timeout: 5 * time.Second}
+
+ template, err := template.ParseFS(web.ApiTemplateFiles, "apitemplate/ncsearch.tmpl.xml")
+ if err != nil {
+ return nil, err
+ }
+ var buf bytes.Buffer
+ templateData := searchTemplateData{
+ Username: ncUser.Username,
+ Directory: directory,
+ ContentType: contentType,
+ }
+ if err = template.Execute(&buf, templateData); err != nil {
+ return nil, err
+ }
+
+ // Status code 207
+ req := getRequest("SEARCH", "", &buf, ncUser)
+ req.Header.Set("Content-Type", "application/xml")
+
+ res, err := client.Do(req)
+ if err != nil {
+ return nil, err
+ }
+
+ // Decody body first before checking status code to print in error message
+ defer res.Body.Close()
+
+ resBody, err := io.ReadAll(res.Body)
+ if err != nil {
+ return nil, err
+ }
+
+ if res.StatusCode != 207 {
+ return nil, fmt.Errorf("status code %d: %s", res.StatusCode, resBody)
+ }
+
+ var result searchResult
+ if err = xml.Unmarshal(resBody, &result); err != nil {
+ return nil, err
+ }
+
+ return &result, nil
+}
+
+// Delets a file with the given path.
+// The path has to start at the root level: Ebook/myFolder/file.txt
+func DeleteFile(ncUser *models.NextcloudUser, filePath string) error {
+ client := http.Client{Timeout: 5 * time.Second}
+
+ req := getRequest(http.MethodDelete, "files/"+ncUser.Username+"/"+filePath, nil, ncUser)
+
+ res, err := client.Do(req)
+ if err != nil {
+ logger.Error("%s", err)
+ }
+
+ if res.StatusCode != 204 {
+ return fmt.Errorf("failed to delete file %s (%d)", filePath, res.StatusCode)
+ }
+
+ return nil
+}
+
+// Creates all required directorys to create the destination file recursively.
+// The path should be relative to the root: ebook/folder1/folder2/file.txt
+func CreateFoldersRecursively(ncUser *models.NextcloudUser, destinationFile string) {
+ s := strings.Split(destinationFile, "/")
+ folderTree := ""
+
+ // Webdav doesn't have a function to create directories recursively → iterate
+ for _, folder := range s[:len(s)-1] {
+ folderTree += folder + "/"
+
+ client := http.Client{Timeout: 5 * time.Second}
+ req := getRequest("MKCOL", "files/"+ncUser.Username+"/"+folderTree, nil, ncUser)
+
+ res, err := client.Do(req)
+ if err != nil {
+ logger.Error("%s", err)
+ }
+
+ if res.StatusCode != 201 && res.StatusCode != 405 {
+ logger.Error("Failed to create directorys")
+ }
+ }
+}
+
+// Uploads a file to the nextcloud server.
+// It will be saved to the destination as a relative path to the nextcloud root (ebook/file.txt).
+func UploadFile(ncUser *models.NextcloudUser, destination string, content io.ReadCloser) error {
+ client := http.Client{Timeout: 5 * time.Second}
+ req := getRequest(http.MethodPut, "files/"+ncUser.Username+"/"+destination, content, ncUser)
+
+ res, err := client.Do(req)
+ if err != nil {
+ return err
+ }
+
+ if res.StatusCode != 201 && res.StatusCode != 204 {
+ return fmt.Errorf("expected status code 201 or 204 but got %d", res.StatusCode)
+ }
+
+ return nil
+}
diff --git a/pkg/logger/logger.go b/pkg/logger/logger.go
index 46c691a..8f95291 100644
--- a/pkg/logger/logger.go
+++ b/pkg/logger/logger.go
@@ -3,17 +3,18 @@ package logger
import (
"fmt"
"log"
+ "os"
"runtime"
"strconv"
"strings"
"time"
- "os"
)
// Level of the log message
type Level uint8
+
const (
- LevelDebug Level = iota
+ LevelDebug Level = iota
LevelInfo
LevelWarning
LevelError
@@ -21,23 +22,23 @@ const (
)
type Logger struct {
- PrintLevel Level
- LogLevel Level
- LogFilePath string
- PrintSource bool
+ PrintLevel Level
+ LogLevel Level
+ LogFilePath string
+ PrintSource bool
- consoleLogger *log.Logger
- consoleLoggerErr *log.Logger
- fileLogger *log.Logger
- logFile *os.File
+ consoleLogger *log.Logger
+ consoleLoggerErr *log.Logger
+ fileLogger *log.Logger
+ logFile *os.File
}
var dLogger Logger
func init() {
- dLogger = Logger {
- PrintLevel: LevelDebug,
- LogLevel: LevelInfo,
+ dLogger = Logger{
+ PrintLevel: LevelDebug,
+ LogLevel: LevelInfo,
LogFilePath: "",
PrintSource: false,
}
@@ -52,44 +53,49 @@ func (l Logger) Log(level Level, message string, parameters ...any) {
func (l Logger) log(level Level, message string, parameters ...any) {
pc, file, line, ok := runtime.Caller(3)
- if (!ok) {
+ if !ok {
file = "#unknown"
line = 0
}
// get the name of the level
var levelName string
- switch (level) {
- case LevelDebug: levelName = "DEBUG"
- case LevelInfo: levelName = "INFO "
- case LevelWarning: levelName = "WARN "
- case LevelError: levelName = "ERROR"
- case LevelFatal: levelName = "FATAL"
+ switch level {
+ case LevelDebug:
+ levelName = "DEBUG"
+ case LevelInfo:
+ levelName = "INFO "
+ case LevelWarning:
+ levelName = "WARN "
+ case LevelError:
+ levelName = "ERROR"
+ case LevelFatal:
+ levelName = "FATAL"
}
- if (levelName == "") {
+ if levelName == "" {
message = fmt.Sprintf("Invalid level value given: %d. Original message: ", level) + message
levelName = "WARN "
level = LevelWarning
}
- printMessage := "[" + levelName + "] " + time.Now().UTC().Format("2006-01-02 03:04:05") +
- getSourceMessage(file, line, pc, l) +
+ printMessage := "[" + levelName + "] " + time.Now().Local().Format("2006-01-02 15:04:05") +
+ getSourceMessage(file, line, pc, l) +
fmt.Sprintf(message, parameters...)
- if (l.LogLevel <= level && l.fileLogger != nil) {
+ if l.LogLevel <= level && l.fileLogger != nil {
l.fileLogger.Println(printMessage)
l.logFile.Sync()
- if (level == LevelFatal) {
+ if level == LevelFatal {
l.CloseFile()
}
}
- if (l.PrintLevel <= level) {
- if (level == LevelError) {
+ if l.PrintLevel <= level {
+ if level == LevelError {
l.consoleLoggerErr.Println(printMessage)
- } else if (level == LevelFatal) {
+ } else if level == LevelFatal {
l.consoleLoggerErr.Fatal(printMessage)
} else {
l.consoleLogger.Println(printMessage)
@@ -98,8 +104,8 @@ func (l Logger) log(level Level, message string, parameters ...any) {
}
-func getSourceMessage(file string, line int, pc uintptr, l Logger) (string) {
- if (!l.PrintSource) {
+func getSourceMessage(file string, line int, pc uintptr, l Logger) string {
+ if !l.PrintSource {
return " - "
}
@@ -113,7 +119,7 @@ func (l *Logger) setup() {
l.consoleLogger = log.New(os.Stdout, "", 0)
l.consoleLoggerErr = log.New(os.Stderr, "", 0)
- if (l.LogFilePath != "") {
+ if strings.TrimSpace(l.LogFilePath) != "" {
file, err := os.OpenFile(l.LogFilePath, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)
if err == nil {
l.fileLogger = log.New(file, "", 0)
@@ -123,7 +129,7 @@ func (l *Logger) setup() {
}
} else {
l.fileLogger = nil
- if (l.logFile != nil) {
+ if l.logFile != nil {
l.logFile.Close()
l.logFile = nil
}
@@ -131,19 +137,18 @@ func (l *Logger) setup() {
}
func (l *Logger) CloseFile() {
- if (l.logFile != nil) {
+ if l.logFile != nil {
l.logFile.Close()
l.logFile = nil
l.fileLogger = nil
}
}
-
func SetGlobalLogger(l *Logger) {
dLogger = *l
dLogger.setup()
}
-func GetGlobalLogger() (*Logger) {
+func GetGlobalLogger() *Logger {
return &dLogger
}
@@ -172,16 +177,22 @@ func CloseFile() {
// If an incorrect level name was given an warning is logged and info will be returned
func GetLevelByName(levelName string) Level {
levelName = strings.ToLower(levelName)
- switch (levelName) {
- case "debug": return LevelDebug
- case "info": return LevelInfo
- case "warn", "warning": return LevelWarning
- case "error": return LevelError
- case "panic", "fatal": return LevelFatal
+ switch levelName {
+ case "debug":
+ return LevelDebug
+ case "info":
+ return LevelInfo
+ case "warn", "warning":
+ return LevelWarning
+ case "error":
+ return LevelError
+ case "panic", "fatal":
+ return LevelFatal
- default: {
+ default:
+ {
Warning("Unable to parse the level name '%s'. Expected 'debug', 'info', 'warn', 'error' or 'fatal'", levelName)
return LevelInfo
}
}
-}
\ No newline at end of file
+}
diff --git a/pkg/utils/utils.go b/pkg/utils/utils.go
new file mode 100644
index 0000000..d5649d5
--- /dev/null
+++ b/pkg/utils/utils.go
@@ -0,0 +1,38 @@
+package utils
+
+import (
+ "reflect"
+ "unicode"
+)
+
+// Makes the first character of the given string to uppercase
+func FirstCharToUppercase(text string) string {
+ a := []rune(text)
+ a[0] = unicode.ToLower(a[0])
+ return string(a)
+}
+
+// Copys a map. The structs are also cloned
+func CopyMap[T comparable, Val any](m map[T]Val) map[T]Val {
+ cp := make(map[T]Val)
+ for k, v := range m {
+ var u Val
+ Copy(&v, &u)
+ cp[k] = u
+ }
+
+ return cp
+}
+
+// Copies a struct
+func Copy(source interface{}, destin interface{}) {
+ x := reflect.ValueOf(source)
+ if reflect.ValueOf(destin).Kind() != reflect.Ptr {
+ return
+ }
+ if x.Kind() == reflect.Ptr {
+ reflect.ValueOf(destin).Elem().Set(x.Elem())
+ } else {
+ reflect.ValueOf(destin).Elem().Set(x)
+ }
+}
diff --git a/scripts/run.sh b/scripts/run.sh
index 799c694..01569f6 100755
--- a/scripts/run.sh
+++ b/scripts/run.sh
@@ -1,3 +1,3 @@
#!/bin/sh
-./web/app/node_modules/.bin/nodemon --delay 10s -e go,html --ignore web/app/ --signal SIGTERM --exec go run ./cmd/ncDocConverth || exit 1
\ No newline at end of file
+nodemon --delay 1s -e go,html,yaml --ignore web/app/ --signal SIGTERM --exec 'go run ./cmd/ncDocConverth || exit 1'
\ No newline at end of file
diff --git a/web/app/.gitignore b/web/app/.gitignore
deleted file mode 100644
index a547bf3..0000000
--- a/web/app/.gitignore
+++ /dev/null
@@ -1,24 +0,0 @@
-# Logs
-logs
-*.log
-npm-debug.log*
-yarn-debug.log*
-yarn-error.log*
-pnpm-debug.log*
-lerna-debug.log*
-
-node_modules
-dist
-dist-ssr
-*.local
-
-# Editor directories and files
-.vscode/*
-!.vscode/extensions.json
-.idea
-.DS_Store
-*.suo
-*.ntvs*
-*.njsproj
-*.sln
-*.sw?
diff --git a/web/app/index.html b/web/app/index.html
deleted file mode 100644
index 28cedfe..0000000
--- a/web/app/index.html
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-
-
- Vite + React + TS
-
-
-
-
-
-
\ No newline at end of file
diff --git a/web/app/package-lock.json b/web/app/package-lock.json
deleted file mode 100644
index 31c127c..0000000
--- a/web/app/package-lock.json
+++ /dev/null
@@ -1,4559 +0,0 @@
-{
- "name": "vite-number-conversion",
- "version": "0.0.0",
- "lockfileVersion": 2,
- "requires": true,
- "packages": {
- "": {
- "name": "vite-number-conversion",
- "version": "0.0.0",
- "dependencies": {
- "antd": "^4.23.2",
- "axios": "^0.27.2",
- "react": "^18.2.0",
- "react-dom": "^18.2.0"
- },
- "devDependencies": {
- "@types/react": "^18.0.17",
- "@types/react-dom": "^18.0.6",
- "@vitejs/plugin-react": "^2.1.0",
- "nodemon": "^2.0.20",
- "typescript": "^4.6.4",
- "vite": "^3.1.0"
- }
- },
- "node_modules/@ampproject/remapping": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz",
- "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==",
- "dev": true,
- "dependencies": {
- "@jridgewell/gen-mapping": "^0.1.0",
- "@jridgewell/trace-mapping": "^0.3.9"
- },
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/@ant-design/colors": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/@ant-design/colors/-/colors-6.0.0.tgz",
- "integrity": "sha512-qAZRvPzfdWHtfameEGP2Qvuf838NhergR35o+EuVyB5XvSA98xod5r4utvi4TJ3ywmevm290g9nsCG5MryrdWQ==",
- "dependencies": {
- "@ctrl/tinycolor": "^3.4.0"
- }
- },
- "node_modules/@ant-design/icons": {
- "version": "4.7.0",
- "resolved": "https://registry.npmjs.org/@ant-design/icons/-/icons-4.7.0.tgz",
- "integrity": "sha512-aoB4Z7JA431rt6d4u+8xcNPPCrdufSRMUOpxa1ab6mz1JCQZOEVolj2WVs/tDFmN62zzK30mNelEsprLYsSF3g==",
- "dependencies": {
- "@ant-design/colors": "^6.0.0",
- "@ant-design/icons-svg": "^4.2.1",
- "@babel/runtime": "^7.11.2",
- "classnames": "^2.2.6",
- "rc-util": "^5.9.4"
- },
- "engines": {
- "node": ">=8"
- },
- "peerDependencies": {
- "react": ">=16.0.0",
- "react-dom": ">=16.0.0"
- }
- },
- "node_modules/@ant-design/icons-svg": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/@ant-design/icons-svg/-/icons-svg-4.2.1.tgz",
- "integrity": "sha512-EB0iwlKDGpG93hW8f85CTJTs4SvMX7tt5ceupvhALp1IF44SeUFOMhKUOYqpsoYWQKAOuTRDMqn75rEaKDp0Xw=="
- },
- "node_modules/@ant-design/react-slick": {
- "version": "0.29.2",
- "resolved": "https://registry.npmjs.org/@ant-design/react-slick/-/react-slick-0.29.2.tgz",
- "integrity": "sha512-kgjtKmkGHa19FW21lHnAfyyH9AAoh35pBdcJ53rHmQ3O+cfFHGHnUbj/HFrRNJ5vIts09FKJVAD8RpaC+RaWfA==",
- "dependencies": {
- "@babel/runtime": "^7.10.4",
- "classnames": "^2.2.5",
- "json2mq": "^0.2.0",
- "lodash": "^4.17.21",
- "resize-observer-polyfill": "^1.5.1"
- },
- "peerDependencies": {
- "react": ">=16.9.0"
- }
- },
- "node_modules/@babel/code-frame": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz",
- "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==",
- "dev": true,
- "dependencies": {
- "@babel/highlight": "^7.18.6"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/compat-data": {
- "version": "7.19.1",
- "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.19.1.tgz",
- "integrity": "sha512-72a9ghR0gnESIa7jBN53U32FOVCEoztyIlKaNoU05zRhEecduGK9L9c3ww7Mp06JiR+0ls0GBPFJQwwtjn9ksg==",
- "dev": true,
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/core": {
- "version": "7.19.1",
- "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.19.1.tgz",
- "integrity": "sha512-1H8VgqXme4UXCRv7/Wa1bq7RVymKOzC7znjyFM8KiEzwFqcKUKYNoQef4GhdklgNvoBXyW4gYhuBNCM5o1zImw==",
- "dev": true,
- "dependencies": {
- "@ampproject/remapping": "^2.1.0",
- "@babel/code-frame": "^7.18.6",
- "@babel/generator": "^7.19.0",
- "@babel/helper-compilation-targets": "^7.19.1",
- "@babel/helper-module-transforms": "^7.19.0",
- "@babel/helpers": "^7.19.0",
- "@babel/parser": "^7.19.1",
- "@babel/template": "^7.18.10",
- "@babel/traverse": "^7.19.1",
- "@babel/types": "^7.19.0",
- "convert-source-map": "^1.7.0",
- "debug": "^4.1.0",
- "gensync": "^1.0.0-beta.2",
- "json5": "^2.2.1",
- "semver": "^6.3.0"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/babel"
- }
- },
- "node_modules/@babel/generator": {
- "version": "7.19.0",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.19.0.tgz",
- "integrity": "sha512-S1ahxf1gZ2dpoiFgA+ohK9DIpz50bJ0CWs7Zlzb54Z4sG8qmdIrGrVqmy1sAtTVRb+9CU6U8VqT9L0Zj7hxHVg==",
- "dev": true,
- "dependencies": {
- "@babel/types": "^7.19.0",
- "@jridgewell/gen-mapping": "^0.3.2",
- "jsesc": "^2.5.1"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping": {
- "version": "0.3.2",
- "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz",
- "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==",
- "dev": true,
- "dependencies": {
- "@jridgewell/set-array": "^1.0.1",
- "@jridgewell/sourcemap-codec": "^1.4.10",
- "@jridgewell/trace-mapping": "^0.3.9"
- },
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/@babel/helper-annotate-as-pure": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz",
- "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==",
- "dev": true,
- "dependencies": {
- "@babel/types": "^7.18.6"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-compilation-targets": {
- "version": "7.19.1",
- "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.19.1.tgz",
- "integrity": "sha512-LlLkkqhCMyz2lkQPvJNdIYU7O5YjWRgC2R4omjCTpZd8u8KMQzZvX4qce+/BluN1rcQiV7BoGUpmQ0LeHerbhg==",
- "dev": true,
- "dependencies": {
- "@babel/compat-data": "^7.19.1",
- "@babel/helper-validator-option": "^7.18.6",
- "browserslist": "^4.21.3",
- "semver": "^6.3.0"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0"
- }
- },
- "node_modules/@babel/helper-environment-visitor": {
- "version": "7.18.9",
- "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz",
- "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==",
- "dev": true,
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-function-name": {
- "version": "7.19.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz",
- "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==",
- "dev": true,
- "dependencies": {
- "@babel/template": "^7.18.10",
- "@babel/types": "^7.19.0"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-hoist-variables": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz",
- "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==",
- "dev": true,
- "dependencies": {
- "@babel/types": "^7.18.6"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-module-imports": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz",
- "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==",
- "dev": true,
- "dependencies": {
- "@babel/types": "^7.18.6"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-module-transforms": {
- "version": "7.19.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.19.0.tgz",
- "integrity": "sha512-3HBZ377Fe14RbLIA+ac3sY4PTgpxHVkFrESaWhoI5PuyXPBBX8+C34qblV9G89ZtycGJCmCI/Ut+VUDK4bltNQ==",
- "dev": true,
- "dependencies": {
- "@babel/helper-environment-visitor": "^7.18.9",
- "@babel/helper-module-imports": "^7.18.6",
- "@babel/helper-simple-access": "^7.18.6",
- "@babel/helper-split-export-declaration": "^7.18.6",
- "@babel/helper-validator-identifier": "^7.18.6",
- "@babel/template": "^7.18.10",
- "@babel/traverse": "^7.19.0",
- "@babel/types": "^7.19.0"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-plugin-utils": {
- "version": "7.19.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.19.0.tgz",
- "integrity": "sha512-40Ryx7I8mT+0gaNxm8JGTZFUITNqdLAgdg0hXzeVZxVD6nFsdhQvip6v8dqkRHzsz1VFpFAaOCHNn0vKBL7Czw==",
- "dev": true,
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-simple-access": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.18.6.tgz",
- "integrity": "sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g==",
- "dev": true,
- "dependencies": {
- "@babel/types": "^7.18.6"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-split-export-declaration": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz",
- "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==",
- "dev": true,
- "dependencies": {
- "@babel/types": "^7.18.6"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-string-parser": {
- "version": "7.18.10",
- "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.18.10.tgz",
- "integrity": "sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw==",
- "dev": true,
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-validator-identifier": {
- "version": "7.19.1",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz",
- "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==",
- "dev": true,
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-validator-option": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz",
- "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==",
- "dev": true,
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helpers": {
- "version": "7.19.0",
- "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.19.0.tgz",
- "integrity": "sha512-DRBCKGwIEdqY3+rPJgG/dKfQy9+08rHIAJx8q2p+HSWP87s2HCrQmaAMMyMll2kIXKCW0cO1RdQskx15Xakftg==",
- "dev": true,
- "dependencies": {
- "@babel/template": "^7.18.10",
- "@babel/traverse": "^7.19.0",
- "@babel/types": "^7.19.0"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/highlight": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz",
- "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==",
- "dev": true,
- "dependencies": {
- "@babel/helper-validator-identifier": "^7.18.6",
- "chalk": "^2.0.0",
- "js-tokens": "^4.0.0"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/parser": {
- "version": "7.19.1",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.19.1.tgz",
- "integrity": "sha512-h7RCSorm1DdTVGJf3P2Mhj3kdnkmF/EiysUkzS2TdgAYqyjFdMQJbVuXOBej2SBJaXan/lIVtT6KkGbyyq753A==",
- "dev": true,
- "bin": {
- "parser": "bin/babel-parser.js"
- },
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/@babel/plugin-syntax-jsx": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz",
- "integrity": "sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==",
- "dev": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.18.6"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-react-jsx": {
- "version": "7.19.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.19.0.tgz",
- "integrity": "sha512-UVEvX3tXie3Szm3emi1+G63jyw1w5IcMY0FSKM+CRnKRI5Mr1YbCNgsSTwoTwKphQEG9P+QqmuRFneJPZuHNhg==",
- "dev": true,
- "dependencies": {
- "@babel/helper-annotate-as-pure": "^7.18.6",
- "@babel/helper-module-imports": "^7.18.6",
- "@babel/helper-plugin-utils": "^7.19.0",
- "@babel/plugin-syntax-jsx": "^7.18.6",
- "@babel/types": "^7.19.0"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-react-jsx-development": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.18.6.tgz",
- "integrity": "sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA==",
- "dev": true,
- "dependencies": {
- "@babel/plugin-transform-react-jsx": "^7.18.6"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-react-jsx-self": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.18.6.tgz",
- "integrity": "sha512-A0LQGx4+4Jv7u/tWzoJF7alZwnBDQd6cGLh9P+Ttk4dpiL+J5p7NSNv/9tlEFFJDq3kjxOavWmbm6t0Gk+A3Ig==",
- "dev": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.18.6"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-react-jsx-source": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.18.6.tgz",
- "integrity": "sha512-utZmlASneDfdaMh0m/WausbjUjEdGrQJz0vFK93d7wD3xf5wBtX219+q6IlCNZeguIcxS2f/CvLZrlLSvSHQXw==",
- "dev": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.18.6"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/runtime": {
- "version": "7.19.0",
- "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.19.0.tgz",
- "integrity": "sha512-eR8Lo9hnDS7tqkO7NsV+mKvCmv5boaXFSZ70DnfhcgiEne8hv9oCEd36Klw74EtizEqLsy4YnW8UWwpBVolHZA==",
- "dependencies": {
- "regenerator-runtime": "^0.13.4"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/template": {
- "version": "7.18.10",
- "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz",
- "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==",
- "dev": true,
- "dependencies": {
- "@babel/code-frame": "^7.18.6",
- "@babel/parser": "^7.18.10",
- "@babel/types": "^7.18.10"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/traverse": {
- "version": "7.19.1",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.19.1.tgz",
- "integrity": "sha512-0j/ZfZMxKukDaag2PtOPDbwuELqIar6lLskVPPJDjXMXjfLb1Obo/1yjxIGqqAJrmfaTIY3z2wFLAQ7qSkLsuA==",
- "dev": true,
- "dependencies": {
- "@babel/code-frame": "^7.18.6",
- "@babel/generator": "^7.19.0",
- "@babel/helper-environment-visitor": "^7.18.9",
- "@babel/helper-function-name": "^7.19.0",
- "@babel/helper-hoist-variables": "^7.18.6",
- "@babel/helper-split-export-declaration": "^7.18.6",
- "@babel/parser": "^7.19.1",
- "@babel/types": "^7.19.0",
- "debug": "^4.1.0",
- "globals": "^11.1.0"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/types": {
- "version": "7.19.0",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.19.0.tgz",
- "integrity": "sha512-YuGopBq3ke25BVSiS6fgF49Ul9gH1x70Bcr6bqRLjWCkcX8Hre1/5+z+IiWOIerRMSSEfGZVB9z9kyq7wVs9YA==",
- "dev": true,
- "dependencies": {
- "@babel/helper-string-parser": "^7.18.10",
- "@babel/helper-validator-identifier": "^7.18.6",
- "to-fast-properties": "^2.0.0"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@ctrl/tinycolor": {
- "version": "3.4.1",
- "resolved": "https://registry.npmjs.org/@ctrl/tinycolor/-/tinycolor-3.4.1.tgz",
- "integrity": "sha512-ej5oVy6lykXsvieQtqZxCOaLT+xD4+QNarq78cIYISHmZXshCvROLudpQN3lfL8G0NL7plMSSK+zlyvCaIJ4Iw==",
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@esbuild/android-arm": {
- "version": "0.15.8",
- "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.15.8.tgz",
- "integrity": "sha512-CyEWALmn+no/lbgbAJsbuuhT8s2J19EJGHkeyAwjbFJMrj80KJ9zuYsoAvidPTU7BgBf87r/sgae8Tw0dbOc4Q==",
- "cpu": [
- "arm"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "android"
- ],
- "dependencies": {
- "esbuild-wasm": "0.15.8"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/linux-loong64": {
- "version": "0.15.8",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.8.tgz",
- "integrity": "sha512-pE5RQsOTSERCtfZdfCT25wzo7dfhOSlhAXcsZmuvRYhendOv7djcdvtINdnDp2DAjP17WXlBB4nBO6sHLczmsg==",
- "cpu": [
- "loong64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@jridgewell/gen-mapping": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz",
- "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==",
- "dev": true,
- "dependencies": {
- "@jridgewell/set-array": "^1.0.0",
- "@jridgewell/sourcemap-codec": "^1.4.10"
- },
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/@jridgewell/resolve-uri": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz",
- "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==",
- "dev": true,
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/@jridgewell/set-array": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz",
- "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==",
- "dev": true,
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/@jridgewell/sourcemap-codec": {
- "version": "1.4.14",
- "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz",
- "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==",
- "dev": true
- },
- "node_modules/@jridgewell/trace-mapping": {
- "version": "0.3.15",
- "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.15.tgz",
- "integrity": "sha512-oWZNOULl+UbhsgB51uuZzglikfIKSUBO/M9W2OfEjn7cmqoAiCgmv9lyACTUacZwBz0ITnJ2NqjU8Tx0DHL88g==",
- "dev": true,
- "dependencies": {
- "@jridgewell/resolve-uri": "^3.0.3",
- "@jridgewell/sourcemap-codec": "^1.4.10"
- }
- },
- "node_modules/@types/prop-types": {
- "version": "15.7.5",
- "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz",
- "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==",
- "dev": true
- },
- "node_modules/@types/react": {
- "version": "18.0.20",
- "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.20.tgz",
- "integrity": "sha512-MWul1teSPxujEHVwZl4a5HxQ9vVNsjTchVA+xRqv/VYGCuKGAU6UhfrTdF5aBefwD1BHUD8i/zq+O/vyCm/FrA==",
- "dev": true,
- "dependencies": {
- "@types/prop-types": "*",
- "@types/scheduler": "*",
- "csstype": "^3.0.2"
- }
- },
- "node_modules/@types/react-dom": {
- "version": "18.0.6",
- "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.0.6.tgz",
- "integrity": "sha512-/5OFZgfIPSwy+YuIBP/FgJnQnsxhZhjjrnxudMddeblOouIodEQ75X14Rr4wGSG/bknL+Omy9iWlLo1u/9GzAA==",
- "dev": true,
- "dependencies": {
- "@types/react": "*"
- }
- },
- "node_modules/@types/scheduler": {
- "version": "0.16.2",
- "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz",
- "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==",
- "dev": true
- },
- "node_modules/@vitejs/plugin-react": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-2.1.0.tgz",
- "integrity": "sha512-am6rPyyU3LzUYne3Gd9oj9c4Rzbq5hQnuGXSMT6Gujq45Il/+bunwq3lrB7wghLkiF45ygMwft37vgJ/NE8IAA==",
- "dev": true,
- "dependencies": {
- "@babel/core": "^7.18.13",
- "@babel/plugin-transform-react-jsx": "^7.18.10",
- "@babel/plugin-transform-react-jsx-development": "^7.18.6",
- "@babel/plugin-transform-react-jsx-self": "^7.18.6",
- "@babel/plugin-transform-react-jsx-source": "^7.18.6",
- "magic-string": "^0.26.2",
- "react-refresh": "^0.14.0"
- },
- "engines": {
- "node": "^14.18.0 || >=16.0.0"
- },
- "peerDependencies": {
- "vite": "^3.0.0"
- }
- },
- "node_modules/abbrev": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
- "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==",
- "dev": true
- },
- "node_modules/ansi-styles": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
- "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
- "dev": true,
- "dependencies": {
- "color-convert": "^1.9.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/antd": {
- "version": "4.23.2",
- "resolved": "https://registry.npmjs.org/antd/-/antd-4.23.2.tgz",
- "integrity": "sha512-GGOaIUxPg8wl8lGcCJ2U/1Eg5mt0hNb554a0y4mTJa1ijPRCNM8XjUcio4lTMM7M9/fLm9ttKtyxHg4n+JX26A==",
- "dependencies": {
- "@ant-design/colors": "^6.0.0",
- "@ant-design/icons": "^4.7.0",
- "@ant-design/react-slick": "~0.29.1",
- "@babel/runtime": "^7.18.3",
- "@ctrl/tinycolor": "^3.4.0",
- "classnames": "^2.2.6",
- "copy-to-clipboard": "^3.2.0",
- "lodash": "^4.17.21",
- "memoize-one": "^6.0.0",
- "moment": "^2.29.2",
- "rc-cascader": "~3.7.0",
- "rc-checkbox": "~2.3.0",
- "rc-collapse": "~3.3.0",
- "rc-dialog": "~8.9.0",
- "rc-drawer": "~5.1.0",
- "rc-dropdown": "~4.0.0",
- "rc-field-form": "~1.27.0",
- "rc-image": "~5.7.0",
- "rc-input": "~0.1.2",
- "rc-input-number": "~7.3.5",
- "rc-mentions": "~1.9.1",
- "rc-menu": "~9.6.3",
- "rc-motion": "^2.6.1",
- "rc-notification": "~4.6.0",
- "rc-pagination": "~3.1.17",
- "rc-picker": "~2.6.10",
- "rc-progress": "~3.3.2",
- "rc-rate": "~2.9.0",
- "rc-resize-observer": "^1.2.0",
- "rc-segmented": "~2.1.0",
- "rc-select": "~14.1.13",
- "rc-slider": "~10.0.0",
- "rc-steps": "~4.1.0",
- "rc-switch": "~3.2.0",
- "rc-table": "~7.26.0",
- "rc-tabs": "~12.1.0-alpha.1",
- "rc-textarea": "~0.3.0",
- "rc-tooltip": "~5.2.0",
- "rc-tree": "~5.7.0",
- "rc-tree-select": "~5.5.0",
- "rc-trigger": "^5.2.10",
- "rc-upload": "~4.3.0",
- "rc-util": "^5.22.5",
- "scroll-into-view-if-needed": "^2.2.25"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/ant-design"
- },
- "peerDependencies": {
- "react": ">=16.9.0",
- "react-dom": ">=16.9.0"
- }
- },
- "node_modules/anymatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz",
- "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==",
- "dev": true,
- "dependencies": {
- "normalize-path": "^3.0.0",
- "picomatch": "^2.0.4"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/array-tree-filter": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/array-tree-filter/-/array-tree-filter-2.1.0.tgz",
- "integrity": "sha512-4ROwICNlNw/Hqa9v+rk5h22KjmzB1JGTMVKP2AKJBOCgb0yL0ASf0+YvCcLNNwquOHNX48jkeZIJ3a+oOQqKcw=="
- },
- "node_modules/async-validator": {
- "version": "4.2.5",
- "resolved": "https://registry.npmjs.org/async-validator/-/async-validator-4.2.5.tgz",
- "integrity": "sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg=="
- },
- "node_modules/asynckit": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
- "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
- },
- "node_modules/axios": {
- "version": "0.27.2",
- "resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz",
- "integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==",
- "dependencies": {
- "follow-redirects": "^1.14.9",
- "form-data": "^4.0.0"
- }
- },
- "node_modules/balanced-match": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
- "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
- "dev": true
- },
- "node_modules/binary-extensions": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
- "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/brace-expansion": {
- "version": "1.1.11",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
- "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
- "dev": true,
- "dependencies": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "node_modules/braces": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
- "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
- "dev": true,
- "dependencies": {
- "fill-range": "^7.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/browserslist": {
- "version": "4.21.4",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz",
- "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==",
- "dev": true,
- "funding": [
- {
- "type": "opencollective",
- "url": "https://opencollective.com/browserslist"
- },
- {
- "type": "tidelift",
- "url": "https://tidelift.com/funding/github/npm/browserslist"
- }
- ],
- "dependencies": {
- "caniuse-lite": "^1.0.30001400",
- "electron-to-chromium": "^1.4.251",
- "node-releases": "^2.0.6",
- "update-browserslist-db": "^1.0.9"
- },
- "bin": {
- "browserslist": "cli.js"
- },
- "engines": {
- "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
- }
- },
- "node_modules/caniuse-lite": {
- "version": "1.0.30001408",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001408.tgz",
- "integrity": "sha512-DdUCktgMSM+1ndk9EFMZcavsGszV7zxV9O7MtOHniTa/iyAIwJCF0dFVBdU9SijJbfh29hC9bCs07wu8pjnGJQ==",
- "dev": true,
- "funding": [
- {
- "type": "opencollective",
- "url": "https://opencollective.com/browserslist"
- },
- {
- "type": "tidelift",
- "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
- }
- ]
- },
- "node_modules/chalk": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
- "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
- "dev": true,
- "dependencies": {
- "ansi-styles": "^3.2.1",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^5.3.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/chokidar": {
- "version": "3.5.3",
- "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
- "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
- "dev": true,
- "funding": [
- {
- "type": "individual",
- "url": "https://paulmillr.com/funding/"
- }
- ],
- "dependencies": {
- "anymatch": "~3.1.2",
- "braces": "~3.0.2",
- "glob-parent": "~5.1.2",
- "is-binary-path": "~2.1.0",
- "is-glob": "~4.0.1",
- "normalize-path": "~3.0.0",
- "readdirp": "~3.6.0"
- },
- "engines": {
- "node": ">= 8.10.0"
- },
- "optionalDependencies": {
- "fsevents": "~2.3.2"
- }
- },
- "node_modules/classnames": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.2.tgz",
- "integrity": "sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw=="
- },
- "node_modules/color-convert": {
- "version": "1.9.3",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
- "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
- "dev": true,
- "dependencies": {
- "color-name": "1.1.3"
- }
- },
- "node_modules/color-name": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
- "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
- "dev": true
- },
- "node_modules/combined-stream": {
- "version": "1.0.8",
- "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
- "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
- "dependencies": {
- "delayed-stream": "~1.0.0"
- },
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/compute-scroll-into-view": {
- "version": "1.0.17",
- "resolved": "https://registry.npmjs.org/compute-scroll-into-view/-/compute-scroll-into-view-1.0.17.tgz",
- "integrity": "sha512-j4dx+Fb0URmzbwwMUrhqWM2BEWHdFGx+qZ9qqASHRPqvTYdqvWnHg0H1hIbcyLnvgnoNAVMlwkepyqM3DaIFUg=="
- },
- "node_modules/concat-map": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
- "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
- "dev": true
- },
- "node_modules/convert-source-map": {
- "version": "1.8.0",
- "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz",
- "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==",
- "dev": true,
- "dependencies": {
- "safe-buffer": "~5.1.1"
- }
- },
- "node_modules/copy-to-clipboard": {
- "version": "3.3.2",
- "resolved": "https://registry.npmjs.org/copy-to-clipboard/-/copy-to-clipboard-3.3.2.tgz",
- "integrity": "sha512-Vme1Z6RUDzrb6xAI7EZlVZ5uvOk2F//GaxKUxajDqm9LhOVM1inxNAD2vy+UZDYsd0uyA9s7b3/FVZPSxqrCfg==",
- "dependencies": {
- "toggle-selection": "^1.0.6"
- }
- },
- "node_modules/csstype": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz",
- "integrity": "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==",
- "dev": true
- },
- "node_modules/date-fns": {
- "version": "2.29.3",
- "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.29.3.tgz",
- "integrity": "sha512-dDCnyH2WnnKusqvZZ6+jA1O51Ibt8ZMRNkDZdyAyK4YfbDwa/cEmuztzG5pk6hqlp9aSBPYcjOlktquahGwGeA==",
- "engines": {
- "node": ">=0.11"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/date-fns"
- }
- },
- "node_modules/dayjs": {
- "version": "1.11.5",
- "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.5.tgz",
- "integrity": "sha512-CAdX5Q3YW3Gclyo5Vpqkgpj8fSdLQcRuzfX6mC6Phy0nfJ0eGYOeS7m4mt2plDWLAtA4TqTakvbboHvUxfe4iA=="
- },
- "node_modules/debug": {
- "version": "4.3.4",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
- "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
- "dev": true,
- "dependencies": {
- "ms": "2.1.2"
- },
- "engines": {
- "node": ">=6.0"
- },
- "peerDependenciesMeta": {
- "supports-color": {
- "optional": true
- }
- }
- },
- "node_modules/delayed-stream": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
- "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
- "engines": {
- "node": ">=0.4.0"
- }
- },
- "node_modules/dom-align": {
- "version": "1.12.3",
- "resolved": "https://registry.npmjs.org/dom-align/-/dom-align-1.12.3.tgz",
- "integrity": "sha512-Gj9hZN3a07cbR6zviMUBOMPdWxYhbMI+x+WS0NAIu2zFZmbK8ys9R79g+iG9qLnlCwpFoaB+fKy8Pdv470GsPA=="
- },
- "node_modules/electron-to-chromium": {
- "version": "1.4.256",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.256.tgz",
- "integrity": "sha512-x+JnqyluoJv8I0U9gVe+Sk2st8vF0CzMt78SXxuoWCooLLY2k5VerIBdpvG7ql6GKI4dzNnPjmqgDJ76EdaAKw==",
- "dev": true
- },
- "node_modules/esbuild": {
- "version": "0.15.8",
- "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.8.tgz",
- "integrity": "sha512-Remsk2dmr1Ia65sU+QasE6svJbsHe62lzR+CnjpUvbZ+uSYo1SitiOWPRfZQkCu82YWZBBKXiD/j0i//XWMZ+Q==",
- "dev": true,
- "hasInstallScript": true,
- "bin": {
- "esbuild": "bin/esbuild"
- },
- "engines": {
- "node": ">=12"
- },
- "optionalDependencies": {
- "@esbuild/android-arm": "0.15.8",
- "@esbuild/linux-loong64": "0.15.8",
- "esbuild-android-64": "0.15.8",
- "esbuild-android-arm64": "0.15.8",
- "esbuild-darwin-64": "0.15.8",
- "esbuild-darwin-arm64": "0.15.8",
- "esbuild-freebsd-64": "0.15.8",
- "esbuild-freebsd-arm64": "0.15.8",
- "esbuild-linux-32": "0.15.8",
- "esbuild-linux-64": "0.15.8",
- "esbuild-linux-arm": "0.15.8",
- "esbuild-linux-arm64": "0.15.8",
- "esbuild-linux-mips64le": "0.15.8",
- "esbuild-linux-ppc64le": "0.15.8",
- "esbuild-linux-riscv64": "0.15.8",
- "esbuild-linux-s390x": "0.15.8",
- "esbuild-netbsd-64": "0.15.8",
- "esbuild-openbsd-64": "0.15.8",
- "esbuild-sunos-64": "0.15.8",
- "esbuild-windows-32": "0.15.8",
- "esbuild-windows-64": "0.15.8",
- "esbuild-windows-arm64": "0.15.8"
- }
- },
- "node_modules/esbuild-android-64": {
- "version": "0.15.8",
- "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.8.tgz",
- "integrity": "sha512-bVh8FIKOolF7/d4AMzt7xHlL0Ljr+mYKSHI39TJWDkybVWHdn6+4ODL3xZGHOxPpdRpitemXA1WwMKYBsw8dGw==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "android"
- ],
- "dependencies": {
- "esbuild-wasm": "0.15.8"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/esbuild-android-arm64": {
- "version": "0.15.8",
- "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.8.tgz",
- "integrity": "sha512-ReAMDAHuo0H1h9LxRabI6gwYPn8k6WiUeyxuMvx17yTrJO+SCnIfNc/TSPFvDwtK9MiyiKG/2dBYHouT/M0BXQ==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "android"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/esbuild-darwin-64": {
- "version": "0.15.8",
- "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.8.tgz",
- "integrity": "sha512-KaKcGfJ+yto7Fo5gAj3xwxHMd1fBIKatpCHK8znTJLVv+9+NN2/tIPBqA4w5rBwjX0UqXDeIE2v1xJP+nGEXgA==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/esbuild-darwin-arm64": {
- "version": "0.15.8",
- "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.8.tgz",
- "integrity": "sha512-8tjEaBgAKnXCkP7bhEJmEqdG9HEV6oLkF36BrMzpfW2rgaw0c48Zrxe+9RlfeGvs6gDF4w+agXyTjikzsS3izw==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/esbuild-freebsd-64": {
- "version": "0.15.8",
- "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.8.tgz",
- "integrity": "sha512-jaxcsGHYzn2L0/lffON2WfH4Nc+d/EwozVTP5K2v016zxMb5UQMhLoJzvLgBqHT1SG0B/mO+a+THnJCMVg15zw==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "freebsd"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/esbuild-freebsd-arm64": {
- "version": "0.15.8",
- "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.8.tgz",
- "integrity": "sha512-2xp2UlljMvX8HExtcg7VHaeQk8OBU0CSl1j18B5CcZmSDkLF9p3utuMXIopG3a08fr9Hv+Dz6+seSXUow/G51w==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "freebsd"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/esbuild-linux-32": {
- "version": "0.15.8",
- "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.8.tgz",
- "integrity": "sha512-9u1E54BRz1FQMl86iaHK146+4ID2KYNxL3trLZT4QLLx3M7Q9n4lGG3lrzqUatGR2cKy8c33b0iaCzsItZWkFg==",
- "cpu": [
- "ia32"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/esbuild-linux-64": {
- "version": "0.15.8",
- "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.8.tgz",
- "integrity": "sha512-4HxrsN9eUzJXdVGMTYA5Xler82FuZUu21bXKN42zcLHHNKCAMPUzD62I+GwDhsdgUBAUj0tRXDdsQHgaP6v0HA==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/esbuild-linux-arm": {
- "version": "0.15.8",
- "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.8.tgz",
- "integrity": "sha512-7DVBU9SFjX4+vBwt8tHsUCbE6Vvl6y6FQWHAgyw1lybC5gULqn/WnjHYHN2/LJaZRsDBvxWT4msEgwLGq1Wd3Q==",
- "cpu": [
- "arm"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/esbuild-linux-arm64": {
- "version": "0.15.8",
- "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.8.tgz",
- "integrity": "sha512-1OCm7Aq0tEJT70PbxmHSGYDLYP8DKH8r4Nk7/XbVzWaduo9beCjGBB+tGZIHK6DdTQ3h00/4Tb/70YMH/bOtKg==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/esbuild-linux-mips64le": {
- "version": "0.15.8",
- "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.8.tgz",
- "integrity": "sha512-yeFoNPVFPEzZvFYBfUQNG2TjGRaCyV1E27OcOg4LOtnGrxb2wA+mkW3luckyv1CEyd00mpAg7UdHx8nlx3ghgA==",
- "cpu": [
- "mips64el"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/esbuild-linux-ppc64le": {
- "version": "0.15.8",
- "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.8.tgz",
- "integrity": "sha512-CEyMMUUNabXibw8OSNmBXhOIGhnjNVl5Lpseiuf00iKN0V47oqDrbo4dsHz1wH62m49AR8iG8wpDlTqfYgKbtg==",
- "cpu": [
- "ppc64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/esbuild-linux-riscv64": {
- "version": "0.15.8",
- "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.8.tgz",
- "integrity": "sha512-OCGSOaspMUjexSCU8ZiA0UnV/NiRU+s2vIfEcAQWQ6u32R+2luyfh/4ZaY6jFbylJE07Esc/yRvb9Q5fXuClXA==",
- "cpu": [
- "riscv64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/esbuild-linux-s390x": {
- "version": "0.15.8",
- "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.8.tgz",
- "integrity": "sha512-RHdpdfxRTSrZXZJlFSLazFU4YwXLB5Rgf6Zr5rffqSsO4y9JybgtKO38bFwxZNlDXliYISXN/YROKrG9s7mZQA==",
- "cpu": [
- "s390x"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/esbuild-netbsd-64": {
- "version": "0.15.8",
- "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.8.tgz",
- "integrity": "sha512-VolFFRatBH09T5QMWhiohAWCOien1R1Uz9K0BRVVTBgBaVBt7eArsXTKxVhUgRf2vwu2c2SXkuP0r7HLG0eozw==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "netbsd"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/esbuild-openbsd-64": {
- "version": "0.15.8",
- "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.8.tgz",
- "integrity": "sha512-HTAPlg+n4kUeE/isQxlCfsOz0xJGNoT5LJ9oYZWFKABfVf4Ycu7Zlf5ITgOnrdheTkz8JeL/gISIOCFAoOXrSA==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "openbsd"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/esbuild-sunos-64": {
- "version": "0.15.8",
- "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.8.tgz",
- "integrity": "sha512-qMP/jR/FzcIOwKj+W+Lb+8Cfr8GZHbHUJxAPi7DUhNZMQ/6y7sOgRzlOSpRrbbUntrRZh0MqOyDhJ3Gpo6L1QA==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "sunos"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/esbuild-wasm": {
- "version": "0.15.8",
- "resolved": "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.15.8.tgz",
- "integrity": "sha512-Y7uCl5RNO4URjlemjdx++ukVHEMt5s5AfMWYUnMiK4Sry+pPCvQIctzXq6r6FKCyGKjX6/NGMCqR2OX6aLxj0w==",
- "dev": true,
- "optional": true,
- "bin": {
- "esbuild": "bin/esbuild"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/esbuild-windows-32": {
- "version": "0.15.8",
- "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.8.tgz",
- "integrity": "sha512-RKR1QHh4iWzjUhkP8Yqi75PPz/KS+b8zw3wUrzw6oAkj+iU5Qtyj61ZDaSG3Qf2vc6hTIUiPqVTqBH0NpXFNwg==",
- "cpu": [
- "ia32"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/esbuild-windows-64": {
- "version": "0.15.8",
- "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.8.tgz",
- "integrity": "sha512-ag9ptYrsizgsR+PQE8QKeMqnosLvAMonQREpLw4evA4FFgOBMLEat/dY/9txbpozTw9eEOYyD3a4cE9yTu20FA==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/esbuild-windows-arm64": {
- "version": "0.15.8",
- "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.8.tgz",
- "integrity": "sha512-dbpAb0VyPaUs9mgw65KRfQ9rqiWCHpNzrJusoPu+LpEoswosjt/tFxN7cd2l68AT4qWdBkzAjDLRon7uqMeWcg==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/escalade": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
- "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/escape-string-regexp": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
- "dev": true,
- "engines": {
- "node": ">=0.8.0"
- }
- },
- "node_modules/fill-range": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
- "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
- "dev": true,
- "dependencies": {
- "to-regex-range": "^5.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/follow-redirects": {
- "version": "1.15.2",
- "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz",
- "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==",
- "funding": [
- {
- "type": "individual",
- "url": "https://github.com/sponsors/RubenVerborgh"
- }
- ],
- "engines": {
- "node": ">=4.0"
- },
- "peerDependenciesMeta": {
- "debug": {
- "optional": true
- }
- }
- },
- "node_modules/form-data": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
- "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
- "dependencies": {
- "asynckit": "^0.4.0",
- "combined-stream": "^1.0.8",
- "mime-types": "^2.1.12"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/fsevents": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
- "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
- "dev": true,
- "hasInstallScript": true,
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
- }
- },
- "node_modules/function-bind": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
- "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
- "dev": true
- },
- "node_modules/gensync": {
- "version": "1.0.0-beta.2",
- "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
- "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
- "dev": true,
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/glob-parent": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
- "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
- "dev": true,
- "dependencies": {
- "is-glob": "^4.0.1"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/globals": {
- "version": "11.12.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
- "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/has": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
- "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
- "dev": true,
- "dependencies": {
- "function-bind": "^1.1.1"
- },
- "engines": {
- "node": ">= 0.4.0"
- }
- },
- "node_modules/has-flag": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/ignore-by-default": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz",
- "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==",
- "dev": true
- },
- "node_modules/is-binary-path": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
- "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
- "dev": true,
- "dependencies": {
- "binary-extensions": "^2.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/is-core-module": {
- "version": "2.10.0",
- "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.10.0.tgz",
- "integrity": "sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==",
- "dev": true,
- "dependencies": {
- "has": "^1.0.3"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-extglob": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
- "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-glob": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
- "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
- "dev": true,
- "dependencies": {
- "is-extglob": "^2.1.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-number": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
- "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
- "dev": true,
- "engines": {
- "node": ">=0.12.0"
- }
- },
- "node_modules/js-tokens": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
- "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
- },
- "node_modules/jsesc": {
- "version": "2.5.2",
- "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
- "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
- "dev": true,
- "bin": {
- "jsesc": "bin/jsesc"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/json2mq": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/json2mq/-/json2mq-0.2.0.tgz",
- "integrity": "sha512-SzoRg7ux5DWTII9J2qkrZrqV1gt+rTaoufMxEzXbS26Uid0NwaJd123HcoB80TgubEppxxIGdNxCx50fEoEWQA==",
- "dependencies": {
- "string-convert": "^0.2.0"
- }
- },
- "node_modules/json5": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz",
- "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==",
- "dev": true,
- "bin": {
- "json5": "lib/cli.js"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/lodash": {
- "version": "4.17.21",
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
- "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
- },
- "node_modules/loose-envify": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
- "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
- "dependencies": {
- "js-tokens": "^3.0.0 || ^4.0.0"
- },
- "bin": {
- "loose-envify": "cli.js"
- }
- },
- "node_modules/magic-string": {
- "version": "0.26.3",
- "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.3.tgz",
- "integrity": "sha512-u1Po0NDyFcwdg2nzHT88wSK0+Rih0N1M+Ph1Sp08k8yvFFU3KR72wryS7e1qMPJypt99WB7fIFVCA92mQrMjrg==",
- "dev": true,
- "dependencies": {
- "sourcemap-codec": "^1.4.8"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/memoize-one": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-6.0.0.tgz",
- "integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw=="
- },
- "node_modules/mime-db": {
- "version": "1.52.0",
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
- "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/mime-types": {
- "version": "2.1.35",
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
- "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
- "dependencies": {
- "mime-db": "1.52.0"
- },
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/minimatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
- "dev": true,
- "dependencies": {
- "brace-expansion": "^1.1.7"
- },
- "engines": {
- "node": "*"
- }
- },
- "node_modules/moment": {
- "version": "2.29.4",
- "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz",
- "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==",
- "engines": {
- "node": "*"
- }
- },
- "node_modules/ms": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
- "dev": true
- },
- "node_modules/nanoid": {
- "version": "3.3.4",
- "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz",
- "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==",
- "dev": true,
- "bin": {
- "nanoid": "bin/nanoid.cjs"
- },
- "engines": {
- "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
- }
- },
- "node_modules/node-releases": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz",
- "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==",
- "dev": true
- },
- "node_modules/nodemon": {
- "version": "2.0.20",
- "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.20.tgz",
- "integrity": "sha512-Km2mWHKKY5GzRg6i1j5OxOHQtuvVsgskLfigG25yTtbyfRGn/GNvIbRyOf1PSCKJ2aT/58TiuUsuOU5UToVViw==",
- "dev": true,
- "dependencies": {
- "chokidar": "^3.5.2",
- "debug": "^3.2.7",
- "ignore-by-default": "^1.0.1",
- "minimatch": "^3.1.2",
- "pstree.remy": "^1.1.8",
- "semver": "^5.7.1",
- "simple-update-notifier": "^1.0.7",
- "supports-color": "^5.5.0",
- "touch": "^3.1.0",
- "undefsafe": "^2.0.5"
- },
- "bin": {
- "nodemon": "bin/nodemon.js"
- },
- "engines": {
- "node": ">=8.10.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/nodemon"
- }
- },
- "node_modules/nodemon/node_modules/debug": {
- "version": "3.2.7",
- "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
- "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
- "dev": true,
- "dependencies": {
- "ms": "^2.1.1"
- }
- },
- "node_modules/nodemon/node_modules/semver": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
- "dev": true,
- "bin": {
- "semver": "bin/semver"
- }
- },
- "node_modules/nopt": {
- "version": "1.0.10",
- "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz",
- "integrity": "sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==",
- "dev": true,
- "dependencies": {
- "abbrev": "1"
- },
- "bin": {
- "nopt": "bin/nopt.js"
- },
- "engines": {
- "node": "*"
- }
- },
- "node_modules/normalize-path": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
- "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/path-parse": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
- "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
- "dev": true
- },
- "node_modules/picocolors": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
- "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
- "dev": true
- },
- "node_modules/picomatch": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
- "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
- "dev": true,
- "engines": {
- "node": ">=8.6"
- },
- "funding": {
- "url": "https://github.com/sponsors/jonschlinkert"
- }
- },
- "node_modules/postcss": {
- "version": "8.4.16",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.16.tgz",
- "integrity": "sha512-ipHE1XBvKzm5xI7hiHCZJCSugxvsdq2mPnsq5+UF+VHCjiBvtDrlxJfMBToWaP9D5XlgNmcFGqoHmUn0EYEaRQ==",
- "dev": true,
- "funding": [
- {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- },
- {
- "type": "tidelift",
- "url": "https://tidelift.com/funding/github/npm/postcss"
- }
- ],
- "dependencies": {
- "nanoid": "^3.3.4",
- "picocolors": "^1.0.0",
- "source-map-js": "^1.0.2"
- },
- "engines": {
- "node": "^10 || ^12 || >=14"
- }
- },
- "node_modules/pstree.remy": {
- "version": "1.1.8",
- "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz",
- "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==",
- "dev": true
- },
- "node_modules/rc-align": {
- "version": "4.0.12",
- "resolved": "https://registry.npmjs.org/rc-align/-/rc-align-4.0.12.tgz",
- "integrity": "sha512-3DuwSJp8iC/dgHzwreOQl52soj40LchlfUHtgACOUtwGuoFIOVh6n/sCpfqCU8kO5+iz6qR0YKvjgB8iPdE3aQ==",
- "dependencies": {
- "@babel/runtime": "^7.10.1",
- "classnames": "2.x",
- "dom-align": "^1.7.0",
- "lodash": "^4.17.21",
- "rc-util": "^5.3.0",
- "resize-observer-polyfill": "^1.5.1"
- },
- "peerDependencies": {
- "react": ">=16.9.0",
- "react-dom": ">=16.9.0"
- }
- },
- "node_modules/rc-cascader": {
- "version": "3.7.0",
- "resolved": "https://registry.npmjs.org/rc-cascader/-/rc-cascader-3.7.0.tgz",
- "integrity": "sha512-SFtGpwmYN7RaWEAGTS4Rkc62ZV/qmQGg/tajr/7mfIkleuu8ro9Hlk6J+aA0x1YS4zlaZBtTcSaXM01QMiEV/A==",
- "dependencies": {
- "@babel/runtime": "^7.12.5",
- "array-tree-filter": "^2.1.0",
- "classnames": "^2.3.1",
- "rc-select": "~14.1.0",
- "rc-tree": "~5.7.0",
- "rc-util": "^5.6.1"
- },
- "peerDependencies": {
- "react": ">=16.9.0",
- "react-dom": ">=16.9.0"
- }
- },
- "node_modules/rc-checkbox": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/rc-checkbox/-/rc-checkbox-2.3.2.tgz",
- "integrity": "sha512-afVi1FYiGv1U0JlpNH/UaEXdh6WUJjcWokj/nUN2TgG80bfG+MDdbfHKlLcNNba94mbjy2/SXJ1HDgrOkXGAjg==",
- "dependencies": {
- "@babel/runtime": "^7.10.1",
- "classnames": "^2.2.1"
- },
- "peerDependencies": {
- "react": ">=16.9.0",
- "react-dom": ">=16.9.0"
- }
- },
- "node_modules/rc-collapse": {
- "version": "3.3.1",
- "resolved": "https://registry.npmjs.org/rc-collapse/-/rc-collapse-3.3.1.tgz",
- "integrity": "sha512-cOJfcSe3R8vocrF8T+PgaHDrgeA1tX+lwfhwSj60NX9QVRidsILIbRNDLD6nAzmcvVC5PWiIRiR4S1OobxdhCg==",
- "dependencies": {
- "@babel/runtime": "^7.10.1",
- "classnames": "2.x",
- "rc-motion": "^2.3.4",
- "rc-util": "^5.2.1",
- "shallowequal": "^1.1.0"
- },
- "peerDependencies": {
- "react": ">=16.9.0",
- "react-dom": ">=16.9.0"
- }
- },
- "node_modules/rc-dialog": {
- "version": "8.9.0",
- "resolved": "https://registry.npmjs.org/rc-dialog/-/rc-dialog-8.9.0.tgz",
- "integrity": "sha512-Cp0tbJnrvPchJfnwIvOMWmJ4yjX3HWFatO6oBFD1jx8QkgsQCR0p8nUWAKdd3seLJhEC39/v56kZaEjwp9muoQ==",
- "dependencies": {
- "@babel/runtime": "^7.10.1",
- "classnames": "^2.2.6",
- "rc-motion": "^2.3.0",
- "rc-util": "^5.21.0"
- },
- "peerDependencies": {
- "react": ">=16.9.0",
- "react-dom": ">=16.9.0"
- }
- },
- "node_modules/rc-drawer": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/rc-drawer/-/rc-drawer-5.1.0.tgz",
- "integrity": "sha512-pU3Tsn99pxGdYowXehzZbdDVE+4lDXSGb7p8vA9mSmr569oc2Izh4Zw5vLKSe/Xxn2p5MSNbLVqD4tz+pK6SOw==",
- "dependencies": {
- "@babel/runtime": "^7.10.1",
- "classnames": "^2.2.6",
- "rc-motion": "^2.6.1",
- "rc-util": "^5.21.2"
- },
- "peerDependencies": {
- "react": ">=16.9.0",
- "react-dom": ">=16.9.0"
- }
- },
- "node_modules/rc-dropdown": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/rc-dropdown/-/rc-dropdown-4.0.1.tgz",
- "integrity": "sha512-OdpXuOcme1rm45cR0Jzgfl1otzmU4vuBVb+etXM8vcaULGokAKVpKlw8p6xzspG7jGd/XxShvq+N3VNEfk/l5g==",
- "dependencies": {
- "@babel/runtime": "^7.18.3",
- "classnames": "^2.2.6",
- "rc-trigger": "^5.3.1",
- "rc-util": "^5.17.0"
- },
- "peerDependencies": {
- "react": ">=16.11.0",
- "react-dom": ">=16.11.0"
- }
- },
- "node_modules/rc-field-form": {
- "version": "1.27.1",
- "resolved": "https://registry.npmjs.org/rc-field-form/-/rc-field-form-1.27.1.tgz",
- "integrity": "sha512-RShegnwFu6TH8tl2olCxn+B4Wyh5EiQH8c/7wucbkLNyue05YiH5gomUAg1vbZjp71yFKwegClctsEG5CNBWAA==",
- "dependencies": {
- "@babel/runtime": "^7.18.0",
- "async-validator": "^4.1.0",
- "rc-util": "^5.8.0"
- },
- "engines": {
- "node": ">=8.x"
- },
- "peerDependencies": {
- "react": ">=16.9.0",
- "react-dom": ">=16.9.0"
- }
- },
- "node_modules/rc-image": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/rc-image/-/rc-image-5.7.1.tgz",
- "integrity": "sha512-QyMfdhoUfb5W14plqXSisaYwpdstcLYnB0MjX5ccIK2rydQM9sDPuekQWu500DDGR2dBaIF5vx9XbWkNFK17Fg==",
- "dependencies": {
- "@babel/runtime": "^7.11.2",
- "classnames": "^2.2.6",
- "rc-dialog": "~8.9.0",
- "rc-util": "^5.0.6"
- },
- "peerDependencies": {
- "react": ">=16.9.0",
- "react-dom": ">=16.9.0"
- }
- },
- "node_modules/rc-input": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/rc-input/-/rc-input-0.1.2.tgz",
- "integrity": "sha512-ZPmwcFspgfYpUfbSx3KnLk9gImBcLOrlQCr4oTJ4jBoIXgJLTfm26yelzRgBJewhkvD8uJbgX0sQ/yOzuOHnJg==",
- "dependencies": {
- "@babel/runtime": "^7.11.1",
- "classnames": "^2.2.1",
- "rc-util": "^5.18.1"
- },
- "peerDependencies": {
- "react": ">=16.0.0",
- "react-dom": ">=16.0.0"
- }
- },
- "node_modules/rc-input-number": {
- "version": "7.3.9",
- "resolved": "https://registry.npmjs.org/rc-input-number/-/rc-input-number-7.3.9.tgz",
- "integrity": "sha512-u0+miS+SATdb6DtssYei2JJ1WuZME+nXaG6XGtR8maNyW5uGDytfDu60OTWLQEb0Anv/AcCzehldV8CKmKyQfA==",
- "dependencies": {
- "@babel/runtime": "^7.10.1",
- "classnames": "^2.2.5",
- "rc-util": "^5.23.0"
- },
- "peerDependencies": {
- "react": ">=16.9.0",
- "react-dom": ">=16.9.0"
- }
- },
- "node_modules/rc-mentions": {
- "version": "1.9.2",
- "resolved": "https://registry.npmjs.org/rc-mentions/-/rc-mentions-1.9.2.tgz",
- "integrity": "sha512-uxb/lzNnEGmvraKWNGE6KXMVXvt8RQv9XW8R0Dqi3hYsyPiAZeHRCHQKdLARuk5YBhFhZ6ga55D/8XuY367g3g==",
- "dependencies": {
- "@babel/runtime": "^7.10.1",
- "classnames": "^2.2.6",
- "rc-menu": "~9.6.0",
- "rc-textarea": "^0.3.0",
- "rc-trigger": "^5.0.4",
- "rc-util": "^5.22.5"
- },
- "peerDependencies": {
- "react": ">=16.9.0",
- "react-dom": ">=16.9.0"
- }
- },
- "node_modules/rc-menu": {
- "version": "9.6.4",
- "resolved": "https://registry.npmjs.org/rc-menu/-/rc-menu-9.6.4.tgz",
- "integrity": "sha512-6DiNAjxjVIPLZXHffXxxcyE15d4isRL7iQ1ru4MqYDH2Cqc5bW96wZOdMydFtGLyDdnmEQ9jVvdCE9yliGvzkw==",
- "dependencies": {
- "@babel/runtime": "^7.10.1",
- "classnames": "2.x",
- "rc-motion": "^2.4.3",
- "rc-overflow": "^1.2.0",
- "rc-trigger": "^5.1.2",
- "rc-util": "^5.12.0",
- "shallowequal": "^1.1.0"
- },
- "peerDependencies": {
- "react": ">=16.9.0",
- "react-dom": ">=16.9.0"
- }
- },
- "node_modules/rc-motion": {
- "version": "2.6.2",
- "resolved": "https://registry.npmjs.org/rc-motion/-/rc-motion-2.6.2.tgz",
- "integrity": "sha512-4w1FaX3dtV749P8GwfS4fYnFG4Rb9pxvCYPc/b2fw1cmlHJWNNgOFIz7ysiD+eOrzJSvnLJWlNQQncpNMXwwpg==",
- "dependencies": {
- "@babel/runtime": "^7.11.1",
- "classnames": "^2.2.1",
- "rc-util": "^5.21.0"
- },
- "peerDependencies": {
- "react": ">=16.9.0",
- "react-dom": ">=16.9.0"
- }
- },
- "node_modules/rc-notification": {
- "version": "4.6.0",
- "resolved": "https://registry.npmjs.org/rc-notification/-/rc-notification-4.6.0.tgz",
- "integrity": "sha512-xF3MKgIoynzjQAO4lqsoraiFo3UXNYlBfpHs0VWvwF+4pimen9/H1DYLN2mfRWhHovW6gRpla73m2nmyIqAMZQ==",
- "dependencies": {
- "@babel/runtime": "^7.10.1",
- "classnames": "2.x",
- "rc-motion": "^2.2.0",
- "rc-util": "^5.20.1"
- },
- "engines": {
- "node": ">=8.x"
- },
- "peerDependencies": {
- "react": ">=16.9.0",
- "react-dom": ">=16.9.0"
- }
- },
- "node_modules/rc-overflow": {
- "version": "1.2.8",
- "resolved": "https://registry.npmjs.org/rc-overflow/-/rc-overflow-1.2.8.tgz",
- "integrity": "sha512-QJ0UItckWPQ37ZL1dMEBAdY1dhfTXFL9k6oTTcyydVwoUNMnMqCGqnRNA98axSr/OeDKqR6DVFyi8eA5RQI/uQ==",
- "dependencies": {
- "@babel/runtime": "^7.11.1",
- "classnames": "^2.2.1",
- "rc-resize-observer": "^1.0.0",
- "rc-util": "^5.19.2"
- },
- "peerDependencies": {
- "react": ">=16.9.0",
- "react-dom": ">=16.9.0"
- }
- },
- "node_modules/rc-pagination": {
- "version": "3.1.17",
- "resolved": "https://registry.npmjs.org/rc-pagination/-/rc-pagination-3.1.17.tgz",
- "integrity": "sha512-/BQ5UxcBnW28vFAcP2hfh+Xg15W0QZn8TWYwdCApchMH1H0CxiaUUcULP8uXcFM1TygcdKWdt3JqsL9cTAfdkQ==",
- "dependencies": {
- "@babel/runtime": "^7.10.1",
- "classnames": "^2.2.1"
- },
- "peerDependencies": {
- "react": ">=16.9.0",
- "react-dom": ">=16.9.0"
- }
- },
- "node_modules/rc-picker": {
- "version": "2.6.10",
- "resolved": "https://registry.npmjs.org/rc-picker/-/rc-picker-2.6.10.tgz",
- "integrity": "sha512-9wYtw0DFWs9FO92Qh2D76P0iojUr8ZhLOtScUeOit6ks/F+TBLrOC1uze3IOu+u9gbDAjmosNWLKbBzx/Yuv2w==",
- "dependencies": {
- "@babel/runtime": "^7.10.1",
- "classnames": "^2.2.1",
- "date-fns": "2.x",
- "dayjs": "1.x",
- "moment": "^2.24.0",
- "rc-trigger": "^5.0.4",
- "rc-util": "^5.4.0",
- "shallowequal": "^1.1.0"
- },
- "engines": {
- "node": ">=8.x"
- },
- "peerDependencies": {
- "react": ">=16.9.0",
- "react-dom": ">=16.9.0"
- }
- },
- "node_modules/rc-progress": {
- "version": "3.3.3",
- "resolved": "https://registry.npmjs.org/rc-progress/-/rc-progress-3.3.3.tgz",
- "integrity": "sha512-MDVNVHzGanYtRy2KKraEaWeZLri2ZHWIRyaE1a9MQ2MuJ09m+Wxj5cfcaoaR6z5iRpHpA59YeUxAlpML8N4PJw==",
- "dependencies": {
- "@babel/runtime": "^7.10.1",
- "classnames": "^2.2.6",
- "rc-util": "^5.16.1"
- },
- "peerDependencies": {
- "react": ">=16.9.0",
- "react-dom": ">=16.9.0"
- }
- },
- "node_modules/rc-rate": {
- "version": "2.9.2",
- "resolved": "https://registry.npmjs.org/rc-rate/-/rc-rate-2.9.2.tgz",
- "integrity": "sha512-SaiZFyN8pe0Fgphv8t3+kidlej+cq/EALkAJAc3A0w0XcPaH2L1aggM8bhe1u6GAGuQNAoFvTLjw4qLPGRKV5g==",
- "dependencies": {
- "@babel/runtime": "^7.10.1",
- "classnames": "^2.2.5",
- "rc-util": "^5.0.1"
- },
- "engines": {
- "node": ">=8.x"
- },
- "peerDependencies": {
- "react": ">=16.9.0",
- "react-dom": ">=16.9.0"
- }
- },
- "node_modules/rc-resize-observer": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/rc-resize-observer/-/rc-resize-observer-1.2.0.tgz",
- "integrity": "sha512-6W+UzT3PyDM0wVCEHfoW3qTHPTvbdSgiA43buiy8PzmeMnfgnDeb9NjdimMXMl3/TcrvvWl5RRVdp+NqcR47pQ==",
- "dependencies": {
- "@babel/runtime": "^7.10.1",
- "classnames": "^2.2.1",
- "rc-util": "^5.15.0",
- "resize-observer-polyfill": "^1.5.1"
- },
- "peerDependencies": {
- "react": ">=16.9.0",
- "react-dom": ">=16.9.0"
- }
- },
- "node_modules/rc-segmented": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/rc-segmented/-/rc-segmented-2.1.0.tgz",
- "integrity": "sha512-hUlonro+pYoZcwrH6Vm56B2ftLfQh046hrwif/VwLIw1j3zGt52p5mREBwmeVzXnSwgnagpOpfafspzs1asjGw==",
- "dependencies": {
- "@babel/runtime": "^7.11.1",
- "classnames": "^2.2.1",
- "rc-motion": "^2.4.4",
- "rc-util": "^5.17.0"
- },
- "peerDependencies": {
- "react": ">=16.0.0",
- "react-dom": ">=16.0.0"
- }
- },
- "node_modules/rc-select": {
- "version": "14.1.13",
- "resolved": "https://registry.npmjs.org/rc-select/-/rc-select-14.1.13.tgz",
- "integrity": "sha512-WMEsC3gTwA1dbzWOdVIXDmWyidYNLq68AwvvUlRROw790uGUly0/vmqDozXrIr0QvN/A3CEULx12o+WtLCAefg==",
- "dependencies": {
- "@babel/runtime": "^7.10.1",
- "classnames": "2.x",
- "rc-motion": "^2.0.1",
- "rc-overflow": "^1.0.0",
- "rc-trigger": "^5.0.4",
- "rc-util": "^5.16.1",
- "rc-virtual-list": "^3.2.0"
- },
- "engines": {
- "node": ">=8.x"
- },
- "peerDependencies": {
- "react": "*",
- "react-dom": "*"
- }
- },
- "node_modules/rc-slider": {
- "version": "10.0.1",
- "resolved": "https://registry.npmjs.org/rc-slider/-/rc-slider-10.0.1.tgz",
- "integrity": "sha512-igTKF3zBet7oS/3yNiIlmU8KnZ45npmrmHlUUio8PNbIhzMcsh+oE/r2UD42Y6YD2D/s+kzCQkzQrPD6RY435Q==",
- "dependencies": {
- "@babel/runtime": "^7.10.1",
- "classnames": "^2.2.5",
- "rc-util": "^5.18.1",
- "shallowequal": "^1.1.0"
- },
- "engines": {
- "node": ">=8.x"
- },
- "peerDependencies": {
- "react": ">=16.9.0",
- "react-dom": ">=16.9.0"
- }
- },
- "node_modules/rc-steps": {
- "version": "4.1.4",
- "resolved": "https://registry.npmjs.org/rc-steps/-/rc-steps-4.1.4.tgz",
- "integrity": "sha512-qoCqKZWSpkh/b03ASGx1WhpKnuZcRWmvuW+ZUu4mvMdfvFzVxblTwUM+9aBd0mlEUFmt6GW8FXhMpHkK3Uzp3w==",
- "dependencies": {
- "@babel/runtime": "^7.10.2",
- "classnames": "^2.2.3",
- "rc-util": "^5.0.1"
- },
- "engines": {
- "node": ">=8.x"
- },
- "peerDependencies": {
- "react": ">=16.9.0",
- "react-dom": ">=16.9.0"
- }
- },
- "node_modules/rc-switch": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/rc-switch/-/rc-switch-3.2.2.tgz",
- "integrity": "sha512-+gUJClsZZzvAHGy1vZfnwySxj+MjLlGRyXKXScrtCTcmiYNPzxDFOxdQ/3pK1Kt/0POvwJ/6ALOR8gwdXGhs+A==",
- "dependencies": {
- "@babel/runtime": "^7.10.1",
- "classnames": "^2.2.1",
- "rc-util": "^5.0.1"
- },
- "peerDependencies": {
- "react": ">=16.9.0",
- "react-dom": ">=16.9.0"
- }
- },
- "node_modules/rc-table": {
- "version": "7.26.0",
- "resolved": "https://registry.npmjs.org/rc-table/-/rc-table-7.26.0.tgz",
- "integrity": "sha512-0cD8e6S+DTGAt5nBZQIPFYEaIukn17sfa5uFL98faHlH/whZzD8ii3dbFL4wmUDEL4BLybhYop+QUfZJ4CPvNQ==",
- "dependencies": {
- "@babel/runtime": "^7.10.1",
- "classnames": "^2.2.5",
- "rc-resize-observer": "^1.1.0",
- "rc-util": "^5.22.5",
- "shallowequal": "^1.1.0"
- },
- "engines": {
- "node": ">=8.x"
- },
- "peerDependencies": {
- "react": ">=16.9.0",
- "react-dom": ">=16.9.0"
- }
- },
- "node_modules/rc-tabs": {
- "version": "12.1.0-alpha.1",
- "resolved": "https://registry.npmjs.org/rc-tabs/-/rc-tabs-12.1.0-alpha.1.tgz",
- "integrity": "sha512-M+B88WEnGSuE+mR54fpgPbZLAakzxa/H6FmEetLBl5WG4I3AcwSk9amuIPC/tu0KXBl+H6Bg5ZwrrEUOBUvgzg==",
- "dependencies": {
- "@babel/runtime": "^7.11.2",
- "classnames": "2.x",
- "rc-dropdown": "~4.0.0",
- "rc-menu": "~9.6.0",
- "rc-motion": "^2.6.2",
- "rc-resize-observer": "^1.0.0",
- "rc-util": "^5.5.0"
- },
- "engines": {
- "node": ">=8.x"
- },
- "peerDependencies": {
- "react": ">=16.9.0",
- "react-dom": ">=16.9.0"
- }
- },
- "node_modules/rc-textarea": {
- "version": "0.3.7",
- "resolved": "https://registry.npmjs.org/rc-textarea/-/rc-textarea-0.3.7.tgz",
- "integrity": "sha512-yCdZ6binKmAQB13hc/oehh0E/QRwoPP1pjF21aHBxlgXO3RzPF6dUu4LG2R4FZ1zx/fQd2L1faktulrXOM/2rw==",
- "dependencies": {
- "@babel/runtime": "^7.10.1",
- "classnames": "^2.2.1",
- "rc-resize-observer": "^1.0.0",
- "rc-util": "^5.7.0",
- "shallowequal": "^1.1.0"
- },
- "peerDependencies": {
- "react": ">=16.9.0",
- "react-dom": ">=16.9.0"
- }
- },
- "node_modules/rc-tooltip": {
- "version": "5.2.2",
- "resolved": "https://registry.npmjs.org/rc-tooltip/-/rc-tooltip-5.2.2.tgz",
- "integrity": "sha512-jtQzU/18S6EI3lhSGoDYhPqNpWajMtS5VV/ld1LwyfrDByQpYmw/LW6U7oFXXLukjfDHQ7Ju705A82PRNFWYhg==",
- "dependencies": {
- "@babel/runtime": "^7.11.2",
- "classnames": "^2.3.1",
- "rc-trigger": "^5.0.0"
- },
- "peerDependencies": {
- "react": ">=16.9.0",
- "react-dom": ">=16.9.0"
- }
- },
- "node_modules/rc-tree": {
- "version": "5.7.0",
- "resolved": "https://registry.npmjs.org/rc-tree/-/rc-tree-5.7.0.tgz",
- "integrity": "sha512-F+Ewkv/UcutshnVBMISP+lPdHDlcsL+YH/MQDVWbk+QdkfID7vXiwrHMEZn31+2Rbbm21z/HPceGS8PXGMmnQg==",
- "dependencies": {
- "@babel/runtime": "^7.10.1",
- "classnames": "2.x",
- "rc-motion": "^2.0.1",
- "rc-util": "^5.16.1",
- "rc-virtual-list": "^3.4.8"
- },
- "engines": {
- "node": ">=10.x"
- },
- "peerDependencies": {
- "react": "*",
- "react-dom": "*"
- }
- },
- "node_modules/rc-tree-select": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/rc-tree-select/-/rc-tree-select-5.5.0.tgz",
- "integrity": "sha512-XS0Jvw4OjFz/Xvb2byEkBWv55JFKFz0HVvTBa/cPOHJaQh/3EaYwymEMnCCvGEzS1+5CfDVwMtA8j/v4rt1DHw==",
- "dependencies": {
- "@babel/runtime": "^7.10.1",
- "classnames": "2.x",
- "rc-select": "~14.1.0",
- "rc-tree": "~5.7.0",
- "rc-util": "^5.16.1"
- },
- "peerDependencies": {
- "react": "*",
- "react-dom": "*"
- }
- },
- "node_modules/rc-trigger": {
- "version": "5.3.1",
- "resolved": "https://registry.npmjs.org/rc-trigger/-/rc-trigger-5.3.1.tgz",
- "integrity": "sha512-5gaFbDkYSefZ14j2AdzucXzlWgU2ri5uEjkHvsf1ynRhdJbKxNOnw4PBZ9+FVULNGFiDzzlVF8RJnR9P/xrnKQ==",
- "dependencies": {
- "@babel/runtime": "^7.18.3",
- "classnames": "^2.2.6",
- "rc-align": "^4.0.0",
- "rc-motion": "^2.0.0",
- "rc-util": "^5.19.2"
- },
- "engines": {
- "node": ">=8.x"
- },
- "peerDependencies": {
- "react": ">=16.9.0",
- "react-dom": ">=16.9.0"
- }
- },
- "node_modules/rc-upload": {
- "version": "4.3.4",
- "resolved": "https://registry.npmjs.org/rc-upload/-/rc-upload-4.3.4.tgz",
- "integrity": "sha512-uVbtHFGNjHG/RyAfm9fluXB6pvArAGyAx8z7XzXXyorEgVIWj6mOlriuDm0XowDHYz4ycNK0nE0oP3cbFnzxiQ==",
- "dependencies": {
- "@babel/runtime": "^7.18.3",
- "classnames": "^2.2.5",
- "rc-util": "^5.2.0"
- },
- "peerDependencies": {
- "react": ">=16.9.0",
- "react-dom": ">=16.9.0"
- }
- },
- "node_modules/rc-util": {
- "version": "5.24.4",
- "resolved": "https://registry.npmjs.org/rc-util/-/rc-util-5.24.4.tgz",
- "integrity": "sha512-2a4RQnycV9eV7lVZPEJ7QwJRPlZNc06J7CwcwZo4vIHr3PfUqtYgl1EkUV9ETAc6VRRi8XZOMFhYG63whlIC9Q==",
- "dependencies": {
- "@babel/runtime": "^7.18.3",
- "react-is": "^16.12.0",
- "shallowequal": "^1.1.0"
- },
- "peerDependencies": {
- "react": ">=16.9.0",
- "react-dom": ">=16.9.0"
- }
- },
- "node_modules/rc-virtual-list": {
- "version": "3.4.8",
- "resolved": "https://registry.npmjs.org/rc-virtual-list/-/rc-virtual-list-3.4.8.tgz",
- "integrity": "sha512-qSN+Rv4i/E7RCTvTMr1uZo7f3crJJg/5DekoCagydo9zsXrxj07zsFSxqizqW+ldGA16lwa8So/bIbV9Ofjddg==",
- "dependencies": {
- "classnames": "^2.2.6",
- "rc-resize-observer": "^1.0.0",
- "rc-util": "^5.15.0"
- },
- "engines": {
- "node": ">=8.x"
- },
- "peerDependencies": {
- "react": "*",
- "react-dom": "*"
- }
- },
- "node_modules/react": {
- "version": "18.2.0",
- "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz",
- "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==",
- "dependencies": {
- "loose-envify": "^1.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/react-dom": {
- "version": "18.2.0",
- "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz",
- "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==",
- "dependencies": {
- "loose-envify": "^1.1.0",
- "scheduler": "^0.23.0"
- },
- "peerDependencies": {
- "react": "^18.2.0"
- }
- },
- "node_modules/react-is": {
- "version": "16.13.1",
- "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
- "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
- },
- "node_modules/react-refresh": {
- "version": "0.14.0",
- "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz",
- "integrity": "sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/readdirp": {
- "version": "3.6.0",
- "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
- "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
- "dev": true,
- "dependencies": {
- "picomatch": "^2.2.1"
- },
- "engines": {
- "node": ">=8.10.0"
- }
- },
- "node_modules/regenerator-runtime": {
- "version": "0.13.9",
- "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz",
- "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA=="
- },
- "node_modules/resize-observer-polyfill": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz",
- "integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg=="
- },
- "node_modules/resolve": {
- "version": "1.22.1",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz",
- "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==",
- "dev": true,
- "dependencies": {
- "is-core-module": "^2.9.0",
- "path-parse": "^1.0.7",
- "supports-preserve-symlinks-flag": "^1.0.0"
- },
- "bin": {
- "resolve": "bin/resolve"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/rollup": {
- "version": "2.78.1",
- "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.78.1.tgz",
- "integrity": "sha512-VeeCgtGi4P+o9hIg+xz4qQpRl6R401LWEXBmxYKOV4zlF82lyhgh2hTZnheFUbANE8l2A41F458iwj2vEYaXJg==",
- "dev": true,
- "bin": {
- "rollup": "dist/bin/rollup"
- },
- "engines": {
- "node": ">=10.0.0"
- },
- "optionalDependencies": {
- "fsevents": "~2.3.2"
- }
- },
- "node_modules/safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
- "dev": true
- },
- "node_modules/scheduler": {
- "version": "0.23.0",
- "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz",
- "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==",
- "dependencies": {
- "loose-envify": "^1.1.0"
- }
- },
- "node_modules/scroll-into-view-if-needed": {
- "version": "2.2.29",
- "resolved": "https://registry.npmjs.org/scroll-into-view-if-needed/-/scroll-into-view-if-needed-2.2.29.tgz",
- "integrity": "sha512-hxpAR6AN+Gh53AdAimHM6C8oTN1ppwVZITihix+WqalywBeFcQ6LdQP5ABNl26nX8GTEL7VT+b8lKpdqq65wXg==",
- "dependencies": {
- "compute-scroll-into-view": "^1.0.17"
- }
- },
- "node_modules/semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
- "dev": true,
- "bin": {
- "semver": "bin/semver.js"
- }
- },
- "node_modules/shallowequal": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz",
- "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ=="
- },
- "node_modules/simple-update-notifier": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-1.0.7.tgz",
- "integrity": "sha512-BBKgR84BJQJm6WjWFMHgLVuo61FBDSj1z/xSFUIozqO6wO7ii0JxCqlIud7Enr/+LhlbNI0whErq96P2qHNWew==",
- "dev": true,
- "dependencies": {
- "semver": "~7.0.0"
- },
- "engines": {
- "node": ">=8.10.0"
- }
- },
- "node_modules/simple-update-notifier/node_modules/semver": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz",
- "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==",
- "dev": true,
- "bin": {
- "semver": "bin/semver.js"
- }
- },
- "node_modules/source-map-js": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
- "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/sourcemap-codec": {
- "version": "1.4.8",
- "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz",
- "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==",
- "dev": true
- },
- "node_modules/string-convert": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/string-convert/-/string-convert-0.2.1.tgz",
- "integrity": "sha512-u/1tdPl4yQnPBjnVrmdLo9gtuLvELKsAoRapekWggdiQNvvvum+jYF329d84NAa660KQw7pB2n36KrIKVoXa3A=="
- },
- "node_modules/supports-color": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
- "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
- "dev": true,
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/supports-preserve-symlinks-flag": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
- "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
- "dev": true,
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/to-fast-properties": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
- "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/to-regex-range": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
- "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
- "dev": true,
- "dependencies": {
- "is-number": "^7.0.0"
- },
- "engines": {
- "node": ">=8.0"
- }
- },
- "node_modules/toggle-selection": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/toggle-selection/-/toggle-selection-1.0.6.tgz",
- "integrity": "sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ=="
- },
- "node_modules/touch": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz",
- "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==",
- "dev": true,
- "dependencies": {
- "nopt": "~1.0.10"
- },
- "bin": {
- "nodetouch": "bin/nodetouch.js"
- }
- },
- "node_modules/typescript": {
- "version": "4.8.3",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.3.tgz",
- "integrity": "sha512-goMHfm00nWPa8UvR/CPSvykqf6dVV8x/dp0c5mFTMTIu0u0FlGWRioyy7Nn0PGAdHxpJZnuO/ut+PpQ8UiHAig==",
- "dev": true,
- "bin": {
- "tsc": "bin/tsc",
- "tsserver": "bin/tsserver"
- },
- "engines": {
- "node": ">=4.2.0"
- }
- },
- "node_modules/undefsafe": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz",
- "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==",
- "dev": true
- },
- "node_modules/update-browserslist-db": {
- "version": "1.0.9",
- "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.9.tgz",
- "integrity": "sha512-/xsqn21EGVdXI3EXSum1Yckj3ZVZugqyOZQ/CxYPBD/R+ko9NSUScf8tFF4dOKY+2pvSSJA/S+5B8s4Zr4kyvg==",
- "dev": true,
- "funding": [
- {
- "type": "opencollective",
- "url": "https://opencollective.com/browserslist"
- },
- {
- "type": "tidelift",
- "url": "https://tidelift.com/funding/github/npm/browserslist"
- }
- ],
- "dependencies": {
- "escalade": "^3.1.1",
- "picocolors": "^1.0.0"
- },
- "bin": {
- "browserslist-lint": "cli.js"
- },
- "peerDependencies": {
- "browserslist": ">= 4.21.0"
- }
- },
- "node_modules/vite": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/vite/-/vite-3.1.3.tgz",
- "integrity": "sha512-/3XWiktaopByM5bd8dqvHxRt5EEgRikevnnrpND0gRfNkrMrPaGGexhtLCzv15RcCMtV2CLw+BPas8YFeSG0KA==",
- "dev": true,
- "dependencies": {
- "esbuild": "^0.15.6",
- "postcss": "^8.4.16",
- "resolve": "^1.22.1",
- "rollup": "~2.78.0"
- },
- "bin": {
- "vite": "bin/vite.js"
- },
- "engines": {
- "node": "^14.18.0 || >=16.0.0"
- },
- "optionalDependencies": {
- "fsevents": "~2.3.2"
- },
- "peerDependencies": {
- "less": "*",
- "sass": "*",
- "stylus": "*",
- "terser": "^5.4.0"
- },
- "peerDependenciesMeta": {
- "less": {
- "optional": true
- },
- "sass": {
- "optional": true
- },
- "stylus": {
- "optional": true
- },
- "terser": {
- "optional": true
- }
- }
- }
- },
- "dependencies": {
- "@ampproject/remapping": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz",
- "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==",
- "dev": true,
- "requires": {
- "@jridgewell/gen-mapping": "^0.1.0",
- "@jridgewell/trace-mapping": "^0.3.9"
- }
- },
- "@ant-design/colors": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/@ant-design/colors/-/colors-6.0.0.tgz",
- "integrity": "sha512-qAZRvPzfdWHtfameEGP2Qvuf838NhergR35o+EuVyB5XvSA98xod5r4utvi4TJ3ywmevm290g9nsCG5MryrdWQ==",
- "requires": {
- "@ctrl/tinycolor": "^3.4.0"
- }
- },
- "@ant-design/icons": {
- "version": "4.7.0",
- "resolved": "https://registry.npmjs.org/@ant-design/icons/-/icons-4.7.0.tgz",
- "integrity": "sha512-aoB4Z7JA431rt6d4u+8xcNPPCrdufSRMUOpxa1ab6mz1JCQZOEVolj2WVs/tDFmN62zzK30mNelEsprLYsSF3g==",
- "requires": {
- "@ant-design/colors": "^6.0.0",
- "@ant-design/icons-svg": "^4.2.1",
- "@babel/runtime": "^7.11.2",
- "classnames": "^2.2.6",
- "rc-util": "^5.9.4"
- }
- },
- "@ant-design/icons-svg": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/@ant-design/icons-svg/-/icons-svg-4.2.1.tgz",
- "integrity": "sha512-EB0iwlKDGpG93hW8f85CTJTs4SvMX7tt5ceupvhALp1IF44SeUFOMhKUOYqpsoYWQKAOuTRDMqn75rEaKDp0Xw=="
- },
- "@ant-design/react-slick": {
- "version": "0.29.2",
- "resolved": "https://registry.npmjs.org/@ant-design/react-slick/-/react-slick-0.29.2.tgz",
- "integrity": "sha512-kgjtKmkGHa19FW21lHnAfyyH9AAoh35pBdcJ53rHmQ3O+cfFHGHnUbj/HFrRNJ5vIts09FKJVAD8RpaC+RaWfA==",
- "requires": {
- "@babel/runtime": "^7.10.4",
- "classnames": "^2.2.5",
- "json2mq": "^0.2.0",
- "lodash": "^4.17.21",
- "resize-observer-polyfill": "^1.5.1"
- }
- },
- "@babel/code-frame": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz",
- "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==",
- "dev": true,
- "requires": {
- "@babel/highlight": "^7.18.6"
- }
- },
- "@babel/compat-data": {
- "version": "7.19.1",
- "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.19.1.tgz",
- "integrity": "sha512-72a9ghR0gnESIa7jBN53U32FOVCEoztyIlKaNoU05zRhEecduGK9L9c3ww7Mp06JiR+0ls0GBPFJQwwtjn9ksg==",
- "dev": true
- },
- "@babel/core": {
- "version": "7.19.1",
- "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.19.1.tgz",
- "integrity": "sha512-1H8VgqXme4UXCRv7/Wa1bq7RVymKOzC7znjyFM8KiEzwFqcKUKYNoQef4GhdklgNvoBXyW4gYhuBNCM5o1zImw==",
- "dev": true,
- "requires": {
- "@ampproject/remapping": "^2.1.0",
- "@babel/code-frame": "^7.18.6",
- "@babel/generator": "^7.19.0",
- "@babel/helper-compilation-targets": "^7.19.1",
- "@babel/helper-module-transforms": "^7.19.0",
- "@babel/helpers": "^7.19.0",
- "@babel/parser": "^7.19.1",
- "@babel/template": "^7.18.10",
- "@babel/traverse": "^7.19.1",
- "@babel/types": "^7.19.0",
- "convert-source-map": "^1.7.0",
- "debug": "^4.1.0",
- "gensync": "^1.0.0-beta.2",
- "json5": "^2.2.1",
- "semver": "^6.3.0"
- }
- },
- "@babel/generator": {
- "version": "7.19.0",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.19.0.tgz",
- "integrity": "sha512-S1ahxf1gZ2dpoiFgA+ohK9DIpz50bJ0CWs7Zlzb54Z4sG8qmdIrGrVqmy1sAtTVRb+9CU6U8VqT9L0Zj7hxHVg==",
- "dev": true,
- "requires": {
- "@babel/types": "^7.19.0",
- "@jridgewell/gen-mapping": "^0.3.2",
- "jsesc": "^2.5.1"
- },
- "dependencies": {
- "@jridgewell/gen-mapping": {
- "version": "0.3.2",
- "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz",
- "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==",
- "dev": true,
- "requires": {
- "@jridgewell/set-array": "^1.0.1",
- "@jridgewell/sourcemap-codec": "^1.4.10",
- "@jridgewell/trace-mapping": "^0.3.9"
- }
- }
- }
- },
- "@babel/helper-annotate-as-pure": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz",
- "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==",
- "dev": true,
- "requires": {
- "@babel/types": "^7.18.6"
- }
- },
- "@babel/helper-compilation-targets": {
- "version": "7.19.1",
- "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.19.1.tgz",
- "integrity": "sha512-LlLkkqhCMyz2lkQPvJNdIYU7O5YjWRgC2R4omjCTpZd8u8KMQzZvX4qce+/BluN1rcQiV7BoGUpmQ0LeHerbhg==",
- "dev": true,
- "requires": {
- "@babel/compat-data": "^7.19.1",
- "@babel/helper-validator-option": "^7.18.6",
- "browserslist": "^4.21.3",
- "semver": "^6.3.0"
- }
- },
- "@babel/helper-environment-visitor": {
- "version": "7.18.9",
- "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz",
- "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==",
- "dev": true
- },
- "@babel/helper-function-name": {
- "version": "7.19.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz",
- "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==",
- "dev": true,
- "requires": {
- "@babel/template": "^7.18.10",
- "@babel/types": "^7.19.0"
- }
- },
- "@babel/helper-hoist-variables": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz",
- "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==",
- "dev": true,
- "requires": {
- "@babel/types": "^7.18.6"
- }
- },
- "@babel/helper-module-imports": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz",
- "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==",
- "dev": true,
- "requires": {
- "@babel/types": "^7.18.6"
- }
- },
- "@babel/helper-module-transforms": {
- "version": "7.19.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.19.0.tgz",
- "integrity": "sha512-3HBZ377Fe14RbLIA+ac3sY4PTgpxHVkFrESaWhoI5PuyXPBBX8+C34qblV9G89ZtycGJCmCI/Ut+VUDK4bltNQ==",
- "dev": true,
- "requires": {
- "@babel/helper-environment-visitor": "^7.18.9",
- "@babel/helper-module-imports": "^7.18.6",
- "@babel/helper-simple-access": "^7.18.6",
- "@babel/helper-split-export-declaration": "^7.18.6",
- "@babel/helper-validator-identifier": "^7.18.6",
- "@babel/template": "^7.18.10",
- "@babel/traverse": "^7.19.0",
- "@babel/types": "^7.19.0"
- }
- },
- "@babel/helper-plugin-utils": {
- "version": "7.19.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.19.0.tgz",
- "integrity": "sha512-40Ryx7I8mT+0gaNxm8JGTZFUITNqdLAgdg0hXzeVZxVD6nFsdhQvip6v8dqkRHzsz1VFpFAaOCHNn0vKBL7Czw==",
- "dev": true
- },
- "@babel/helper-simple-access": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.18.6.tgz",
- "integrity": "sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g==",
- "dev": true,
- "requires": {
- "@babel/types": "^7.18.6"
- }
- },
- "@babel/helper-split-export-declaration": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz",
- "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==",
- "dev": true,
- "requires": {
- "@babel/types": "^7.18.6"
- }
- },
- "@babel/helper-string-parser": {
- "version": "7.18.10",
- "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.18.10.tgz",
- "integrity": "sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw==",
- "dev": true
- },
- "@babel/helper-validator-identifier": {
- "version": "7.19.1",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz",
- "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==",
- "dev": true
- },
- "@babel/helper-validator-option": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz",
- "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==",
- "dev": true
- },
- "@babel/helpers": {
- "version": "7.19.0",
- "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.19.0.tgz",
- "integrity": "sha512-DRBCKGwIEdqY3+rPJgG/dKfQy9+08rHIAJx8q2p+HSWP87s2HCrQmaAMMyMll2kIXKCW0cO1RdQskx15Xakftg==",
- "dev": true,
- "requires": {
- "@babel/template": "^7.18.10",
- "@babel/traverse": "^7.19.0",
- "@babel/types": "^7.19.0"
- }
- },
- "@babel/highlight": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz",
- "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==",
- "dev": true,
- "requires": {
- "@babel/helper-validator-identifier": "^7.18.6",
- "chalk": "^2.0.0",
- "js-tokens": "^4.0.0"
- }
- },
- "@babel/parser": {
- "version": "7.19.1",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.19.1.tgz",
- "integrity": "sha512-h7RCSorm1DdTVGJf3P2Mhj3kdnkmF/EiysUkzS2TdgAYqyjFdMQJbVuXOBej2SBJaXan/lIVtT6KkGbyyq753A==",
- "dev": true
- },
- "@babel/plugin-syntax-jsx": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz",
- "integrity": "sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.18.6"
- }
- },
- "@babel/plugin-transform-react-jsx": {
- "version": "7.19.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.19.0.tgz",
- "integrity": "sha512-UVEvX3tXie3Szm3emi1+G63jyw1w5IcMY0FSKM+CRnKRI5Mr1YbCNgsSTwoTwKphQEG9P+QqmuRFneJPZuHNhg==",
- "dev": true,
- "requires": {
- "@babel/helper-annotate-as-pure": "^7.18.6",
- "@babel/helper-module-imports": "^7.18.6",
- "@babel/helper-plugin-utils": "^7.19.0",
- "@babel/plugin-syntax-jsx": "^7.18.6",
- "@babel/types": "^7.19.0"
- }
- },
- "@babel/plugin-transform-react-jsx-development": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.18.6.tgz",
- "integrity": "sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA==",
- "dev": true,
- "requires": {
- "@babel/plugin-transform-react-jsx": "^7.18.6"
- }
- },
- "@babel/plugin-transform-react-jsx-self": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.18.6.tgz",
- "integrity": "sha512-A0LQGx4+4Jv7u/tWzoJF7alZwnBDQd6cGLh9P+Ttk4dpiL+J5p7NSNv/9tlEFFJDq3kjxOavWmbm6t0Gk+A3Ig==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.18.6"
- }
- },
- "@babel/plugin-transform-react-jsx-source": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.18.6.tgz",
- "integrity": "sha512-utZmlASneDfdaMh0m/WausbjUjEdGrQJz0vFK93d7wD3xf5wBtX219+q6IlCNZeguIcxS2f/CvLZrlLSvSHQXw==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.18.6"
- }
- },
- "@babel/runtime": {
- "version": "7.19.0",
- "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.19.0.tgz",
- "integrity": "sha512-eR8Lo9hnDS7tqkO7NsV+mKvCmv5boaXFSZ70DnfhcgiEne8hv9oCEd36Klw74EtizEqLsy4YnW8UWwpBVolHZA==",
- "requires": {
- "regenerator-runtime": "^0.13.4"
- }
- },
- "@babel/template": {
- "version": "7.18.10",
- "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz",
- "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==",
- "dev": true,
- "requires": {
- "@babel/code-frame": "^7.18.6",
- "@babel/parser": "^7.18.10",
- "@babel/types": "^7.18.10"
- }
- },
- "@babel/traverse": {
- "version": "7.19.1",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.19.1.tgz",
- "integrity": "sha512-0j/ZfZMxKukDaag2PtOPDbwuELqIar6lLskVPPJDjXMXjfLb1Obo/1yjxIGqqAJrmfaTIY3z2wFLAQ7qSkLsuA==",
- "dev": true,
- "requires": {
- "@babel/code-frame": "^7.18.6",
- "@babel/generator": "^7.19.0",
- "@babel/helper-environment-visitor": "^7.18.9",
- "@babel/helper-function-name": "^7.19.0",
- "@babel/helper-hoist-variables": "^7.18.6",
- "@babel/helper-split-export-declaration": "^7.18.6",
- "@babel/parser": "^7.19.1",
- "@babel/types": "^7.19.0",
- "debug": "^4.1.0",
- "globals": "^11.1.0"
- }
- },
- "@babel/types": {
- "version": "7.19.0",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.19.0.tgz",
- "integrity": "sha512-YuGopBq3ke25BVSiS6fgF49Ul9gH1x70Bcr6bqRLjWCkcX8Hre1/5+z+IiWOIerRMSSEfGZVB9z9kyq7wVs9YA==",
- "dev": true,
- "requires": {
- "@babel/helper-string-parser": "^7.18.10",
- "@babel/helper-validator-identifier": "^7.18.6",
- "to-fast-properties": "^2.0.0"
- }
- },
- "@ctrl/tinycolor": {
- "version": "3.4.1",
- "resolved": "https://registry.npmjs.org/@ctrl/tinycolor/-/tinycolor-3.4.1.tgz",
- "integrity": "sha512-ej5oVy6lykXsvieQtqZxCOaLT+xD4+QNarq78cIYISHmZXshCvROLudpQN3lfL8G0NL7plMSSK+zlyvCaIJ4Iw=="
- },
- "@esbuild/android-arm": {
- "version": "0.15.8",
- "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.15.8.tgz",
- "integrity": "sha512-CyEWALmn+no/lbgbAJsbuuhT8s2J19EJGHkeyAwjbFJMrj80KJ9zuYsoAvidPTU7BgBf87r/sgae8Tw0dbOc4Q==",
- "dev": true,
- "optional": true,
- "requires": {
- "esbuild-wasm": "0.15.8"
- }
- },
- "@esbuild/linux-loong64": {
- "version": "0.15.8",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.8.tgz",
- "integrity": "sha512-pE5RQsOTSERCtfZdfCT25wzo7dfhOSlhAXcsZmuvRYhendOv7djcdvtINdnDp2DAjP17WXlBB4nBO6sHLczmsg==",
- "dev": true,
- "optional": true
- },
- "@jridgewell/gen-mapping": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz",
- "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==",
- "dev": true,
- "requires": {
- "@jridgewell/set-array": "^1.0.0",
- "@jridgewell/sourcemap-codec": "^1.4.10"
- }
- },
- "@jridgewell/resolve-uri": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz",
- "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==",
- "dev": true
- },
- "@jridgewell/set-array": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz",
- "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==",
- "dev": true
- },
- "@jridgewell/sourcemap-codec": {
- "version": "1.4.14",
- "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz",
- "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==",
- "dev": true
- },
- "@jridgewell/trace-mapping": {
- "version": "0.3.15",
- "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.15.tgz",
- "integrity": "sha512-oWZNOULl+UbhsgB51uuZzglikfIKSUBO/M9W2OfEjn7cmqoAiCgmv9lyACTUacZwBz0ITnJ2NqjU8Tx0DHL88g==",
- "dev": true,
- "requires": {
- "@jridgewell/resolve-uri": "^3.0.3",
- "@jridgewell/sourcemap-codec": "^1.4.10"
- }
- },
- "@types/prop-types": {
- "version": "15.7.5",
- "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz",
- "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==",
- "dev": true
- },
- "@types/react": {
- "version": "18.0.20",
- "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.20.tgz",
- "integrity": "sha512-MWul1teSPxujEHVwZl4a5HxQ9vVNsjTchVA+xRqv/VYGCuKGAU6UhfrTdF5aBefwD1BHUD8i/zq+O/vyCm/FrA==",
- "dev": true,
- "requires": {
- "@types/prop-types": "*",
- "@types/scheduler": "*",
- "csstype": "^3.0.2"
- }
- },
- "@types/react-dom": {
- "version": "18.0.6",
- "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.0.6.tgz",
- "integrity": "sha512-/5OFZgfIPSwy+YuIBP/FgJnQnsxhZhjjrnxudMddeblOouIodEQ75X14Rr4wGSG/bknL+Omy9iWlLo1u/9GzAA==",
- "dev": true,
- "requires": {
- "@types/react": "*"
- }
- },
- "@types/scheduler": {
- "version": "0.16.2",
- "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz",
- "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==",
- "dev": true
- },
- "@vitejs/plugin-react": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-2.1.0.tgz",
- "integrity": "sha512-am6rPyyU3LzUYne3Gd9oj9c4Rzbq5hQnuGXSMT6Gujq45Il/+bunwq3lrB7wghLkiF45ygMwft37vgJ/NE8IAA==",
- "dev": true,
- "requires": {
- "@babel/core": "^7.18.13",
- "@babel/plugin-transform-react-jsx": "^7.18.10",
- "@babel/plugin-transform-react-jsx-development": "^7.18.6",
- "@babel/plugin-transform-react-jsx-self": "^7.18.6",
- "@babel/plugin-transform-react-jsx-source": "^7.18.6",
- "magic-string": "^0.26.2",
- "react-refresh": "^0.14.0"
- }
- },
- "abbrev": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
- "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==",
- "dev": true
- },
- "ansi-styles": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
- "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
- "dev": true,
- "requires": {
- "color-convert": "^1.9.0"
- }
- },
- "antd": {
- "version": "4.23.2",
- "resolved": "https://registry.npmjs.org/antd/-/antd-4.23.2.tgz",
- "integrity": "sha512-GGOaIUxPg8wl8lGcCJ2U/1Eg5mt0hNb554a0y4mTJa1ijPRCNM8XjUcio4lTMM7M9/fLm9ttKtyxHg4n+JX26A==",
- "requires": {
- "@ant-design/colors": "^6.0.0",
- "@ant-design/icons": "^4.7.0",
- "@ant-design/react-slick": "~0.29.1",
- "@babel/runtime": "^7.18.3",
- "@ctrl/tinycolor": "^3.4.0",
- "classnames": "^2.2.6",
- "copy-to-clipboard": "^3.2.0",
- "lodash": "^4.17.21",
- "memoize-one": "^6.0.0",
- "moment": "^2.29.2",
- "rc-cascader": "~3.7.0",
- "rc-checkbox": "~2.3.0",
- "rc-collapse": "~3.3.0",
- "rc-dialog": "~8.9.0",
- "rc-drawer": "~5.1.0",
- "rc-dropdown": "~4.0.0",
- "rc-field-form": "~1.27.0",
- "rc-image": "~5.7.0",
- "rc-input": "~0.1.2",
- "rc-input-number": "~7.3.5",
- "rc-mentions": "~1.9.1",
- "rc-menu": "~9.6.3",
- "rc-motion": "^2.6.1",
- "rc-notification": "~4.6.0",
- "rc-pagination": "~3.1.17",
- "rc-picker": "~2.6.10",
- "rc-progress": "~3.3.2",
- "rc-rate": "~2.9.0",
- "rc-resize-observer": "^1.2.0",
- "rc-segmented": "~2.1.0",
- "rc-select": "~14.1.13",
- "rc-slider": "~10.0.0",
- "rc-steps": "~4.1.0",
- "rc-switch": "~3.2.0",
- "rc-table": "~7.26.0",
- "rc-tabs": "~12.1.0-alpha.1",
- "rc-textarea": "~0.3.0",
- "rc-tooltip": "~5.2.0",
- "rc-tree": "~5.7.0",
- "rc-tree-select": "~5.5.0",
- "rc-trigger": "^5.2.10",
- "rc-upload": "~4.3.0",
- "rc-util": "^5.22.5",
- "scroll-into-view-if-needed": "^2.2.25"
- }
- },
- "anymatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz",
- "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==",
- "dev": true,
- "requires": {
- "normalize-path": "^3.0.0",
- "picomatch": "^2.0.4"
- }
- },
- "array-tree-filter": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/array-tree-filter/-/array-tree-filter-2.1.0.tgz",
- "integrity": "sha512-4ROwICNlNw/Hqa9v+rk5h22KjmzB1JGTMVKP2AKJBOCgb0yL0ASf0+YvCcLNNwquOHNX48jkeZIJ3a+oOQqKcw=="
- },
- "async-validator": {
- "version": "4.2.5",
- "resolved": "https://registry.npmjs.org/async-validator/-/async-validator-4.2.5.tgz",
- "integrity": "sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg=="
- },
- "asynckit": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
- "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
- },
- "axios": {
- "version": "0.27.2",
- "resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz",
- "integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==",
- "requires": {
- "follow-redirects": "^1.14.9",
- "form-data": "^4.0.0"
- }
- },
- "balanced-match": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
- "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
- "dev": true
- },
- "binary-extensions": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
- "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
- "dev": true
- },
- "brace-expansion": {
- "version": "1.1.11",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
- "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
- "dev": true,
- "requires": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "braces": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
- "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
- "dev": true,
- "requires": {
- "fill-range": "^7.0.1"
- }
- },
- "browserslist": {
- "version": "4.21.4",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz",
- "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==",
- "dev": true,
- "requires": {
- "caniuse-lite": "^1.0.30001400",
- "electron-to-chromium": "^1.4.251",
- "node-releases": "^2.0.6",
- "update-browserslist-db": "^1.0.9"
- }
- },
- "caniuse-lite": {
- "version": "1.0.30001408",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001408.tgz",
- "integrity": "sha512-DdUCktgMSM+1ndk9EFMZcavsGszV7zxV9O7MtOHniTa/iyAIwJCF0dFVBdU9SijJbfh29hC9bCs07wu8pjnGJQ==",
- "dev": true
- },
- "chalk": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
- "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
- "dev": true,
- "requires": {
- "ansi-styles": "^3.2.1",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^5.3.0"
- }
- },
- "chokidar": {
- "version": "3.5.3",
- "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
- "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
- "dev": true,
- "requires": {
- "anymatch": "~3.1.2",
- "braces": "~3.0.2",
- "fsevents": "~2.3.2",
- "glob-parent": "~5.1.2",
- "is-binary-path": "~2.1.0",
- "is-glob": "~4.0.1",
- "normalize-path": "~3.0.0",
- "readdirp": "~3.6.0"
- }
- },
- "classnames": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.2.tgz",
- "integrity": "sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw=="
- },
- "color-convert": {
- "version": "1.9.3",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
- "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
- "dev": true,
- "requires": {
- "color-name": "1.1.3"
- }
- },
- "color-name": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
- "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
- "dev": true
- },
- "combined-stream": {
- "version": "1.0.8",
- "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
- "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
- "requires": {
- "delayed-stream": "~1.0.0"
- }
- },
- "compute-scroll-into-view": {
- "version": "1.0.17",
- "resolved": "https://registry.npmjs.org/compute-scroll-into-view/-/compute-scroll-into-view-1.0.17.tgz",
- "integrity": "sha512-j4dx+Fb0URmzbwwMUrhqWM2BEWHdFGx+qZ9qqASHRPqvTYdqvWnHg0H1hIbcyLnvgnoNAVMlwkepyqM3DaIFUg=="
- },
- "concat-map": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
- "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
- "dev": true
- },
- "convert-source-map": {
- "version": "1.8.0",
- "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz",
- "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==",
- "dev": true,
- "requires": {
- "safe-buffer": "~5.1.1"
- }
- },
- "copy-to-clipboard": {
- "version": "3.3.2",
- "resolved": "https://registry.npmjs.org/copy-to-clipboard/-/copy-to-clipboard-3.3.2.tgz",
- "integrity": "sha512-Vme1Z6RUDzrb6xAI7EZlVZ5uvOk2F//GaxKUxajDqm9LhOVM1inxNAD2vy+UZDYsd0uyA9s7b3/FVZPSxqrCfg==",
- "requires": {
- "toggle-selection": "^1.0.6"
- }
- },
- "csstype": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz",
- "integrity": "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==",
- "dev": true
- },
- "date-fns": {
- "version": "2.29.3",
- "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.29.3.tgz",
- "integrity": "sha512-dDCnyH2WnnKusqvZZ6+jA1O51Ibt8ZMRNkDZdyAyK4YfbDwa/cEmuztzG5pk6hqlp9aSBPYcjOlktquahGwGeA=="
- },
- "dayjs": {
- "version": "1.11.5",
- "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.5.tgz",
- "integrity": "sha512-CAdX5Q3YW3Gclyo5Vpqkgpj8fSdLQcRuzfX6mC6Phy0nfJ0eGYOeS7m4mt2plDWLAtA4TqTakvbboHvUxfe4iA=="
- },
- "debug": {
- "version": "4.3.4",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
- "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
- "dev": true,
- "requires": {
- "ms": "2.1.2"
- }
- },
- "delayed-stream": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
- "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ=="
- },
- "dom-align": {
- "version": "1.12.3",
- "resolved": "https://registry.npmjs.org/dom-align/-/dom-align-1.12.3.tgz",
- "integrity": "sha512-Gj9hZN3a07cbR6zviMUBOMPdWxYhbMI+x+WS0NAIu2zFZmbK8ys9R79g+iG9qLnlCwpFoaB+fKy8Pdv470GsPA=="
- },
- "electron-to-chromium": {
- "version": "1.4.256",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.256.tgz",
- "integrity": "sha512-x+JnqyluoJv8I0U9gVe+Sk2st8vF0CzMt78SXxuoWCooLLY2k5VerIBdpvG7ql6GKI4dzNnPjmqgDJ76EdaAKw==",
- "dev": true
- },
- "esbuild": {
- "version": "0.15.8",
- "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.8.tgz",
- "integrity": "sha512-Remsk2dmr1Ia65sU+QasE6svJbsHe62lzR+CnjpUvbZ+uSYo1SitiOWPRfZQkCu82YWZBBKXiD/j0i//XWMZ+Q==",
- "dev": true,
- "requires": {
- "@esbuild/android-arm": "0.15.8",
- "@esbuild/linux-loong64": "0.15.8",
- "esbuild-android-64": "0.15.8",
- "esbuild-android-arm64": "0.15.8",
- "esbuild-darwin-64": "0.15.8",
- "esbuild-darwin-arm64": "0.15.8",
- "esbuild-freebsd-64": "0.15.8",
- "esbuild-freebsd-arm64": "0.15.8",
- "esbuild-linux-32": "0.15.8",
- "esbuild-linux-64": "0.15.8",
- "esbuild-linux-arm": "0.15.8",
- "esbuild-linux-arm64": "0.15.8",
- "esbuild-linux-mips64le": "0.15.8",
- "esbuild-linux-ppc64le": "0.15.8",
- "esbuild-linux-riscv64": "0.15.8",
- "esbuild-linux-s390x": "0.15.8",
- "esbuild-netbsd-64": "0.15.8",
- "esbuild-openbsd-64": "0.15.8",
- "esbuild-sunos-64": "0.15.8",
- "esbuild-windows-32": "0.15.8",
- "esbuild-windows-64": "0.15.8",
- "esbuild-windows-arm64": "0.15.8"
- }
- },
- "esbuild-android-64": {
- "version": "0.15.8",
- "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.8.tgz",
- "integrity": "sha512-bVh8FIKOolF7/d4AMzt7xHlL0Ljr+mYKSHI39TJWDkybVWHdn6+4ODL3xZGHOxPpdRpitemXA1WwMKYBsw8dGw==",
- "dev": true,
- "optional": true,
- "requires": {
- "esbuild-wasm": "0.15.8"
- }
- },
- "esbuild-android-arm64": {
- "version": "0.15.8",
- "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.8.tgz",
- "integrity": "sha512-ReAMDAHuo0H1h9LxRabI6gwYPn8k6WiUeyxuMvx17yTrJO+SCnIfNc/TSPFvDwtK9MiyiKG/2dBYHouT/M0BXQ==",
- "dev": true,
- "optional": true
- },
- "esbuild-darwin-64": {
- "version": "0.15.8",
- "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.8.tgz",
- "integrity": "sha512-KaKcGfJ+yto7Fo5gAj3xwxHMd1fBIKatpCHK8znTJLVv+9+NN2/tIPBqA4w5rBwjX0UqXDeIE2v1xJP+nGEXgA==",
- "dev": true,
- "optional": true
- },
- "esbuild-darwin-arm64": {
- "version": "0.15.8",
- "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.8.tgz",
- "integrity": "sha512-8tjEaBgAKnXCkP7bhEJmEqdG9HEV6oLkF36BrMzpfW2rgaw0c48Zrxe+9RlfeGvs6gDF4w+agXyTjikzsS3izw==",
- "dev": true,
- "optional": true
- },
- "esbuild-freebsd-64": {
- "version": "0.15.8",
- "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.8.tgz",
- "integrity": "sha512-jaxcsGHYzn2L0/lffON2WfH4Nc+d/EwozVTP5K2v016zxMb5UQMhLoJzvLgBqHT1SG0B/mO+a+THnJCMVg15zw==",
- "dev": true,
- "optional": true
- },
- "esbuild-freebsd-arm64": {
- "version": "0.15.8",
- "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.8.tgz",
- "integrity": "sha512-2xp2UlljMvX8HExtcg7VHaeQk8OBU0CSl1j18B5CcZmSDkLF9p3utuMXIopG3a08fr9Hv+Dz6+seSXUow/G51w==",
- "dev": true,
- "optional": true
- },
- "esbuild-linux-32": {
- "version": "0.15.8",
- "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.8.tgz",
- "integrity": "sha512-9u1E54BRz1FQMl86iaHK146+4ID2KYNxL3trLZT4QLLx3M7Q9n4lGG3lrzqUatGR2cKy8c33b0iaCzsItZWkFg==",
- "dev": true,
- "optional": true
- },
- "esbuild-linux-64": {
- "version": "0.15.8",
- "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.8.tgz",
- "integrity": "sha512-4HxrsN9eUzJXdVGMTYA5Xler82FuZUu21bXKN42zcLHHNKCAMPUzD62I+GwDhsdgUBAUj0tRXDdsQHgaP6v0HA==",
- "dev": true,
- "optional": true
- },
- "esbuild-linux-arm": {
- "version": "0.15.8",
- "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.8.tgz",
- "integrity": "sha512-7DVBU9SFjX4+vBwt8tHsUCbE6Vvl6y6FQWHAgyw1lybC5gULqn/WnjHYHN2/LJaZRsDBvxWT4msEgwLGq1Wd3Q==",
- "dev": true,
- "optional": true
- },
- "esbuild-linux-arm64": {
- "version": "0.15.8",
- "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.8.tgz",
- "integrity": "sha512-1OCm7Aq0tEJT70PbxmHSGYDLYP8DKH8r4Nk7/XbVzWaduo9beCjGBB+tGZIHK6DdTQ3h00/4Tb/70YMH/bOtKg==",
- "dev": true,
- "optional": true
- },
- "esbuild-linux-mips64le": {
- "version": "0.15.8",
- "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.8.tgz",
- "integrity": "sha512-yeFoNPVFPEzZvFYBfUQNG2TjGRaCyV1E27OcOg4LOtnGrxb2wA+mkW3luckyv1CEyd00mpAg7UdHx8nlx3ghgA==",
- "dev": true,
- "optional": true
- },
- "esbuild-linux-ppc64le": {
- "version": "0.15.8",
- "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.8.tgz",
- "integrity": "sha512-CEyMMUUNabXibw8OSNmBXhOIGhnjNVl5Lpseiuf00iKN0V47oqDrbo4dsHz1wH62m49AR8iG8wpDlTqfYgKbtg==",
- "dev": true,
- "optional": true
- },
- "esbuild-linux-riscv64": {
- "version": "0.15.8",
- "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.8.tgz",
- "integrity": "sha512-OCGSOaspMUjexSCU8ZiA0UnV/NiRU+s2vIfEcAQWQ6u32R+2luyfh/4ZaY6jFbylJE07Esc/yRvb9Q5fXuClXA==",
- "dev": true,
- "optional": true
- },
- "esbuild-linux-s390x": {
- "version": "0.15.8",
- "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.8.tgz",
- "integrity": "sha512-RHdpdfxRTSrZXZJlFSLazFU4YwXLB5Rgf6Zr5rffqSsO4y9JybgtKO38bFwxZNlDXliYISXN/YROKrG9s7mZQA==",
- "dev": true,
- "optional": true
- },
- "esbuild-netbsd-64": {
- "version": "0.15.8",
- "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.8.tgz",
- "integrity": "sha512-VolFFRatBH09T5QMWhiohAWCOien1R1Uz9K0BRVVTBgBaVBt7eArsXTKxVhUgRf2vwu2c2SXkuP0r7HLG0eozw==",
- "dev": true,
- "optional": true
- },
- "esbuild-openbsd-64": {
- "version": "0.15.8",
- "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.8.tgz",
- "integrity": "sha512-HTAPlg+n4kUeE/isQxlCfsOz0xJGNoT5LJ9oYZWFKABfVf4Ycu7Zlf5ITgOnrdheTkz8JeL/gISIOCFAoOXrSA==",
- "dev": true,
- "optional": true
- },
- "esbuild-sunos-64": {
- "version": "0.15.8",
- "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.8.tgz",
- "integrity": "sha512-qMP/jR/FzcIOwKj+W+Lb+8Cfr8GZHbHUJxAPi7DUhNZMQ/6y7sOgRzlOSpRrbbUntrRZh0MqOyDhJ3Gpo6L1QA==",
- "dev": true,
- "optional": true
- },
- "esbuild-wasm": {
- "version": "0.15.8",
- "resolved": "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.15.8.tgz",
- "integrity": "sha512-Y7uCl5RNO4URjlemjdx++ukVHEMt5s5AfMWYUnMiK4Sry+pPCvQIctzXq6r6FKCyGKjX6/NGMCqR2OX6aLxj0w==",
- "dev": true,
- "optional": true
- },
- "esbuild-windows-32": {
- "version": "0.15.8",
- "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.8.tgz",
- "integrity": "sha512-RKR1QHh4iWzjUhkP8Yqi75PPz/KS+b8zw3wUrzw6oAkj+iU5Qtyj61ZDaSG3Qf2vc6hTIUiPqVTqBH0NpXFNwg==",
- "dev": true,
- "optional": true
- },
- "esbuild-windows-64": {
- "version": "0.15.8",
- "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.8.tgz",
- "integrity": "sha512-ag9ptYrsizgsR+PQE8QKeMqnosLvAMonQREpLw4evA4FFgOBMLEat/dY/9txbpozTw9eEOYyD3a4cE9yTu20FA==",
- "dev": true,
- "optional": true
- },
- "esbuild-windows-arm64": {
- "version": "0.15.8",
- "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.8.tgz",
- "integrity": "sha512-dbpAb0VyPaUs9mgw65KRfQ9rqiWCHpNzrJusoPu+LpEoswosjt/tFxN7cd2l68AT4qWdBkzAjDLRon7uqMeWcg==",
- "dev": true,
- "optional": true
- },
- "escalade": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
- "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
- "dev": true
- },
- "escape-string-regexp": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
- "dev": true
- },
- "fill-range": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
- "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
- "dev": true,
- "requires": {
- "to-regex-range": "^5.0.1"
- }
- },
- "follow-redirects": {
- "version": "1.15.2",
- "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz",
- "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA=="
- },
- "form-data": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
- "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
- "requires": {
- "asynckit": "^0.4.0",
- "combined-stream": "^1.0.8",
- "mime-types": "^2.1.12"
- }
- },
- "fsevents": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
- "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
- "dev": true,
- "optional": true
- },
- "function-bind": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
- "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
- "dev": true
- },
- "gensync": {
- "version": "1.0.0-beta.2",
- "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
- "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
- "dev": true
- },
- "glob-parent": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
- "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
- "dev": true,
- "requires": {
- "is-glob": "^4.0.1"
- }
- },
- "globals": {
- "version": "11.12.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
- "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
- "dev": true
- },
- "has": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
- "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
- "dev": true,
- "requires": {
- "function-bind": "^1.1.1"
- }
- },
- "has-flag": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
- "dev": true
- },
- "ignore-by-default": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz",
- "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==",
- "dev": true
- },
- "is-binary-path": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
- "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
- "dev": true,
- "requires": {
- "binary-extensions": "^2.0.0"
- }
- },
- "is-core-module": {
- "version": "2.10.0",
- "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.10.0.tgz",
- "integrity": "sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==",
- "dev": true,
- "requires": {
- "has": "^1.0.3"
- }
- },
- "is-extglob": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
- "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
- "dev": true
- },
- "is-glob": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
- "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
- "dev": true,
- "requires": {
- "is-extglob": "^2.1.1"
- }
- },
- "is-number": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
- "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
- "dev": true
- },
- "js-tokens": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
- "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
- },
- "jsesc": {
- "version": "2.5.2",
- "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
- "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
- "dev": true
- },
- "json2mq": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/json2mq/-/json2mq-0.2.0.tgz",
- "integrity": "sha512-SzoRg7ux5DWTII9J2qkrZrqV1gt+rTaoufMxEzXbS26Uid0NwaJd123HcoB80TgubEppxxIGdNxCx50fEoEWQA==",
- "requires": {
- "string-convert": "^0.2.0"
- }
- },
- "json5": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz",
- "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==",
- "dev": true
- },
- "lodash": {
- "version": "4.17.21",
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
- "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
- },
- "loose-envify": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
- "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
- "requires": {
- "js-tokens": "^3.0.0 || ^4.0.0"
- }
- },
- "magic-string": {
- "version": "0.26.3",
- "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.3.tgz",
- "integrity": "sha512-u1Po0NDyFcwdg2nzHT88wSK0+Rih0N1M+Ph1Sp08k8yvFFU3KR72wryS7e1qMPJypt99WB7fIFVCA92mQrMjrg==",
- "dev": true,
- "requires": {
- "sourcemap-codec": "^1.4.8"
- }
- },
- "memoize-one": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-6.0.0.tgz",
- "integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw=="
- },
- "mime-db": {
- "version": "1.52.0",
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
- "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg=="
- },
- "mime-types": {
- "version": "2.1.35",
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
- "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
- "requires": {
- "mime-db": "1.52.0"
- }
- },
- "minimatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
- "dev": true,
- "requires": {
- "brace-expansion": "^1.1.7"
- }
- },
- "moment": {
- "version": "2.29.4",
- "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz",
- "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w=="
- },
- "ms": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
- "dev": true
- },
- "nanoid": {
- "version": "3.3.4",
- "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz",
- "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==",
- "dev": true
- },
- "node-releases": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz",
- "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==",
- "dev": true
- },
- "nodemon": {
- "version": "2.0.20",
- "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.20.tgz",
- "integrity": "sha512-Km2mWHKKY5GzRg6i1j5OxOHQtuvVsgskLfigG25yTtbyfRGn/GNvIbRyOf1PSCKJ2aT/58TiuUsuOU5UToVViw==",
- "dev": true,
- "requires": {
- "chokidar": "^3.5.2",
- "debug": "^3.2.7",
- "ignore-by-default": "^1.0.1",
- "minimatch": "^3.1.2",
- "pstree.remy": "^1.1.8",
- "semver": "^5.7.1",
- "simple-update-notifier": "^1.0.7",
- "supports-color": "^5.5.0",
- "touch": "^3.1.0",
- "undefsafe": "^2.0.5"
- },
- "dependencies": {
- "debug": {
- "version": "3.2.7",
- "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
- "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
- "dev": true,
- "requires": {
- "ms": "^2.1.1"
- }
- },
- "semver": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
- "dev": true
- }
- }
- },
- "nopt": {
- "version": "1.0.10",
- "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz",
- "integrity": "sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==",
- "dev": true,
- "requires": {
- "abbrev": "1"
- }
- },
- "normalize-path": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
- "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
- "dev": true
- },
- "path-parse": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
- "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
- "dev": true
- },
- "picocolors": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
- "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
- "dev": true
- },
- "picomatch": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
- "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
- "dev": true
- },
- "postcss": {
- "version": "8.4.16",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.16.tgz",
- "integrity": "sha512-ipHE1XBvKzm5xI7hiHCZJCSugxvsdq2mPnsq5+UF+VHCjiBvtDrlxJfMBToWaP9D5XlgNmcFGqoHmUn0EYEaRQ==",
- "dev": true,
- "requires": {
- "nanoid": "^3.3.4",
- "picocolors": "^1.0.0",
- "source-map-js": "^1.0.2"
- }
- },
- "pstree.remy": {
- "version": "1.1.8",
- "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz",
- "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==",
- "dev": true
- },
- "rc-align": {
- "version": "4.0.12",
- "resolved": "https://registry.npmjs.org/rc-align/-/rc-align-4.0.12.tgz",
- "integrity": "sha512-3DuwSJp8iC/dgHzwreOQl52soj40LchlfUHtgACOUtwGuoFIOVh6n/sCpfqCU8kO5+iz6qR0YKvjgB8iPdE3aQ==",
- "requires": {
- "@babel/runtime": "^7.10.1",
- "classnames": "2.x",
- "dom-align": "^1.7.0",
- "lodash": "^4.17.21",
- "rc-util": "^5.3.0",
- "resize-observer-polyfill": "^1.5.1"
- }
- },
- "rc-cascader": {
- "version": "3.7.0",
- "resolved": "https://registry.npmjs.org/rc-cascader/-/rc-cascader-3.7.0.tgz",
- "integrity": "sha512-SFtGpwmYN7RaWEAGTS4Rkc62ZV/qmQGg/tajr/7mfIkleuu8ro9Hlk6J+aA0x1YS4zlaZBtTcSaXM01QMiEV/A==",
- "requires": {
- "@babel/runtime": "^7.12.5",
- "array-tree-filter": "^2.1.0",
- "classnames": "^2.3.1",
- "rc-select": "~14.1.0",
- "rc-tree": "~5.7.0",
- "rc-util": "^5.6.1"
- }
- },
- "rc-checkbox": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/rc-checkbox/-/rc-checkbox-2.3.2.tgz",
- "integrity": "sha512-afVi1FYiGv1U0JlpNH/UaEXdh6WUJjcWokj/nUN2TgG80bfG+MDdbfHKlLcNNba94mbjy2/SXJ1HDgrOkXGAjg==",
- "requires": {
- "@babel/runtime": "^7.10.1",
- "classnames": "^2.2.1"
- }
- },
- "rc-collapse": {
- "version": "3.3.1",
- "resolved": "https://registry.npmjs.org/rc-collapse/-/rc-collapse-3.3.1.tgz",
- "integrity": "sha512-cOJfcSe3R8vocrF8T+PgaHDrgeA1tX+lwfhwSj60NX9QVRidsILIbRNDLD6nAzmcvVC5PWiIRiR4S1OobxdhCg==",
- "requires": {
- "@babel/runtime": "^7.10.1",
- "classnames": "2.x",
- "rc-motion": "^2.3.4",
- "rc-util": "^5.2.1",
- "shallowequal": "^1.1.0"
- }
- },
- "rc-dialog": {
- "version": "8.9.0",
- "resolved": "https://registry.npmjs.org/rc-dialog/-/rc-dialog-8.9.0.tgz",
- "integrity": "sha512-Cp0tbJnrvPchJfnwIvOMWmJ4yjX3HWFatO6oBFD1jx8QkgsQCR0p8nUWAKdd3seLJhEC39/v56kZaEjwp9muoQ==",
- "requires": {
- "@babel/runtime": "^7.10.1",
- "classnames": "^2.2.6",
- "rc-motion": "^2.3.0",
- "rc-util": "^5.21.0"
- }
- },
- "rc-drawer": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/rc-drawer/-/rc-drawer-5.1.0.tgz",
- "integrity": "sha512-pU3Tsn99pxGdYowXehzZbdDVE+4lDXSGb7p8vA9mSmr569oc2Izh4Zw5vLKSe/Xxn2p5MSNbLVqD4tz+pK6SOw==",
- "requires": {
- "@babel/runtime": "^7.10.1",
- "classnames": "^2.2.6",
- "rc-motion": "^2.6.1",
- "rc-util": "^5.21.2"
- }
- },
- "rc-dropdown": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/rc-dropdown/-/rc-dropdown-4.0.1.tgz",
- "integrity": "sha512-OdpXuOcme1rm45cR0Jzgfl1otzmU4vuBVb+etXM8vcaULGokAKVpKlw8p6xzspG7jGd/XxShvq+N3VNEfk/l5g==",
- "requires": {
- "@babel/runtime": "^7.18.3",
- "classnames": "^2.2.6",
- "rc-trigger": "^5.3.1",
- "rc-util": "^5.17.0"
- }
- },
- "rc-field-form": {
- "version": "1.27.1",
- "resolved": "https://registry.npmjs.org/rc-field-form/-/rc-field-form-1.27.1.tgz",
- "integrity": "sha512-RShegnwFu6TH8tl2olCxn+B4Wyh5EiQH8c/7wucbkLNyue05YiH5gomUAg1vbZjp71yFKwegClctsEG5CNBWAA==",
- "requires": {
- "@babel/runtime": "^7.18.0",
- "async-validator": "^4.1.0",
- "rc-util": "^5.8.0"
- }
- },
- "rc-image": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/rc-image/-/rc-image-5.7.1.tgz",
- "integrity": "sha512-QyMfdhoUfb5W14plqXSisaYwpdstcLYnB0MjX5ccIK2rydQM9sDPuekQWu500DDGR2dBaIF5vx9XbWkNFK17Fg==",
- "requires": {
- "@babel/runtime": "^7.11.2",
- "classnames": "^2.2.6",
- "rc-dialog": "~8.9.0",
- "rc-util": "^5.0.6"
- }
- },
- "rc-input": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/rc-input/-/rc-input-0.1.2.tgz",
- "integrity": "sha512-ZPmwcFspgfYpUfbSx3KnLk9gImBcLOrlQCr4oTJ4jBoIXgJLTfm26yelzRgBJewhkvD8uJbgX0sQ/yOzuOHnJg==",
- "requires": {
- "@babel/runtime": "^7.11.1",
- "classnames": "^2.2.1",
- "rc-util": "^5.18.1"
- }
- },
- "rc-input-number": {
- "version": "7.3.9",
- "resolved": "https://registry.npmjs.org/rc-input-number/-/rc-input-number-7.3.9.tgz",
- "integrity": "sha512-u0+miS+SATdb6DtssYei2JJ1WuZME+nXaG6XGtR8maNyW5uGDytfDu60OTWLQEb0Anv/AcCzehldV8CKmKyQfA==",
- "requires": {
- "@babel/runtime": "^7.10.1",
- "classnames": "^2.2.5",
- "rc-util": "^5.23.0"
- }
- },
- "rc-mentions": {
- "version": "1.9.2",
- "resolved": "https://registry.npmjs.org/rc-mentions/-/rc-mentions-1.9.2.tgz",
- "integrity": "sha512-uxb/lzNnEGmvraKWNGE6KXMVXvt8RQv9XW8R0Dqi3hYsyPiAZeHRCHQKdLARuk5YBhFhZ6ga55D/8XuY367g3g==",
- "requires": {
- "@babel/runtime": "^7.10.1",
- "classnames": "^2.2.6",
- "rc-menu": "~9.6.0",
- "rc-textarea": "^0.3.0",
- "rc-trigger": "^5.0.4",
- "rc-util": "^5.22.5"
- }
- },
- "rc-menu": {
- "version": "9.6.4",
- "resolved": "https://registry.npmjs.org/rc-menu/-/rc-menu-9.6.4.tgz",
- "integrity": "sha512-6DiNAjxjVIPLZXHffXxxcyE15d4isRL7iQ1ru4MqYDH2Cqc5bW96wZOdMydFtGLyDdnmEQ9jVvdCE9yliGvzkw==",
- "requires": {
- "@babel/runtime": "^7.10.1",
- "classnames": "2.x",
- "rc-motion": "^2.4.3",
- "rc-overflow": "^1.2.0",
- "rc-trigger": "^5.1.2",
- "rc-util": "^5.12.0",
- "shallowequal": "^1.1.0"
- }
- },
- "rc-motion": {
- "version": "2.6.2",
- "resolved": "https://registry.npmjs.org/rc-motion/-/rc-motion-2.6.2.tgz",
- "integrity": "sha512-4w1FaX3dtV749P8GwfS4fYnFG4Rb9pxvCYPc/b2fw1cmlHJWNNgOFIz7ysiD+eOrzJSvnLJWlNQQncpNMXwwpg==",
- "requires": {
- "@babel/runtime": "^7.11.1",
- "classnames": "^2.2.1",
- "rc-util": "^5.21.0"
- }
- },
- "rc-notification": {
- "version": "4.6.0",
- "resolved": "https://registry.npmjs.org/rc-notification/-/rc-notification-4.6.0.tgz",
- "integrity": "sha512-xF3MKgIoynzjQAO4lqsoraiFo3UXNYlBfpHs0VWvwF+4pimen9/H1DYLN2mfRWhHovW6gRpla73m2nmyIqAMZQ==",
- "requires": {
- "@babel/runtime": "^7.10.1",
- "classnames": "2.x",
- "rc-motion": "^2.2.0",
- "rc-util": "^5.20.1"
- }
- },
- "rc-overflow": {
- "version": "1.2.8",
- "resolved": "https://registry.npmjs.org/rc-overflow/-/rc-overflow-1.2.8.tgz",
- "integrity": "sha512-QJ0UItckWPQ37ZL1dMEBAdY1dhfTXFL9k6oTTcyydVwoUNMnMqCGqnRNA98axSr/OeDKqR6DVFyi8eA5RQI/uQ==",
- "requires": {
- "@babel/runtime": "^7.11.1",
- "classnames": "^2.2.1",
- "rc-resize-observer": "^1.0.0",
- "rc-util": "^5.19.2"
- }
- },
- "rc-pagination": {
- "version": "3.1.17",
- "resolved": "https://registry.npmjs.org/rc-pagination/-/rc-pagination-3.1.17.tgz",
- "integrity": "sha512-/BQ5UxcBnW28vFAcP2hfh+Xg15W0QZn8TWYwdCApchMH1H0CxiaUUcULP8uXcFM1TygcdKWdt3JqsL9cTAfdkQ==",
- "requires": {
- "@babel/runtime": "^7.10.1",
- "classnames": "^2.2.1"
- }
- },
- "rc-picker": {
- "version": "2.6.10",
- "resolved": "https://registry.npmjs.org/rc-picker/-/rc-picker-2.6.10.tgz",
- "integrity": "sha512-9wYtw0DFWs9FO92Qh2D76P0iojUr8ZhLOtScUeOit6ks/F+TBLrOC1uze3IOu+u9gbDAjmosNWLKbBzx/Yuv2w==",
- "requires": {
- "@babel/runtime": "^7.10.1",
- "classnames": "^2.2.1",
- "date-fns": "2.x",
- "dayjs": "1.x",
- "moment": "^2.24.0",
- "rc-trigger": "^5.0.4",
- "rc-util": "^5.4.0",
- "shallowequal": "^1.1.0"
- }
- },
- "rc-progress": {
- "version": "3.3.3",
- "resolved": "https://registry.npmjs.org/rc-progress/-/rc-progress-3.3.3.tgz",
- "integrity": "sha512-MDVNVHzGanYtRy2KKraEaWeZLri2ZHWIRyaE1a9MQ2MuJ09m+Wxj5cfcaoaR6z5iRpHpA59YeUxAlpML8N4PJw==",
- "requires": {
- "@babel/runtime": "^7.10.1",
- "classnames": "^2.2.6",
- "rc-util": "^5.16.1"
- }
- },
- "rc-rate": {
- "version": "2.9.2",
- "resolved": "https://registry.npmjs.org/rc-rate/-/rc-rate-2.9.2.tgz",
- "integrity": "sha512-SaiZFyN8pe0Fgphv8t3+kidlej+cq/EALkAJAc3A0w0XcPaH2L1aggM8bhe1u6GAGuQNAoFvTLjw4qLPGRKV5g==",
- "requires": {
- "@babel/runtime": "^7.10.1",
- "classnames": "^2.2.5",
- "rc-util": "^5.0.1"
- }
- },
- "rc-resize-observer": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/rc-resize-observer/-/rc-resize-observer-1.2.0.tgz",
- "integrity": "sha512-6W+UzT3PyDM0wVCEHfoW3qTHPTvbdSgiA43buiy8PzmeMnfgnDeb9NjdimMXMl3/TcrvvWl5RRVdp+NqcR47pQ==",
- "requires": {
- "@babel/runtime": "^7.10.1",
- "classnames": "^2.2.1",
- "rc-util": "^5.15.0",
- "resize-observer-polyfill": "^1.5.1"
- }
- },
- "rc-segmented": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/rc-segmented/-/rc-segmented-2.1.0.tgz",
- "integrity": "sha512-hUlonro+pYoZcwrH6Vm56B2ftLfQh046hrwif/VwLIw1j3zGt52p5mREBwmeVzXnSwgnagpOpfafspzs1asjGw==",
- "requires": {
- "@babel/runtime": "^7.11.1",
- "classnames": "^2.2.1",
- "rc-motion": "^2.4.4",
- "rc-util": "^5.17.0"
- }
- },
- "rc-select": {
- "version": "14.1.13",
- "resolved": "https://registry.npmjs.org/rc-select/-/rc-select-14.1.13.tgz",
- "integrity": "sha512-WMEsC3gTwA1dbzWOdVIXDmWyidYNLq68AwvvUlRROw790uGUly0/vmqDozXrIr0QvN/A3CEULx12o+WtLCAefg==",
- "requires": {
- "@babel/runtime": "^7.10.1",
- "classnames": "2.x",
- "rc-motion": "^2.0.1",
- "rc-overflow": "^1.0.0",
- "rc-trigger": "^5.0.4",
- "rc-util": "^5.16.1",
- "rc-virtual-list": "^3.2.0"
- }
- },
- "rc-slider": {
- "version": "10.0.1",
- "resolved": "https://registry.npmjs.org/rc-slider/-/rc-slider-10.0.1.tgz",
- "integrity": "sha512-igTKF3zBet7oS/3yNiIlmU8KnZ45npmrmHlUUio8PNbIhzMcsh+oE/r2UD42Y6YD2D/s+kzCQkzQrPD6RY435Q==",
- "requires": {
- "@babel/runtime": "^7.10.1",
- "classnames": "^2.2.5",
- "rc-util": "^5.18.1",
- "shallowequal": "^1.1.0"
- }
- },
- "rc-steps": {
- "version": "4.1.4",
- "resolved": "https://registry.npmjs.org/rc-steps/-/rc-steps-4.1.4.tgz",
- "integrity": "sha512-qoCqKZWSpkh/b03ASGx1WhpKnuZcRWmvuW+ZUu4mvMdfvFzVxblTwUM+9aBd0mlEUFmt6GW8FXhMpHkK3Uzp3w==",
- "requires": {
- "@babel/runtime": "^7.10.2",
- "classnames": "^2.2.3",
- "rc-util": "^5.0.1"
- }
- },
- "rc-switch": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/rc-switch/-/rc-switch-3.2.2.tgz",
- "integrity": "sha512-+gUJClsZZzvAHGy1vZfnwySxj+MjLlGRyXKXScrtCTcmiYNPzxDFOxdQ/3pK1Kt/0POvwJ/6ALOR8gwdXGhs+A==",
- "requires": {
- "@babel/runtime": "^7.10.1",
- "classnames": "^2.2.1",
- "rc-util": "^5.0.1"
- }
- },
- "rc-table": {
- "version": "7.26.0",
- "resolved": "https://registry.npmjs.org/rc-table/-/rc-table-7.26.0.tgz",
- "integrity": "sha512-0cD8e6S+DTGAt5nBZQIPFYEaIukn17sfa5uFL98faHlH/whZzD8ii3dbFL4wmUDEL4BLybhYop+QUfZJ4CPvNQ==",
- "requires": {
- "@babel/runtime": "^7.10.1",
- "classnames": "^2.2.5",
- "rc-resize-observer": "^1.1.0",
- "rc-util": "^5.22.5",
- "shallowequal": "^1.1.0"
- }
- },
- "rc-tabs": {
- "version": "12.1.0-alpha.1",
- "resolved": "https://registry.npmjs.org/rc-tabs/-/rc-tabs-12.1.0-alpha.1.tgz",
- "integrity": "sha512-M+B88WEnGSuE+mR54fpgPbZLAakzxa/H6FmEetLBl5WG4I3AcwSk9amuIPC/tu0KXBl+H6Bg5ZwrrEUOBUvgzg==",
- "requires": {
- "@babel/runtime": "^7.11.2",
- "classnames": "2.x",
- "rc-dropdown": "~4.0.0",
- "rc-menu": "~9.6.0",
- "rc-motion": "^2.6.2",
- "rc-resize-observer": "^1.0.0",
- "rc-util": "^5.5.0"
- }
- },
- "rc-textarea": {
- "version": "0.3.7",
- "resolved": "https://registry.npmjs.org/rc-textarea/-/rc-textarea-0.3.7.tgz",
- "integrity": "sha512-yCdZ6binKmAQB13hc/oehh0E/QRwoPP1pjF21aHBxlgXO3RzPF6dUu4LG2R4FZ1zx/fQd2L1faktulrXOM/2rw==",
- "requires": {
- "@babel/runtime": "^7.10.1",
- "classnames": "^2.2.1",
- "rc-resize-observer": "^1.0.0",
- "rc-util": "^5.7.0",
- "shallowequal": "^1.1.0"
- }
- },
- "rc-tooltip": {
- "version": "5.2.2",
- "resolved": "https://registry.npmjs.org/rc-tooltip/-/rc-tooltip-5.2.2.tgz",
- "integrity": "sha512-jtQzU/18S6EI3lhSGoDYhPqNpWajMtS5VV/ld1LwyfrDByQpYmw/LW6U7oFXXLukjfDHQ7Ju705A82PRNFWYhg==",
- "requires": {
- "@babel/runtime": "^7.11.2",
- "classnames": "^2.3.1",
- "rc-trigger": "^5.0.0"
- }
- },
- "rc-tree": {
- "version": "5.7.0",
- "resolved": "https://registry.npmjs.org/rc-tree/-/rc-tree-5.7.0.tgz",
- "integrity": "sha512-F+Ewkv/UcutshnVBMISP+lPdHDlcsL+YH/MQDVWbk+QdkfID7vXiwrHMEZn31+2Rbbm21z/HPceGS8PXGMmnQg==",
- "requires": {
- "@babel/runtime": "^7.10.1",
- "classnames": "2.x",
- "rc-motion": "^2.0.1",
- "rc-util": "^5.16.1",
- "rc-virtual-list": "^3.4.8"
- }
- },
- "rc-tree-select": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/rc-tree-select/-/rc-tree-select-5.5.0.tgz",
- "integrity": "sha512-XS0Jvw4OjFz/Xvb2byEkBWv55JFKFz0HVvTBa/cPOHJaQh/3EaYwymEMnCCvGEzS1+5CfDVwMtA8j/v4rt1DHw==",
- "requires": {
- "@babel/runtime": "^7.10.1",
- "classnames": "2.x",
- "rc-select": "~14.1.0",
- "rc-tree": "~5.7.0",
- "rc-util": "^5.16.1"
- }
- },
- "rc-trigger": {
- "version": "5.3.1",
- "resolved": "https://registry.npmjs.org/rc-trigger/-/rc-trigger-5.3.1.tgz",
- "integrity": "sha512-5gaFbDkYSefZ14j2AdzucXzlWgU2ri5uEjkHvsf1ynRhdJbKxNOnw4PBZ9+FVULNGFiDzzlVF8RJnR9P/xrnKQ==",
- "requires": {
- "@babel/runtime": "^7.18.3",
- "classnames": "^2.2.6",
- "rc-align": "^4.0.0",
- "rc-motion": "^2.0.0",
- "rc-util": "^5.19.2"
- }
- },
- "rc-upload": {
- "version": "4.3.4",
- "resolved": "https://registry.npmjs.org/rc-upload/-/rc-upload-4.3.4.tgz",
- "integrity": "sha512-uVbtHFGNjHG/RyAfm9fluXB6pvArAGyAx8z7XzXXyorEgVIWj6mOlriuDm0XowDHYz4ycNK0nE0oP3cbFnzxiQ==",
- "requires": {
- "@babel/runtime": "^7.18.3",
- "classnames": "^2.2.5",
- "rc-util": "^5.2.0"
- }
- },
- "rc-util": {
- "version": "5.24.4",
- "resolved": "https://registry.npmjs.org/rc-util/-/rc-util-5.24.4.tgz",
- "integrity": "sha512-2a4RQnycV9eV7lVZPEJ7QwJRPlZNc06J7CwcwZo4vIHr3PfUqtYgl1EkUV9ETAc6VRRi8XZOMFhYG63whlIC9Q==",
- "requires": {
- "@babel/runtime": "^7.18.3",
- "react-is": "^16.12.0",
- "shallowequal": "^1.1.0"
- }
- },
- "rc-virtual-list": {
- "version": "3.4.8",
- "resolved": "https://registry.npmjs.org/rc-virtual-list/-/rc-virtual-list-3.4.8.tgz",
- "integrity": "sha512-qSN+Rv4i/E7RCTvTMr1uZo7f3crJJg/5DekoCagydo9zsXrxj07zsFSxqizqW+ldGA16lwa8So/bIbV9Ofjddg==",
- "requires": {
- "classnames": "^2.2.6",
- "rc-resize-observer": "^1.0.0",
- "rc-util": "^5.15.0"
- }
- },
- "react": {
- "version": "18.2.0",
- "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz",
- "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==",
- "requires": {
- "loose-envify": "^1.1.0"
- }
- },
- "react-dom": {
- "version": "18.2.0",
- "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz",
- "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==",
- "requires": {
- "loose-envify": "^1.1.0",
- "scheduler": "^0.23.0"
- }
- },
- "react-is": {
- "version": "16.13.1",
- "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
- "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
- },
- "react-refresh": {
- "version": "0.14.0",
- "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz",
- "integrity": "sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==",
- "dev": true
- },
- "readdirp": {
- "version": "3.6.0",
- "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
- "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
- "dev": true,
- "requires": {
- "picomatch": "^2.2.1"
- }
- },
- "regenerator-runtime": {
- "version": "0.13.9",
- "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz",
- "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA=="
- },
- "resize-observer-polyfill": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz",
- "integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg=="
- },
- "resolve": {
- "version": "1.22.1",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz",
- "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==",
- "dev": true,
- "requires": {
- "is-core-module": "^2.9.0",
- "path-parse": "^1.0.7",
- "supports-preserve-symlinks-flag": "^1.0.0"
- }
- },
- "rollup": {
- "version": "2.78.1",
- "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.78.1.tgz",
- "integrity": "sha512-VeeCgtGi4P+o9hIg+xz4qQpRl6R401LWEXBmxYKOV4zlF82lyhgh2hTZnheFUbANE8l2A41F458iwj2vEYaXJg==",
- "dev": true,
- "requires": {
- "fsevents": "~2.3.2"
- }
- },
- "safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
- "dev": true
- },
- "scheduler": {
- "version": "0.23.0",
- "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz",
- "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==",
- "requires": {
- "loose-envify": "^1.1.0"
- }
- },
- "scroll-into-view-if-needed": {
- "version": "2.2.29",
- "resolved": "https://registry.npmjs.org/scroll-into-view-if-needed/-/scroll-into-view-if-needed-2.2.29.tgz",
- "integrity": "sha512-hxpAR6AN+Gh53AdAimHM6C8oTN1ppwVZITihix+WqalywBeFcQ6LdQP5ABNl26nX8GTEL7VT+b8lKpdqq65wXg==",
- "requires": {
- "compute-scroll-into-view": "^1.0.17"
- }
- },
- "semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
- "dev": true
- },
- "shallowequal": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz",
- "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ=="
- },
- "simple-update-notifier": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-1.0.7.tgz",
- "integrity": "sha512-BBKgR84BJQJm6WjWFMHgLVuo61FBDSj1z/xSFUIozqO6wO7ii0JxCqlIud7Enr/+LhlbNI0whErq96P2qHNWew==",
- "dev": true,
- "requires": {
- "semver": "~7.0.0"
- },
- "dependencies": {
- "semver": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz",
- "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==",
- "dev": true
- }
- }
- },
- "source-map-js": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
- "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
- "dev": true
- },
- "sourcemap-codec": {
- "version": "1.4.8",
- "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz",
- "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==",
- "dev": true
- },
- "string-convert": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/string-convert/-/string-convert-0.2.1.tgz",
- "integrity": "sha512-u/1tdPl4yQnPBjnVrmdLo9gtuLvELKsAoRapekWggdiQNvvvum+jYF329d84NAa660KQw7pB2n36KrIKVoXa3A=="
- },
- "supports-color": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
- "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
- "dev": true,
- "requires": {
- "has-flag": "^3.0.0"
- }
- },
- "supports-preserve-symlinks-flag": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
- "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
- "dev": true
- },
- "to-fast-properties": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
- "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==",
- "dev": true
- },
- "to-regex-range": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
- "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
- "dev": true,
- "requires": {
- "is-number": "^7.0.0"
- }
- },
- "toggle-selection": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/toggle-selection/-/toggle-selection-1.0.6.tgz",
- "integrity": "sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ=="
- },
- "touch": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz",
- "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==",
- "dev": true,
- "requires": {
- "nopt": "~1.0.10"
- }
- },
- "typescript": {
- "version": "4.8.3",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.3.tgz",
- "integrity": "sha512-goMHfm00nWPa8UvR/CPSvykqf6dVV8x/dp0c5mFTMTIu0u0FlGWRioyy7Nn0PGAdHxpJZnuO/ut+PpQ8UiHAig==",
- "dev": true
- },
- "undefsafe": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz",
- "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==",
- "dev": true
- },
- "update-browserslist-db": {
- "version": "1.0.9",
- "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.9.tgz",
- "integrity": "sha512-/xsqn21EGVdXI3EXSum1Yckj3ZVZugqyOZQ/CxYPBD/R+ko9NSUScf8tFF4dOKY+2pvSSJA/S+5B8s4Zr4kyvg==",
- "dev": true,
- "requires": {
- "escalade": "^3.1.1",
- "picocolors": "^1.0.0"
- }
- },
- "vite": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/vite/-/vite-3.1.3.tgz",
- "integrity": "sha512-/3XWiktaopByM5bd8dqvHxRt5EEgRikevnnrpND0gRfNkrMrPaGGexhtLCzv15RcCMtV2CLw+BPas8YFeSG0KA==",
- "dev": true,
- "requires": {
- "esbuild": "^0.15.6",
- "fsevents": "~2.3.2",
- "postcss": "^8.4.16",
- "resolve": "^1.22.1",
- "rollup": "~2.78.0"
- }
- }
- }
-}
diff --git a/web/app/package.json b/web/app/package.json
deleted file mode 100644
index 5e8a02b..0000000
--- a/web/app/package.json
+++ /dev/null
@@ -1,25 +0,0 @@
-{
- "name": "vite-number-conversion",
- "private": true,
- "version": "0.0.0",
- "type": "module",
- "scripts": {
- "dev": "vite",
- "build": "tsc && vite build",
- "preview": "vite preview"
- },
- "dependencies": {
- "antd": "^4.23.2",
- "axios": "^0.27.2",
- "react": "^18.2.0",
- "react-dom": "^18.2.0"
- },
- "devDependencies": {
- "@types/react": "^18.0.17",
- "@types/react-dom": "^18.0.6",
- "@vitejs/plugin-react": "^2.1.0",
- "nodemon": "^2.0.20",
- "typescript": "^4.6.4",
- "vite": "^3.1.0"
- }
-}
diff --git a/web/app/src/App.css b/web/app/src/App.css
deleted file mode 100644
index 51150e6..0000000
--- a/web/app/src/App.css
+++ /dev/null
@@ -1,41 +0,0 @@
-#root {
- max-width: 1280px;
- margin: 0 auto;
- padding: 2rem;
- text-align: center;
-}
-
-.logo {
- height: 7em;
- padding: 1.5em;
- will-change: filter;
-}
-.logo:hover {
- filter: drop-shadow(0 0 2em #646cffaa);
-}
-.logo.react:hover {
- filter: drop-shadow(0 0 2em #61dafbaa);
-}
-
-@keyframes logo-spin {
- from {
- transform: rotate(0deg);
- }
- to {
- transform: rotate(360deg);
- }
-}
-
-@media (prefers-reduced-motion: no-preference) {
- a:nth-of-type(2) .logo {
- animation: logo-spin infinite 20s linear;
- }
-}
-
-.card {
- padding: 2em;
-}
-
-.read-the-docs {
- color: #888;
-}
diff --git a/web/app/src/App.tsx b/web/app/src/App.tsx
deleted file mode 100644
index bc41b01..0000000
--- a/web/app/src/App.tsx
+++ /dev/null
@@ -1,36 +0,0 @@
-import { useState } from 'react'
-import reactLogo from './assets/react.svg'
-import viteLogo from './assets/vite.svg'
-import './App.css'
-
-function App() {
- const [count, setCount] = useState(0)
-
- const hi: string = "Servus"
- return (
-
-
-
Vite + React
-
-
-
- Edit src/App.tsx
and save to test HMR
-
-
-
- Click on the Vite and React logos to learn more
-
-
- )
-}
-
-export default App
diff --git a/web/app/src/Sep.css b/web/app/src/Sep.css
deleted file mode 100644
index fae270a..0000000
--- a/web/app/src/Sep.css
+++ /dev/null
@@ -1,3 +0,0 @@
-#HELLOIHRBOYSDA {
- background-color: aliceblue;
-}
\ No newline at end of file
diff --git a/web/app/src/Sep.tsx b/web/app/src/Sep.tsx
deleted file mode 100644
index d4f46b4..0000000
--- a/web/app/src/Sep.tsx
+++ /dev/null
@@ -1,12 +0,0 @@
-import React from 'react'
-import ReactDOM from 'react-dom/client'
-import App from './App'
-import './Sep.css'
-
-ReactDOM.createRoot(document.getElementById('root') as HTMLElement).render(
-
-
-
-
-
-)
\ No newline at end of file
diff --git a/web/app/src/assets/react.svg b/web/app/src/assets/react.svg
deleted file mode 100644
index 6c87de9..0000000
--- a/web/app/src/assets/react.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/web/app/src/assets/vite.svg b/web/app/src/assets/vite.svg
deleted file mode 100644
index e7b8dfb..0000000
--- a/web/app/src/assets/vite.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/web/app/src/index.css b/web/app/src/index.css
deleted file mode 100644
index 917888c..0000000
--- a/web/app/src/index.css
+++ /dev/null
@@ -1,70 +0,0 @@
-:root {
- font-family: Inter, Avenir, Helvetica, Arial, sans-serif;
- font-size: 16px;
- line-height: 24px;
- font-weight: 400;
-
- color-scheme: light dark;
- color: rgba(255, 255, 255, 0.87);
- background-color: #242424;
-
- font-synthesis: none;
- text-rendering: optimizeLegibility;
- -webkit-font-smoothing: antialiased;
- -moz-osx-font-smoothing: grayscale;
- -webkit-text-size-adjust: 100%;
-}
-
-a {
- font-weight: 500;
- color: #646cff;
- text-decoration: inherit;
-}
-a:hover {
- color: #535bf2;
-}
-
-body {
- margin: 0;
- display: flex;
- place-items: center;
- min-width: 320px;
- min-height: 100vh;
-}
-
-h1 {
- font-size: 3.2em;
- line-height: 1.1;
-}
-
-button {
- border-radius: 8px;
- border: 1px solid transparent;
- padding: 0.6em 1.2em;
- font-size: 1em;
- font-weight: 500;
- font-family: inherit;
- background-color: #1a1a1a;
- cursor: pointer;
- transition: border-color 0.25s;
-}
-button:hover {
- border-color: #646cff;
-}
-button:focus,
-button:focus-visible {
- outline: 4px auto -webkit-focus-ring-color;
-}
-
-@media (prefers-color-scheme: light) {
- :root {
- color: #213547;
- background-color: #ffffff;
- }
- a:hover {
- color: #747bff;
- }
- button {
- background-color: #f9f9f9;
- }
-}
diff --git a/web/app/src/main.tsx b/web/app/src/main.tsx
deleted file mode 100644
index 611e848..0000000
--- a/web/app/src/main.tsx
+++ /dev/null
@@ -1,10 +0,0 @@
-import React from 'react'
-import ReactDOM from 'react-dom/client'
-import App from './App'
-import './index.css'
-
-ReactDOM.createRoot(document.getElementById('root') as HTMLElement).render(
-
-
-
-)
diff --git a/web/app/src/vite-env.d.ts b/web/app/src/vite-env.d.ts
deleted file mode 100644
index 11f02fe..0000000
--- a/web/app/src/vite-env.d.ts
+++ /dev/null
@@ -1 +0,0 @@
-///
diff --git a/web/app/tsconfig.json b/web/app/tsconfig.json
deleted file mode 100644
index 3d0a51a..0000000
--- a/web/app/tsconfig.json
+++ /dev/null
@@ -1,21 +0,0 @@
-{
- "compilerOptions": {
- "target": "ESNext",
- "useDefineForClassFields": true,
- "lib": ["DOM", "DOM.Iterable", "ESNext"],
- "allowJs": false,
- "skipLibCheck": true,
- "esModuleInterop": false,
- "allowSyntheticDefaultImports": true,
- "strict": true,
- "forceConsistentCasingInFileNames": true,
- "module": "ESNext",
- "moduleResolution": "Node",
- "resolveJsonModule": true,
- "isolatedModules": true,
- "noEmit": true,
- "jsx": "react-jsx"
- },
- "include": ["src"],
- "references": [{ "path": "./tsconfig.node.json" }]
-}
diff --git a/web/app/tsconfig.node.json b/web/app/tsconfig.node.json
deleted file mode 100644
index 9d31e2a..0000000
--- a/web/app/tsconfig.node.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
- "compilerOptions": {
- "composite": true,
- "module": "ESNext",
- "moduleResolution": "Node",
- "allowSyntheticDefaultImports": true
- },
- "include": ["vite.config.ts"]
-}
diff --git a/web/app/vite.config.ts b/web/app/vite.config.ts
deleted file mode 100644
index ea29c54..0000000
--- a/web/app/vite.config.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-import { defineConfig } from 'vite'
-import react from '@vitejs/plugin-react'
-
-// https://vitejs.dev/config/
-export default defineConfig({
- plugins: [react()],
- build: {
- rollupOptions: {
- output: {
- entryFileNames: `assets/[name].js`,
- chunkFileNames: `assets/[name].js`,
- assetFileNames: `assets/[name].[ext]`
- },
- input: {
- main: "src/main.tsx",
- sep: "src/Sep.tsx",
- },
- }
- }
-})
\ No newline at end of file
diff --git a/web/efs.go b/web/efs.go
index 48565fb..29e21f0 100644
--- a/web/efs.go
+++ b/web/efs.go
@@ -1,17 +1,8 @@
package web
import (
- "embed"
+ "embed"
)
-//go:embed "app/dist"
-var FrontendFiles embed.FS
-
-//go:embed "app/src"
-var DevelopeFiles embed.FS
-
-//go:embed "template"
-var TemplateFiles embed.FS
-
//go:embed "apitemplate"
-var ApiTemplateFiles embed.FS
\ No newline at end of file
+var ApiTemplateFiles embed.FS
diff --git a/web/template/base.tmpl.html b/web/template/base.tmpl.html
deleted file mode 100644
index 2723f37..0000000
--- a/web/template/base.tmpl.html
+++ /dev/null
@@ -1,16 +0,0 @@
-{{define "base"}}
-
-
-
-
- Vite + React + Go
-
- {{if not .ServerConfig.Development}}
-
- {{end}}
-
-
- {{template "main" .}}
-
-
-{{end}}
\ No newline at end of file
diff --git a/web/template/pages/main.tmpl.html b/web/template/pages/main.tmpl.html
deleted file mode 100644
index e9f5f14..0000000
--- a/web/template/pages/main.tmpl.html
+++ /dev/null
@@ -1,12 +0,0 @@
-{{define "main"}}
-
-
- {{template "vitejs" .}}
-
-
- {{if not .ServerConfig.Development}}
-
- {{end}}
-
-
-{{end}}
\ No newline at end of file
diff --git a/web/template/vitejs.tmpl.html b/web/template/vitejs.tmpl.html
deleted file mode 100644
index 816ea9b..0000000
--- a/web/template/vitejs.tmpl.html
+++ /dev/null
@@ -1,11 +0,0 @@
-{{define "vitejs"}}
- {{if .ServerConfig.Development}}
-
- {{end}}
-{{end}}
\ No newline at end of file
diff --git a/webDav.md b/webDav.md
deleted file mode 100644
index 873054f..0000000
--- a/webDav.md
+++ /dev/null
@@ -1,5 +0,0 @@
-## WebDav
-
-- URL: https://cloud.rpjosh.de/remote.php/dav/files/exchange/
-- Benutzer: exchange
-- API Passwort: Zj9cQ-eF3n6-R6DSt-8sJXf-kYseJ
\ No newline at end of file