diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..8ee54e8 --- /dev/null +++ b/.gitignore @@ -0,0 +1,30 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +.DS_Store +dist +dist-ssr +coverage +*.local + +/cypress/videos/ +/cypress/screenshots/ + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? + +*.tsbuildinfo diff --git a/README.md b/README.md new file mode 100644 index 0000000..bcdf134 --- /dev/null +++ b/README.md @@ -0,0 +1,29 @@ +# hade + +This template should help get you started developing with Vue 3 in Vite. + +## Recommended IDE Setup + +[VSCode](https://code.visualstudio.com/) + [Volar](https://marketplace.visualstudio.com/items?itemName=Vue.volar) (and disable Vetur). + +## Customize configuration + +See [Vite Configuration Reference](https://vite.dev/config/). + +## Project Setup + +```sh +npm install +``` + +### Compile and Hot-Reload for Development + +```sh +npm run dev +``` + +### Compile and Minify for Production + +```sh +npm run build +``` diff --git a/app/http/module/demo/api.go b/app/http/module/demo/api.go index 75fdeac..4ec8232 100644 --- a/app/http/module/demo/api.go +++ b/app/http/module/demo/api.go @@ -18,5 +18,5 @@ func Demo(c *gin.Context) { log := c.MustMake(contract.LogKey).(contract.Log) password := configService.GetString("database.mysql.password") log.Info(c, "ceshiceshi", map[string]interface{}{}) - c.JSON(200, password) + c.JSON(200, password+"测123") } diff --git a/app/http/route.go b/app/http/route.go index d14cd0f..763ec5f 100644 --- a/app/http/route.go +++ b/app/http/route.go @@ -6,7 +6,8 @@ import ( ) func Routes(core *gin.Engine) { - core.Static("/dist/", "./dist/") + // /路径先去./dist目录下查找文件是否存在,找到使用文件服务提供服务 + //core.Use(static.Serve("/", static.LocalFile("./dist", false))) err := demo.Register(core) if err != nil { diff --git a/config/development/app.yaml b/config/development/app.yaml index d6807a7..8f8e61a 100644 --- a/config/development/app.yaml +++ b/config/development/app.yaml @@ -4,3 +4,11 @@ swagger_open: true dev_fresh: 1 +dev: # 调试模式 + port: 8888 # 调试模式最终监听的端口,默认为8070 + backend: # 后端调试模式配置 + refresh_time: 3 # 调试模式后端更新时间,如果文件变更,等待3s才进行一次更新,能让频繁保存变更更为顺畅, 默认1s + port: 8890 # 后端监听端口,默认8072 + monitor_folder: "" # 监听文件夹地址,为空或者不填默认为AppFolder + frontend: # 前端调试模式配置 + port: 8889 # 前端监听端口, 默认8071 \ No newline at end of file diff --git a/framework/command/app.go b/framework/command/app.go index 33c7585..97fd854 100644 --- a/framework/command/app.go +++ b/framework/command/app.go @@ -12,7 +12,11 @@ import ( "time" ) +var appAddress = "" + func initAppCommand() *cobra.Command { + appStartCommand.Flags().StringVar(&appAddress, "address", "", "set app address") + appCommand.AddCommand(appStartCommand) return appCommand } @@ -38,10 +42,16 @@ var appStartCommand = &cobra.Command{ // 从kernel服务实例中获取引擎 core := kernelService.HttpEngine() + var addr string + if appAddress == "" { + addr = ":8070" + } else { + addr = appAddress + } // 创建一个Server服务 server := &http.Server{ Handler: core, - Addr: ":8888", + Addr: addr, } // 这个goroutine是启动服务的goroutine diff --git a/framework/command/build.go b/framework/command/build.go new file mode 100644 index 0000000..33b6c34 --- /dev/null +++ b/framework/command/build.go @@ -0,0 +1,118 @@ +package command + +import ( + "fmt" + "github.com/Superdanda/hade/framework/cobra" + "log" + "os" + "os/exec" + "path/filepath" + "runtime" +) + +func initBuildCommand() *cobra.Command { + buildCommand.AddCommand(buildSelfCommand) + buildCommand.AddCommand(buildBackendCommand) + buildCommand.AddCommand(buildFrontendCommand) + buildCommand.AddCommand(buildAllCommand) + return buildCommand +} + +var buildSelfCommand = &cobra.Command{ + Use: "self", + Short: "编译hade命令", + RunE: func(c *cobra.Command, args []string) error { + return goCommand.RunE(c, []string{"build"}) + }, +} + +var buildBackendCommand = &cobra.Command{ + Use: "backend", + Short: "使用go编译后端", + RunE: func(c *cobra.Command, args []string) error { + path, err := exec.LookPath("go") + if err != nil { + log.Fatalln("hade go: 请在Path路径中先安装go") + } + + // 根据系统设置输出文件名 + output := "hade" + if runtime.GOOS == "windows" { + output += ".exe" + } + + // 指定输出目录 + outputDir := filepath.Join(".") + err = os.MkdirAll(outputDir, 0755) + if err != nil { + return fmt.Errorf("无法创建输出目录: %v", err) + } + + // 设置工作目录(避免权限问题) + tempDir := filepath.Join(outputDir, "go-temp") + err = os.MkdirAll(tempDir, 0755) + if err != nil { + return fmt.Errorf("无法创建临时目录: %v", err) + } + + // 构建命令,设置环境变量 + cmd := exec.Command(path, "build", "-o", filepath.Join(outputDir, output), "./") + cmd.Env = append(os.Environ(), "GOTMPDIR="+tempDir) // 设置临时目录 + + // 执行编译命令并获取输出 + out, err := cmd.CombinedOutput() + if err != nil { + fmt.Println("go build error:") + fmt.Println(string(out)) + fmt.Println("--------------") + return err + } + fmt.Println(string(out)) + fmt.Println("编译hade成功") + return nil + }, +} + +var buildCommand = &cobra.Command{ + Use: "build", + Short: "编译相关命令", + RunE: func(c *cobra.Command, args []string) error { + if len(args) == 0 { + c.Help() + } + return nil + }, +} + +var buildFrontendCommand = &cobra.Command{ + Use: "frontend", + Short: "使用npm编译前端", + RunE: func(c *cobra.Command, args []string) error { + err := npmCommand.RunE(c, []string{"run", "build"}) + if err != nil { + fmt.Println("============= 前端编译失败 ============") + return err + } + fmt.Println("============= 前端编译成功 ============") + return nil + }, +} + +var buildAllCommand = &cobra.Command{ + Use: "all", + Short: "同时编译前后端", + RunE: func(c *cobra.Command, args []string) error { + fmt.Println("============= 开始编译前后端 ============") + err := buildFrontendCommand.RunE(c, args) + if err != nil { + return err + } + + err = buildBackendCommand.RunE(c, args) + if err != nil { + return err + } + + return nil + }, +} diff --git a/framework/command/dev.go b/framework/command/dev.go new file mode 100644 index 0000000..904f456 --- /dev/null +++ b/framework/command/dev.go @@ -0,0 +1,400 @@ +package command + +import ( + "errors" + "fmt" + "github.com/Superdanda/hade/framework" + "github.com/Superdanda/hade/framework/cobra" + "github.com/Superdanda/hade/framework/contract" + "github.com/Superdanda/hade/framework/util" + "github.com/fsnotify/fsnotify" + "net/http" + "net/http/httputil" + "net/url" + "os" + "os/exec" + "path/filepath" + "runtime" + "strconv" + "syscall" + "time" +) + +// devConfig 代表调试模式的配置信息 +type devConfig struct { + Port string // 调试模式最终监听的端口,默认为8070 + Backend struct { // 后端调试模式配置 + RefreshTime int // 调试模式后端更新时间,如果文件变更,等待3s才进行一次更新,能让频繁保存变更更为顺畅, 默认1s + Port string // 后端监听端口, 默认 8072 + MonitorFolder string // 监听文件夹,默认为AppFolder + } + Frontend struct { // 前端调试模式配置 + Port string // 前端启动端口, 默认8071 + } +} + +// 初始化配置文件 +func initDevConfig(c framework.Container) *devConfig { + devConfig := &devConfig{ + Port: "8087", + Backend: struct { + RefreshTime int + Port string + MonitorFolder string + }{ + 1, + "8072", + "", + }, + Frontend: struct { + Port string + }{ + "8071", + }, + } + configer := c.MustMake(contract.ConfigKey).(contract.Config) + if configer.IsExist("app.dev.port") { + devConfig.Port = configer.GetString("app.dev.port") + } + if configer.IsExist("app.dev.backend.refresh_time") { + devConfig.Backend.RefreshTime = configer.GetInt("app.dev.backend.refresh_time") + } + if configer.IsExist("app.dev.backend.port") { + devConfig.Backend.Port = configer.GetString("app.dev.backend.port") + } + monitorFolder := configer.GetString("app.dev.backend.monitor_folder") + if monitorFolder == "" { + appService := c.MustMake(contract.AppKey).(contract.App) + devConfig.Backend.MonitorFolder = appService.AppFolder() + } + + if configer.IsExist("app.dev.frontend.port") { + devConfig.Frontend.Port = configer.GetString("app.dev.frontend.port") + } + return devConfig +} + +// Proxy 代表serve启动的服务器代理 +type Proxy struct { + devConfig *devConfig // 配置文件 + proxyServer *http.Server // proxy的服务 + backendPid int // 当前的backend服务的pid + frontendPid int // 当前的frontend服务的pid +} + +// NewProxy 初始化一个Proxy +func NewProxy(c framework.Container) *Proxy { + devConfig := initDevConfig(c) + return &Proxy{ + devConfig: devConfig, + } +} + +func (p *Proxy) newProxyReverseProxy(frontend, backend *url.URL) *httputil.ReverseProxy { + if p.frontendPid == 0 && p.backendPid == 0 { + fmt.Println("前端和后端服务都不存在") + return nil + } + + // 后端服务存在 + if p.frontendPid == 0 && p.backendPid != 0 { + return httputil.NewSingleHostReverseProxy(backend) + } + + // 前端服务存在 + if p.backendPid == 0 && p.frontendPid != 0 { + return httputil.NewSingleHostReverseProxy(frontend) + } + + // 两个都有进程 + // 方式一: 后端服务的directory + directorBackend := func(req *http.Request) { + req.URL.Scheme = backend.Scheme + req.URL.Host = backend.Host + } + + // 方式二:后端服务的directory + //directorFrontend := func(req *http.Request) { + // req.URL.Scheme = frontend.Scheme + // req.URL.Host = frontend.Host + //} + + // 定义一个NotFoundErr + NotFoundErr := errors.New("response is 404, need to redirect") + return &httputil.ReverseProxy{ + Director: directorBackend, // 先转发到后端服务 + ModifyResponse: func(response *http.Response) error { + // 如果后端服务返回了404,我们返回NotFoundErr 会进入到errorHandler中 + if response.StatusCode == 404 { + return NotFoundErr + } + return nil + }, + ErrorHandler: func(writer http.ResponseWriter, request *http.Request, err error) { + if errors.Is(err, NotFoundErr) { + httputil.NewSingleHostReverseProxy(frontend).ServeHTTP(writer, request) + } + }, + } +} + +// rebuildBackend 重新编译后端 +func (p *Proxy) rebuildBackend() error { + // 重新编译hade + fmt.Println("重新编译后端服务") + cmdBuild := exec.Command("./hade", "build", "backend") + cmdBuild.Stdout = os.Stdout + cmdBuild.Stderr = os.Stderr + if err := cmdBuild.Start(); err == nil { + err = cmdBuild.Wait() + if err != nil { + return err + } + } + return nil +} + +// restartBackend 启动后端服务 +func (p *Proxy) restartBackend() error { + + // 杀死之前的进程 + if p.backendPid != 0 { + process, _ := os.FindProcess(p.backendPid) + if process != nil { + if runtime.GOOS == "windows" { + process.Kill() + } else { + err := process.Signal(syscall.SIGTERM) + if err != nil { + return err + } + } + } + p.backendPid = 0 + } + + // 设置随机端口,真实后端的端口 + port := p.devConfig.Backend.Port + hadeAddress := fmt.Sprintf(":" + port) + // 使用命令行启动后端进程 + + // 根据系统设置输出文件名 + execName := "./hade" + if runtime.GOOS == "windows" { + execName += ".exe" + } + + cmd := exec.Command(execName, "app", "start", "--address="+hadeAddress) + cmd.Stdout = os.NewFile(0, os.DevNull) + cmd.Stderr = os.Stderr + fmt.Println("启动后端服务: ", "http://127.0.0.1:"+port) + err := cmd.Start() + if err != nil { + fmt.Println(err) + } + p.backendPid = cmd.Process.Pid + fmt.Println("后端服务pid:", p.backendPid) + return nil +} + +// 启动前端服务 +func (p *Proxy) restartFrontend() error { + // 启动前端调试模式 + // 如果已经开启了npm run serve, 什么都不做 + if p.frontendPid != 0 { + return nil + } + + // 否则开启npm run serve + port := p.devConfig.Frontend.Port + path, err := exec.LookPath("npm") + if err != nil { + return err + } + cmd := exec.Command(path, "run", "dev", "--", "--port", port, "--host", "127.0.0.1") + cmd.Env = os.Environ() + cmd.Env = append(cmd.Env, fmt.Sprintf("%s%s", "PORT=", port)) + cmd.Stdout = os.NewFile(0, os.DevNull) + cmd.Stderr = os.Stderr + + // 因为npm run serve 是控制台挂起模式,所以这里使用go routine启动 + err = cmd.Start() + fmt.Println("启动前端服务: ", "http://127.0.0.1:"+port) + if err != nil { + fmt.Println(err) + } + p.frontendPid = cmd.Process.Pid + fmt.Println("前端服务pid:", p.frontendPid) + + return nil +} + +// 重启后端服务, 如果frontend为nil,则没有包含后端 +func (p *Proxy) startProxy(startFrontend, startBackend bool) error { + var backendURL, frontendURL *url.URL + var err error + + // 启动后端 + if startBackend { + if err := p.restartBackend(); err != nil { + return err + } + } + // 启动前端 + if startFrontend { + if err := p.restartFrontend(); err != nil { + return err + } + } + + // 如果已经启动过proxy了,就不要进行设置了 + if p.proxyServer != nil { + return nil + } + + if frontendURL, err = url.Parse(fmt.Sprintf("%s%s", "http://127.0.0.1:", p.devConfig.Frontend.Port)); err != nil { + return err + } + + if backendURL, err = url.Parse(fmt.Sprintf("%s%s", "http://127.0.0.1:", p.devConfig.Backend.Port)); err != nil { + return err + } + + // 设置反向代理 + proxyReverse := p.newProxyReverseProxy(frontendURL, backendURL) + p.proxyServer = &http.Server{ + Addr: "127.0.0.1:" + p.devConfig.Port, + Handler: proxyReverse, + } + + fmt.Println("代理服务启动:", "http://"+p.proxyServer.Addr) + // 启动proxy服务 + err = p.proxyServer.ListenAndServe() + if err != nil { + fmt.Println(err) + } + return nil +} + +// monitorBackend 监听应用文件 +func (p *Proxy) monitorBackend() error { + // 监听 + watcher, err := fsnotify.NewWatcher() + if err != nil { + return err + } + defer watcher.Close() + + appFolder := p.devConfig.Backend.MonitorFolder + fmt.Println("监控文件夹:", appFolder) + filepath.Walk(appFolder, func(path string, info os.FileInfo, err error) error { + if info != nil && !info.IsDir() { + return nil + } + if util.IsHiddenDirectory(path) { + return nil + } + return watcher.Add(path) + }) + + refreshTime := p.devConfig.Backend.RefreshTime + t := time.NewTimer(time.Duration(refreshTime) * time.Second) + t.Stop() + for { + select { + case <-t.C: + fmt.Println("...检测到文件更新,重启服务开始...") + if err := p.rebuildBackend(); err != nil { + fmt.Println("重新编译失败:", err.Error()) + } else { + if err := p.restartBackend(); err != nil { + fmt.Println("重新启动失败:", err.Error()) + } + } + fmt.Println("...检测到文件更新,重启服务结束...") + t.Stop() + case _, ok := <-watcher.Events: + if !ok { + continue + } + t.Reset(time.Duration(refreshTime) * time.Second) + case err, ok := <-watcher.Errors: + if !ok { + continue + } + fmt.Println("监听文件夹错误:", err.Error()) + t.Reset(time.Duration(refreshTime) * time.Second) + } + } + return nil +} + +// 初始化Dev命令 +func initDevCommand() *cobra.Command { + devCommand.AddCommand(devBackendCommand) + devCommand.AddCommand(devFrontendCommand) + devCommand.AddCommand(devAllCommand) + return devCommand +} + +// devCommand 为调试模式的一级命令 +var devCommand = &cobra.Command{ + Use: "dev", + Short: "调试模式", + RunE: func(c *cobra.Command, args []string) error { + c.Help() + return nil + }, +} + +// devBackendCommand 启动后端调试模式 +var devBackendCommand = &cobra.Command{ + Use: "backend", + Short: "启动后端调试模式", + RunE: func(c *cobra.Command, args []string) error { + proxy := NewProxy(c.GetContainer()) + go proxy.monitorBackend() + if err := proxy.startProxy(false, true); err != nil { + return err + } + return nil + }, +} + +// devFrontendCommand 启动前端调试模式 +var devFrontendCommand = &cobra.Command{ + Use: "frontend", + Short: "前端调试模式", + RunE: func(c *cobra.Command, args []string) error { + + // 启动前端服务 + proxy := NewProxy(c.GetContainer()) + return proxy.startProxy(true, false) + + }, +} + +var devAllCommand = &cobra.Command{ + Use: "all", + Short: "同时启动前端和后端调试", + RunE: func(c *cobra.Command, args []string) error { + proxy := NewProxy(c.GetContainer()) + go proxy.monitorBackend() + if err := proxy.startProxy(true, true); err != nil { + return err + } + + //记录后端的pid到本地文件 + container := c.GetContainer() + app := container.MustMake(contract.AppKey).(contract.App) + storageFolder := app.StorageFolder() + pidFile := filepath.Join(storageFolder, "backend.pid") + // 将 backendPid 写入文件 + pid := strconv.Itoa(proxy.backendPid) // 将 pid 转为字符串 + if err := os.WriteFile(pidFile, []byte(pid), 0666); err != nil { + return fmt.Errorf("无法写入 PID 文件: %w", err) + } + + return nil + }, +} diff --git a/framework/command/go_cmd.go b/framework/command/go_cmd.go new file mode 100644 index 0000000..25dafb3 --- /dev/null +++ b/framework/command/go_cmd.go @@ -0,0 +1,21 @@ +package command + +import ( + "log" + "os/exec" + + "github.com/Superdanda/hade/framework/cobra" +) + +// go just run local go bin +var goCommand = &cobra.Command{ + Use: "go", + Short: "运行go命令,要求go必须安装", + RunE: func(c *cobra.Command, args []string) error { + path, err := exec.LookPath("go") + if err != nil { + log.Fatalln("请在PATH路径中安装go") + } + return runCommand(path, args) + }, +} diff --git a/framework/command/kernel.go b/framework/command/kernel.go index bb0470f..cfbac04 100644 --- a/framework/command/kernel.go +++ b/framework/command/kernel.go @@ -1,10 +1,28 @@ package command -import "github.com/Superdanda/hade/framework/cobra" +import ( + "fmt" + "github.com/Superdanda/hade/framework/cobra" + "os" + "os/exec" +) func AddKernelCommands(root *cobra.Command) { root.AddCommand(initCronCommand()) // 挂载AppCommand命令 root.AddCommand(initAppCommand()) root.AddCommand(initEnvCommand()) + root.AddCommand(initBuildCommand()) + root.AddCommand(initDevCommand()) +} + +// 封装通用的命令执行器 +func runCommand(path string, args []string) error { + cmd := exec.Command(path, args...) + cmd.Stdout = os.Stdout + cmd.Stderr = os.Stderr + if err := cmd.Run(); err != nil { + return fmt.Errorf("命令执行失败: %v", err) + } + return nil } diff --git a/framework/command/npm_cmd.go b/framework/command/npm_cmd.go new file mode 100644 index 0000000..e765841 --- /dev/null +++ b/framework/command/npm_cmd.go @@ -0,0 +1,19 @@ +package command + +import ( + "github.com/Superdanda/hade/framework/cobra" + "log" + "os/exec" +) + +var npmCommand = &cobra.Command{ + Use: "npm", + Short: "运行npm命令,要求npm必须安装", + RunE: func(c *cobra.Command, args []string) error { + path, err := exec.LookPath("npm") + if err != nil { + log.Fatalln("请在PATH路径中安装npm") + } + return runCommand(path, args) + }, +} diff --git a/framework/contract/app.go b/framework/contract/app.go index 83ef4f6..004ceff 100644 --- a/framework/contract/app.go +++ b/framework/contract/app.go @@ -33,4 +33,6 @@ type App interface { AppId() string LoadAppConfig(mapString map[string]string) + + AppFolder() string } diff --git a/framework/middleware/static/static.go b/framework/middleware/static/static.go new file mode 100644 index 0000000..9ccb306 --- /dev/null +++ b/framework/middleware/static/static.go @@ -0,0 +1,69 @@ +package static + +import ( + "github.com/Superdanda/hade/framework/gin" + "net/http" + "os" + "path" + "strings" +) + +const INDEX = "index.html" + +type ServeFileSystem interface { + http.FileSystem + Exists(prefix string, path string) bool +} + +type localFileSystem struct { + http.FileSystem + root string + indexes bool +} + +func LocalFile(root string, indexes bool) *localFileSystem { + return &localFileSystem{ + FileSystem: gin.Dir(root, indexes), + root: root, + indexes: indexes, + } +} + +func (l *localFileSystem) Exists(prefix string, filepath string) bool { + if p := strings.TrimPrefix(filepath, prefix); len(p) < len(filepath) { + name := path.Join(l.root, p) + stats, err := os.Stat(name) + if err != nil { + return false + } + if stats.IsDir() { + if !l.indexes { + index := path.Join(name, INDEX) + _, err := os.Stat(index) + if err != nil { + return false + } + } + } + return true + } + return false +} + +func ServeRoot(urlPrefix, root string) gin.HandlerFunc { + return Serve(urlPrefix, LocalFile(root, false)) +} + +// Serve Static returns a middleware handler that serves static files in the given directory. +func Serve(urlPrefix string, fs ServeFileSystem) gin.HandlerFunc { + fileServer := http.FileServer(fs) + if urlPrefix != "" { + fileServer = http.StripPrefix(urlPrefix, fileServer) + } + return func(c *gin.Context) { + if fs.Exists(urlPrefix, c.Request.URL.Path) { + fileServer.ServeHTTP(c.Writer, c.Request) + c.Abort() + } + } +} diff --git a/framework/provider/app/service.go b/framework/provider/app/service.go index 40694e1..e783f73 100644 --- a/framework/provider/app/service.go +++ b/framework/provider/app/service.go @@ -88,6 +88,10 @@ func (h HadeApp) ConsoleFolder() string { return filepath.Join(h.BaseFolder(), "console") } +func (h HadeApp) AppFolder() string { + return filepath.Join(h.BaseFolder(), "app") +} + func (h HadeApp) AppId() string { return h.appId } diff --git a/hade.exe b/hade.exe new file mode 100644 index 0000000..99faf22 Binary files /dev/null and b/hade.exe differ diff --git a/index.html b/index.html new file mode 100644 index 0000000..99f583a --- /dev/null +++ b/index.html @@ -0,0 +1,13 @@ + + + + + + + Vite App + + +
+ + + diff --git a/jsconfig.json b/jsconfig.json new file mode 100644 index 0000000..5a1f2d2 --- /dev/null +++ b/jsconfig.json @@ -0,0 +1,8 @@ +{ + "compilerOptions": { + "paths": { + "@/*": ["./src/*"] + } + }, + "exclude": ["node_modules", "dist"] +} diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..905f9e2 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,1084 @@ +{ + "name": "hade", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "hade", + "version": "0.0.0", + "dependencies": { + "pinia": "^2.2.4", + "vue": "^3.5.12", + "vue-router": "^4.4.5" + }, + "devDependencies": { + "@vitejs/plugin-vue": "^5.1.4", + "vite": "^5.4.8" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.25.7", + "resolved": "https://registry.npmmirror.com/@babel/helper-string-parser/-/helper-string-parser-7.25.7.tgz", + "integrity": "sha512-CbkjYdsJNHFk8uqpEkpCvRs3YRp9tY6FmFY7wLMSYuGYkrdUi7r2lc4/wqsvlHoMznX3WJ9IP8giGPq68T/Y6g==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.25.7", + "resolved": "https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.7.tgz", + "integrity": "sha512-AM6TzwYqGChO45oiuPqwL2t20/HdMC1rTPAesnBCgPCSF1x3oN9MVUwQV2iyz4xqWrctwK5RNC8LV22kaQCNYg==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.25.8", + "resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.25.8.tgz", + "integrity": "sha512-HcttkxzdPucv3nNFmfOOMfFf64KgdJVqm1KaCm25dPGMLElo9nsLvXeJECQg8UzPuBGLyTSA0ZzqCtDSzKTEoQ==", + "dependencies": { + "@babel/types": "^7.25.8" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/types": { + "version": "7.25.8", + "resolved": "https://registry.npmmirror.com/@babel/types/-/types-7.25.8.tgz", + "integrity": "sha512-JWtuCu8VQsMladxVz/P4HzHUGCAwpuqacmowgXFs5XjxIgKuNjnLokQzuVjlTvIzODaDmpjT3oxcC48vyk9EWg==", + "dependencies": { + "@babel/helper-string-parser": "^7.25.7", + "@babel/helper-validator-identifier": "^7.25.7", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", + "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/android-arm/-/android-arm-0.21.5.tgz", + "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", + "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/android-x64/-/android-x64-0.21.5.tgz", + "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", + "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", + "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", + "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", + "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", + "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", + "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", + "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", + "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", + "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", + "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", + "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", + "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", + "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", + "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", + "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", + "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", + "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", + "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", + "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==" + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.24.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.24.0.tgz", + "integrity": "sha512-Q6HJd7Y6xdB48x8ZNVDOqsbh2uByBhgK8PiQgPhwkIw/HC/YX5Ghq2mQY5sRMZWHb3VsFkWooUVOZHKr7DmDIA==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.24.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.24.0.tgz", + "integrity": "sha512-ijLnS1qFId8xhKjT81uBHuuJp2lU4x2yxa4ctFPtG+MqEE6+C5f/+X/bStmxapgmwLwiL3ih122xv8kVARNAZA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.24.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.24.0.tgz", + "integrity": "sha512-bIv+X9xeSs1XCk6DVvkO+S/z8/2AMt/2lMqdQbMrmVpgFvXlmde9mLcbQpztXm1tajC3raFDqegsH18HQPMYtA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.24.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.24.0.tgz", + "integrity": "sha512-X6/nOwoFN7RT2svEQWUsW/5C/fYMBe4fnLK9DQk4SX4mgVBiTA9h64kjUYPvGQ0F/9xwJ5U5UfTbl6BEjaQdBQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.24.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.24.0.tgz", + "integrity": "sha512-0KXvIJQMOImLCVCz9uvvdPgfyWo93aHHp8ui3FrtOP57svqrF/roSSR5pjqL2hcMp0ljeGlU4q9o/rQaAQ3AYA==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.24.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.24.0.tgz", + "integrity": "sha512-it2BW6kKFVh8xk/BnHfakEeoLPv8STIISekpoF+nBgWM4d55CZKc7T4Dx1pEbTnYm/xEKMgy1MNtYuoA8RFIWw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.24.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.24.0.tgz", + "integrity": "sha512-i0xTLXjqap2eRfulFVlSnM5dEbTVque/3Pi4g2y7cxrs7+a9De42z4XxKLYJ7+OhE3IgxvfQM7vQc43bwTgPwA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.24.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.24.0.tgz", + "integrity": "sha512-9E6MKUJhDuDh604Qco5yP/3qn3y7SLXYuiC0Rpr89aMScS2UAmK1wHP2b7KAa1nSjWJc/f/Lc0Wl1L47qjiyQw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.24.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.24.0.tgz", + "integrity": "sha512-2XFFPJ2XMEiF5Zi2EBf4h73oR1V/lycirxZxHZNc93SqDN/IWhYYSYj8I9381ikUFXZrz2v7r2tOVk2NBwxrWw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.24.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.24.0.tgz", + "integrity": "sha512-M3Dg4hlwuntUCdzU7KjYqbbd+BLq3JMAOhCKdBE3TcMGMZbKkDdJ5ivNdehOssMCIokNHFOsv7DO4rlEOfyKpg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.24.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.24.0.tgz", + "integrity": "sha512-mjBaoo4ocxJppTorZVKWFpy1bfFj9FeCMJqzlMQGjpNPY9JwQi7OuS1axzNIk0nMX6jSgy6ZURDZ2w0QW6D56g==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.24.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.24.0.tgz", + "integrity": "sha512-ZXFk7M72R0YYFN5q13niV0B7G8/5dcQ9JDp8keJSfr3GoZeXEoMHP/HlvqROA3OMbMdfr19IjCeNAnPUG93b6A==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.24.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.24.0.tgz", + "integrity": "sha512-w1i+L7kAXZNdYl+vFvzSZy8Y1arS7vMgIy8wusXJzRrPyof5LAb02KGr1PD2EkRcl73kHulIID0M501lN+vobQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.24.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.24.0.tgz", + "integrity": "sha512-VXBrnPWgBpVDCVY6XF3LEW0pOU51KbaHhccHw6AS6vBWIC60eqsH19DAeeObl+g8nKAz04QFdl/Cefta0xQtUQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.24.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.24.0.tgz", + "integrity": "sha512-xrNcGDU0OxVcPTH/8n/ShH4UevZxKIO6HJFK0e15XItZP2UcaiLFd5kiX7hJnqCbSztUF8Qot+JWBC/QXRPYWQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.24.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.24.0.tgz", + "integrity": "sha512-fbMkAF7fufku0N2dE5TBXcNlg0pt0cJue4xBRE2Qc5Vqikxr4VCgKj/ht6SMdFcOacVA9rqF70APJ8RN/4vMJw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@types/estree": { + "version": "1.0.6", + "resolved": "https://registry.npmmirror.com/@types/estree/-/estree-1.0.6.tgz", + "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", + "dev": true + }, + "node_modules/@vitejs/plugin-vue": { + "version": "5.1.4", + "resolved": "https://registry.npmmirror.com/@vitejs/plugin-vue/-/plugin-vue-5.1.4.tgz", + "integrity": "sha512-N2XSI2n3sQqp5w7Y/AN/L2XDjBIRGqXko+eDp42sydYSBeJuSm5a1sLf8zakmo8u7tA8NmBgoDLA1HeOESjp9A==", + "dev": true, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "peerDependencies": { + "vite": "^5.0.0", + "vue": "^3.2.25" + } + }, + "node_modules/@vue/compiler-core": { + "version": "3.5.12", + "resolved": "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.5.12.tgz", + "integrity": "sha512-ISyBTRMmMYagUxhcpyEH0hpXRd/KqDU4ymofPgl2XAkY9ZhQ+h0ovEZJIiPop13UmR/54oA2cgMDjgroRelaEw==", + "dependencies": { + "@babel/parser": "^7.25.3", + "@vue/shared": "3.5.12", + "entities": "^4.5.0", + "estree-walker": "^2.0.2", + "source-map-js": "^1.2.0" + } + }, + "node_modules/@vue/compiler-dom": { + "version": "3.5.12", + "resolved": "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.5.12.tgz", + "integrity": "sha512-9G6PbJ03uwxLHKQ3P42cMTi85lDRvGLB2rSGOiQqtXELat6uI4n8cNz9yjfVHRPIu+MsK6TE418Giruvgptckg==", + "dependencies": { + "@vue/compiler-core": "3.5.12", + "@vue/shared": "3.5.12" + } + }, + "node_modules/@vue/compiler-sfc": { + "version": "3.5.12", + "resolved": "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.5.12.tgz", + "integrity": "sha512-2k973OGo2JuAa5+ZlekuQJtitI5CgLMOwgl94BzMCsKZCX/xiqzJYzapl4opFogKHqwJk34vfsaKpfEhd1k5nw==", + "dependencies": { + "@babel/parser": "^7.25.3", + "@vue/compiler-core": "3.5.12", + "@vue/compiler-dom": "3.5.12", + "@vue/compiler-ssr": "3.5.12", + "@vue/shared": "3.5.12", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.11", + "postcss": "^8.4.47", + "source-map-js": "^1.2.0" + } + }, + "node_modules/@vue/compiler-ssr": { + "version": "3.5.12", + "resolved": "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.5.12.tgz", + "integrity": "sha512-eLwc7v6bfGBSM7wZOGPmRavSWzNFF6+PdRhE+VFJhNCgHiF8AM7ccoqcv5kBXA2eWUfigD7byekvf/JsOfKvPA==", + "dependencies": { + "@vue/compiler-dom": "3.5.12", + "@vue/shared": "3.5.12" + } + }, + "node_modules/@vue/devtools-api": { + "version": "6.6.4", + "resolved": "https://registry.npmmirror.com/@vue/devtools-api/-/devtools-api-6.6.4.tgz", + "integrity": "sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==" + }, + "node_modules/@vue/reactivity": { + "version": "3.5.12", + "resolved": "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.5.12.tgz", + "integrity": "sha512-UzaN3Da7xnJXdz4Okb/BGbAaomRHc3RdoWqTzlvd9+WBR5m3J39J1fGcHes7U3za0ruYn/iYy/a1euhMEHvTAg==", + "dependencies": { + "@vue/shared": "3.5.12" + } + }, + "node_modules/@vue/runtime-core": { + "version": "3.5.12", + "resolved": "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.5.12.tgz", + "integrity": "sha512-hrMUYV6tpocr3TL3Ad8DqxOdpDe4zuQY4HPY3X/VRh+L2myQO8MFXPAMarIOSGNu0bFAjh1yBkMPXZBqCk62Uw==", + "dependencies": { + "@vue/reactivity": "3.5.12", + "@vue/shared": "3.5.12" + } + }, + "node_modules/@vue/runtime-dom": { + "version": "3.5.12", + "resolved": "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.5.12.tgz", + "integrity": "sha512-q8VFxR9A2MRfBr6/55Q3umyoN7ya836FzRXajPB6/Vvuv0zOPL+qltd9rIMzG/DbRLAIlREmnLsplEF/kotXKA==", + "dependencies": { + "@vue/reactivity": "3.5.12", + "@vue/runtime-core": "3.5.12", + "@vue/shared": "3.5.12", + "csstype": "^3.1.3" + } + }, + "node_modules/@vue/server-renderer": { + "version": "3.5.12", + "resolved": "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.5.12.tgz", + "integrity": "sha512-I3QoeDDeEPZm8yR28JtY+rk880Oqmj43hreIBVTicisFTx/Dl7JpG72g/X7YF8hnQD3IFhkky5i2bPonwrTVPg==", + "dependencies": { + "@vue/compiler-ssr": "3.5.12", + "@vue/shared": "3.5.12" + }, + "peerDependencies": { + "vue": "3.5.12" + } + }, + "node_modules/@vue/shared": { + "version": "3.5.12", + "resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.5.12.tgz", + "integrity": "sha512-L2RPSAwUFbgZH20etwrXyVyCBu9OxRSi8T/38QsvnkJyvq2LufW2lDCOzm7t/U9C1mkhJGWYfCuFBCmIuNivrg==" + }, + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmmirror.com/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" + }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmmirror.com/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/esbuild": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/esbuild/-/esbuild-0.21.5.tgz", + "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.21.5", + "@esbuild/android-arm": "0.21.5", + "@esbuild/android-arm64": "0.21.5", + "@esbuild/android-x64": "0.21.5", + "@esbuild/darwin-arm64": "0.21.5", + "@esbuild/darwin-x64": "0.21.5", + "@esbuild/freebsd-arm64": "0.21.5", + "@esbuild/freebsd-x64": "0.21.5", + "@esbuild/linux-arm": "0.21.5", + "@esbuild/linux-arm64": "0.21.5", + "@esbuild/linux-ia32": "0.21.5", + "@esbuild/linux-loong64": "0.21.5", + "@esbuild/linux-mips64el": "0.21.5", + "@esbuild/linux-ppc64": "0.21.5", + "@esbuild/linux-riscv64": "0.21.5", + "@esbuild/linux-s390x": "0.21.5", + "@esbuild/linux-x64": "0.21.5", + "@esbuild/netbsd-x64": "0.21.5", + "@esbuild/openbsd-x64": "0.21.5", + "@esbuild/sunos-x64": "0.21.5", + "@esbuild/win32-arm64": "0.21.5", + "@esbuild/win32-ia32": "0.21.5", + "@esbuild/win32-x64": "0.21.5" + } + }, + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/magic-string": { + "version": "0.30.12", + "resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.30.12.tgz", + "integrity": "sha512-Ea8I3sQMVXr8JhN4z+H/d8zwo+tYDgHE9+5G4Wnrwhs0gaK9fXTKx0Tw5Xwsd/bCPTTZNRAdpyzvoeORe9LYpw==", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0" + } + }, + "node_modules/nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==" + }, + "node_modules/pinia": { + "version": "2.2.4", + "resolved": "https://registry.npmmirror.com/pinia/-/pinia-2.2.4.tgz", + "integrity": "sha512-K7ZhpMY9iJ9ShTC0cR2+PnxdQRuwVIsXDO/WIEV/RnMC/vmSoKDTKW/exNQYPI+4ij10UjXqdNiEHwn47McANQ==", + "dependencies": { + "@vue/devtools-api": "^6.6.3", + "vue-demi": "^0.14.10" + }, + "funding": { + "url": "https://github.com/sponsors/posva" + }, + "peerDependencies": { + "@vue/composition-api": "^1.4.0", + "typescript": ">=4.4.4", + "vue": "^2.6.14 || ^3.3.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + }, + "typescript": { + "optional": true + } + } + }, + "node_modules/pinia/node_modules/vue-demi": { + "version": "0.14.10", + "resolved": "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.14.10.tgz", + "integrity": "sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==", + "hasInstallScript": true, + "bin": { + "vue-demi-fix": "bin/vue-demi-fix.js", + "vue-demi-switch": "bin/vue-demi-switch.js" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@vue/composition-api": "^1.0.0-rc.1", + "vue": "^3.0.0-0 || ^2.6.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } + } + }, + "node_modules/postcss": { + "version": "8.4.47", + "resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.4.47.tgz", + "integrity": "sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.1.0", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/rollup": { + "version": "4.24.0", + "resolved": "https://registry.npmmirror.com/rollup/-/rollup-4.24.0.tgz", + "integrity": "sha512-DOmrlGSXNk1DM0ljiQA+i+o0rSLhtii1je5wgk60j49d1jHT5YYttBv1iWOnYSTG+fZZESUOSNiAl89SIet+Cg==", + "dev": true, + "dependencies": { + "@types/estree": "1.0.6" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.24.0", + "@rollup/rollup-android-arm64": "4.24.0", + "@rollup/rollup-darwin-arm64": "4.24.0", + "@rollup/rollup-darwin-x64": "4.24.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.24.0", + "@rollup/rollup-linux-arm-musleabihf": "4.24.0", + "@rollup/rollup-linux-arm64-gnu": "4.24.0", + "@rollup/rollup-linux-arm64-musl": "4.24.0", + "@rollup/rollup-linux-powerpc64le-gnu": "4.24.0", + "@rollup/rollup-linux-riscv64-gnu": "4.24.0", + "@rollup/rollup-linux-s390x-gnu": "4.24.0", + "@rollup/rollup-linux-x64-gnu": "4.24.0", + "@rollup/rollup-linux-x64-musl": "4.24.0", + "@rollup/rollup-win32-arm64-msvc": "4.24.0", + "@rollup/rollup-win32-ia32-msvc": "4.24.0", + "@rollup/rollup-win32-x64-msvc": "4.24.0", + "fsevents": "~2.3.2" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "engines": { + "node": ">=4" + } + }, + "node_modules/vite": { + "version": "5.4.9", + "resolved": "https://registry.npmmirror.com/vite/-/vite-5.4.9.tgz", + "integrity": "sha512-20OVpJHh0PAM0oSOELa5GaZNWeDjcAvQjGXy2Uyr+Tp+/D2/Hdz6NLgpJLsarPTA2QJ6v8mX2P1ZfbsSKvdMkg==", + "dev": true, + "dependencies": { + "esbuild": "^0.21.3", + "postcss": "^8.4.43", + "rollup": "^4.20.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || >=20.0.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/vue": { + "version": "3.5.12", + "resolved": "https://registry.npmmirror.com/vue/-/vue-3.5.12.tgz", + "integrity": "sha512-CLVZtXtn2ItBIi/zHZ0Sg1Xkb7+PU32bJJ8Bmy7ts3jxXTcbfsEfBivFYYWz1Hur+lalqGAh65Coin0r+HRUfg==", + "dependencies": { + "@vue/compiler-dom": "3.5.12", + "@vue/compiler-sfc": "3.5.12", + "@vue/runtime-dom": "3.5.12", + "@vue/server-renderer": "3.5.12", + "@vue/shared": "3.5.12" + }, + "peerDependencies": { + "typescript": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/vue-router": { + "version": "4.4.5", + "resolved": "https://registry.npmmirror.com/vue-router/-/vue-router-4.4.5.tgz", + "integrity": "sha512-4fKZygS8cH1yCyuabAXGUAsyi1b2/o/OKgu/RUb+znIYOxPRxdkytJEx+0wGcpBE1pX6vUgh5jwWOKRGvuA/7Q==", + "dependencies": { + "@vue/devtools-api": "^6.6.4" + }, + "funding": { + "url": "https://github.com/sponsors/posva" + }, + "peerDependencies": { + "vue": "^3.2.0" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..b11e5b4 --- /dev/null +++ b/package.json @@ -0,0 +1,20 @@ +{ + "name": "hade", + "version": "0.0.0", + "private": true, + "type": "module", + "scripts": { + "dev": "vite", + "build": "vite build", + "preview": "vite preview" + }, + "dependencies": { + "pinia": "^2.2.4", + "vue": "^3.5.12", + "vue-router": "^4.4.5" + }, + "devDependencies": { + "@vitejs/plugin-vue": "^5.1.4", + "vite": "^5.4.8" + } +} diff --git a/public/favicon.ico b/public/favicon.ico new file mode 100644 index 0000000..df36fcf Binary files /dev/null and b/public/favicon.ico differ diff --git a/src/App.vue b/src/App.vue new file mode 100644 index 0000000..1c0f320 --- /dev/null +++ b/src/App.vue @@ -0,0 +1,85 @@ + + + + + diff --git a/src/assets/base.css b/src/assets/base.css new file mode 100644 index 0000000..8816868 --- /dev/null +++ b/src/assets/base.css @@ -0,0 +1,86 @@ +/* color palette from */ +:root { + --vt-c-white: #ffffff; + --vt-c-white-soft: #f8f8f8; + --vt-c-white-mute: #f2f2f2; + + --vt-c-black: #181818; + --vt-c-black-soft: #222222; + --vt-c-black-mute: #282828; + + --vt-c-indigo: #2c3e50; + + --vt-c-divider-light-1: rgba(60, 60, 60, 0.29); + --vt-c-divider-light-2: rgba(60, 60, 60, 0.12); + --vt-c-divider-dark-1: rgba(84, 84, 84, 0.65); + --vt-c-divider-dark-2: rgba(84, 84, 84, 0.48); + + --vt-c-text-light-1: var(--vt-c-indigo); + --vt-c-text-light-2: rgba(60, 60, 60, 0.66); + --vt-c-text-dark-1: var(--vt-c-white); + --vt-c-text-dark-2: rgba(235, 235, 235, 0.64); +} + +/* semantic color variables for this project */ +:root { + --color-background: var(--vt-c-white); + --color-background-soft: var(--vt-c-white-soft); + --color-background-mute: var(--vt-c-white-mute); + + --color-border: var(--vt-c-divider-light-2); + --color-border-hover: var(--vt-c-divider-light-1); + + --color-heading: var(--vt-c-text-light-1); + --color-text: var(--vt-c-text-light-1); + + --section-gap: 160px; +} + +@media (prefers-color-scheme: dark) { + :root { + --color-background: var(--vt-c-black); + --color-background-soft: var(--vt-c-black-soft); + --color-background-mute: var(--vt-c-black-mute); + + --color-border: var(--vt-c-divider-dark-2); + --color-border-hover: var(--vt-c-divider-dark-1); + + --color-heading: var(--vt-c-text-dark-1); + --color-text: var(--vt-c-text-dark-2); + } +} + +*, +*::before, +*::after { + box-sizing: border-box; + margin: 0; + font-weight: normal; +} + +body { + min-height: 100vh; + color: var(--color-text); + background: var(--color-background); + transition: + color 0.5s, + background-color 0.5s; + line-height: 1.6; + font-family: + Inter, + -apple-system, + BlinkMacSystemFont, + 'Segoe UI', + Roboto, + Oxygen, + Ubuntu, + Cantarell, + 'Fira Sans', + 'Droid Sans', + 'Helvetica Neue', + sans-serif; + font-size: 15px; + text-rendering: optimizeLegibility; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} diff --git a/src/assets/logo.svg b/src/assets/logo.svg new file mode 100644 index 0000000..7565660 --- /dev/null +++ b/src/assets/logo.svg @@ -0,0 +1 @@ + diff --git a/src/assets/main.css b/src/assets/main.css new file mode 100644 index 0000000..36fb845 --- /dev/null +++ b/src/assets/main.css @@ -0,0 +1,35 @@ +@import './base.css'; + +#app { + max-width: 1280px; + margin: 0 auto; + padding: 2rem; + font-weight: normal; +} + +a, +.green { + text-decoration: none; + color: hsla(160, 100%, 37%, 1); + transition: 0.4s; + padding: 3px; +} + +@media (hover: hover) { + a:hover { + background-color: hsla(160, 100%, 37%, 0.2); + } +} + +@media (min-width: 1024px) { + body { + display: flex; + place-items: center; + } + + #app { + display: grid; + grid-template-columns: 1fr 1fr; + padding: 0 2rem; + } +} diff --git a/src/components/HelloWorld.vue b/src/components/HelloWorld.vue new file mode 100644 index 0000000..f5f9833 --- /dev/null +++ b/src/components/HelloWorld.vue @@ -0,0 +1,44 @@ + + + + + diff --git a/src/components/TheWelcome.vue b/src/components/TheWelcome.vue new file mode 100644 index 0000000..e4d125f --- /dev/null +++ b/src/components/TheWelcome.vue @@ -0,0 +1,88 @@ + + + diff --git a/src/components/WelcomeItem.vue b/src/components/WelcomeItem.vue new file mode 100644 index 0000000..ac366d0 --- /dev/null +++ b/src/components/WelcomeItem.vue @@ -0,0 +1,86 @@ + + + diff --git a/src/components/icons/IconCommunity.vue b/src/components/icons/IconCommunity.vue new file mode 100644 index 0000000..2dc8b05 --- /dev/null +++ b/src/components/icons/IconCommunity.vue @@ -0,0 +1,7 @@ + diff --git a/src/components/icons/IconDocumentation.vue b/src/components/icons/IconDocumentation.vue new file mode 100644 index 0000000..6d4791c --- /dev/null +++ b/src/components/icons/IconDocumentation.vue @@ -0,0 +1,7 @@ + diff --git a/src/components/icons/IconEcosystem.vue b/src/components/icons/IconEcosystem.vue new file mode 100644 index 0000000..c3a4f07 --- /dev/null +++ b/src/components/icons/IconEcosystem.vue @@ -0,0 +1,7 @@ + diff --git a/src/components/icons/IconSupport.vue b/src/components/icons/IconSupport.vue new file mode 100644 index 0000000..7452834 --- /dev/null +++ b/src/components/icons/IconSupport.vue @@ -0,0 +1,7 @@ + diff --git a/src/components/icons/IconTooling.vue b/src/components/icons/IconTooling.vue new file mode 100644 index 0000000..660598d --- /dev/null +++ b/src/components/icons/IconTooling.vue @@ -0,0 +1,19 @@ + + diff --git a/src/main.js b/src/main.js new file mode 100644 index 0000000..5dcad83 --- /dev/null +++ b/src/main.js @@ -0,0 +1,14 @@ +import './assets/main.css' + +import { createApp } from 'vue' +import { createPinia } from 'pinia' + +import App from './App.vue' +import router from './router' + +const app = createApp(App) + +app.use(createPinia()) +app.use(router) + +app.mount('#app') diff --git a/src/router/index.js b/src/router/index.js new file mode 100644 index 0000000..a49ae50 --- /dev/null +++ b/src/router/index.js @@ -0,0 +1,23 @@ +import { createRouter, createWebHistory } from 'vue-router' +import HomeView from '../views/HomeView.vue' + +const router = createRouter({ + history: createWebHistory(import.meta.env.BASE_URL), + routes: [ + { + path: '/', + name: 'home', + component: HomeView + }, + { + path: '/about', + name: 'about', + // route level code-splitting + // this generates a separate chunk (About.[hash].js) for this route + // which is lazy-loaded when the route is visited. + component: () => import('../views/AboutView.vue') + } + ] +}) + +export default router diff --git a/src/stores/counter.js b/src/stores/counter.js new file mode 100644 index 0000000..b6757ba --- /dev/null +++ b/src/stores/counter.js @@ -0,0 +1,12 @@ +import { ref, computed } from 'vue' +import { defineStore } from 'pinia' + +export const useCounterStore = defineStore('counter', () => { + const count = ref(0) + const doubleCount = computed(() => count.value * 2) + function increment() { + count.value++ + } + + return { count, doubleCount, increment } +}) diff --git a/src/views/AboutView.vue b/src/views/AboutView.vue new file mode 100644 index 0000000..756ad2a --- /dev/null +++ b/src/views/AboutView.vue @@ -0,0 +1,15 @@ + + + diff --git a/src/views/HomeView.vue b/src/views/HomeView.vue new file mode 100644 index 0000000..6bb706f --- /dev/null +++ b/src/views/HomeView.vue @@ -0,0 +1,9 @@ + + + diff --git a/storage/log/coredemo.log.2024-10-22-09-12 b/storage/log/coredemo.log.2024-10-22-09-12 new file mode 100644 index 0000000..2686bdc --- /dev/null +++ b/storage/log/coredemo.log.2024-10-22-09-12 @@ -0,0 +1 @@ +[Info] 2024-10-22T09:12:51+08:00 "ceshiceshi" map[] diff --git a/storage/log/coredemo.log.2024-10-22-10-25 b/storage/log/coredemo.log.2024-10-22-10-25 new file mode 100644 index 0000000..da2eff4 --- /dev/null +++ b/storage/log/coredemo.log.2024-10-22-10-25 @@ -0,0 +1 @@ +[Info] 2024-10-22T10:25:46+08:00 "ceshiceshi" map[] diff --git a/storage/log/coredemo.log.2024-10-22-10-26 b/storage/log/coredemo.log.2024-10-22-10-26 new file mode 100644 index 0000000..b40bf7c --- /dev/null +++ b/storage/log/coredemo.log.2024-10-22-10-26 @@ -0,0 +1,2 @@ +[Info] 2024-10-22T10:26:03+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T10:26:58+08:00 "ceshiceshi" map[] diff --git a/storage/log/coredemo.log.2024-10-22-10-27 b/storage/log/coredemo.log.2024-10-22-10-27 new file mode 100644 index 0000000..ce4af7e --- /dev/null +++ b/storage/log/coredemo.log.2024-10-22-10-27 @@ -0,0 +1,11 @@ +[Info] 2024-10-22T10:27:00+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T10:27:01+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T10:27:01+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T10:27:02+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T10:27:02+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T10:27:03+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T10:27:04+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T10:27:04+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T10:27:05+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T10:27:05+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T10:27:06+08:00 "ceshiceshi" map[] diff --git a/storage/log/coredemo.log.2024-10-22-10-41 b/storage/log/coredemo.log.2024-10-22-10-41 new file mode 100644 index 0000000..dc7f0ab --- /dev/null +++ b/storage/log/coredemo.log.2024-10-22-10-41 @@ -0,0 +1,2 @@ +[Info] 2024-10-22T10:41:19+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T10:41:33+08:00 "ceshiceshi" map[] diff --git a/storage/log/coredemo.log.2024-10-22-10-43 b/storage/log/coredemo.log.2024-10-22-10-43 new file mode 100644 index 0000000..f791869 --- /dev/null +++ b/storage/log/coredemo.log.2024-10-22-10-43 @@ -0,0 +1,2 @@ +[Info] 2024-10-22T10:43:26+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T10:43:27+08:00 "ceshiceshi" map[] diff --git a/storage/log/coredemo.log.2024-10-22-10-55 b/storage/log/coredemo.log.2024-10-22-10-55 new file mode 100644 index 0000000..46ce1ac --- /dev/null +++ b/storage/log/coredemo.log.2024-10-22-10-55 @@ -0,0 +1,2 @@ +[Info] 2024-10-22T10:55:05+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T10:55:23+08:00 "ceshiceshi" map[] diff --git a/storage/log/coredemo.log.2024-10-22-10-56 b/storage/log/coredemo.log.2024-10-22-10-56 new file mode 100644 index 0000000..331f69b --- /dev/null +++ b/storage/log/coredemo.log.2024-10-22-10-56 @@ -0,0 +1,4 @@ +[Info] 2024-10-22T10:56:22+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T10:56:31+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T10:56:33+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T10:56:33+08:00 "ceshiceshi" map[] diff --git a/storage/log/coredemo.log.2024-10-22-12-40 b/storage/log/coredemo.log.2024-10-22-12-40 new file mode 100644 index 0000000..3930b94 --- /dev/null +++ b/storage/log/coredemo.log.2024-10-22-12-40 @@ -0,0 +1,6 @@ +[Info] 2024-10-22T12:40:24+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T12:40:25+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T12:40:27+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T12:40:55+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T12:40:56+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T12:40:57+08:00 "ceshiceshi" map[] diff --git a/storage/log/coredemo.log.2024-10-22-12-41 b/storage/log/coredemo.log.2024-10-22-12-41 new file mode 100644 index 0000000..a8cf67f --- /dev/null +++ b/storage/log/coredemo.log.2024-10-22-12-41 @@ -0,0 +1,3 @@ +[Info] 2024-10-22T12:41:39+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T12:41:41+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T12:41:42+08:00 "ceshiceshi" map[] diff --git a/storage/log/coredemo.log.2024-10-22-12-42 b/storage/log/coredemo.log.2024-10-22-12-42 new file mode 100644 index 0000000..1461698 --- /dev/null +++ b/storage/log/coredemo.log.2024-10-22-12-42 @@ -0,0 +1,6 @@ +[Info] 2024-10-22T12:42:02+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T12:42:05+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T12:42:09+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T12:42:10+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T12:42:10+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T12:42:11+08:00 "ceshiceshi" map[] diff --git a/storage/log/coredemo.log.2024-10-22-12-43 b/storage/log/coredemo.log.2024-10-22-12-43 new file mode 100644 index 0000000..d802ef7 --- /dev/null +++ b/storage/log/coredemo.log.2024-10-22-12-43 @@ -0,0 +1,3 @@ +[Info] 2024-10-22T12:43:03+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T12:43:04+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T12:43:05+08:00 "ceshiceshi" map[] diff --git a/storage/log/coredemo.log.2024-10-22-12-45 b/storage/log/coredemo.log.2024-10-22-12-45 new file mode 100644 index 0000000..d0846d8 --- /dev/null +++ b/storage/log/coredemo.log.2024-10-22-12-45 @@ -0,0 +1 @@ +[Info] 2024-10-22T12:45:08+08:00 "ceshiceshi" map[] diff --git a/storage/log/coredemo.log.2024-10-22-12-52 b/storage/log/coredemo.log.2024-10-22-12-52 new file mode 100644 index 0000000..932307d --- /dev/null +++ b/storage/log/coredemo.log.2024-10-22-12-52 @@ -0,0 +1,5 @@ +[Info] 2024-10-22T12:52:16+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T12:52:17+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T12:52:18+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T12:52:19+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T12:52:20+08:00 "ceshiceshi" map[] diff --git a/storage/log/coredemo.log.2024-10-22-12-53 b/storage/log/coredemo.log.2024-10-22-12-53 new file mode 100644 index 0000000..4eae99d --- /dev/null +++ b/storage/log/coredemo.log.2024-10-22-12-53 @@ -0,0 +1,2 @@ +[Info] 2024-10-22T12:53:15+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T12:53:17+08:00 "ceshiceshi" map[] diff --git a/storage/log/coredemo.log.2024-10-22-12-54 b/storage/log/coredemo.log.2024-10-22-12-54 new file mode 100644 index 0000000..2007216 --- /dev/null +++ b/storage/log/coredemo.log.2024-10-22-12-54 @@ -0,0 +1,5 @@ +[Info] 2024-10-22T12:54:11+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T12:54:49+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T12:54:50+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T12:54:51+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T12:54:51+08:00 "ceshiceshi" map[] diff --git a/storage/log/coredemo.log.2024-10-22-12-56 b/storage/log/coredemo.log.2024-10-22-12-56 new file mode 100644 index 0000000..06223d1 --- /dev/null +++ b/storage/log/coredemo.log.2024-10-22-12-56 @@ -0,0 +1,5 @@ +[Info] 2024-10-22T12:56:47+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T12:56:48+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T12:56:49+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T12:56:51+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T12:56:52+08:00 "ceshiceshi" map[] diff --git a/storage/log/coredemo.log.2024-10-22-12-57 b/storage/log/coredemo.log.2024-10-22-12-57 new file mode 100644 index 0000000..b3b9c28 --- /dev/null +++ b/storage/log/coredemo.log.2024-10-22-12-57 @@ -0,0 +1,7 @@ +[Info] 2024-10-22T12:57:12+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T12:57:13+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T12:57:14+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T12:57:15+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T12:57:15+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T12:57:16+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T12:57:17+08:00 "ceshiceshi" map[] diff --git a/storage/log/coredemo.log.2024-10-22-12-58 b/storage/log/coredemo.log.2024-10-22-12-58 new file mode 100644 index 0000000..4eed4e3 --- /dev/null +++ b/storage/log/coredemo.log.2024-10-22-12-58 @@ -0,0 +1,4 @@ +[Info] 2024-10-22T12:58:04+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T12:58:05+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T12:58:05+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T12:58:07+08:00 "ceshiceshi" map[] diff --git a/storage/log/coredemo.log.2024-10-22-13-00 b/storage/log/coredemo.log.2024-10-22-13-00 new file mode 100644 index 0000000..6d72d28 --- /dev/null +++ b/storage/log/coredemo.log.2024-10-22-13-00 @@ -0,0 +1,2 @@ +[Info] 2024-10-22T13:00:02+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T13:00:05+08:00 "ceshiceshi" map[] diff --git a/storage/log/coredemo.log.2024-10-22-13-12 b/storage/log/coredemo.log.2024-10-22-13-12 new file mode 100644 index 0000000..edc7791 --- /dev/null +++ b/storage/log/coredemo.log.2024-10-22-13-12 @@ -0,0 +1,2 @@ +[Info] 2024-10-22T13:12:50+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T13:12:50+08:00 "ceshiceshi" map[] diff --git a/storage/log/coredemo.log.2024-10-22-14-18 b/storage/log/coredemo.log.2024-10-22-14-18 new file mode 100644 index 0000000..fbfe0f8 --- /dev/null +++ b/storage/log/coredemo.log.2024-10-22-14-18 @@ -0,0 +1,3 @@ +[Info] 2024-10-22T14:18:21+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T14:18:24+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T14:18:25+08:00 "ceshiceshi" map[] diff --git a/storage/log/coredemo.log.2024-10-22-14-19 b/storage/log/coredemo.log.2024-10-22-14-19 new file mode 100644 index 0000000..f309be6 --- /dev/null +++ b/storage/log/coredemo.log.2024-10-22-14-19 @@ -0,0 +1,3 @@ +[Info] 2024-10-22T14:19:03+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T14:19:04+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T14:19:06+08:00 "ceshiceshi" map[] diff --git a/storage/log/coredemo.log.2024-10-22-14-26 b/storage/log/coredemo.log.2024-10-22-14-26 new file mode 100644 index 0000000..db1b852 --- /dev/null +++ b/storage/log/coredemo.log.2024-10-22-14-26 @@ -0,0 +1,2 @@ +[Info] 2024-10-22T14:26:04+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T14:26:05+08:00 "ceshiceshi" map[] diff --git a/storage/log/coredemo.log.2024-10-22-14-27 b/storage/log/coredemo.log.2024-10-22-14-27 new file mode 100644 index 0000000..2deb87d --- /dev/null +++ b/storage/log/coredemo.log.2024-10-22-14-27 @@ -0,0 +1,4 @@ +[Info] 2024-10-22T14:27:08+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T14:27:52+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T14:27:52+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T14:27:53+08:00 "ceshiceshi" map[] diff --git a/storage/log/coredemo.log.2024-10-22-14-39 b/storage/log/coredemo.log.2024-10-22-14-39 new file mode 100644 index 0000000..0b751a2 --- /dev/null +++ b/storage/log/coredemo.log.2024-10-22-14-39 @@ -0,0 +1,8 @@ +[Info] 2024-10-22T14:39:23+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T14:39:24+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T14:39:25+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T14:39:31+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T14:39:32+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T14:39:32+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T14:39:33+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T14:39:48+08:00 "ceshiceshi" map[] diff --git a/storage/log/coredemo.log.2024-10-22-14-40 b/storage/log/coredemo.log.2024-10-22-14-40 new file mode 100644 index 0000000..f0ab833 --- /dev/null +++ b/storage/log/coredemo.log.2024-10-22-14-40 @@ -0,0 +1,2 @@ +[Info] 2024-10-22T14:40:03+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T14:40:39+08:00 "ceshiceshi" map[] diff --git a/storage/log/coredemo.log.2024-10-22-14-41 b/storage/log/coredemo.log.2024-10-22-14-41 new file mode 100644 index 0000000..d87d238 --- /dev/null +++ b/storage/log/coredemo.log.2024-10-22-14-41 @@ -0,0 +1,10 @@ +[Info] 2024-10-22T14:41:00+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T14:41:01+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T14:41:02+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T14:41:02+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T14:41:03+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T14:41:03+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T14:41:04+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T14:41:17+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T14:41:19+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T14:41:19+08:00 "ceshiceshi" map[] diff --git a/storage/log/coredemo.log.2024-10-22-14-43 b/storage/log/coredemo.log.2024-10-22-14-43 new file mode 100644 index 0000000..74e31be --- /dev/null +++ b/storage/log/coredemo.log.2024-10-22-14-43 @@ -0,0 +1 @@ +[Info] 2024-10-22T14:43:19+08:00 "ceshiceshi" map[] diff --git a/storage/log/coredemo.log.2024-10-22-14-49 b/storage/log/coredemo.log.2024-10-22-14-49 new file mode 100644 index 0000000..a080973 --- /dev/null +++ b/storage/log/coredemo.log.2024-10-22-14-49 @@ -0,0 +1 @@ +[Info] 2024-10-22T14:49:03+08:00 "ceshiceshi" map[] diff --git a/storage/log/coredemo.log.2024-10-22-14-50 b/storage/log/coredemo.log.2024-10-22-14-50 new file mode 100644 index 0000000..097ffab --- /dev/null +++ b/storage/log/coredemo.log.2024-10-22-14-50 @@ -0,0 +1,2 @@ +[Info] 2024-10-22T14:50:54+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T14:50:55+08:00 "ceshiceshi" map[] diff --git a/storage/log/coredemo.log.2024-10-22-14-52 b/storage/log/coredemo.log.2024-10-22-14-52 new file mode 100644 index 0000000..3b52204 --- /dev/null +++ b/storage/log/coredemo.log.2024-10-22-14-52 @@ -0,0 +1,6 @@ +[Info] 2024-10-22T14:52:42+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T14:52:43+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T14:52:44+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T14:52:45+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T14:52:53+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T14:52:53+08:00 "ceshiceshi" map[] diff --git a/storage/log/coredemo.log.2024-10-22-14-53 b/storage/log/coredemo.log.2024-10-22-14-53 new file mode 100644 index 0000000..9d0b01d --- /dev/null +++ b/storage/log/coredemo.log.2024-10-22-14-53 @@ -0,0 +1,11 @@ +[Info] 2024-10-22T14:53:27+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T14:53:29+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T14:53:30+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T14:53:30+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T14:53:47+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T14:53:48+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T14:53:48+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T14:53:49+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T14:53:50+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T14:53:51+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T14:53:54+08:00 "ceshiceshi" map[] diff --git a/storage/log/coredemo.log.2024-10-22-14-54 b/storage/log/coredemo.log.2024-10-22-14-54 new file mode 100644 index 0000000..b9a889a --- /dev/null +++ b/storage/log/coredemo.log.2024-10-22-14-54 @@ -0,0 +1,16 @@ +[Info] 2024-10-22T14:54:04+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T14:54:05+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T14:54:06+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T14:54:06+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T14:54:07+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T14:54:10+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T14:54:12+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T14:54:18+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T14:54:19+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T14:54:19+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T14:54:20+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T14:54:20+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T14:54:21+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T14:54:21+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T14:54:22+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T14:54:23+08:00 "ceshiceshi" map[] diff --git a/storage/log/coredemo.log.2024-10-22-14-56 b/storage/log/coredemo.log.2024-10-22-14-56 new file mode 100644 index 0000000..08a5d3c --- /dev/null +++ b/storage/log/coredemo.log.2024-10-22-14-56 @@ -0,0 +1,12 @@ +[Info] 2024-10-22T14:56:22+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T14:56:23+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T14:56:24+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T14:56:25+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T14:56:29+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T14:56:30+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T14:56:30+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T14:56:31+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T14:56:31+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T14:56:31+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T14:56:32+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T14:56:32+08:00 "ceshiceshi" map[] diff --git a/storage/log/coredemo.log.2024-10-22-14-57 b/storage/log/coredemo.log.2024-10-22-14-57 new file mode 100644 index 0000000..3c37919 --- /dev/null +++ b/storage/log/coredemo.log.2024-10-22-14-57 @@ -0,0 +1,7 @@ +[Info] 2024-10-22T14:57:14+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T14:57:15+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T14:57:16+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T14:57:17+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T14:57:35+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T14:57:36+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T14:57:36+08:00 "ceshiceshi" map[] diff --git a/storage/log/coredemo.log.2024-10-22-14-59 b/storage/log/coredemo.log.2024-10-22-14-59 new file mode 100644 index 0000000..d13770a --- /dev/null +++ b/storage/log/coredemo.log.2024-10-22-14-59 @@ -0,0 +1,3 @@ +[Info] 2024-10-22T14:59:09+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T14:59:10+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T14:59:10+08:00 "ceshiceshi" map[] diff --git a/storage/log/coredemo.log.2024-10-22-15-05 b/storage/log/coredemo.log.2024-10-22-15-05 new file mode 100644 index 0000000..86f9178 --- /dev/null +++ b/storage/log/coredemo.log.2024-10-22-15-05 @@ -0,0 +1,6 @@ +[Info] 2024-10-22T15:05:47+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T15:05:47+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T15:05:49+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T15:05:50+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T15:05:54+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T15:05:57+08:00 "ceshiceshi" map[] diff --git a/storage/log/coredemo.log.2024-10-22-15-06 b/storage/log/coredemo.log.2024-10-22-15-06 new file mode 100644 index 0000000..d1a7717 --- /dev/null +++ b/storage/log/coredemo.log.2024-10-22-15-06 @@ -0,0 +1,6 @@ +[Info] 2024-10-22T15:06:25+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T15:06:25+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T15:06:26+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T15:06:27+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T15:06:27+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T15:06:28+08:00 "ceshiceshi" map[] diff --git a/storage/log/coredemo.log.2024-10-22-15-08 b/storage/log/coredemo.log.2024-10-22-15-08 new file mode 100644 index 0000000..d73105a --- /dev/null +++ b/storage/log/coredemo.log.2024-10-22-15-08 @@ -0,0 +1,5 @@ +[Info] 2024-10-22T15:08:03+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T15:08:19+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T15:08:19+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T15:08:20+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T15:08:21+08:00 "ceshiceshi" map[] diff --git a/storage/log/coredemo.log.2024-10-22-15-11 b/storage/log/coredemo.log.2024-10-22-15-11 new file mode 100644 index 0000000..3713864 --- /dev/null +++ b/storage/log/coredemo.log.2024-10-22-15-11 @@ -0,0 +1,4 @@ +[Info] 2024-10-22T15:11:33+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T15:11:34+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T15:11:35+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T15:11:36+08:00 "ceshiceshi" map[] diff --git a/storage/log/coredemo.log.2024-10-22-15-13 b/storage/log/coredemo.log.2024-10-22-15-13 new file mode 100644 index 0000000..710e5e4 --- /dev/null +++ b/storage/log/coredemo.log.2024-10-22-15-13 @@ -0,0 +1,9 @@ +[Info] 2024-10-22T15:13:46+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T15:13:47+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T15:13:48+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T15:13:49+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T15:13:49+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T15:13:50+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T15:13:50+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T15:13:51+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T15:13:51+08:00 "ceshiceshi" map[] diff --git a/storage/log/coredemo.log.2024-10-22-15-15 b/storage/log/coredemo.log.2024-10-22-15-15 new file mode 100644 index 0000000..30e1c6a --- /dev/null +++ b/storage/log/coredemo.log.2024-10-22-15-15 @@ -0,0 +1,6 @@ +[Info] 2024-10-22T15:15:37+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T15:15:39+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T15:15:40+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T15:15:41+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T15:15:41+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T15:15:42+08:00 "ceshiceshi" map[] diff --git a/storage/log/coredemo.log.2024-10-22-15-16 b/storage/log/coredemo.log.2024-10-22-15-16 new file mode 100644 index 0000000..4e4997e --- /dev/null +++ b/storage/log/coredemo.log.2024-10-22-15-16 @@ -0,0 +1,22 @@ +[Info] 2024-10-22T15:16:23+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T15:16:27+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T15:16:27+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T15:16:28+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T15:16:31+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T15:16:31+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T15:16:32+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T15:16:32+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T15:16:33+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T15:16:34+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T15:16:34+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T15:16:35+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T15:16:35+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T15:16:36+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T15:16:36+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T15:16:37+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T15:16:37+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T15:16:38+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T15:16:38+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T15:16:39+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T15:16:39+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T15:16:58+08:00 "ceshiceshi" map[] diff --git a/storage/log/coredemo.log.2024-10-22-15-17 b/storage/log/coredemo.log.2024-10-22-15-17 new file mode 100644 index 0000000..9a67c81 --- /dev/null +++ b/storage/log/coredemo.log.2024-10-22-15-17 @@ -0,0 +1,36 @@ +[Info] 2024-10-22T15:17:08+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T15:17:09+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T15:17:09+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T15:17:10+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T15:17:11+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T15:17:15+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T15:17:18+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T15:17:19+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T15:17:19+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T15:17:20+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T15:17:21+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T15:17:21+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T15:17:22+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T15:17:22+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T15:17:23+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T15:17:23+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T15:17:24+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T15:17:24+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T15:17:25+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T15:17:25+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T15:17:26+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T15:17:27+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T15:17:27+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T15:17:28+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T15:17:29+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T15:17:30+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T15:17:30+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T15:17:31+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T15:17:31+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T15:17:32+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T15:17:32+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T15:17:33+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T15:17:33+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T15:17:34+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T15:17:34+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T15:17:35+08:00 "ceshiceshi" map[] diff --git a/storage/log/coredemo.log.2024-10-22-15-23 b/storage/log/coredemo.log.2024-10-22-15-23 new file mode 100644 index 0000000..2e0a9d4 --- /dev/null +++ b/storage/log/coredemo.log.2024-10-22-15-23 @@ -0,0 +1,9 @@ +[Info] 2024-10-22T15:23:25+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T15:23:30+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T15:23:30+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T15:23:32+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T15:23:33+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T15:23:33+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T15:23:34+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T15:23:34+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T15:23:35+08:00 "ceshiceshi" map[] diff --git a/storage/log/coredemo.log.2024-10-22-15-24 b/storage/log/coredemo.log.2024-10-22-15-24 new file mode 100644 index 0000000..ec7fdcc --- /dev/null +++ b/storage/log/coredemo.log.2024-10-22-15-24 @@ -0,0 +1,8 @@ +[Info] 2024-10-22T15:24:20+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T15:24:21+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T15:24:21+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T15:24:48+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T15:24:49+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T15:24:50+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T15:24:51+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T15:24:51+08:00 "ceshiceshi" map[] diff --git a/storage/log/coredemo.log.2024-10-22-16-02 b/storage/log/coredemo.log.2024-10-22-16-02 new file mode 100644 index 0000000..edd43a0 --- /dev/null +++ b/storage/log/coredemo.log.2024-10-22-16-02 @@ -0,0 +1,2 @@ +[Info] 2024-10-22T16:02:38+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T16:02:41+08:00 "ceshiceshi" map[] diff --git a/storage/log/coredemo.log.2024-10-22-16-06 b/storage/log/coredemo.log.2024-10-22-16-06 new file mode 100644 index 0000000..6be265a --- /dev/null +++ b/storage/log/coredemo.log.2024-10-22-16-06 @@ -0,0 +1,6 @@ +[Info] 2024-10-22T16:06:50+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T16:06:51+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T16:06:52+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T16:06:52+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T16:06:53+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T16:06:59+08:00 "ceshiceshi" map[] diff --git a/storage/log/coredemo.log.2024-10-22-16-07 b/storage/log/coredemo.log.2024-10-22-16-07 new file mode 100644 index 0000000..9e0b2a1 --- /dev/null +++ b/storage/log/coredemo.log.2024-10-22-16-07 @@ -0,0 +1,8 @@ +[Info] 2024-10-22T16:07:00+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T16:07:00+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T16:07:40+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T16:07:40+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T16:07:41+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T16:07:42+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T16:07:42+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T16:07:43+08:00 "ceshiceshi" map[] diff --git a/storage/log/coredemo.log.2024-10-22-16-08 b/storage/log/coredemo.log.2024-10-22-16-08 new file mode 100644 index 0000000..3d95aa1 --- /dev/null +++ b/storage/log/coredemo.log.2024-10-22-16-08 @@ -0,0 +1,10 @@ +[Info] 2024-10-22T16:08:20+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T16:08:22+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T16:08:22+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T16:08:23+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T16:08:23+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T16:08:25+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T16:08:25+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T16:08:26+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T16:08:27+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T16:08:27+08:00 "ceshiceshi" map[] diff --git a/storage/log/coredemo.log.2024-10-22-16-12 b/storage/log/coredemo.log.2024-10-22-16-12 new file mode 100644 index 0000000..d5af148 --- /dev/null +++ b/storage/log/coredemo.log.2024-10-22-16-12 @@ -0,0 +1,7 @@ +[Info] 2024-10-22T16:12:29+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T16:12:30+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T16:12:31+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T16:12:32+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T16:12:32+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T16:12:33+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T16:12:54+08:00 "ceshiceshi" map[] diff --git a/storage/log/coredemo.log.2024-10-22-16-13 b/storage/log/coredemo.log.2024-10-22-16-13 new file mode 100644 index 0000000..8f19dda --- /dev/null +++ b/storage/log/coredemo.log.2024-10-22-16-13 @@ -0,0 +1,10 @@ +[Info] 2024-10-22T16:13:05+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T16:13:06+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T16:13:07+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T16:13:07+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T16:13:10+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T16:13:53+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T16:13:53+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T16:13:54+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T16:13:54+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T16:13:55+08:00 "ceshiceshi" map[] diff --git a/storage/log/coredemo.log.2024-10-22-16-17 b/storage/log/coredemo.log.2024-10-22-16-17 new file mode 100644 index 0000000..4a5d6ad --- /dev/null +++ b/storage/log/coredemo.log.2024-10-22-16-17 @@ -0,0 +1,4 @@ +[Info] 2024-10-22T16:17:37+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T16:17:42+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T16:17:42+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T16:17:43+08:00 "ceshiceshi" map[] diff --git a/storage/log/coredemo.log.2024-10-22-16-18 b/storage/log/coredemo.log.2024-10-22-16-18 new file mode 100644 index 0000000..ba40100 --- /dev/null +++ b/storage/log/coredemo.log.2024-10-22-16-18 @@ -0,0 +1,3 @@ +[Info] 2024-10-22T16:18:48+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T16:18:50+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T16:18:51+08:00 "ceshiceshi" map[] diff --git a/storage/log/coredemo.log.2024-10-22-16-24 b/storage/log/coredemo.log.2024-10-22-16-24 new file mode 100644 index 0000000..b652a9b --- /dev/null +++ b/storage/log/coredemo.log.2024-10-22-16-24 @@ -0,0 +1,6 @@ +[Info] 2024-10-22T16:24:01+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T16:24:03+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T16:24:04+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T16:24:04+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T16:24:05+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T16:24:05+08:00 "ceshiceshi" map[] diff --git a/storage/log/coredemo.log.2024-10-22-16-43 b/storage/log/coredemo.log.2024-10-22-16-43 new file mode 100644 index 0000000..9741458 --- /dev/null +++ b/storage/log/coredemo.log.2024-10-22-16-43 @@ -0,0 +1,7 @@ +[Info] 2024-10-22T16:43:21+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T16:43:22+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T16:43:23+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T16:43:23+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T16:43:24+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T16:43:24+08:00 "ceshiceshi" map[] +[Info] 2024-10-22T16:43:25+08:00 "ceshiceshi" map[] diff --git a/vite.config.js b/vite.config.js new file mode 100644 index 0000000..21d97d5 --- /dev/null +++ b/vite.config.js @@ -0,0 +1,16 @@ +import { fileURLToPath, URL } from 'node:url' + +import { defineConfig } from 'vite' +import vue from '@vitejs/plugin-vue' + +// https://vite.dev/config/ +export default defineConfig({ + plugins: [ + vue(), + ], + resolve: { + alias: { + '@': fileURLToPath(new URL('./src', import.meta.url)) + } + } +})