diff --git a/app.go b/app.go deleted file mode 100644 index 89cccd6..0000000 --- a/app.go +++ /dev/null @@ -1,42 +0,0 @@ -package main - -import ( - "context" - "godoos/cmd" - - "github.com/wailsapp/wails/v2/pkg/runtime" -) - -// App struct -type App struct { - ctx context.Context -} - -// NewApp creates a new App application struct -func NewApp() *App { - return &App{} -} - -// startup is called when the app starts. The context is saved -// so we can call the runtime methods -func (a *App) startup(ctx context.Context) { - a.ctx = ctx - go cmd.OsStart() -} -func (a *App) shutdown(ctx context.Context) { - cmd.OsStop() -} -func (a *App) OpenDirDialog() string { - path, err := runtime.OpenDirectoryDialog(a.ctx, runtime.OpenDialogOptions{ - Title: "Select Folder", - }) - if err != nil { - runtime.LogErrorf(a.ctx, "Error: %+v\n", err) - } - return path -} - -// Greet returns a greeting for the given name -// func (a *App) Greet(name string) string { -// return fmt.Sprintf("Hello %s, It's show time!", name) -// } diff --git a/app/app.go b/app/app.go new file mode 100644 index 0000000..94228b0 --- /dev/null +++ b/app/app.go @@ -0,0 +1,78 @@ +package app + +import ( + "context" + "errors" + "godoos/cmd" + "os" + "os/exec" + "path/filepath" + "runtime" + "strings" + + wruntime "github.com/wailsapp/wails/v2/pkg/runtime" +) + +// App struct +type App struct { + ctx context.Context + exDir string +} + +// NewApp creates a new App application struct +func NewApp() *App { + return &App{} +} + +// startup is called when the app starts. The context is saved +// so we can call the runtime methods +func (a *App) Startup(ctx context.Context) { + a.ctx = ctx + go cmd.OsStart() +} +func (a *App) Shutdown(ctx context.Context) { + a.ctx = ctx + cmd.OsStop() +} +func (a *App) OpenDirDialog() string { + path, err := wruntime.OpenDirectoryDialog(a.ctx, wruntime.OpenDialogOptions{ + Title: "Select Folder", + }) + if err != nil { + wruntime.LogErrorf(a.ctx, "Error: %+v\n", err) + } + return path +} + +func (a *App) GetAbsPath(path string) (string, error) { + var absPath string + var err error + if filepath.IsAbs(path) { + absPath = filepath.Clean(path) + } else { + absPath, err = filepath.Abs(filepath.Join(a.exDir, path)) + if err != nil { + return "", err + } + } + absPath = strings.ReplaceAll(absPath, "/", string(os.PathSeparator)) + //println("GetAbsPath:", absPath) + return absPath, nil +} + +func (a *App) RestartApp() error { + if runtime.GOOS == "windows" { + name, err := os.Executable() + if err != nil { + return err + } + exec.Command(name, os.Args[1:]...).Start() + wruntime.Quit(a.ctx) + return nil + } + return errors.New("unsupported OS") +} + +func (a *App) GetPlatform() string { + return runtime.GOOS +} diff --git a/app/download.go b/app/download.go new file mode 100644 index 0000000..523426b --- /dev/null +++ b/app/download.go @@ -0,0 +1,134 @@ +package app + +import ( + "context" + "path/filepath" + "time" + + "github.com/cavaliergopher/grab/v3" + "github.com/wailsapp/wails/v2/pkg/runtime" +) + +func (a *App) DownloadFile(path string, url string) error { + absPath, err := a.GetAbsPath(path) + if err != nil { + return err + } + _, err = grab.Get(absPath, url) + if err != nil { + return err + } + return nil +} + +type DownloadStatus struct { + resp *grab.Response + cancel context.CancelFunc + Name string `json:"name"` + Path string `json:"path"` + Url string `json:"url"` + Transferred int64 `json:"transferred"` + Size int64 `json:"size"` + Speed float64 `json:"speed"` + Progress float64 `json:"progress"` + Downloading bool `json:"downloading"` + Done bool `json:"done"` +} + +var downloadList []*DownloadStatus + +func existsInDownloadList(path string, url string) bool { + for _, ds := range downloadList { + if ds.Path == path || ds.Url == url { + return true + } + } + return false +} + +func (a *App) PauseDownload(url string) { + for _, ds := range downloadList { + if ds.Url == url { + if ds.cancel != nil { + ds.cancel() + } + ds.resp = nil + ds.Downloading = false + ds.Speed = 0 + break + } + } +} + +func (a *App) ContinueDownload(url string) { + for _, ds := range downloadList { + if ds.Url == url { + if !ds.Downloading && ds.resp == nil && !ds.Done { + ds.Downloading = true + + req, err := grab.NewRequest(ds.Path, ds.Url) + if err != nil { + ds.Downloading = false + break + } + // if PauseDownload() is called before the request finished, ds.Downloading will be false + // if the user keeps clicking pause and resume, it may result in multiple requests being successfully downloaded at the same time + // so we have to create a context and cancel it when PauseDownload() is called + ctx, cancel := context.WithCancel(context.Background()) + ds.cancel = cancel + req = req.WithContext(ctx) + resp := grab.DefaultClient.Do(req) + + if resp != nil && resp.HTTPResponse != nil && + resp.HTTPResponse.StatusCode >= 200 && resp.HTTPResponse.StatusCode < 300 { + ds.resp = resp + } else { + ds.Downloading = false + } + } + break + } + } +} + +func (a *App) AddToDownloadList(path string, url string) { + absPath, err := a.GetAbsPath(path) + if err != nil { + return + } + if !existsInDownloadList(absPath, url) { + downloadList = append(downloadList, &DownloadStatus{ + resp: nil, + Name: filepath.Base(path), + Path: absPath, + Url: url, + Downloading: false, + }) + a.ContinueDownload(url) + } else { + a.ContinueDownload(url) + } +} + +func (a *App) DownloadLoop() { + ticker := time.NewTicker(500 * time.Millisecond) + go func() { + for { + <-ticker.C + for _, ds := range downloadList { + if ds.resp != nil { + ds.Transferred = ds.resp.BytesComplete() + ds.Size = ds.resp.Size() + ds.Speed = ds.resp.BytesPerSecond() + ds.Progress = 100 * ds.resp.Progress() + ds.Downloading = !ds.resp.IsComplete() + ds.Done = ds.resp.Progress() == 1 + if !ds.Downloading { + ds.resp = nil + } + } + } + runtime.EventsEmit(a.ctx, "downloadList", downloadList) + } + }() +} diff --git a/app/update.go b/app/update.go new file mode 100644 index 0000000..846148a --- /dev/null +++ b/app/update.go @@ -0,0 +1,100 @@ +package app + +import ( + "archive/zip" + "bytes" + "io" + "net/http" + "os" + "os/exec" + "path/filepath" + "runtime" + "strings" + "time" + + "github.com/minio/selfupdate" + wruntime "github.com/wailsapp/wails/v2/pkg/runtime" +) + +type ProgressReader struct { + reader io.Reader + total int64 + err error +} + +func (pr *ProgressReader) Read(p []byte) (n int, err error) { + n, err = pr.reader.Read(p) + pr.err = err + pr.total += int64(n) + return +} +func (a *App) UpdateApp(url string) (broken bool, err error) { + resp, err := http.Get(url) + if err != nil { + return false, err + } + defer resp.Body.Close() + pr := &ProgressReader{reader: resp.Body} + + ticker := time.NewTicker(250 * time.Millisecond) + defer ticker.Stop() + + // update progress + go func() { + for { + <-ticker.C + wruntime.EventsEmit(a.ctx, "updateApp", &DownloadStatus{ + Name: filepath.Base(url), + Path: "", + Url: url, + Transferred: pr.total, + Size: resp.ContentLength, + Speed: 0, + Progress: 100 * (float64(pr.total) / float64(resp.ContentLength)), + Downloading: pr.err == nil && pr.total < resp.ContentLength, + Done: pr.total == resp.ContentLength, + }) + if pr.err != nil || pr.total == resp.ContentLength { + break + } + } + }() + + var updateFile io.Reader = pr + // extract macos binary from zip + if strings.HasSuffix(url, ".zip") && runtime.GOOS == "darwin" { + zipBytes, err := io.ReadAll(pr) + if err != nil { + return false, err + } + archive, err := zip.NewReader(bytes.NewReader(zipBytes), int64(len(zipBytes))) + if err != nil { + return false, err + } + file, err := archive.Open("godoos.app/Contents/MacOS/godoos") + if err != nil { + return false, err + } + defer file.Close() + updateFile = file + } + + // apply update + err = selfupdate.Apply(updateFile, selfupdate.Options{}) + if err != nil { + if rerr := selfupdate.RollbackError(err); rerr != nil { + return true, rerr + } + return false, err + } + // restart app + if runtime.GOOS == "windows" { + name, err := os.Executable() + if err != nil { + return false, err + } + exec.Command(name, os.Args[1:]...).Start() + wruntime.Quit(a.ctx) + } + return false, nil +} diff --git a/cmd/main.go b/cmd/main.go index 7717fee..ce78e18 100644 --- a/cmd/main.go +++ b/cmd/main.go @@ -3,6 +3,7 @@ package cmd import ( "context" "godoos/libs" + "godoos/localchat" "godoos/progress" "log" "net/http" @@ -11,7 +12,7 @@ import ( "github.com/gorilla/mux" ) -const serverAddress = ":56710" +const serverAddress = ":56780" var srv *http.Server @@ -50,6 +51,9 @@ func OsStart() { router.HandleFunc("/file/writefile", HandleWriteFile).Methods(http.MethodPost) router.HandleFunc("/file/appendfile", HandleAppendFile).Methods(http.MethodPost) router.HandleFunc("/file/watch", WatchHandler).Methods(http.MethodGet) + router.HandleFunc("/localchat/sse", localchat.SseHandler).Methods(http.MethodGet) + router.HandleFunc("/localchat/message", localchat.HandleMessage).Methods(http.MethodPost) + router.HandleFunc("/localchat/upload", localchat.MultiUploadHandler).Methods(http.MethodPost) go progress.CheckActive(context.Background()) log.Printf("Listening on port: %v", serverAddress) diff --git a/frontend/components.d.ts b/frontend/components.d.ts index 491e570..08637a1 100644 --- a/frontend/components.d.ts +++ b/frontend/components.d.ts @@ -14,10 +14,15 @@ declare module 'vue' { BatteryPop: typeof import('./src/components/taskbar/BatteryPop.vue')['default'] Browser: typeof import('./src/components/builtin/Browser.vue')['default'] Calendar: typeof import('./src/components/builtin/Calendar.vue')['default'] + Chat: typeof import('./src/components/localchat/Chat.vue')['default'] + ChatContent: typeof import('./src/components/localchat/ChatContent.vue')['default'] + ChatDomain: typeof import('./src/components/localchat/ChatDomain.vue')['default'] + ChatEditor: typeof import('./src/components/localchat/ChatEditor.vue')['default'] + ChatFoot: typeof import('./src/components/localchat/ChatFoot.vue')['default'] + ChatNav: typeof import('./src/components/localchat/ChatNav.vue')['default'] CloseButton: typeof import('./src/components/ui/CloseButton.vue')['default'] CloseDesktop: typeof import('./src/components/desktop/CloseDesktop.vue')['default'] ColorPicker: typeof import('./src/components/setting/ColorPicker.vue')['default'] - Compony: typeof import('./src/components/install/compony.vue')['default'] Computer: typeof import('./src/components/computer/Computer.vue')['default'] ComputerNavBar: typeof import('./src/components/computer/ComputerNavBar.vue')['default'] ContextMenu: typeof import('./src/components/builtin/ContextMenu.vue')['default'] @@ -33,18 +38,23 @@ declare module 'vue' { DialogTemp: typeof import('./src/components/window/DialogTemp.vue')['default'] EditFileName: typeof import('./src/components/builtin/EditFileName.vue')['default'] EditType: typeof import('./src/components/builtin/EditType.vue')['default'] + ElBadge: typeof import('element-plus/es')['ElBadge'] ElButton: typeof import('element-plus/es')['ElButton'] ElCard: typeof import('element-plus/es')['ElCard'] ElCol: typeof import('element-plus/es')['ElCol'] ElColorPicker: typeof import('element-plus/es')['ElColorPicker'] ElDrawer: typeof import('element-plus/es')['ElDrawer'] + ElEmpty: typeof import('element-plus/es')['ElEmpty'] ElForm: typeof import('element-plus/es')['ElForm'] ElFormItem: typeof import('element-plus/es')['ElFormItem'] ElIcon: typeof import('element-plus/es')['ElIcon'] ElInput: typeof import('element-plus/es')['ElInput'] ElOption: typeof import('element-plus/es')['ElOption'] + ElPopover: typeof import('element-plus/es')['ElPopover'] ElRow: typeof import('element-plus/es')['ElRow'] + ElScrollbar: typeof import('element-plus/es')['ElScrollbar'] ElSelect: typeof import('element-plus/es')['ElSelect'] + ElSpace: typeof import('element-plus/es')['ElSpace'] ElText: typeof import('element-plus/es')['ElText'] ElTooltip: typeof import('element-plus/es')['ElTooltip'] Error: typeof import('./src/components/taskbar/Error.vue')['default'] @@ -60,12 +70,10 @@ declare module 'vue' { Install: typeof import('./src/components/install/Install.vue')['default'] InstallCompony: typeof import('./src/components/install/InstallCompony.vue')['default'] InstallMember: typeof import('./src/components/install/InstallMember.vue')['default'] - INstallMember: typeof import('./src/components/install/INstallMember.vue')['default'] InstallPerson: typeof import('./src/components/install/InstallPerson.vue')['default'] LockDesktop: typeof import('./src/components/desktop/LockDesktop.vue')['default'] Magnet: typeof import('./src/components/taskbar/Magnet.vue')['default'] MarkDown: typeof import('./src/components/builtin/MarkDown.vue')['default'] - Member: typeof import('./src/components/install/member.vue')['default'] MenuBar: typeof import('./src/components/window/MenuBar.vue')['default'] MenuList: typeof import('./src/components/taskbar/MenuList.vue')['default'] MessageCenterPop: typeof import('./src/components/taskbar/MessageCenterPop.vue')['default'] @@ -80,7 +88,6 @@ declare module 'vue' { OpenWiteDialog: typeof import('./src/components/builtin/OpenWiteDialog.vue')['default'] OsImage: typeof import('./src/components/builtin/OsImage.vue')['default'] PdfViewer: typeof import('./src/components/builtin/PdfViewer.vue')['default'] - Person: typeof import('./src/components/install/person.vue')['default'] PictureStore: typeof import('./src/components/builtin/PictureStore.vue')['default'] QuickLink: typeof import('./src/components/computer/QuickLink.vue')['default'] RectChosen: typeof import('./src/components/builtin/RectChosen.vue')['default'] diff --git a/frontend/package.json b/frontend/package.json index 7e0a750..195f3f0 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -11,6 +11,7 @@ "dependencies": { "@element-plus/icons-vue": "^2.3.1", "@liripeng/vue-audio-player": "^1.6.2", + "dexie": "^4.0.8", "element-plus": "^2.7.7", "file-saver": "^2.0.5", "jszip": "^3.10.1", diff --git a/frontend/package.json.md5 b/frontend/package.json.md5 index f42267c..aa030bc 100755 --- a/frontend/package.json.md5 +++ b/frontend/package.json.md5 @@ -1 +1 @@ -46b0e0f4287bf8042cfe0a66114c4afc \ No newline at end of file +1fa97678edcc780911c3d714233e97d2 \ No newline at end of file diff --git a/frontend/pnpm-lock.yaml b/frontend/pnpm-lock.yaml index 8761c0c..0a1a453 100644 --- a/frontend/pnpm-lock.yaml +++ b/frontend/pnpm-lock.yaml @@ -1,415 +1,302 @@ -lockfileVersion: '6.0' +lockfileVersion: '9.0' settings: autoInstallPeers: true excludeLinksFromLockfile: false -dependencies: - '@element-plus/icons-vue': - specifier: ^2.3.1 - version: 2.3.1(vue@3.4.31) - '@liripeng/vue-audio-player': - specifier: ^1.6.2 - version: 1.6.2(typescript@5.5.3) - element-plus: - specifier: ^2.7.7 - version: 2.7.7(vue@3.4.31) - file-saver: - specifier: ^2.0.5 - version: 2.0.5 - jszip: - specifier: ^3.10.1 - version: 3.10.1 - lunar-typescript: - specifier: ^1.7.5 - version: 1.7.5 - moment: - specifier: ^2.30.1 - version: 2.30.1 - pinia: - specifier: ^2.1.7 - version: 2.1.7(typescript@5.5.3)(vue@3.4.31) - pinia-plugin-persist: - specifier: ^1.0.0 - version: 1.0.0(pinia@2.1.7)(vue@3.4.31) - vditor: - specifier: ^3.10.4 - version: 3.10.4 - vue: - specifier: ^3.4.31 - version: 3.4.31(typescript@5.5.3) - vue-router: - specifier: ^4.4.0 - version: 4.4.0(vue@3.4.31) - vue-web-screen-shot: - specifier: ^1.5.3 - version: 1.5.3(core-js@3.37.1)(vue@3.4.31) +importers: -devDependencies: - '@types/file-saver': - specifier: ^2.0.7 - version: 2.0.7 - '@types/node': - specifier: ^20.14.10 - version: 20.14.10 - '@vitejs/plugin-vue': - specifier: ^5.0.5 - version: 5.0.5(vite@5.3.3)(vue@3.4.31) - sass: - specifier: ^1.77.8 - version: 1.77.8 - terser: - specifier: ^5.31.3 - version: 5.31.3 - typescript: - specifier: ^5.5.3 - version: 5.5.3 - unplugin-auto-import: - specifier: ^0.18.0 - version: 0.18.0 - unplugin-vue-components: - specifier: ^0.27.2 - version: 0.27.2(vue@3.4.31) - vite: - specifier: ^5.3.3 - version: 5.3.3(@types/node@20.14.10)(sass@1.77.8)(terser@5.31.3) - vue-tsc: - specifier: ^2.0.26 - version: 2.0.26(typescript@5.5.3) + .: + dependencies: + '@element-plus/icons-vue': + specifier: ^2.3.1 + version: 2.3.1(vue@3.4.31(typescript@5.5.3)) + '@liripeng/vue-audio-player': + specifier: ^1.6.2 + version: 1.6.2(typescript@5.5.3) + dexie: + specifier: ^4.0.8 + version: 4.0.8 + element-plus: + specifier: ^2.7.7 + version: 2.7.7(vue@3.4.31(typescript@5.5.3)) + file-saver: + specifier: ^2.0.5 + version: 2.0.5 + jszip: + specifier: ^3.10.1 + version: 3.10.1 + lunar-typescript: + specifier: ^1.7.5 + version: 1.7.5 + moment: + specifier: ^2.30.1 + version: 2.30.1 + pinia: + specifier: ^2.1.7 + version: 2.1.7(typescript@5.5.3)(vue@3.4.31(typescript@5.5.3)) + pinia-plugin-persist: + specifier: ^1.0.0 + version: 1.0.0(pinia@2.1.7(typescript@5.5.3)(vue@3.4.31(typescript@5.5.3)))(vue@3.4.31(typescript@5.5.3)) + vditor: + specifier: ^3.10.4 + version: 3.10.4 + vue: + specifier: ^3.4.31 + version: 3.4.31(typescript@5.5.3) + vue-router: + specifier: ^4.4.0 + version: 4.4.0(vue@3.4.31(typescript@5.5.3)) + vue-web-screen-shot: + specifier: ^1.5.3 + version: 1.5.3(core-js@3.37.1)(vue@3.4.31(typescript@5.5.3)) + devDependencies: + '@types/file-saver': + specifier: ^2.0.7 + version: 2.0.7 + '@types/node': + specifier: ^20.14.10 + version: 20.14.10 + '@vitejs/plugin-vue': + specifier: ^5.0.5 + version: 5.0.5(vite@5.3.3(@types/node@20.14.10)(sass@1.77.8)(terser@5.31.3))(vue@3.4.31(typescript@5.5.3)) + sass: + specifier: ^1.77.8 + version: 1.77.8 + terser: + specifier: ^5.31.3 + version: 5.31.3 + typescript: + specifier: ^5.5.3 + version: 5.5.3 + unplugin-auto-import: + specifier: ^0.18.0 + version: 0.18.0(@vueuse/core@9.13.0(vue@3.4.31(typescript@5.5.3)))(rollup@4.18.1) + unplugin-vue-components: + specifier: ^0.27.2 + version: 0.27.2(@babel/parser@7.24.8)(rollup@4.18.1)(vue@3.4.31(typescript@5.5.3)) + vite: + specifier: ^5.3.3 + version: 5.3.3(@types/node@20.14.10)(sass@1.77.8)(terser@5.31.3) + vue-tsc: + specifier: ^2.0.26 + version: 2.0.26(typescript@5.5.3) packages: - /@antfu/utils@0.7.10: + '@antfu/utils@0.7.10': resolution: {integrity: sha512-+562v9k4aI80m1+VuMHehNJWLOFjBnXn3tdOitzD0il5b7smkSBal4+a3oKiQTbrwMmN/TBUMDvbdoWDehgOww==} - dev: true - /@babel/helper-string-parser@7.24.8: + '@babel/helper-string-parser@7.24.8': resolution: {integrity: sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==} engines: {node: '>=6.9.0'} - /@babel/helper-validator-identifier@7.24.7: + '@babel/helper-validator-identifier@7.24.7': resolution: {integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==} engines: {node: '>=6.9.0'} - /@babel/parser@7.24.8: + '@babel/parser@7.24.8': resolution: {integrity: sha512-WzfbgXOkGzZiXXCqk43kKwZjzwx4oulxZi3nq2TYL9mOjQv6kYwul9mz6ID36njuL7Xkp6nJEfok848Zj10j/w==} engines: {node: '>=6.0.0'} hasBin: true - dependencies: - '@babel/types': 7.24.9 - /@babel/types@7.24.9: + '@babel/types@7.24.9': resolution: {integrity: sha512-xm8XrMKz0IlUdocVbYJe0Z9xEgidU7msskG8BbhnTPK/HZ2z/7FP7ykqPgrUH+C+r414mNfNWam1f2vqOjqjYQ==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-string-parser': 7.24.8 - '@babel/helper-validator-identifier': 7.24.7 - to-fast-properties: 2.0.0 - /@ctrl/tinycolor@3.6.1: + '@ctrl/tinycolor@3.6.1': resolution: {integrity: sha512-SITSV6aIXsuVNV3f3O0f2n/cgyEDWoSqtZMYiAmcsYHydcKrOz3gUxB/iXd/Qf08+IZX4KpgNbvUdMBmWz+kcA==} engines: {node: '>=10'} - dev: false - /@element-plus/icons-vue@2.3.1(vue@3.4.31): + '@element-plus/icons-vue@2.3.1': resolution: {integrity: sha512-XxVUZv48RZAd87ucGS48jPf6pKu0yV5UCg9f4FFwtrYxXOwWuVJo6wOvSLKEoMQKjv8GsX/mhP6UsC1lRwbUWg==} peerDependencies: vue: ^3.2.0 - dependencies: - vue: 3.4.31(typescript@5.5.3) - dev: false - /@esbuild/aix-ppc64@0.21.5: + '@esbuild/aix-ppc64@0.21.5': resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} engines: {node: '>=12'} cpu: [ppc64] os: [aix] - requiresBuild: true - dev: true - optional: true - /@esbuild/android-arm64@0.21.5: + '@esbuild/android-arm64@0.21.5': resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} engines: {node: '>=12'} cpu: [arm64] os: [android] - requiresBuild: true - dev: true - optional: true - /@esbuild/android-arm@0.21.5: + '@esbuild/android-arm@0.21.5': resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} engines: {node: '>=12'} cpu: [arm] os: [android] - requiresBuild: true - dev: true - optional: true - /@esbuild/android-x64@0.21.5: + '@esbuild/android-x64@0.21.5': resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} engines: {node: '>=12'} cpu: [x64] os: [android] - requiresBuild: true - dev: true - optional: true - /@esbuild/darwin-arm64@0.21.5: + '@esbuild/darwin-arm64@0.21.5': resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} engines: {node: '>=12'} cpu: [arm64] os: [darwin] - requiresBuild: true - dev: true - optional: true - /@esbuild/darwin-x64@0.21.5: + '@esbuild/darwin-x64@0.21.5': resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} engines: {node: '>=12'} cpu: [x64] os: [darwin] - requiresBuild: true - dev: true - optional: true - /@esbuild/freebsd-arm64@0.21.5: + '@esbuild/freebsd-arm64@0.21.5': resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} engines: {node: '>=12'} cpu: [arm64] os: [freebsd] - requiresBuild: true - dev: true - optional: true - /@esbuild/freebsd-x64@0.21.5: + '@esbuild/freebsd-x64@0.21.5': resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} engines: {node: '>=12'} cpu: [x64] os: [freebsd] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-arm64@0.21.5: + '@esbuild/linux-arm64@0.21.5': resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} engines: {node: '>=12'} cpu: [arm64] os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-arm@0.21.5: + '@esbuild/linux-arm@0.21.5': resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} engines: {node: '>=12'} cpu: [arm] os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-ia32@0.21.5: + '@esbuild/linux-ia32@0.21.5': resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} engines: {node: '>=12'} cpu: [ia32] os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-loong64@0.21.5: + '@esbuild/linux-loong64@0.21.5': resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} engines: {node: '>=12'} cpu: [loong64] os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-mips64el@0.21.5: + '@esbuild/linux-mips64el@0.21.5': resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} engines: {node: '>=12'} cpu: [mips64el] os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-ppc64@0.21.5: + '@esbuild/linux-ppc64@0.21.5': resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} engines: {node: '>=12'} cpu: [ppc64] os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-riscv64@0.21.5: + '@esbuild/linux-riscv64@0.21.5': resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} engines: {node: '>=12'} cpu: [riscv64] os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-s390x@0.21.5: + '@esbuild/linux-s390x@0.21.5': resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} engines: {node: '>=12'} cpu: [s390x] os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-x64@0.21.5: + '@esbuild/linux-x64@0.21.5': resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} engines: {node: '>=12'} cpu: [x64] os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/netbsd-x64@0.21.5: + '@esbuild/netbsd-x64@0.21.5': resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} engines: {node: '>=12'} cpu: [x64] os: [netbsd] - requiresBuild: true - dev: true - optional: true - /@esbuild/openbsd-x64@0.21.5: + '@esbuild/openbsd-x64@0.21.5': resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} engines: {node: '>=12'} cpu: [x64] os: [openbsd] - requiresBuild: true - dev: true - optional: true - /@esbuild/sunos-x64@0.21.5: + '@esbuild/sunos-x64@0.21.5': resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} engines: {node: '>=12'} cpu: [x64] os: [sunos] - requiresBuild: true - dev: true - optional: true - /@esbuild/win32-arm64@0.21.5: + '@esbuild/win32-arm64@0.21.5': resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} engines: {node: '>=12'} cpu: [arm64] os: [win32] - requiresBuild: true - dev: true - optional: true - /@esbuild/win32-ia32@0.21.5: + '@esbuild/win32-ia32@0.21.5': resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} engines: {node: '>=12'} cpu: [ia32] os: [win32] - requiresBuild: true - dev: true - optional: true - /@esbuild/win32-x64@0.21.5: + '@esbuild/win32-x64@0.21.5': resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} engines: {node: '>=12'} cpu: [x64] os: [win32] - requiresBuild: true - dev: true - optional: true - /@floating-ui/core@1.6.4: + '@floating-ui/core@1.6.4': resolution: {integrity: sha512-a4IowK4QkXl4SCWTGUR0INAfEOX3wtsYw3rKK5InQEHMGObkR8Xk44qYQD9P4r6HHw0iIfK6GUKECmY8sTkqRA==} - dependencies: - '@floating-ui/utils': 0.2.4 - dev: false - /@floating-ui/dom@1.6.7: + '@floating-ui/dom@1.6.7': resolution: {integrity: sha512-wmVfPG5o2xnKDU4jx/m4w5qva9FWHcnZ8BvzEe90D/RpwsJaTAVYPEPdQ8sbr/N8zZTAHlZUTQdqg8ZUbzHmng==} - dependencies: - '@floating-ui/core': 1.6.4 - '@floating-ui/utils': 0.2.4 - dev: false - /@floating-ui/utils@0.2.4: + '@floating-ui/utils@0.2.4': resolution: {integrity: sha512-dWO2pw8hhi+WrXq1YJy2yCuWoL20PddgGaqTgVe4cOS9Q6qklXCiA1tJEqX6BEwRNSCP84/afac9hd4MS+zEUA==} - dev: false - /@jridgewell/gen-mapping@0.3.5: + '@jridgewell/gen-mapping@0.3.5': resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} engines: {node: '>=6.0.0'} - dependencies: - '@jridgewell/set-array': 1.2.1 - '@jridgewell/sourcemap-codec': 1.5.0 - '@jridgewell/trace-mapping': 0.3.25 - dev: true - /@jridgewell/resolve-uri@3.1.2: + '@jridgewell/resolve-uri@3.1.2': resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} engines: {node: '>=6.0.0'} - dev: true - /@jridgewell/set-array@1.2.1: + '@jridgewell/set-array@1.2.1': resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} engines: {node: '>=6.0.0'} - dev: true - /@jridgewell/source-map@0.3.6: + '@jridgewell/source-map@0.3.6': resolution: {integrity: sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==} - dependencies: - '@jridgewell/gen-mapping': 0.3.5 - '@jridgewell/trace-mapping': 0.3.25 - dev: true - /@jridgewell/sourcemap-codec@1.5.0: + '@jridgewell/sourcemap-codec@1.5.0': resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} - /@jridgewell/trace-mapping@0.3.25: + '@jridgewell/trace-mapping@0.3.25': resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} - dependencies: - '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.0 - dev: true - /@liripeng/vue-audio-player@1.6.2(typescript@5.5.3): + '@liripeng/vue-audio-player@1.6.2': resolution: {integrity: sha512-7oHCpQ7l/KRsBaYLdfaQXE1jHPQ9BZOb0AdTahkFfzOiLtkzCi3Pk3oIKrKM1plPAh85abwQ1sgaTGidVN7YdA==} - dependencies: - vue: 3.4.31(typescript@5.5.3) - vue-router: 4.4.0(vue@3.4.31) - transitivePeerDependencies: - - typescript - dev: false - /@nodelib/fs.scandir@2.1.5: + '@nodelib/fs.scandir@2.1.5': resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} - dependencies: - '@nodelib/fs.stat': 2.0.5 - run-parallel: 1.2.0 - dev: true - /@nodelib/fs.stat@2.0.5: + '@nodelib/fs.stat@2.0.5': resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} engines: {node: '>= 8'} - dev: true - /@nodelib/fs.walk@1.2.8: + '@nodelib/fs.walk@1.2.8': resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} - dependencies: - '@nodelib/fs.scandir': 2.1.5 - fastq: 1.17.1 - dev: true - /@rollup/pluginutils@5.1.0: + '@rollup/pluginutils@5.1.0': resolution: {integrity: sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==} engines: {node: '>=14.0.0'} peerDependencies: @@ -417,417 +304,247 @@ packages: peerDependenciesMeta: rollup: optional: true - dependencies: - '@types/estree': 1.0.5 - estree-walker: 2.0.2 - picomatch: 2.3.1 - dev: true - /@rollup/rollup-android-arm-eabi@4.18.1: + '@rollup/rollup-android-arm-eabi@4.18.1': resolution: {integrity: sha512-lncuC4aHicncmbORnx+dUaAgzee9cm/PbIqgWz1PpXuwc+sa1Ct83tnqUDy/GFKleLiN7ZIeytM6KJ4cAn1SxA==} cpu: [arm] os: [android] - requiresBuild: true - dev: true - optional: true - /@rollup/rollup-android-arm64@4.18.1: + '@rollup/rollup-android-arm64@4.18.1': resolution: {integrity: sha512-F/tkdw0WSs4ojqz5Ovrw5r9odqzFjb5LIgHdHZG65dFI1lWTWRVy32KDJLKRISHgJvqUeUhdIvy43fX41znyDg==} cpu: [arm64] os: [android] - requiresBuild: true - dev: true - optional: true - /@rollup/rollup-darwin-arm64@4.18.1: + '@rollup/rollup-darwin-arm64@4.18.1': resolution: {integrity: sha512-vk+ma8iC1ebje/ahpxpnrfVQJibTMyHdWpOGZ3JpQ7Mgn/3QNHmPq7YwjZbIE7km73dH5M1e6MRRsnEBW7v5CQ==} cpu: [arm64] os: [darwin] - requiresBuild: true - dev: true - optional: true - /@rollup/rollup-darwin-x64@4.18.1: + '@rollup/rollup-darwin-x64@4.18.1': resolution: {integrity: sha512-IgpzXKauRe1Tafcej9STjSSuG0Ghu/xGYH+qG6JwsAUxXrnkvNHcq/NL6nz1+jzvWAnQkuAJ4uIwGB48K9OCGA==} cpu: [x64] os: [darwin] - requiresBuild: true - dev: true - optional: true - /@rollup/rollup-linux-arm-gnueabihf@4.18.1: + '@rollup/rollup-linux-arm-gnueabihf@4.18.1': resolution: {integrity: sha512-P9bSiAUnSSM7EmyRK+e5wgpqai86QOSv8BwvkGjLwYuOpaeomiZWifEos517CwbG+aZl1T4clSE1YqqH2JRs+g==} cpu: [arm] os: [linux] - requiresBuild: true - dev: true - optional: true + libc: [glibc] - /@rollup/rollup-linux-arm-musleabihf@4.18.1: + '@rollup/rollup-linux-arm-musleabihf@4.18.1': resolution: {integrity: sha512-5RnjpACoxtS+aWOI1dURKno11d7krfpGDEn19jI8BuWmSBbUC4ytIADfROM1FZrFhQPSoP+KEa3NlEScznBTyQ==} cpu: [arm] os: [linux] - requiresBuild: true - dev: true - optional: true + libc: [musl] - /@rollup/rollup-linux-arm64-gnu@4.18.1: + '@rollup/rollup-linux-arm64-gnu@4.18.1': resolution: {integrity: sha512-8mwmGD668m8WaGbthrEYZ9CBmPug2QPGWxhJxh/vCgBjro5o96gL04WLlg5BA233OCWLqERy4YUzX3bJGXaJgQ==} cpu: [arm64] os: [linux] - requiresBuild: true - dev: true - optional: true + libc: [glibc] - /@rollup/rollup-linux-arm64-musl@4.18.1: + '@rollup/rollup-linux-arm64-musl@4.18.1': resolution: {integrity: sha512-dJX9u4r4bqInMGOAQoGYdwDP8lQiisWb9et+T84l2WXk41yEej8v2iGKodmdKimT8cTAYt0jFb+UEBxnPkbXEQ==} cpu: [arm64] os: [linux] - requiresBuild: true - dev: true - optional: true + libc: [musl] - /@rollup/rollup-linux-powerpc64le-gnu@4.18.1: + '@rollup/rollup-linux-powerpc64le-gnu@4.18.1': resolution: {integrity: sha512-V72cXdTl4EI0x6FNmho4D502sy7ed+LuVW6Ym8aI6DRQ9hQZdp5sj0a2usYOlqvFBNKQnLQGwmYnujo2HvjCxQ==} cpu: [ppc64] os: [linux] - requiresBuild: true - dev: true - optional: true + libc: [glibc] - /@rollup/rollup-linux-riscv64-gnu@4.18.1: + '@rollup/rollup-linux-riscv64-gnu@4.18.1': resolution: {integrity: sha512-f+pJih7sxoKmbjghrM2RkWo2WHUW8UbfxIQiWo5yeCaCM0TveMEuAzKJte4QskBp1TIinpnRcxkquY+4WuY/tg==} cpu: [riscv64] os: [linux] - requiresBuild: true - dev: true - optional: true + libc: [glibc] - /@rollup/rollup-linux-s390x-gnu@4.18.1: + '@rollup/rollup-linux-s390x-gnu@4.18.1': resolution: {integrity: sha512-qb1hMMT3Fr/Qz1OKovCuUM11MUNLUuHeBC2DPPAWUYYUAOFWaxInaTwTQmc7Fl5La7DShTEpmYwgdt2hG+4TEg==} cpu: [s390x] os: [linux] - requiresBuild: true - dev: true - optional: true + libc: [glibc] - /@rollup/rollup-linux-x64-gnu@4.18.1: + '@rollup/rollup-linux-x64-gnu@4.18.1': resolution: {integrity: sha512-7O5u/p6oKUFYjRbZkL2FLbwsyoJAjyeXHCU3O4ndvzg2OFO2GinFPSJFGbiwFDaCFc+k7gs9CF243PwdPQFh5g==} cpu: [x64] os: [linux] - requiresBuild: true - dev: true - optional: true + libc: [glibc] - /@rollup/rollup-linux-x64-musl@4.18.1: + '@rollup/rollup-linux-x64-musl@4.18.1': resolution: {integrity: sha512-pDLkYITdYrH/9Cv/Vlj8HppDuLMDUBmgsM0+N+xLtFd18aXgM9Nyqupb/Uw+HeidhfYg2lD6CXvz6CjoVOaKjQ==} cpu: [x64] os: [linux] - requiresBuild: true - dev: true - optional: true + libc: [musl] - /@rollup/rollup-win32-arm64-msvc@4.18.1: + '@rollup/rollup-win32-arm64-msvc@4.18.1': resolution: {integrity: sha512-W2ZNI323O/8pJdBGil1oCauuCzmVd9lDmWBBqxYZcOqWD6aWqJtVBQ1dFrF4dYpZPks6F+xCZHfzG5hYlSHZ6g==} cpu: [arm64] os: [win32] - requiresBuild: true - dev: true - optional: true - /@rollup/rollup-win32-ia32-msvc@4.18.1: + '@rollup/rollup-win32-ia32-msvc@4.18.1': resolution: {integrity: sha512-ELfEX1/+eGZYMaCIbK4jqLxO1gyTSOIlZr6pbC4SRYFaSIDVKOnZNMdoZ+ON0mrFDp4+H5MhwNC1H/AhE3zQLg==} cpu: [ia32] os: [win32] - requiresBuild: true - dev: true - optional: true - /@rollup/rollup-win32-x64-msvc@4.18.1: + '@rollup/rollup-win32-x64-msvc@4.18.1': resolution: {integrity: sha512-yjk2MAkQmoaPYCSu35RLJ62+dz358nE83VfTePJRp8CG7aMg25mEJYpXFiD+NcevhX8LxD5OP5tktPXnXN7GDw==} cpu: [x64] os: [win32] - requiresBuild: true - dev: true - optional: true - /@sxzz/popperjs-es@2.11.7: + '@sxzz/popperjs-es@2.11.7': resolution: {integrity: sha512-Ccy0NlLkzr0Ex2FKvh2X+OyERHXJ88XJ1MXtsI9y9fGexlaXaVTPzBCRBwIxFkORuOb+uBqeu+RqnpgYTEZRUQ==} - dev: false - /@types/estree@1.0.5: + '@types/estree@1.0.5': resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} - dev: true - /@types/file-saver@2.0.7: + '@types/file-saver@2.0.7': resolution: {integrity: sha512-dNKVfHd/jk0SkR/exKGj2ggkB45MAkzvWCaqLUUgkyjITkGNzH8H+yUwr+BLJUBjZOe9w8X3wgmXhZDRg1ED6A==} - dev: true - /@types/lodash-es@4.17.12: + '@types/lodash-es@4.17.12': resolution: {integrity: sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==} - dependencies: - '@types/lodash': 4.17.7 - dev: false - /@types/lodash@4.17.7: + '@types/lodash@4.17.7': resolution: {integrity: sha512-8wTvZawATi/lsmNu10/j2hk1KEP0IvjubqPE3cu1Xz7xfXXt5oCq3SNUz4fMIP4XGF9Ky+Ue2tBA3hcS7LSBlA==} - dev: false - /@types/node@20.14.10: + '@types/node@20.14.10': resolution: {integrity: sha512-MdiXf+nDuMvY0gJKxyfZ7/6UFsETO7mGKF54MVD/ekJS6HdFtpZFBgrh6Pseu64XTb2MLyFPlbW6hj8HYRQNOQ==} - dependencies: - undici-types: 5.26.5 - dev: true - /@types/web-bluetooth@0.0.16: + '@types/web-bluetooth@0.0.16': resolution: {integrity: sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ==} - dev: false - /@vitejs/plugin-vue@5.0.5(vite@5.3.3)(vue@3.4.31): + '@vitejs/plugin-vue@5.0.5': resolution: {integrity: sha512-LOjm7XeIimLBZyzinBQ6OSm3UBCNVCpLkxGC0oWmm2YPzVZoxMsdvNVimLTBzpAnR9hl/yn1SHGuRfe6/Td9rQ==} engines: {node: ^18.0.0 || >=20.0.0} peerDependencies: vite: ^5.0.0 vue: ^3.2.25 - dependencies: - vite: 5.3.3(@types/node@20.14.10)(sass@1.77.8)(terser@5.31.3) - vue: 3.4.31(typescript@5.5.3) - dev: true - /@volar/language-core@2.4.0-alpha.16: + '@volar/language-core@2.4.0-alpha.16': resolution: {integrity: sha512-oOTnIZlx0P/idFwVw+W0NbzKDtZAQMzXSdIFfTePCKcXlb4Ys12GaGkx8NF9dsvPYV3nbv3ZsSxnkZWBmNKd7A==} - dependencies: - '@volar/source-map': 2.4.0-alpha.16 - dev: true - /@volar/source-map@2.4.0-alpha.16: + '@volar/source-map@2.4.0-alpha.16': resolution: {integrity: sha512-sL9vNG7iR2hiKZor7UkD5Sufu3QCia4cbp2gX/nGRNSdaPbhOpdAoavwlBm0PrVkpiA19NZuavZoobD8krviFg==} - dev: true - /@volar/typescript@2.4.0-alpha.16: + '@volar/typescript@2.4.0-alpha.16': resolution: {integrity: sha512-WCx7z5O81McCQp2cC0c8081y+MgTiAR2WAiJjVL4tr4Qh4GgqK0lgn3CqAjcKizaK1R5y3wfrUqgIYr+QeFYcw==} - dependencies: - '@volar/language-core': 2.4.0-alpha.16 - path-browserify: 1.0.1 - vscode-uri: 3.0.8 - dev: true - /@vue/compiler-core@3.4.31: + '@vue/compiler-core@3.4.31': resolution: {integrity: sha512-skOiodXWTV3DxfDhB4rOf3OGalpITLlgCeOwb+Y9GJpfQ8ErigdBUHomBzvG78JoVE8MJoQsb+qhZiHfKeNeEg==} - dependencies: - '@babel/parser': 7.24.8 - '@vue/shared': 3.4.31 - entities: 4.5.0 - estree-walker: 2.0.2 - source-map-js: 1.2.0 - /@vue/compiler-dom@3.4.31: + '@vue/compiler-dom@3.4.31': resolution: {integrity: sha512-wK424WMXsG1IGMyDGyLqB+TbmEBFM78hIsOJ9QwUVLGrcSk0ak6zYty7Pj8ftm7nEtdU/DGQxAXp0/lM/2cEpQ==} - dependencies: - '@vue/compiler-core': 3.4.31 - '@vue/shared': 3.4.31 - /@vue/compiler-sfc@3.4.31: + '@vue/compiler-sfc@3.4.31': resolution: {integrity: sha512-einJxqEw8IIJxzmnxmJBuK2usI+lJonl53foq+9etB2HAzlPjAS/wa7r0uUpXw5ByX3/0uswVSrjNb17vJm1kQ==} - dependencies: - '@babel/parser': 7.24.8 - '@vue/compiler-core': 3.4.31 - '@vue/compiler-dom': 3.4.31 - '@vue/compiler-ssr': 3.4.31 - '@vue/shared': 3.4.31 - estree-walker: 2.0.2 - magic-string: 0.30.10 - postcss: 8.4.39 - source-map-js: 1.2.0 - /@vue/compiler-ssr@3.4.31: + '@vue/compiler-ssr@3.4.31': resolution: {integrity: sha512-RtefmITAje3fJ8FSg1gwgDhdKhZVntIVbwupdyZDSifZTRMiWxWehAOTCc8/KZDnBOcYQ4/9VWxsTbd3wT0hAA==} - dependencies: - '@vue/compiler-dom': 3.4.31 - '@vue/shared': 3.4.31 - /@vue/devtools-api@6.6.3: + '@vue/devtools-api@6.6.3': resolution: {integrity: sha512-0MiMsFma/HqA6g3KLKn+AGpL1kgKhFWszC9U29NfpWK5LE7bjeXxySWJrOJ77hBz+TBrBQ7o4QJqbPbqbs8rJw==} - dev: false - /@vue/language-core@2.0.26(typescript@5.5.3): + '@vue/language-core@2.0.26': resolution: {integrity: sha512-/lt6SfQ3O1yDAhPsnLv9iSUgXd1dMHqUm/t3RctfqjuwQf1LnftZ414X3UBn6aXT4MiwXWtbNJ4Z0NZWwDWgJQ==} peerDependencies: typescript: '*' peerDependenciesMeta: typescript: optional: true - dependencies: - '@volar/language-core': 2.4.0-alpha.16 - '@vue/compiler-dom': 3.4.31 - '@vue/shared': 3.4.31 - computeds: 0.0.1 - minimatch: 9.0.5 - muggle-string: 0.4.1 - path-browserify: 1.0.1 - typescript: 5.5.3 - vue-template-compiler: 2.7.16 - dev: true - /@vue/reactivity@3.4.31: + '@vue/reactivity@3.4.31': resolution: {integrity: sha512-VGkTani8SOoVkZNds1PfJ/T1SlAIOf8E58PGAhIOUDYPC4GAmFA2u/E14TDAFcf3vVDKunc4QqCe/SHr8xC65Q==} - dependencies: - '@vue/shared': 3.4.31 - /@vue/runtime-core@3.4.31: + '@vue/runtime-core@3.4.31': resolution: {integrity: sha512-LDkztxeUPazxG/p8c5JDDKPfkCDBkkiNLVNf7XZIUnJ+66GVGkP+TIh34+8LtPisZ+HMWl2zqhIw0xN5MwU1cw==} - dependencies: - '@vue/reactivity': 3.4.31 - '@vue/shared': 3.4.31 - /@vue/runtime-dom@3.4.31: + '@vue/runtime-dom@3.4.31': resolution: {integrity: sha512-2Auws3mB7+lHhTFCg8E9ZWopA6Q6L455EcU7bzcQ4x6Dn4cCPuqj6S2oBZgN2a8vJRS/LSYYxwFFq2Hlx3Fsaw==} - dependencies: - '@vue/reactivity': 3.4.31 - '@vue/runtime-core': 3.4.31 - '@vue/shared': 3.4.31 - csstype: 3.1.3 - /@vue/server-renderer@3.4.31(vue@3.4.31): + '@vue/server-renderer@3.4.31': resolution: {integrity: sha512-D5BLbdvrlR9PE3by9GaUp1gQXlCNadIZytMIb8H2h3FMWJd4oUfkUTEH2wAr3qxoRz25uxbTcbqd3WKlm9EHQA==} peerDependencies: vue: 3.4.31 - dependencies: - '@vue/compiler-ssr': 3.4.31 - '@vue/shared': 3.4.31 - vue: 3.4.31(typescript@5.5.3) - /@vue/shared@3.4.31: + '@vue/shared@3.4.31': resolution: {integrity: sha512-Yp3wtJk//8cO4NItOPpi3QkLExAr/aLBGZMmTtW9WpdwBCJpRM6zj9WgWktXAl8IDIozwNMByT45JP3tO3ACWA==} - /@vueuse/core@9.13.0(vue@3.4.31): + '@vueuse/core@9.13.0': resolution: {integrity: sha512-pujnclbeHWxxPRqXWmdkKV5OX4Wk4YeK7wusHqRwU0Q7EFusHoqNA/aPhB6KCh9hEqJkLAJo7bb0Lh9b+OIVzw==} - dependencies: - '@types/web-bluetooth': 0.0.16 - '@vueuse/metadata': 9.13.0 - '@vueuse/shared': 9.13.0(vue@3.4.31) - vue-demi: 0.14.8(vue@3.4.31) - transitivePeerDependencies: - - '@vue/composition-api' - - vue - dev: false - /@vueuse/metadata@9.13.0: + '@vueuse/metadata@9.13.0': resolution: {integrity: sha512-gdU7TKNAUVlXXLbaF+ZCfte8BjRJQWPCa2J55+7/h+yDtzw3vOoGQDRXzI6pyKyo6bXFT5/QoPE4hAknExjRLQ==} - dev: false - /@vueuse/shared@9.13.0(vue@3.4.31): + '@vueuse/shared@9.13.0': resolution: {integrity: sha512-UrnhU+Cnufu4S6JLCPZnkWh0WwZGUp72ktOF2DFptMlOs3TOdVv8xJN53zhHGARmVOsz5KqOls09+J1NR6sBKw==} - dependencies: - vue-demi: 0.14.8(vue@3.4.31) - transitivePeerDependencies: - - '@vue/composition-api' - - vue - dev: false - /acorn@8.12.1: + acorn@8.12.1: resolution: {integrity: sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==} engines: {node: '>=0.4.0'} hasBin: true - dev: true - /anymatch@3.1.3: + anymatch@3.1.3: resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} engines: {node: '>= 8'} - dependencies: - normalize-path: 3.0.0 - picomatch: 2.3.1 - dev: true - /async-validator@4.2.5: + async-validator@4.2.5: resolution: {integrity: sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==} - dev: false - /balanced-match@1.0.2: + balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - dev: true - /base64-arraybuffer@1.0.2: + base64-arraybuffer@1.0.2: resolution: {integrity: sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ==} engines: {node: '>= 0.6.0'} - dev: false - /binary-extensions@2.3.0: + binary-extensions@2.3.0: resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} engines: {node: '>=8'} - dev: true - /brace-expansion@2.0.1: + brace-expansion@2.0.1: resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} - dependencies: - balanced-match: 1.0.2 - dev: true - /braces@3.0.3: + braces@3.0.3: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} - dependencies: - fill-range: 7.1.1 - dev: true - /buffer-from@1.1.2: + buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - dev: true - /chokidar@3.6.0: + chokidar@3.6.0: resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} engines: {node: '>= 8.10.0'} - dependencies: - anymatch: 3.1.3 - braces: 3.0.3 - glob-parent: 5.1.2 - is-binary-path: 2.1.0 - is-glob: 4.0.3 - normalize-path: 3.0.0 - readdirp: 3.6.0 - optionalDependencies: - fsevents: 2.3.3 - dev: true - /commander@2.20.3: + commander@2.20.3: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} - dev: true - /computeds@0.0.1: + computeds@0.0.1: resolution: {integrity: sha512-7CEBgcMjVmitjYo5q8JTJVra6X5mQ20uTThdK+0kR7UEaDrAWEQcRiBtWJzga4eRpP6afNwwLsX2SET2JhVB1Q==} - dev: true - /confbox@0.1.7: + confbox@0.1.7: resolution: {integrity: sha512-uJcB/FKZtBMCJpK8MQji6bJHgu1tixKPxRLeGkNzBoOZzpnZUJm0jm2/sBDWcuBx1dYgxV4JU+g5hmNxCyAmdA==} - dev: true - /core-js@3.37.1: + core-js@3.37.1: resolution: {integrity: sha512-Xn6qmxrQZyB0FFY8E3bgRXei3lWDJHhvI+u0q9TKIYM49G8pAr0FgnnrFRAmsbptZL1yxRADVXn+x5AGsbBfyw==} - requiresBuild: true - dev: false - /core-util-is@1.0.3: + core-util-is@1.0.3: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} - dev: false - /css-line-break@2.1.0: + css-line-break@2.1.0: resolution: {integrity: sha512-FHcKFCZcAha3LwfVBhCQbW2nCNbkZXn7KVUJcsT5/P8YmfsVja0FMPJr0B903j/E69HUphKiV9iQArX8SDYA4w==} - dependencies: - utrie: 1.0.2 - dev: false - /csstype@3.1.3: + csstype@3.1.3: resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} - /dayjs@1.11.11: + dayjs@1.11.11: resolution: {integrity: sha512-okzr3f11N6WuqYtZSvm+F776mB41wRZMhKP+hc34YdW+KmtYYK9iqvHSwo2k9FEH3fhGXvOPV6yz2IcSrfRUDg==} - dev: false - /de-indent@1.0.2: + de-indent@1.0.2: resolution: {integrity: sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==} - dev: true - /debug@4.3.5: + debug@4.3.5: resolution: {integrity: sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==} engines: {node: '>=6.0'} peerDependencies: @@ -835,324 +552,187 @@ packages: peerDependenciesMeta: supports-color: optional: true - dependencies: - ms: 2.1.2 - dev: true - /diff-match-patch@1.0.5: + dexie@4.0.8: + resolution: {integrity: sha512-1G6cJevS17KMDK847V3OHvK2zei899GwpDiqfEXHP1ASvme6eWJmAp9AU4s1son2TeGkWmC0g3y8ezOBPnalgQ==} + + diff-match-patch@1.0.5: resolution: {integrity: sha512-IayShXAgj/QMXgB0IWmKx+rOPuGMhqm5w6jvFxmVenXKIzRqTAAsbBPT3kWQeGANj3jGgvcvv4yK6SxqYmikgw==} - dev: false - /element-plus@2.7.7(vue@3.4.31): + element-plus@2.7.7: resolution: {integrity: sha512-7ucUiDAxevyBE8JbXBTe9ofHhS047VmWMLoksE45zZ08XSnhnyG7WUuk3gmDbAklfVMHedb9sEV3OovPUWt+Sw==} peerDependencies: vue: ^3.2.0 - dependencies: - '@ctrl/tinycolor': 3.6.1 - '@element-plus/icons-vue': 2.3.1(vue@3.4.31) - '@floating-ui/dom': 1.6.7 - '@popperjs/core': /@sxzz/popperjs-es@2.11.7 - '@types/lodash': 4.17.7 - '@types/lodash-es': 4.17.12 - '@vueuse/core': 9.13.0(vue@3.4.31) - async-validator: 4.2.5 - dayjs: 1.11.11 - escape-html: 1.0.3 - lodash: 4.17.21 - lodash-es: 4.17.21 - lodash-unified: 1.0.3(@types/lodash-es@4.17.12)(lodash-es@4.17.21)(lodash@4.17.21) - memoize-one: 6.0.0 - normalize-wheel-es: 1.2.0 - vue: 3.4.31(typescript@5.5.3) - transitivePeerDependencies: - - '@vue/composition-api' - dev: false - /entities@4.5.0: + entities@4.5.0: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} - /esbuild@0.21.5: + esbuild@0.21.5: resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} engines: {node: '>=12'} hasBin: true - requiresBuild: true - 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 - dev: true - /escape-html@1.0.3: + escape-html@1.0.3: resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} - dev: false - /escape-string-regexp@5.0.0: + escape-string-regexp@5.0.0: resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} engines: {node: '>=12'} - dev: true - /estree-walker@2.0.2: + estree-walker@2.0.2: resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} - /estree-walker@3.0.3: + estree-walker@3.0.3: resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} - dependencies: - '@types/estree': 1.0.5 - dev: true - /fast-glob@3.3.2: + fast-glob@3.3.2: resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} engines: {node: '>=8.6.0'} - dependencies: - '@nodelib/fs.stat': 2.0.5 - '@nodelib/fs.walk': 1.2.8 - glob-parent: 5.1.2 - merge2: 1.4.1 - micromatch: 4.0.7 - dev: true - /fastq@1.17.1: + fastq@1.17.1: resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} - dependencies: - reusify: 1.0.4 - dev: true - /file-saver@2.0.5: + file-saver@2.0.5: resolution: {integrity: sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA==} - dev: false - /fill-range@7.1.1: + fill-range@7.1.1: resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} engines: {node: '>=8'} - dependencies: - to-regex-range: 5.0.1 - dev: true - /fsevents@2.3.3: + fsevents@2.3.3: resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] - requiresBuild: true - dev: true - optional: true - /glob-parent@5.1.2: + glob-parent@5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} - dependencies: - is-glob: 4.0.3 - dev: true - /he@1.2.0: + he@1.2.0: resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} hasBin: true - dev: true - /html2canvas@1.4.1: + html2canvas@1.4.1: resolution: {integrity: sha512-fPU6BHNpsyIhr8yyMpTLLxAbkaK8ArIBcmZIRiBLiDhjeqvXolaEmDGmELFuX9I4xDcaKKcJl+TKZLqruBbmWA==} engines: {node: '>=8.0.0'} - dependencies: - css-line-break: 2.1.0 - text-segmentation: 1.0.3 - dev: false - /immediate@3.0.6: + immediate@3.0.6: resolution: {integrity: sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==} - dev: false - /immutable@4.3.6: + immutable@4.3.6: resolution: {integrity: sha512-Ju0+lEMyzMVZarkTn/gqRpdqd5dOPaz1mCZ0SH3JV6iFw81PldE/PEB1hWVEA288HPt4WXW8O7AWxB10M+03QQ==} - dev: true - /inherits@2.0.4: + inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - dev: false - /is-binary-path@2.1.0: + is-binary-path@2.1.0: resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} engines: {node: '>=8'} - dependencies: - binary-extensions: 2.3.0 - dev: true - /is-extglob@2.1.1: + is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} - dev: true - /is-glob@4.0.3: + is-glob@4.0.3: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} - dependencies: - is-extglob: 2.1.1 - dev: true - /is-number@7.0.0: + is-number@7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} - dev: true - /isarray@1.0.0: + isarray@1.0.0: resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} - dev: false - /js-tokens@9.0.0: + js-tokens@9.0.0: resolution: {integrity: sha512-WriZw1luRMlmV3LGJaR6QOJjWwgLUTf89OwT2lUOyjX2dJGBwgmIkbcz+7WFZjrZM635JOIR517++e/67CP9dQ==} - dev: true - /jszip@3.10.1: + jszip@3.10.1: resolution: {integrity: sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==} - dependencies: - lie: 3.3.0 - pako: 1.0.11 - readable-stream: 2.3.8 - setimmediate: 1.0.5 - dev: false - /lie@3.3.0: + lie@3.3.0: resolution: {integrity: sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==} - dependencies: - immediate: 3.0.6 - dev: false - /local-pkg@0.5.0: + local-pkg@0.5.0: resolution: {integrity: sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==} engines: {node: '>=14'} - dependencies: - mlly: 1.7.1 - pkg-types: 1.1.3 - dev: true - /lodash-es@4.17.21: + lodash-es@4.17.21: resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} - dev: false - /lodash-unified@1.0.3(@types/lodash-es@4.17.12)(lodash-es@4.17.21)(lodash@4.17.21): + lodash-unified@1.0.3: resolution: {integrity: sha512-WK9qSozxXOD7ZJQlpSqOT+om2ZfcT4yO+03FuzAHD0wF6S0l0090LRPDx3vhTTLZ8cFKpBn+IOcVXK6qOcIlfQ==} peerDependencies: '@types/lodash-es': '*' lodash: '*' lodash-es: '*' - dependencies: - '@types/lodash-es': 4.17.12 - lodash: 4.17.21 - lodash-es: 4.17.21 - dev: false - /lodash@4.17.21: + lodash@4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} - dev: false - /lunar-typescript@1.7.5: + lunar-typescript@1.7.5: resolution: {integrity: sha512-AlOwYrxHRCR9Plba5TlZY0NVv6aFobmR1gxfiAE1KxjDzBXoDtT2KrsBYCVaErGokiL8qLMS1FNwGPiPRX2a4g==} - dev: false - /magic-string@0.30.10: + magic-string@0.30.10: resolution: {integrity: sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==} - dependencies: - '@jridgewell/sourcemap-codec': 1.5.0 - /memoize-one@6.0.0: + memoize-one@6.0.0: resolution: {integrity: sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==} - dev: false - /merge2@1.4.1: + merge2@1.4.1: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} - dev: true - /micromatch@4.0.7: + micromatch@4.0.7: resolution: {integrity: sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==} engines: {node: '>=8.6'} - dependencies: - braces: 3.0.3 - picomatch: 2.3.1 - dev: true - /minimatch@9.0.5: + minimatch@9.0.5: resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} engines: {node: '>=16 || 14 >=14.17'} - dependencies: - brace-expansion: 2.0.1 - dev: true - /mlly@1.7.1: + mlly@1.7.1: resolution: {integrity: sha512-rrVRZRELyQzrIUAVMHxP97kv+G786pHmOKzuFII8zDYahFBS7qnHh2AlYSl1GAHhaMPCz6/oHjVMcfFYgFYHgA==} - dependencies: - acorn: 8.12.1 - pathe: 1.1.2 - pkg-types: 1.1.3 - ufo: 1.5.3 - dev: true - /moment@2.30.1: + moment@2.30.1: resolution: {integrity: sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==} - dev: false - /ms@2.1.2: + ms@2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} - dev: true - /muggle-string@0.4.1: + muggle-string@0.4.1: resolution: {integrity: sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==} - dev: true - /nanoid@3.3.7: + nanoid@3.3.7: resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true - /normalize-path@3.0.0: + normalize-path@3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} - dev: true - /normalize-wheel-es@1.2.0: + normalize-wheel-es@1.2.0: resolution: {integrity: sha512-Wj7+EJQ8mSuXr2iWfnujrimU35R2W4FAErEyTmJoJ7ucwTn2hOUSsRehMb5RSYkxXGTM7Y9QpvPmp++w5ftoJw==} - dev: false - /pako@1.0.11: + pako@1.0.11: resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==} - dev: false - /path-browserify@1.0.1: + path-browserify@1.0.1: resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} - dev: true - /pathe@1.1.2: + pathe@1.1.2: resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} - dev: true - /picocolors@1.0.1: + picocolors@1.0.1: resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==} - /picomatch@2.3.1: + picomatch@2.3.1: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} - dev: true - /pinia-plugin-persist@1.0.0(pinia@2.1.7)(vue@3.4.31): + pinia-plugin-persist@1.0.0: resolution: {integrity: sha512-M4hBBd8fz/GgNmUPaaUsC29y1M09lqbXrMAHcusVoU8xlQi1TqgkWnnhvMikZwr7Le/hVyMx8KUcumGGrR6GVw==} peerDependencies: '@vue/composition-api': ^1.0.0 @@ -1161,13 +741,8 @@ packages: peerDependenciesMeta: '@vue/composition-api': optional: true - dependencies: - pinia: 2.1.7(typescript@5.5.3)(vue@3.4.31) - vue: 3.4.31(typescript@5.5.3) - vue-demi: 0.12.5(vue@3.4.31) - dev: false - /pinia@2.1.7(typescript@5.5.3)(vue@3.4.31): + pinia@2.1.7: resolution: {integrity: sha512-+C2AHFtcFqjPih0zpYuvof37SFxMQ7OEG2zV9jRI12i9BOy3YQVAHwdKtyyc8pDcDyIc33WCIsZaCFWU7WWxGQ==} peerDependencies: '@vue/composition-api': ^1.4.0 @@ -1178,222 +753,113 @@ packages: optional: true typescript: optional: true - dependencies: - '@vue/devtools-api': 6.6.3 - typescript: 5.5.3 - vue: 3.4.31(typescript@5.5.3) - vue-demi: 0.14.8(vue@3.4.31) - dev: false - /pkg-types@1.1.3: + pkg-types@1.1.3: resolution: {integrity: sha512-+JrgthZG6m3ckicaOB74TwQ+tBWsFl3qVQg7mN8ulwSOElJ7gBhKzj2VkCPnZ4NlF6kEquYU+RIYNVAvzd54UA==} - dependencies: - confbox: 0.1.7 - mlly: 1.7.1 - pathe: 1.1.2 - dev: true - /postcss@8.4.39: + postcss@8.4.39: resolution: {integrity: sha512-0vzE+lAiG7hZl1/9I8yzKLx3aR9Xbof3fBHKunvMfOCYAtMhrsnccJY2iTURb9EZd5+pLuiNV9/c/GZJOHsgIw==} engines: {node: ^10 || ^12 || >=14} - dependencies: - nanoid: 3.3.7 - picocolors: 1.0.1 - source-map-js: 1.2.0 - /process-nextick-args@2.0.1: + process-nextick-args@2.0.1: resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} - dev: false - /queue-microtask@1.2.3: + queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - dev: true - /readable-stream@2.3.8: + readable-stream@2.3.8: resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} - dependencies: - core-util-is: 1.0.3 - inherits: 2.0.4 - isarray: 1.0.0 - process-nextick-args: 2.0.1 - safe-buffer: 5.1.2 - string_decoder: 1.1.1 - util-deprecate: 1.0.2 - dev: false - /readdirp@3.6.0: + readdirp@3.6.0: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} engines: {node: '>=8.10.0'} - dependencies: - picomatch: 2.3.1 - dev: true - /reusify@1.0.4: + reusify@1.0.4: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - dev: true - /rollup@4.18.1: + rollup@4.18.1: resolution: {integrity: sha512-Elx2UT8lzxxOXMpy5HWQGZqkrQOtrVDDa/bm9l10+U4rQnVzbL/LgZ4NOM1MPIDyHk69W4InuYDF5dzRh4Kw1A==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true - dependencies: - '@types/estree': 1.0.5 - optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.18.1 - '@rollup/rollup-android-arm64': 4.18.1 - '@rollup/rollup-darwin-arm64': 4.18.1 - '@rollup/rollup-darwin-x64': 4.18.1 - '@rollup/rollup-linux-arm-gnueabihf': 4.18.1 - '@rollup/rollup-linux-arm-musleabihf': 4.18.1 - '@rollup/rollup-linux-arm64-gnu': 4.18.1 - '@rollup/rollup-linux-arm64-musl': 4.18.1 - '@rollup/rollup-linux-powerpc64le-gnu': 4.18.1 - '@rollup/rollup-linux-riscv64-gnu': 4.18.1 - '@rollup/rollup-linux-s390x-gnu': 4.18.1 - '@rollup/rollup-linux-x64-gnu': 4.18.1 - '@rollup/rollup-linux-x64-musl': 4.18.1 - '@rollup/rollup-win32-arm64-msvc': 4.18.1 - '@rollup/rollup-win32-ia32-msvc': 4.18.1 - '@rollup/rollup-win32-x64-msvc': 4.18.1 - fsevents: 2.3.3 - dev: true - /rtcpeerconnection-shim@1.2.15: + rtcpeerconnection-shim@1.2.15: resolution: {integrity: sha512-C6DxhXt7bssQ1nHb154lqeL0SXz5Dx4RczXZu2Aa/L1NJFnEVDxFwCBo3fqtuljhHIGceg5JKBV4XJ0gW5JKyw==} engines: {node: '>=6.0.0', npm: '>=3.10.0'} - dependencies: - sdp: 2.12.0 - dev: false - /run-parallel@1.2.0: + run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} - dependencies: - queue-microtask: 1.2.3 - dev: true - /safe-buffer@5.1.2: + safe-buffer@5.1.2: resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} - dev: false - /sass@1.77.8: + sass@1.77.8: resolution: {integrity: sha512-4UHg6prsrycW20fqLGPShtEvo/WyHRVRHwOP4DzkUrObWoWI05QBSfzU71TVB7PFaL104TwNaHpjlWXAZbQiNQ==} engines: {node: '>=14.0.0'} hasBin: true - dependencies: - chokidar: 3.6.0 - immutable: 4.3.6 - source-map-js: 1.2.0 - dev: true - /scule@1.3.0: + scule@1.3.0: resolution: {integrity: sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g==} - dev: true - /sdp@2.12.0: + sdp@2.12.0: resolution: {integrity: sha512-jhXqQAQVM+8Xj5EjJGVweuEzgtGWb3tmEEpl3CLP3cStInSbVHSg0QWOGQzNq8pSID4JkpeV2mPqlMDLrm0/Vw==} - dev: false - /semver@7.6.2: + semver@7.6.2: resolution: {integrity: sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==} engines: {node: '>=10'} hasBin: true - dev: true - /setimmediate@1.0.5: + setimmediate@1.0.5: resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} - dev: false - /source-map-js@1.2.0: + source-map-js@1.2.0: resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==} engines: {node: '>=0.10.0'} - /source-map-support@0.5.21: + source-map-support@0.5.21: resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} - dependencies: - buffer-from: 1.1.2 - source-map: 0.6.1 - dev: true - /source-map@0.6.1: + source-map@0.6.1: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} - dev: true - /string_decoder@1.1.1: + string_decoder@1.1.1: resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} - dependencies: - safe-buffer: 5.1.2 - dev: false - /strip-literal@2.1.0: + strip-literal@2.1.0: resolution: {integrity: sha512-Op+UycaUt/8FbN/Z2TWPBLge3jWrP3xj10f3fnYxf052bKuS3EKs1ZQcVGjnEMdsNVAM+plXRdmjrZ/KgG3Skw==} - dependencies: - js-tokens: 9.0.0 - dev: true - /terser@5.31.3: + terser@5.31.3: resolution: {integrity: sha512-pAfYn3NIZLyZpa83ZKigvj6Rn9c/vd5KfYGX7cN1mnzqgDcxWvrU5ZtAfIKhEXz9nRecw4z3LXkjaq96/qZqAA==} engines: {node: '>=10'} hasBin: true - dependencies: - '@jridgewell/source-map': 0.3.6 - acorn: 8.12.1 - commander: 2.20.3 - source-map-support: 0.5.21 - dev: true - /text-segmentation@1.0.3: + text-segmentation@1.0.3: resolution: {integrity: sha512-iOiPUo/BGnZ6+54OsWxZidGCsdU8YbE4PSpdPinp7DeMtUJNJBoJ/ouUSTJjHkh1KntHaltHl/gDs2FC4i5+Nw==} - dependencies: - utrie: 1.0.2 - dev: false - /to-fast-properties@2.0.0: + to-fast-properties@2.0.0: resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} engines: {node: '>=4'} - /to-regex-range@5.0.1: + to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} - dependencies: - is-number: 7.0.0 - dev: true - /typescript@5.5.3: + typescript@5.5.3: resolution: {integrity: sha512-/hreyEujaB0w76zKo6717l3L0o/qEUtRgdvUBvlkhoWeOVMjMuHNHk0BRBzikzuGDqNmPQbg5ifMEqsHLiIUcQ==} engines: {node: '>=14.17'} hasBin: true - /ufo@1.5.3: + ufo@1.5.3: resolution: {integrity: sha512-Y7HYmWaFwPUmkoQCUIAYpKqkOf+SbVj/2fJJZ4RJMCfZp0rTGwRbzQD+HghfnhKOjL9E01okqz+ncJskGYfBNw==} - dev: true - /undici-types@5.26.5: + undici-types@5.26.5: resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} - dev: true - /unimport@3.7.2: + unimport@3.7.2: resolution: {integrity: sha512-91mxcZTadgXyj3lFWmrGT8GyoRHWuE5fqPOjg5RVtF6vj+OfM5G6WCzXjuYtSgELE5ggB34RY4oiCSEP8I3AHw==} - dependencies: - '@rollup/pluginutils': 5.1.0 - acorn: 8.12.1 - escape-string-regexp: 5.0.0 - estree-walker: 3.0.3 - fast-glob: 3.3.2 - local-pkg: 0.5.0 - magic-string: 0.30.10 - mlly: 1.7.1 - pathe: 1.1.2 - pkg-types: 1.1.3 - scule: 1.3.0 - strip-literal: 2.1.0 - unplugin: 1.11.0 - transitivePeerDependencies: - - rollup - dev: true - /unplugin-auto-import@0.18.0: + unplugin-auto-import@0.18.0: resolution: {integrity: sha512-DZcj8tceMpwuZgBPM9hhKd7v05WAYCUc/qYjxV7vGbeVCGsQ8SHWumCyOYBDqYzkPd4FlQkuh+OH0cWgdCjcdw==} engines: {node: '>=14'} peerDependencies: @@ -1404,20 +870,8 @@ packages: optional: true '@vueuse/core': optional: true - dependencies: - '@antfu/utils': 0.7.10 - '@rollup/pluginutils': 5.1.0 - fast-glob: 3.3.2 - local-pkg: 0.5.0 - magic-string: 0.30.10 - minimatch: 9.0.5 - unimport: 3.7.2 - unplugin: 1.11.0 - transitivePeerDependencies: - - rollup - dev: true - /unplugin-vue-components@0.27.2(vue@3.4.31): + unplugin-vue-components@0.27.2: resolution: {integrity: sha512-YifnsmslMRNt+JRQiCG4ZX1+xUQuubUZm76K7Qtg8dmchZJkHIDxZSyfZb5/jqrLWMTm/TUjGJ3ZDlzO6SFnSQ==} engines: {node: '>=14'} peerDependencies: @@ -1429,50 +883,21 @@ packages: optional: true '@nuxt/kit': optional: true - dependencies: - '@antfu/utils': 0.7.10 - '@rollup/pluginutils': 5.1.0 - chokidar: 3.6.0 - debug: 4.3.5 - fast-glob: 3.3.2 - local-pkg: 0.5.0 - magic-string: 0.30.10 - minimatch: 9.0.5 - mlly: 1.7.1 - unplugin: 1.11.0 - vue: 3.4.31(typescript@5.5.3) - transitivePeerDependencies: - - rollup - - supports-color - dev: true - /unplugin@1.11.0: + unplugin@1.11.0: resolution: {integrity: sha512-3r7VWZ/webh0SGgJScpWl2/MRCZK5d3ZYFcNaeci/GQ7Teop7zf0Nl2pUuz7G21BwPd9pcUPOC5KmJ2L3WgC5g==} engines: {node: '>=14.0.0'} - dependencies: - acorn: 8.12.1 - chokidar: 3.6.0 - webpack-sources: 3.2.3 - webpack-virtual-modules: 0.6.2 - dev: true - /util-deprecate@1.0.2: + util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - dev: false - /utrie@1.0.2: + utrie@1.0.2: resolution: {integrity: sha512-1MLa5ouZiOmQzUbjbu9VmjLzn1QLXBhwpUa7kdLUQK+KQ5KA9I1vk5U4YHe/X2Ch7PYnJfWuWT+VbuxbGwljhw==} - dependencies: - base64-arraybuffer: 1.0.2 - dev: false - /vditor@3.10.4: + vditor@3.10.4: resolution: {integrity: sha512-NWaMom0buUvRjOCaK/jKeJEVfZNmfTgblK4+pxBoeTdiCYn5yWokcGYMh9GzHIvt5gy6FiQFc1VQvytIwyeIwA==} - dependencies: - diff-match-patch: 1.0.5 - dev: false - /vite@5.3.3(@types/node@20.14.10)(sass@1.77.8)(terser@5.31.3): + vite@5.3.3: resolution: {integrity: sha512-NPQdeCU0Dv2z5fu+ULotpuq5yfCS1BzKUIPhNbP3YBfAMGJXbt2nS+sbTFu+qchaqWTD+H3JK++nRwr6XIcp6A==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true @@ -1499,119 +924,908 @@ packages: optional: true terser: optional: true - dependencies: - '@types/node': 20.14.10 - esbuild: 0.21.5 - postcss: 8.4.39 - rollup: 4.18.1 - sass: 1.77.8 - terser: 5.31.3 - optionalDependencies: - fsevents: 2.3.3 - dev: true - /vscode-uri@3.0.8: + vscode-uri@3.0.8: resolution: {integrity: sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==} - dev: true - /vue-demi@0.12.5(vue@3.4.31): + vue-demi@0.12.5: resolution: {integrity: sha512-BREuTgTYlUr0zw0EZn3hnhC3I6gPWv+Kwh4MCih6QcAeaTlaIX0DwOVN0wHej7hSvDPecz4jygy/idsgKfW58Q==} engines: {node: '>=12'} hasBin: true - requiresBuild: true peerDependencies: '@vue/composition-api': ^1.0.0-rc.1 vue: ^3.0.0-0 || ^2.6.0 peerDependenciesMeta: '@vue/composition-api': optional: true - dependencies: - vue: 3.4.31(typescript@5.5.3) - dev: false - /vue-demi@0.14.8(vue@3.4.31): + vue-demi@0.14.8: resolution: {integrity: sha512-Uuqnk9YE9SsWeReYqK2alDI5YzciATE0r2SkA6iMAtuXvNTMNACJLJEXNXaEy94ECuBe4Sk6RzRU80kjdbIo1Q==} engines: {node: '>=12'} hasBin: true - requiresBuild: true peerDependencies: '@vue/composition-api': ^1.0.0-rc.1 vue: ^3.0.0-0 || ^2.6.0 peerDependenciesMeta: '@vue/composition-api': optional: true - dependencies: - vue: 3.4.31(typescript@5.5.3) - dev: false - /vue-router@4.4.0(vue@3.4.31): + vue-router@4.4.0: resolution: {integrity: sha512-HB+t2p611aIZraV2aPSRNXf0Z/oLZFrlygJm+sZbdJaW6lcFqEDQwnzUBXn+DApw+/QzDU/I9TeWx9izEjTmsA==} peerDependencies: vue: ^3.2.0 - dependencies: - '@vue/devtools-api': 6.6.3 - vue: 3.4.31(typescript@5.5.3) - dev: false - /vue-template-compiler@2.7.16: + vue-template-compiler@2.7.16: resolution: {integrity: sha512-AYbUWAJHLGGQM7+cNTELw+KsOG9nl2CnSv467WobS5Cv9uk3wFcnr1Etsz2sEIHEZvw1U+o9mRlEO6QbZvUPGQ==} - dependencies: - de-indent: 1.0.2 - he: 1.2.0 - dev: true - /vue-tsc@2.0.26(typescript@5.5.3): + vue-tsc@2.0.26: resolution: {integrity: sha512-tOhuwy2bIXbMhz82ef37qeiaQHMXKQkD6mOF6CCPl3/uYtST3l6fdNyfMxipudrQTxTfXVPlgJdMENBFfC1CfQ==} hasBin: true peerDependencies: typescript: '>=5.0.0' - dependencies: - '@volar/typescript': 2.4.0-alpha.16 - '@vue/language-core': 2.0.26(typescript@5.5.3) - semver: 7.6.2 - typescript: 5.5.3 - dev: true - /vue-web-screen-shot@1.5.3(core-js@3.37.1)(vue@3.4.31): + vue-web-screen-shot@1.5.3: resolution: {integrity: sha512-aYyLr14ggSyCH+v5QivsRHtD6sYexhC0BFqmR0p+9qqfKQupSgzSxBAcQi6rqVEy69cEMb1yqFG34tDbjFwpIQ==} peerDependencies: core-js: ^3.6.5 vue: ^3.2.47 - dependencies: - core-js: 3.37.1 - html2canvas: 1.4.1 - vue: 3.4.31(typescript@5.5.3) - webrtc-adapter: 7.7.1 - dev: false - /vue@3.4.31(typescript@5.5.3): + vue@3.4.31: resolution: {integrity: sha512-njqRrOy7W3YLAlVqSKpBebtZpDVg21FPoaq1I7f/+qqBThK9ChAIjkRWgeP6Eat+8C+iia4P3OYqpATP21BCoQ==} peerDependencies: typescript: '*' peerDependenciesMeta: typescript: optional: true + + webpack-sources@3.2.3: + resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} + engines: {node: '>=10.13.0'} + + webpack-virtual-modules@0.6.2: + resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==} + + webrtc-adapter@7.7.1: + resolution: {integrity: sha512-TbrbBmiQBL9n0/5bvDdORc6ZfRY/Z7JnEj+EYOD1ghseZdpJ+nF2yx14k3LgQKc7JZnG7HAcL+zHnY25So9d7A==} + engines: {node: '>=6.0.0', npm: '>=3.10.0'} + +snapshots: + + '@antfu/utils@0.7.10': {} + + '@babel/helper-string-parser@7.24.8': {} + + '@babel/helper-validator-identifier@7.24.7': {} + + '@babel/parser@7.24.8': + dependencies: + '@babel/types': 7.24.9 + + '@babel/types@7.24.9': + dependencies: + '@babel/helper-string-parser': 7.24.8 + '@babel/helper-validator-identifier': 7.24.7 + to-fast-properties: 2.0.0 + + '@ctrl/tinycolor@3.6.1': {} + + '@element-plus/icons-vue@2.3.1(vue@3.4.31(typescript@5.5.3))': + dependencies: + vue: 3.4.31(typescript@5.5.3) + + '@esbuild/aix-ppc64@0.21.5': + optional: true + + '@esbuild/android-arm64@0.21.5': + optional: true + + '@esbuild/android-arm@0.21.5': + optional: true + + '@esbuild/android-x64@0.21.5': + optional: true + + '@esbuild/darwin-arm64@0.21.5': + optional: true + + '@esbuild/darwin-x64@0.21.5': + optional: true + + '@esbuild/freebsd-arm64@0.21.5': + optional: true + + '@esbuild/freebsd-x64@0.21.5': + optional: true + + '@esbuild/linux-arm64@0.21.5': + optional: true + + '@esbuild/linux-arm@0.21.5': + optional: true + + '@esbuild/linux-ia32@0.21.5': + optional: true + + '@esbuild/linux-loong64@0.21.5': + optional: true + + '@esbuild/linux-mips64el@0.21.5': + optional: true + + '@esbuild/linux-ppc64@0.21.5': + optional: true + + '@esbuild/linux-riscv64@0.21.5': + optional: true + + '@esbuild/linux-s390x@0.21.5': + optional: true + + '@esbuild/linux-x64@0.21.5': + optional: true + + '@esbuild/netbsd-x64@0.21.5': + optional: true + + '@esbuild/openbsd-x64@0.21.5': + optional: true + + '@esbuild/sunos-x64@0.21.5': + optional: true + + '@esbuild/win32-arm64@0.21.5': + optional: true + + '@esbuild/win32-ia32@0.21.5': + optional: true + + '@esbuild/win32-x64@0.21.5': + optional: true + + '@floating-ui/core@1.6.4': + dependencies: + '@floating-ui/utils': 0.2.4 + + '@floating-ui/dom@1.6.7': + dependencies: + '@floating-ui/core': 1.6.4 + '@floating-ui/utils': 0.2.4 + + '@floating-ui/utils@0.2.4': {} + + '@jridgewell/gen-mapping@0.3.5': + dependencies: + '@jridgewell/set-array': 1.2.1 + '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/trace-mapping': 0.3.25 + + '@jridgewell/resolve-uri@3.1.2': {} + + '@jridgewell/set-array@1.2.1': {} + + '@jridgewell/source-map@0.3.6': + dependencies: + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + + '@jridgewell/sourcemap-codec@1.5.0': {} + + '@jridgewell/trace-mapping@0.3.25': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.0 + + '@liripeng/vue-audio-player@1.6.2(typescript@5.5.3)': + dependencies: + vue: 3.4.31(typescript@5.5.3) + vue-router: 4.4.0(vue@3.4.31(typescript@5.5.3)) + transitivePeerDependencies: + - typescript + + '@nodelib/fs.scandir@2.1.5': + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + + '@nodelib/fs.stat@2.0.5': {} + + '@nodelib/fs.walk@1.2.8': + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.17.1 + + '@rollup/pluginutils@5.1.0(rollup@4.18.1)': + dependencies: + '@types/estree': 1.0.5 + estree-walker: 2.0.2 + picomatch: 2.3.1 + optionalDependencies: + rollup: 4.18.1 + + '@rollup/rollup-android-arm-eabi@4.18.1': + optional: true + + '@rollup/rollup-android-arm64@4.18.1': + optional: true + + '@rollup/rollup-darwin-arm64@4.18.1': + optional: true + + '@rollup/rollup-darwin-x64@4.18.1': + optional: true + + '@rollup/rollup-linux-arm-gnueabihf@4.18.1': + optional: true + + '@rollup/rollup-linux-arm-musleabihf@4.18.1': + optional: true + + '@rollup/rollup-linux-arm64-gnu@4.18.1': + optional: true + + '@rollup/rollup-linux-arm64-musl@4.18.1': + optional: true + + '@rollup/rollup-linux-powerpc64le-gnu@4.18.1': + optional: true + + '@rollup/rollup-linux-riscv64-gnu@4.18.1': + optional: true + + '@rollup/rollup-linux-s390x-gnu@4.18.1': + optional: true + + '@rollup/rollup-linux-x64-gnu@4.18.1': + optional: true + + '@rollup/rollup-linux-x64-musl@4.18.1': + optional: true + + '@rollup/rollup-win32-arm64-msvc@4.18.1': + optional: true + + '@rollup/rollup-win32-ia32-msvc@4.18.1': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.18.1': + optional: true + + '@sxzz/popperjs-es@2.11.7': {} + + '@types/estree@1.0.5': {} + + '@types/file-saver@2.0.7': {} + + '@types/lodash-es@4.17.12': + dependencies: + '@types/lodash': 4.17.7 + + '@types/lodash@4.17.7': {} + + '@types/node@20.14.10': + dependencies: + undici-types: 5.26.5 + + '@types/web-bluetooth@0.0.16': {} + + '@vitejs/plugin-vue@5.0.5(vite@5.3.3(@types/node@20.14.10)(sass@1.77.8)(terser@5.31.3))(vue@3.4.31(typescript@5.5.3))': + dependencies: + vite: 5.3.3(@types/node@20.14.10)(sass@1.77.8)(terser@5.31.3) + vue: 3.4.31(typescript@5.5.3) + + '@volar/language-core@2.4.0-alpha.16': + dependencies: + '@volar/source-map': 2.4.0-alpha.16 + + '@volar/source-map@2.4.0-alpha.16': {} + + '@volar/typescript@2.4.0-alpha.16': + dependencies: + '@volar/language-core': 2.4.0-alpha.16 + path-browserify: 1.0.1 + vscode-uri: 3.0.8 + + '@vue/compiler-core@3.4.31': + dependencies: + '@babel/parser': 7.24.8 + '@vue/shared': 3.4.31 + entities: 4.5.0 + estree-walker: 2.0.2 + source-map-js: 1.2.0 + + '@vue/compiler-dom@3.4.31': + dependencies: + '@vue/compiler-core': 3.4.31 + '@vue/shared': 3.4.31 + + '@vue/compiler-sfc@3.4.31': + dependencies: + '@babel/parser': 7.24.8 + '@vue/compiler-core': 3.4.31 + '@vue/compiler-dom': 3.4.31 + '@vue/compiler-ssr': 3.4.31 + '@vue/shared': 3.4.31 + estree-walker: 2.0.2 + magic-string: 0.30.10 + postcss: 8.4.39 + source-map-js: 1.2.0 + + '@vue/compiler-ssr@3.4.31': + dependencies: + '@vue/compiler-dom': 3.4.31 + '@vue/shared': 3.4.31 + + '@vue/devtools-api@6.6.3': {} + + '@vue/language-core@2.0.26(typescript@5.5.3)': + dependencies: + '@volar/language-core': 2.4.0-alpha.16 + '@vue/compiler-dom': 3.4.31 + '@vue/shared': 3.4.31 + computeds: 0.0.1 + minimatch: 9.0.5 + muggle-string: 0.4.1 + path-browserify: 1.0.1 + vue-template-compiler: 2.7.16 + optionalDependencies: + typescript: 5.5.3 + + '@vue/reactivity@3.4.31': + dependencies: + '@vue/shared': 3.4.31 + + '@vue/runtime-core@3.4.31': + dependencies: + '@vue/reactivity': 3.4.31 + '@vue/shared': 3.4.31 + + '@vue/runtime-dom@3.4.31': + dependencies: + '@vue/reactivity': 3.4.31 + '@vue/runtime-core': 3.4.31 + '@vue/shared': 3.4.31 + csstype: 3.1.3 + + '@vue/server-renderer@3.4.31(vue@3.4.31(typescript@5.5.3))': + dependencies: + '@vue/compiler-ssr': 3.4.31 + '@vue/shared': 3.4.31 + vue: 3.4.31(typescript@5.5.3) + + '@vue/shared@3.4.31': {} + + '@vueuse/core@9.13.0(vue@3.4.31(typescript@5.5.3))': + dependencies: + '@types/web-bluetooth': 0.0.16 + '@vueuse/metadata': 9.13.0 + '@vueuse/shared': 9.13.0(vue@3.4.31(typescript@5.5.3)) + vue-demi: 0.14.8(vue@3.4.31(typescript@5.5.3)) + transitivePeerDependencies: + - '@vue/composition-api' + - vue + + '@vueuse/metadata@9.13.0': {} + + '@vueuse/shared@9.13.0(vue@3.4.31(typescript@5.5.3))': + dependencies: + vue-demi: 0.14.8(vue@3.4.31(typescript@5.5.3)) + transitivePeerDependencies: + - '@vue/composition-api' + - vue + + acorn@8.12.1: {} + + anymatch@3.1.3: + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + + async-validator@4.2.5: {} + + balanced-match@1.0.2: {} + + base64-arraybuffer@1.0.2: {} + + binary-extensions@2.3.0: {} + + brace-expansion@2.0.1: + dependencies: + balanced-match: 1.0.2 + + braces@3.0.3: + dependencies: + fill-range: 7.1.1 + + buffer-from@1.1.2: {} + + chokidar@3.6.0: + dependencies: + anymatch: 3.1.3 + braces: 3.0.3 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.3 + + commander@2.20.3: {} + + computeds@0.0.1: {} + + confbox@0.1.7: {} + + core-js@3.37.1: {} + + core-util-is@1.0.3: {} + + css-line-break@2.1.0: + dependencies: + utrie: 1.0.2 + + csstype@3.1.3: {} + + dayjs@1.11.11: {} + + de-indent@1.0.2: {} + + debug@4.3.5: + dependencies: + ms: 2.1.2 + + dexie@4.0.8: {} + + diff-match-patch@1.0.5: {} + + element-plus@2.7.7(vue@3.4.31(typescript@5.5.3)): + dependencies: + '@ctrl/tinycolor': 3.6.1 + '@element-plus/icons-vue': 2.3.1(vue@3.4.31(typescript@5.5.3)) + '@floating-ui/dom': 1.6.7 + '@popperjs/core': '@sxzz/popperjs-es@2.11.7' + '@types/lodash': 4.17.7 + '@types/lodash-es': 4.17.12 + '@vueuse/core': 9.13.0(vue@3.4.31(typescript@5.5.3)) + async-validator: 4.2.5 + dayjs: 1.11.11 + escape-html: 1.0.3 + lodash: 4.17.21 + lodash-es: 4.17.21 + lodash-unified: 1.0.3(@types/lodash-es@4.17.12)(lodash-es@4.17.21)(lodash@4.17.21) + memoize-one: 6.0.0 + normalize-wheel-es: 1.2.0 + vue: 3.4.31(typescript@5.5.3) + transitivePeerDependencies: + - '@vue/composition-api' + + entities@4.5.0: {} + + esbuild@0.21.5: + 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 + + escape-html@1.0.3: {} + + escape-string-regexp@5.0.0: {} + + estree-walker@2.0.2: {} + + estree-walker@3.0.3: + dependencies: + '@types/estree': 1.0.5 + + fast-glob@3.3.2: + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.7 + + fastq@1.17.1: + dependencies: + reusify: 1.0.4 + + file-saver@2.0.5: {} + + fill-range@7.1.1: + dependencies: + to-regex-range: 5.0.1 + + fsevents@2.3.3: + optional: true + + glob-parent@5.1.2: + dependencies: + is-glob: 4.0.3 + + he@1.2.0: {} + + html2canvas@1.4.1: + dependencies: + css-line-break: 2.1.0 + text-segmentation: 1.0.3 + + immediate@3.0.6: {} + + immutable@4.3.6: {} + + inherits@2.0.4: {} + + is-binary-path@2.1.0: + dependencies: + binary-extensions: 2.3.0 + + is-extglob@2.1.1: {} + + is-glob@4.0.3: + dependencies: + is-extglob: 2.1.1 + + is-number@7.0.0: {} + + isarray@1.0.0: {} + + js-tokens@9.0.0: {} + + jszip@3.10.1: + dependencies: + lie: 3.3.0 + pako: 1.0.11 + readable-stream: 2.3.8 + setimmediate: 1.0.5 + + lie@3.3.0: + dependencies: + immediate: 3.0.6 + + local-pkg@0.5.0: + dependencies: + mlly: 1.7.1 + pkg-types: 1.1.3 + + lodash-es@4.17.21: {} + + lodash-unified@1.0.3(@types/lodash-es@4.17.12)(lodash-es@4.17.21)(lodash@4.17.21): + dependencies: + '@types/lodash-es': 4.17.12 + lodash: 4.17.21 + lodash-es: 4.17.21 + + lodash@4.17.21: {} + + lunar-typescript@1.7.5: {} + + magic-string@0.30.10: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.0 + + memoize-one@6.0.0: {} + + merge2@1.4.1: {} + + micromatch@4.0.7: + dependencies: + braces: 3.0.3 + picomatch: 2.3.1 + + minimatch@9.0.5: + dependencies: + brace-expansion: 2.0.1 + + mlly@1.7.1: + dependencies: + acorn: 8.12.1 + pathe: 1.1.2 + pkg-types: 1.1.3 + ufo: 1.5.3 + + moment@2.30.1: {} + + ms@2.1.2: {} + + muggle-string@0.4.1: {} + + nanoid@3.3.7: {} + + normalize-path@3.0.0: {} + + normalize-wheel-es@1.2.0: {} + + pako@1.0.11: {} + + path-browserify@1.0.1: {} + + pathe@1.1.2: {} + + picocolors@1.0.1: {} + + picomatch@2.3.1: {} + + pinia-plugin-persist@1.0.0(pinia@2.1.7(typescript@5.5.3)(vue@3.4.31(typescript@5.5.3)))(vue@3.4.31(typescript@5.5.3)): + dependencies: + pinia: 2.1.7(typescript@5.5.3)(vue@3.4.31(typescript@5.5.3)) + vue: 3.4.31(typescript@5.5.3) + vue-demi: 0.12.5(vue@3.4.31(typescript@5.5.3)) + + pinia@2.1.7(typescript@5.5.3)(vue@3.4.31(typescript@5.5.3)): + dependencies: + '@vue/devtools-api': 6.6.3 + vue: 3.4.31(typescript@5.5.3) + vue-demi: 0.14.8(vue@3.4.31(typescript@5.5.3)) + optionalDependencies: + typescript: 5.5.3 + + pkg-types@1.1.3: + dependencies: + confbox: 0.1.7 + mlly: 1.7.1 + pathe: 1.1.2 + + postcss@8.4.39: + dependencies: + nanoid: 3.3.7 + picocolors: 1.0.1 + source-map-js: 1.2.0 + + process-nextick-args@2.0.1: {} + + queue-microtask@1.2.3: {} + + readable-stream@2.3.8: + dependencies: + core-util-is: 1.0.3 + inherits: 2.0.4 + isarray: 1.0.0 + process-nextick-args: 2.0.1 + safe-buffer: 5.1.2 + string_decoder: 1.1.1 + util-deprecate: 1.0.2 + + readdirp@3.6.0: + dependencies: + picomatch: 2.3.1 + + reusify@1.0.4: {} + + rollup@4.18.1: + dependencies: + '@types/estree': 1.0.5 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.18.1 + '@rollup/rollup-android-arm64': 4.18.1 + '@rollup/rollup-darwin-arm64': 4.18.1 + '@rollup/rollup-darwin-x64': 4.18.1 + '@rollup/rollup-linux-arm-gnueabihf': 4.18.1 + '@rollup/rollup-linux-arm-musleabihf': 4.18.1 + '@rollup/rollup-linux-arm64-gnu': 4.18.1 + '@rollup/rollup-linux-arm64-musl': 4.18.1 + '@rollup/rollup-linux-powerpc64le-gnu': 4.18.1 + '@rollup/rollup-linux-riscv64-gnu': 4.18.1 + '@rollup/rollup-linux-s390x-gnu': 4.18.1 + '@rollup/rollup-linux-x64-gnu': 4.18.1 + '@rollup/rollup-linux-x64-musl': 4.18.1 + '@rollup/rollup-win32-arm64-msvc': 4.18.1 + '@rollup/rollup-win32-ia32-msvc': 4.18.1 + '@rollup/rollup-win32-x64-msvc': 4.18.1 + fsevents: 2.3.3 + + rtcpeerconnection-shim@1.2.15: + dependencies: + sdp: 2.12.0 + + run-parallel@1.2.0: + dependencies: + queue-microtask: 1.2.3 + + safe-buffer@5.1.2: {} + + sass@1.77.8: + dependencies: + chokidar: 3.6.0 + immutable: 4.3.6 + source-map-js: 1.2.0 + + scule@1.3.0: {} + + sdp@2.12.0: {} + + semver@7.6.2: {} + + setimmediate@1.0.5: {} + + source-map-js@1.2.0: {} + + source-map-support@0.5.21: + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + + source-map@0.6.1: {} + + string_decoder@1.1.1: + dependencies: + safe-buffer: 5.1.2 + + strip-literal@2.1.0: + dependencies: + js-tokens: 9.0.0 + + terser@5.31.3: + dependencies: + '@jridgewell/source-map': 0.3.6 + acorn: 8.12.1 + commander: 2.20.3 + source-map-support: 0.5.21 + + text-segmentation@1.0.3: + dependencies: + utrie: 1.0.2 + + to-fast-properties@2.0.0: {} + + to-regex-range@5.0.1: + dependencies: + is-number: 7.0.0 + + typescript@5.5.3: {} + + ufo@1.5.3: {} + + undici-types@5.26.5: {} + + unimport@3.7.2(rollup@4.18.1): + dependencies: + '@rollup/pluginutils': 5.1.0(rollup@4.18.1) + acorn: 8.12.1 + escape-string-regexp: 5.0.0 + estree-walker: 3.0.3 + fast-glob: 3.3.2 + local-pkg: 0.5.0 + magic-string: 0.30.10 + mlly: 1.7.1 + pathe: 1.1.2 + pkg-types: 1.1.3 + scule: 1.3.0 + strip-literal: 2.1.0 + unplugin: 1.11.0 + transitivePeerDependencies: + - rollup + + unplugin-auto-import@0.18.0(@vueuse/core@9.13.0(vue@3.4.31(typescript@5.5.3)))(rollup@4.18.1): + dependencies: + '@antfu/utils': 0.7.10 + '@rollup/pluginutils': 5.1.0(rollup@4.18.1) + fast-glob: 3.3.2 + local-pkg: 0.5.0 + magic-string: 0.30.10 + minimatch: 9.0.5 + unimport: 3.7.2(rollup@4.18.1) + unplugin: 1.11.0 + optionalDependencies: + '@vueuse/core': 9.13.0(vue@3.4.31(typescript@5.5.3)) + transitivePeerDependencies: + - rollup + + unplugin-vue-components@0.27.2(@babel/parser@7.24.8)(rollup@4.18.1)(vue@3.4.31(typescript@5.5.3)): + dependencies: + '@antfu/utils': 0.7.10 + '@rollup/pluginutils': 5.1.0(rollup@4.18.1) + chokidar: 3.6.0 + debug: 4.3.5 + fast-glob: 3.3.2 + local-pkg: 0.5.0 + magic-string: 0.30.10 + minimatch: 9.0.5 + mlly: 1.7.1 + unplugin: 1.11.0 + vue: 3.4.31(typescript@5.5.3) + optionalDependencies: + '@babel/parser': 7.24.8 + transitivePeerDependencies: + - rollup + - supports-color + + unplugin@1.11.0: + dependencies: + acorn: 8.12.1 + chokidar: 3.6.0 + webpack-sources: 3.2.3 + webpack-virtual-modules: 0.6.2 + + util-deprecate@1.0.2: {} + + utrie@1.0.2: + dependencies: + base64-arraybuffer: 1.0.2 + + vditor@3.10.4: + dependencies: + diff-match-patch: 1.0.5 + + vite@5.3.3(@types/node@20.14.10)(sass@1.77.8)(terser@5.31.3): + dependencies: + esbuild: 0.21.5 + postcss: 8.4.39 + rollup: 4.18.1 + optionalDependencies: + '@types/node': 20.14.10 + fsevents: 2.3.3 + sass: 1.77.8 + terser: 5.31.3 + + vscode-uri@3.0.8: {} + + vue-demi@0.12.5(vue@3.4.31(typescript@5.5.3)): + dependencies: + vue: 3.4.31(typescript@5.5.3) + + vue-demi@0.14.8(vue@3.4.31(typescript@5.5.3)): + dependencies: + vue: 3.4.31(typescript@5.5.3) + + vue-router@4.4.0(vue@3.4.31(typescript@5.5.3)): + dependencies: + '@vue/devtools-api': 6.6.3 + vue: 3.4.31(typescript@5.5.3) + + vue-template-compiler@2.7.16: + dependencies: + de-indent: 1.0.2 + he: 1.2.0 + + vue-tsc@2.0.26(typescript@5.5.3): + dependencies: + '@volar/typescript': 2.4.0-alpha.16 + '@vue/language-core': 2.0.26(typescript@5.5.3) + semver: 7.6.2 + typescript: 5.5.3 + + vue-web-screen-shot@1.5.3(core-js@3.37.1)(vue@3.4.31(typescript@5.5.3)): + dependencies: + core-js: 3.37.1 + html2canvas: 1.4.1 + vue: 3.4.31(typescript@5.5.3) + webrtc-adapter: 7.7.1 + + vue@3.4.31(typescript@5.5.3): dependencies: '@vue/compiler-dom': 3.4.31 '@vue/compiler-sfc': 3.4.31 '@vue/runtime-dom': 3.4.31 - '@vue/server-renderer': 3.4.31(vue@3.4.31) + '@vue/server-renderer': 3.4.31(vue@3.4.31(typescript@5.5.3)) '@vue/shared': 3.4.31 + optionalDependencies: typescript: 5.5.3 - /webpack-sources@3.2.3: - resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} - engines: {node: '>=10.13.0'} - dev: true + webpack-sources@3.2.3: {} - /webpack-virtual-modules@0.6.2: - resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==} - dev: true + webpack-virtual-modules@0.6.2: {} - /webrtc-adapter@7.7.1: - resolution: {integrity: sha512-TbrbBmiQBL9n0/5bvDdORc6ZfRY/Z7JnEj+EYOD1ghseZdpJ+nF2yx14k3LgQKc7JZnG7HAcL+zHnY25So9d7A==} - engines: {node: '>=6.0.0', npm: '>=3.10.0'} + webrtc-adapter@7.7.1: dependencies: rtcpeerconnection-shim: 1.2.15 sdp: 2.12.0 - dev: false diff --git a/frontend/public/image/chat/emoji.svg b/frontend/public/image/chat/emoji.svg new file mode 100644 index 0000000..5ee81e3 --- /dev/null +++ b/frontend/public/image/chat/emoji.svg @@ -0,0 +1,2 @@ + \ No newline at end of file diff --git a/frontend/public/image/chat/emoji/666.gif b/frontend/public/image/chat/emoji/666.gif new file mode 100644 index 0000000..ef14cfb Binary files /dev/null and b/frontend/public/image/chat/emoji/666.gif differ diff --git a/frontend/public/image/chat/emoji/发怒.gif b/frontend/public/image/chat/emoji/发怒.gif new file mode 100644 index 0000000..5355ed4 Binary files /dev/null and b/frontend/public/image/chat/emoji/发怒.gif differ diff --git a/frontend/public/image/chat/emoji/可爱狗.gif b/frontend/public/image/chat/emoji/可爱狗.gif new file mode 100644 index 0000000..0b910c0 Binary files /dev/null and b/frontend/public/image/chat/emoji/可爱狗.gif differ diff --git a/frontend/public/image/chat/emoji/吃屎.gif b/frontend/public/image/chat/emoji/吃屎.gif new file mode 100644 index 0000000..bf4898c Binary files /dev/null and b/frontend/public/image/chat/emoji/吃屎.gif differ diff --git a/frontend/public/image/chat/emoji/吐了.gif b/frontend/public/image/chat/emoji/吐了.gif new file mode 100644 index 0000000..b166d24 Binary files /dev/null and b/frontend/public/image/chat/emoji/吐了.gif differ diff --git a/frontend/public/image/chat/emoji/吐槽.gif b/frontend/public/image/chat/emoji/吐槽.gif new file mode 100644 index 0000000..172a00a Binary files /dev/null and b/frontend/public/image/chat/emoji/吐槽.gif differ diff --git a/frontend/public/image/chat/emoji/哭笑.gif b/frontend/public/image/chat/emoji/哭笑.gif new file mode 100644 index 0000000..6f5f90e Binary files /dev/null and b/frontend/public/image/chat/emoji/哭笑.gif differ diff --git a/frontend/public/image/chat/emoji/嘲笑.gif b/frontend/public/image/chat/emoji/嘲笑.gif new file mode 100644 index 0000000..36a41ff Binary files /dev/null and b/frontend/public/image/chat/emoji/嘲笑.gif differ diff --git a/frontend/public/image/chat/emoji/大哭.gif b/frontend/public/image/chat/emoji/大哭.gif new file mode 100644 index 0000000..e543d2a Binary files /dev/null and b/frontend/public/image/chat/emoji/大哭.gif differ diff --git a/frontend/public/image/chat/emoji/大眼.gif b/frontend/public/image/chat/emoji/大眼.gif new file mode 100644 index 0000000..cb0c635 Binary files /dev/null and b/frontend/public/image/chat/emoji/大眼.gif differ diff --git a/frontend/public/image/chat/emoji/天使.gif b/frontend/public/image/chat/emoji/天使.gif new file mode 100644 index 0000000..93b6f48 Binary files /dev/null and b/frontend/public/image/chat/emoji/天使.gif differ diff --git a/frontend/public/image/chat/emoji/好吃.gif b/frontend/public/image/chat/emoji/好吃.gif new file mode 100644 index 0000000..9f518d2 Binary files /dev/null and b/frontend/public/image/chat/emoji/好吃.gif differ diff --git a/frontend/public/image/chat/emoji/委屈.gif b/frontend/public/image/chat/emoji/委屈.gif new file mode 100644 index 0000000..0c30156 Binary files /dev/null and b/frontend/public/image/chat/emoji/委屈.gif differ diff --git a/frontend/public/image/chat/emoji/委屈巴巴.gif b/frontend/public/image/chat/emoji/委屈巴巴.gif new file mode 100644 index 0000000..9ce22aa Binary files /dev/null and b/frontend/public/image/chat/emoji/委屈巴巴.gif differ diff --git a/frontend/public/image/chat/emoji/小丑.gif b/frontend/public/image/chat/emoji/小丑.gif new file mode 100644 index 0000000..67b4b85 Binary files /dev/null and b/frontend/public/image/chat/emoji/小丑.gif differ diff --git a/frontend/public/image/chat/emoji/崇拜.gif b/frontend/public/image/chat/emoji/崇拜.gif new file mode 100644 index 0000000..8dd8669 Binary files /dev/null and b/frontend/public/image/chat/emoji/崇拜.gif differ diff --git a/frontend/public/image/chat/emoji/思考.gif b/frontend/public/image/chat/emoji/思考.gif new file mode 100644 index 0000000..c0a5f98 Binary files /dev/null and b/frontend/public/image/chat/emoji/思考.gif differ diff --git a/frontend/public/image/chat/emoji/惊吓.gif b/frontend/public/image/chat/emoji/惊吓.gif new file mode 100644 index 0000000..d353701 Binary files /dev/null and b/frontend/public/image/chat/emoji/惊吓.gif differ diff --git a/frontend/public/image/chat/emoji/想吐.gif b/frontend/public/image/chat/emoji/想吐.gif new file mode 100644 index 0000000..1f0365b Binary files /dev/null and b/frontend/public/image/chat/emoji/想吐.gif differ diff --git a/frontend/public/image/chat/emoji/想哭.gif b/frontend/public/image/chat/emoji/想哭.gif new file mode 100644 index 0000000..97ceae6 Binary files /dev/null and b/frontend/public/image/chat/emoji/想哭.gif differ diff --git a/frontend/public/image/chat/emoji/拍打.gif b/frontend/public/image/chat/emoji/拍打.gif new file mode 100644 index 0000000..0b57d4c Binary files /dev/null and b/frontend/public/image/chat/emoji/拍打.gif differ diff --git a/frontend/public/image/chat/emoji/斜眼笑.gif b/frontend/public/image/chat/emoji/斜眼笑.gif new file mode 100644 index 0000000..0bb1b13 Binary files /dev/null and b/frontend/public/image/chat/emoji/斜眼笑.gif differ diff --git a/frontend/public/image/chat/emoji/斜笑.gif b/frontend/public/image/chat/emoji/斜笑.gif new file mode 100644 index 0000000..90c5a43 Binary files /dev/null and b/frontend/public/image/chat/emoji/斜笑.gif differ diff --git a/frontend/public/image/chat/emoji/比耶.gif b/frontend/public/image/chat/emoji/比耶.gif new file mode 100644 index 0000000..5fdcd84 Binary files /dev/null and b/frontend/public/image/chat/emoji/比耶.gif differ diff --git a/frontend/public/image/chat/emoji/比酷.gif b/frontend/public/image/chat/emoji/比酷.gif new file mode 100644 index 0000000..4c2aec0 Binary files /dev/null and b/frontend/public/image/chat/emoji/比酷.gif differ diff --git a/frontend/public/image/chat/emoji/流汗.gif b/frontend/public/image/chat/emoji/流汗.gif new file mode 100644 index 0000000..3c63799 Binary files /dev/null and b/frontend/public/image/chat/emoji/流汗.gif differ diff --git a/frontend/public/image/chat/emoji/疑问.gif b/frontend/public/image/chat/emoji/疑问.gif new file mode 100644 index 0000000..50ba077 Binary files /dev/null and b/frontend/public/image/chat/emoji/疑问.gif differ diff --git a/frontend/public/image/chat/emoji/调皮.gif b/frontend/public/image/chat/emoji/调皮.gif new file mode 100644 index 0000000..21ff024 Binary files /dev/null and b/frontend/public/image/chat/emoji/调皮.gif differ diff --git a/frontend/public/image/chat/emoji/超级崇拜.gif b/frontend/public/image/chat/emoji/超级崇拜.gif new file mode 100644 index 0000000..0f19233 Binary files /dev/null and b/frontend/public/image/chat/emoji/超级崇拜.gif differ diff --git a/frontend/public/image/chat/emoji/酷笑.gif b/frontend/public/image/chat/emoji/酷笑.gif new file mode 100644 index 0000000..afe3d7c Binary files /dev/null and b/frontend/public/image/chat/emoji/酷笑.gif differ diff --git a/frontend/public/image/chat/emoji/露牙笑.gif b/frontend/public/image/chat/emoji/露牙笑.gif new file mode 100644 index 0000000..b1cb2d9 Binary files /dev/null and b/frontend/public/image/chat/emoji/露牙笑.gif differ diff --git a/frontend/public/image/chat/notice.mp3 b/frontend/public/image/chat/notice.mp3 new file mode 100644 index 0000000..6d8a60f Binary files /dev/null and b/frontend/public/image/chat/notice.mp3 differ diff --git a/frontend/src/App.vue b/frontend/src/App.vue index 2be24f9..bf7b858 100644 --- a/frontend/src/App.vue +++ b/frontend/src/App.vue @@ -1,24 +1,10 @@