diff --git a/LICENSE b/LICENSE deleted file mode 100644 index 4b56aec7..00000000 --- a/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2024 NODE-TEC - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/README.md b/README.md index 4b9f5613..b6266598 100644 --- a/README.md +++ b/README.md @@ -1,37 +1,67 @@ -
-

Comet Notes ☄️

- - Latest release - - - Last commit - - - Stars - - - Issues - - - Repo size - +# Comet -
+Comet is a desktop app for taking and publishing notes for nostr. -![demo](https://private-user-images.githubusercontent.com/29136904/342766691-5ccfc513-665d-4231-9962-52443a00639c.gif?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjA0OTczOTMsIm5iZiI6MTcyMDQ5NzA5MywicGF0aCI6Ii8yOTEzNjkwNC8zNDI3NjY2OTEtNWNjZmM1MTMtNjY1ZC00MjMxLTk5NjItNTI0NDNhMDA2MzljLmdpZj9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA3MDklMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNzA5VDAzNTEzM1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTU0ZDA4NmE4ZmMwYTY0M2M0OTJjODRiZTBhODZlZTkwYzFiNWJiM2NiNjZiNjlmMDQ5YzBiYjU3ZmM4ODE4ZjgmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.sQvPZ7pIRBhQodFBgUwnjrfjaRxYu77MJZNuXJtHjCo) +## Development -[Comet Notes](https://comet.md/ "Comet Notes") is a note-taking app with [Nostr](https://nostr.com/ "Nostr") integration. +### Keep go modules up to date -## Download +```sh +go mod tidy +``` -You can download the app from the [Comet Notes](https://comet.md/ "Comet Notes") website. +## Getting Started -You can also download Comet Notes by navigating to the [Releases](https://github.com/nodetec/comet/releases "Releases") page and clicking on the release you want to download. +1. Navigate to your project directory in the terminal. -## Contribute +2. To run your application in development mode, use the following command: -To install the dependencies and start the app in development mode, run the following command: + ``` + wails3 dev + ``` -```bash -wails3 dev -``` + This will start your application and enable hot-reloading for both frontend and backend changes. + +3. To build your application for production, use: + + ``` + wails3 build + ``` + + This will create a production-ready executable in the `build` directory. + +## Exploring Wails3 Features + +Now that you have your project set up, it's time to explore the features that Wails3 offers: + +1. **Check out the examples**: The best way to learn is by example. Visit the `examples` directory in the `v3/examples` directory to see various sample applications. + +2. **Run an example**: To run any of the examples, navigate to the example's directory and use: + + ``` + go run . + ``` + + Note: Some examples may be under development during the alpha phase. + +3. **Explore the documentation**: Visit the [Wails3 documentation](https://v3alpha.wails.io/) for in-depth guides and API references. + +4. **Join the community**: Have questions or want to share your progress? Join the [Wails Discord](https://discord.gg/JDdSxwjhGf) or visit the [Wails discussions on GitHub](https://github.com/wailsapp/wails/discussions). + +## Project Structure + +Take a moment to familiarize yourself with your project structure: + +- `frontend/`: Contains your frontend code (HTML, CSS, JavaScript/TypeScript) +- `main.go`: The entry point of your Go backend +- `app.go`: Define your application structure and methods here +- `wails.json`: Configuration file for your Wails project + +## Next Steps + +1. Modify the frontend in the `frontend/` directory to create your desired UI. +2. Add backend functionality in `main.go`. +3. Use `wails3 dev` to see your changes in real-time. +4. When ready, build your application with `wails3 build`. + +Happy coding with Wails3! If you encounter any issues or have questions, don't hesitate to consult the documentation or reach out to the Wails community. diff --git a/Taskfile.yml b/Taskfile.yml index 646db22c..35bfda8c 100644 --- a/Taskfile.yml +++ b/Taskfile.yml @@ -1,13 +1,13 @@ version: '3' includes: - common: ./build/Taskfile.yml - windows: ./build/windows/Taskfile.yml - darwin: ./build/darwin/Taskfile.yml - linux: ./build/linux/Taskfile.yml + common: ./build/Taskfile.common.yml + windows: ./build/Taskfile.windows.yml + darwin: ./build/Taskfile.darwin.yml + linux: ./build/Taskfile.linux.yml vars: - APP_NAME: "asdf" + APP_NAME: "comet" BIN_DIR: "bin" VITE_PORT: '{{.WAILS_VITE_PORT | default 9245}}' @@ -32,3 +32,23 @@ tasks: cmds: - wails3 dev -config ./build/config.yml -port {{.VITE_PORT}} + darwin:build:universal: + summary: Builds darwin universal binary (arm64 + amd64) + cmds: + - task: darwin:build + vars: + ARCH: amd64 + - mv {{.BIN_DIR}}/{{.APP_NAME}} {{.BIN_DIR}}/{{.APP_NAME}}-amd64 + - task: darwin:build + vars: + ARCH: arm64 + - mv {{.BIN_DIR}}/{{.APP_NAME}} {{.BIN_DIR}}/{{.APP_NAME}}-arm64 + - lipo -create -output {{.BIN_DIR}}/{{.APP_NAME}} {{.BIN_DIR}}/{{.APP_NAME}}-amd64 {{.BIN_DIR}}/{{.APP_NAME}}-arm64 + - rm {{.BIN_DIR}}/{{.APP_NAME}}-amd64 {{.BIN_DIR}}/{{.APP_NAME}}-arm64 + + darwin:package:universal: + summary: Packages darwin universal binary (arm64 + amd64) + deps: + - darwin:build:universal + cmds: + - task: darwin:create:app:bundle diff --git a/backend/db/init.go b/backend/db/init.go new file mode 100644 index 00000000..013f93f8 --- /dev/null +++ b/backend/db/init.go @@ -0,0 +1,85 @@ +package db + +import ( + "log" + "path/filepath" + + "comet/backend/db/schemas" + + "embed" + + "github.com/adrg/xdg" + "github.com/jmoiron/sqlx" + _ "github.com/mattn/go-sqlite3" + "github.com/pressly/goose/v3" +) + +// Database instance +var DB *sqlx.DB + +// Init initializes the SQLite database and creates tables +func Init(embedMigrations embed.FS) { + var err error + + // Get the data home directory + dbPath := filepath.Join(xdg.DataHome, "comet", "comet.db") + + // Set PRAGMAs in the connection string + dbConn, err := sqlx.Open("sqlite3", dbPath+"?_foreign_keys=on&_journal_mode=WAL&_synchronous=NORMAL&_temp_store=MEMORY&_cache_size=-2000") + if err != nil { + log.Fatalf("Failed to connect to database: %v", err) + } + DB = dbConn + + goose.SetBaseFS(embedMigrations) + + if err := goose.SetDialect("sqlite3"); err != nil { + panic(err) + } + + // Perform migrations + if err := goose.Up(DB.DB, "migrations"); err != nil { + log.Fatalf("Failed to apply migrations: %v", err) + } + + // List of table schemas + tableSchemas := []string{ + schemas.NotesTableSchema, + schemas.TagsTableSchema, + schemas.NotebooksTableSchema, + schemas.NotesTagsTableSchema, + schemas.NotebookTagsTableSchema, + schemas.RelaysTableSchema, + schemas.UsersTableSchema, + schemas.SettingsTableSchema, + } + + // Create tables + for _, schema := range tableSchemas { + _, err := DB.Exec(schema) + if err != nil { + log.Fatalf("Failed to execute schema: %v", err) + } + } + + // List of triggers + triggers := []string{ + schemas.UpdateNotesModifiedAtTrigger, + schemas.UpdateTagsModifiedAtTrigger, + schemas.UpdateNotebooksModifiedAtTrigger, + schemas.UpdateRelaysModifiedAtTrigger, + schemas.UpdateUsersModifiedAtTrigger, + schemas.UpdateSettingsModifiedAtTrigger, + schemas.EnsureOnlyOneActiveNoteTrigger, + } + + // Create triggers + for _, trigger := range triggers { + _, err := DB.Exec(trigger) + if err != nil { + log.Fatalf("Failed to execute trigger: %v", err) + } + } + + log.Println("All tables created or already exist.") +} diff --git a/backend/db/schemas/notebook_tags.go b/backend/db/schemas/notebook_tags.go new file mode 100644 index 00000000..3fc2a49d --- /dev/null +++ b/backend/db/schemas/notebook_tags.go @@ -0,0 +1,22 @@ +package schemas + +// NotebookTagsTableSchema defines the schema for the notebook_tags junction table +const NotebookTagsTableSchema = ` +CREATE TABLE IF NOT EXISTS notebook_tags ( + notebook_id INTEGER NOT NULL, + tag_id INTEGER NOT NULL, + PRIMARY KEY (notebook_id, tag_id), + FOREIGN KEY (notebook_id) REFERENCES notebooks(id) ON DELETE CASCADE, + FOREIGN KEY (tag_id) REFERENCES tags(id) ON DELETE CASCADE, + CHECK (notebook_id > 0), + CHECK (tag_id > 0) +); + +CREATE INDEX IF NOT EXISTS idx_notebook_id ON notebook_tags(notebook_id); +CREATE INDEX IF NOT EXISTS idx_tag_id ON notebook_tags(tag_id);` + +// NotebookTag represents a junction between a notebook and a tag +type NotebookTag struct { + NotebookID int `db:"notebook_id"` + TagID int `db:"tag_id"` +} diff --git a/backend/db/schemas/notebooks.go b/backend/db/schemas/notebooks.go new file mode 100644 index 00000000..e7c2aeb6 --- /dev/null +++ b/backend/db/schemas/notebooks.go @@ -0,0 +1,36 @@ +package schemas + +// NotebooksTableSchema defines the schema for the notebooks table +const NotebooksTableSchema = ` +CREATE TABLE IF NOT EXISTS notebooks ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + name TEXT NOT NULL, + created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP, + modified_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP, + pinned BOOLEAN NOT NULL DEFAULT 1, + active BOOLEAN NOT NULL DEFAULT 0, + UNIQUE (name), + CHECK (name <> '') +); + +CREATE INDEX IF NOT EXISTS idx_name ON notebooks(name); +CREATE INDEX IF NOT EXISTS idx_created_at ON notebooks(created_at);` + +// UpdateNotebooksModifiedAtTrigger defines the trigger for updating modified_at on update +const UpdateNotebooksModifiedAtTrigger = ` +CREATE TRIGGER IF NOT EXISTS update_notebooks_modified_at +AFTER UPDATE ON notebooks +FOR EACH ROW +BEGIN + UPDATE notebooks SET modified_at = CURRENT_TIMESTAMP WHERE id = OLD.id; +END;` + +// Notebook represents a notebook in the application +type Notebook struct { + ID int `db:"id"` + Name string `db:"name"` + CreatedAt string `db:"created_at"` + ModifiedAt string `db:"modified_at"` + Pinned bool `db:"pinned"` + Active bool `db:"active"` +} diff --git a/backend/db/schemas/notes.go b/backend/db/schemas/notes.go new file mode 100644 index 00000000..b91cab40 --- /dev/null +++ b/backend/db/schemas/notes.go @@ -0,0 +1,83 @@ +package schemas + +// Note represents a note in the application +type Note struct { + ID int `db:"id"` + NotebookID *int `db:"notebook_id"` + Content string `db:"content"` + Title string `db:"title"` + CreatedAt string `db:"created_at"` + ModifiedAt string `db:"modified_at"` + PublishedAt *string `db:"published_at"` + EventAddress *string `db:"event_address"` + Identifier *string `db:"identifier"` + Pinned bool `db:"pinned"` + TrashedAt *string `db:"trashed_at"` + ArchivedAt *string `db:"archived_at"` + Active bool `db:"active"` + Author *string `db:"author"` +} + +// NotesTableSchema defines the schema for the notes table +const NotesTableSchema = ` +CREATE TABLE IF NOT EXISTS notes ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + notebook_id INTEGER, + content TEXT NOT NULL, + title TEXT NOT NULL, + created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP, + modified_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP, + published_at TEXT, + event_address TEXT, + identifier TEXT, + pinned BOOLEAN NOT NULL DEFAULT FALSE, + trashed_at TEXT, + archived_at TEXT, + active BOOLEAN NOT NULL DEFAULT TRUE, + author TEXT, + FOREIGN KEY (notebook_id) REFERENCES notebooks(id) ON DELETE SET NULL, + CHECK (pinned IN (0, 1)), + CHECK (active IN (0, 1)) +); + +CREATE VIRTUAL TABLE IF NOT EXISTS notes_fts USING fts5(content); + +CREATE TRIGGER IF NOT EXISTS notes_fts_insert AFTER INSERT ON notes BEGIN + INSERT INTO notes_fts(rowid, content) VALUES (new.id, new.content); +END; + +CREATE TRIGGER IF NOT EXISTS notes_fts_delete AFTER DELETE ON notes BEGIN + DELETE FROM notes_fts WHERE rowid = old.id; +END; + +CREATE TRIGGER IF NOT EXISTS notes_fts_update AFTER UPDATE ON notes BEGIN + DELETE FROM notes_fts WHERE rowid = old.id; + INSERT INTO notes_fts(rowid, content) VALUES (new.id, new.content); +END; + +CREATE INDEX IF NOT EXISTS idx_notebook_id ON notes(notebook_id); +CREATE INDEX IF NOT EXISTS idx_created_at ON notes(created_at); +CREATE INDEX IF NOT EXISTS idx_modified_at ON notes(modified_at); +CREATE INDEX IF NOT EXISTS idx_pinned ON notes(pinned); +CREATE INDEX IF NOT EXISTS idx_trashed_at ON notes(trashed_at); +CREATE INDEX IF NOT EXISTS idx_archived_at ON notes(archived_at); +CREATE INDEX IF NOT EXISTS idx_active ON notes(active);` + +// UpdateNotesModifiedAtTrigger defines the trigger for updating modified_at on update +const UpdateNotesModifiedAtTrigger = ` +CREATE TRIGGER IF NOT EXISTS update_notes_modified_at +AFTER UPDATE OF content ON notes +FOR EACH ROW +BEGIN + UPDATE notes SET modified_at = CURRENT_TIMESTAMP WHERE id = OLD.id; +END;` + +// EnsureOnlyOneActiveNoteTrigger defines the trigger to ensure only one active note +const EnsureOnlyOneActiveNoteTrigger = ` +CREATE TRIGGER IF NOT EXISTS ensure_only_one_active_note +BEFORE UPDATE OF active ON notes +FOR EACH ROW +WHEN NEW.active = TRUE +BEGIN + UPDATE notes SET active = FALSE WHERE active = TRUE AND id != NEW.id; +END;` diff --git a/backend/db/schemas/notes_tags.go b/backend/db/schemas/notes_tags.go new file mode 100644 index 00000000..9eff748b --- /dev/null +++ b/backend/db/schemas/notes_tags.go @@ -0,0 +1,22 @@ +package schemas + +// NotesTagsTableSchema defines the schema for the notes_tags junction table +const NotesTagsTableSchema = ` +CREATE TABLE IF NOT EXISTS notes_tags ( + note_id INTEGER NOT NULL, + tag_id INTEGER NOT NULL, + PRIMARY KEY (note_id, tag_id), + FOREIGN KEY (note_id) REFERENCES notes(id) ON DELETE CASCADE, + FOREIGN KEY (tag_id) REFERENCES tags(id) ON DELETE CASCADE, + CHECK (note_id > 0), + CHECK (tag_id > 0) +); + +CREATE INDEX IF NOT EXISTS idx_note_id ON notes_tags(note_id); +CREATE INDEX IF NOT EXISTS idx_tag_id ON notes_tags(tag_id);` + +// NoteTag represents a junction between a note and a tag +type NoteTag struct { + NoteID int `db:"note_id"` + TagID int `db:"tag_id"` +} diff --git a/backend/db/schemas/relays.go b/backend/db/schemas/relays.go new file mode 100644 index 00000000..db6db464 --- /dev/null +++ b/backend/db/schemas/relays.go @@ -0,0 +1,43 @@ +package schemas + +// Relay represents a row in the relays table +type Relay struct { + ID int `db:"id"` + URL string `db:"url"` + Read bool `db:"read"` + Write bool `db:"write"` + Sync bool `db:"sync"` + CreatedAt string `db:"created_at"` + ModifiedAt string `db:"modified_at"` +} + +// RelaysTableSchema defines the schema for the relays table +const RelaysTableSchema = ` +CREATE TABLE IF NOT EXISTS relays ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + url TEXT NOT NULL, + read BOOLEAN NOT NULL DEFAULT FALSE, + write BOOLEAN NOT NULL DEFAULT TRUE, + sync BOOLEAN NOT NULL DEFAULT FALSE, + created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP, + modified_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP, + CHECK (read IN (0, 1)), + CHECK (write IN (0, 1)), + CHECK (sync IN (0, 1)) +); + +CREATE INDEX IF NOT EXISTS idx_url ON relays(url); +CREATE INDEX IF NOT EXISTS idx_created_at ON relays(created_at); + +INSERT INTO relays (url, read, write, sync, created_at, modified_at) +SELECT 'wss://relay.notestack.com', 1, 1, 0, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP +WHERE NOT EXISTS (SELECT 1 FROM relays);` + +// UpdateRelaysModifiedAtTrigger defines the trigger for updating modified_at on update +const UpdateRelaysModifiedAtTrigger = ` +CREATE TRIGGER IF NOT EXISTS update_relays_modified_at +AFTER UPDATE ON relays +FOR EACH ROW +BEGIN + UPDATE relays SET modified_at = CURRENT_TIMESTAMP WHERE id = OLD.id; +END;` diff --git a/backend/db/schemas/settings.go b/backend/db/schemas/settings.go new file mode 100644 index 00000000..07e32457 --- /dev/null +++ b/backend/db/schemas/settings.go @@ -0,0 +1,24 @@ +package schemas + +// SettingsTableSchema defines the schema for the settings table +const SettingsTableSchema = ` +CREATE TABLE IF NOT EXISTS settings ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + key TEXT NOT NULL, + value TEXT NOT NULL, + created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP, + modified_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP, + UNIQUE (key) +); + +CREATE INDEX IF NOT EXISTS idx_key ON settings(key); +CREATE INDEX IF NOT EXISTS idx_created_at ON settings(created_at);` + +// UpdateSettingsModifiedAtTrigger defines the trigger for updating modified_at on update +const UpdateSettingsModifiedAtTrigger = ` +CREATE TRIGGER IF NOT EXISTS update_settings_modified_at +AFTER UPDATE ON settings +FOR EACH ROW +BEGIN + UPDATE settings SET modified_at = CURRENT_TIMESTAMP WHERE id = OLD.id; +END;` diff --git a/backend/db/schemas/tags.go b/backend/db/schemas/tags.go new file mode 100644 index 00000000..8bcea45f --- /dev/null +++ b/backend/db/schemas/tags.go @@ -0,0 +1,42 @@ +package schemas + +// Tag represents a tag in the application +type Tag struct { + ID int `db:"id"` + Name string `db:"name"` + Color *string `db:"color"` + Icon *string `db:"icon"` + Active bool `db:"active"` + Inactive bool `db:"inactive"` + CreatedAt string `db:"created_at"` + ModifiedAt string `db:"modified_at"` +} + +// TagsTableSchema defines the schema for the tags table +const TagsTableSchema = ` +CREATE TABLE IF NOT EXISTS tags ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + name TEXT NOT NULL, + color TEXT NULL, + icon TEXT NULL, + active BOOLEAN NOT NULL DEFAULT 0, + inactive BOOLEAN NOT NULL DEFAULT 0, + created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP, + modified_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP, + UNIQUE (name), + CHECK (name <> ''), + CHECK (active + inactive <= 1) +); + +CREATE INDEX IF NOT EXISTS idx_name ON tags(name); +CREATE INDEX IF NOT EXISTS idx_created_at ON tags(created_at); +CREATE INDEX IF NOT EXISTS idx_active ON tags(active);` + +// UpdateTagsModifiedAtTrigger defines the trigger for updating modified_at on update +const UpdateTagsModifiedAtTrigger = ` +CREATE TRIGGER IF NOT EXISTS update_tags_modified_at +AFTER UPDATE ON tags +FOR EACH ROW +BEGIN + UPDATE tags SET modified_at = CURRENT_TIMESTAMP WHERE id = OLD.id; +END;` diff --git a/backend/db/schemas/users.go b/backend/db/schemas/users.go new file mode 100644 index 00000000..5789297b --- /dev/null +++ b/backend/db/schemas/users.go @@ -0,0 +1,63 @@ +package schemas + +// User represents a row in the users table +type User struct { + ID int `db:"id"` + Nsec string `db:"nsec"` + Npub string `db:"npub"` + Active bool `db:"active"` + CreatedAt string `db:"created_at"` + ModifiedAt string `db:"modified_at"` + Name string `db:"name"` + About string `db:"about"` + Picture string `db:"picture"` + Nip05 string `db:"nip05"` + Website string `db:"website"` + Lud16 string `db:"lud16"` +} + +// UsersTableSchema defines the schema for the users table +const UsersTableSchema = ` +CREATE TABLE IF NOT EXISTS users ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + nsec TEXT NOT NULL, + npub TEXT NOT NULL, + active BOOLEAN NOT NULL, + created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP, + modified_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP, + name TEXT, + username TEXT, + about TEXT, + picture TEXT, + nip05 TEXT, + website TEXT, + banner TEXT, + lud16 TEXT, + display_name TEXT, + UNIQUE (nsec), + UNIQUE (npub), + CHECK (active IN (0, 1)) +); + +CREATE INDEX IF NOT EXISTS idx_nsec ON users(nsec); +CREATE INDEX IF NOT EXISTS idx_npub ON users(npub); +CREATE INDEX IF NOT EXISTS idx_active ON users(active);` + +// UpdateUsersModifiedAtTrigger defines the trigger for updating modified_at on update +const UpdateUsersModifiedAtTrigger = ` +CREATE TRIGGER IF NOT EXISTS update_users_modified_at +AFTER UPDATE ON users +FOR EACH ROW +BEGIN + UPDATE users SET modified_at = CURRENT_TIMESTAMP WHERE id = OLD.id; +END;` + +// EnforceSingleActiveUserTrigger defines the trigger to enforce only one active user +const EnforceSingleActiveUserTrigger = ` +CREATE TRIGGER IF NOT EXISTS enforce_single_active_user +BEFORE UPDATE OF active ON users +FOR EACH ROW +WHEN NEW.active = 1 +BEGIN + UPDATE users SET active = 0 WHERE active = 1; +END;` diff --git a/backend/menus/note_card_context_menu.go b/backend/menus/note_card_context_menu.go new file mode 100644 index 00000000..522f0c73 --- /dev/null +++ b/backend/menus/note_card_context_menu.go @@ -0,0 +1,41 @@ +package menus + +import ( + "comet/backend/db/schemas" + "comet/backend/service/notes" + "encoding/json" + + "github.com/wailsapp/wails/v3/pkg/application" +) + +func CreateNoteCardContextMenu(app *application.App) *application.Menu { + contextMenu := app.NewMenu() + contextMenu.Add("Trash").OnClick(func(data *application.Context) { + contextMenuData := data.ContextMenuData() + app.Logger.Info("Context menu data", "data", contextMenuData) + if contextMenuData == nil { + app.Logger.Error("Context menu data is nil") + return + } + contextMenuDataStr, ok := contextMenuData.(string) + if !ok { + app.Logger.Error("Failed to assert context menu data to string") + return + } + contextMenuDataBytes := []byte(contextMenuDataStr) + var note schemas.Note + err := json.Unmarshal(contextMenuDataBytes, ¬e) + if err != nil { + app.Logger.Error("Failed to unmarshal context menu data", "error", err) + return + } + err = notes.TrashNote(note.ID) + if err != nil { + app.Logger.Error("Failed to trash note", "error", err) + return + } + app.EmitEvent("note_trashed", note.ID) + app.Logger.Info("Note trashed", "note", note) + }) + return contextMenu +} diff --git a/backend/menus/notebook_context_menu.go b/backend/menus/notebook_context_menu.go new file mode 100644 index 00000000..1adef2b6 --- /dev/null +++ b/backend/menus/notebook_context_menu.go @@ -0,0 +1,45 @@ +package menus + +import ( + "comet/backend/db/schemas" + "comet/backend/service/notebooks" + "encoding/json" + + "github.com/wailsapp/wails/v3/pkg/application" +) + +func CreateNotebookContextMenu(app *application.App) *application.Menu { + contextMenu := app.NewMenu() + contextMenu.Add("Delete").OnClick(func(data *application.Context) { + contextMenuData := data.ContextMenuData() + app.Logger.Info("Context menu data", "data", contextMenuData) + if contextMenuData == nil { + app.Logger.Error("Context menu data is nil") + return + } + contextMenuDataStr, ok := contextMenuData.(string) + if !ok { + app.Logger.Error("Failed to assert context menu data to string") + return + } + contextMenuDataBytes := []byte(contextMenuDataStr) + var notebook schemas.Notebook + err := json.Unmarshal(contextMenuDataBytes, ¬ebook) + if err != nil { + app.Logger.Error("Failed to unmarshal context menu data", "error", err) + return + } + err = notebooks.DeleteNotebook(notebook.ID) + if err != nil { + app.Logger.Error("Failed to restore notebook", "error", err) + return + } + if notebook.Active { + app.EmitEvent("active_notebook_deleted", notebook.ID) + } else { + app.EmitEvent("notebook_deleted", notebook.ID) + } + app.Logger.Info("Notebook deleted", "notebook", notebook) + }) + return contextMenu +} diff --git a/backend/menus/trashnote_card_context_menu.go b/backend/menus/trashnote_card_context_menu.go new file mode 100644 index 00000000..2e814637 --- /dev/null +++ b/backend/menus/trashnote_card_context_menu.go @@ -0,0 +1,71 @@ +package menus + +import ( + "comet/backend/db/schemas" + "comet/backend/service/notes" + "encoding/json" + + "github.com/wailsapp/wails/v3/pkg/application" +) + +func CreateTrashNoteCardContextMenu(app *application.App) *application.Menu { + contextMenu := app.NewMenu() + + contextMenu.Add("Restore").OnClick(func(data *application.Context) { + contextMenuData := data.ContextMenuData() + app.Logger.Info("Context menu data", "data", contextMenuData) + if contextMenuData == nil { + app.Logger.Error("Context menu data is nil") + return + } + contextMenuDataStr, ok := contextMenuData.(string) + if !ok { + app.Logger.Error("Failed to assert context menu data to string") + return + } + contextMenuDataBytes := []byte(contextMenuDataStr) + var note schemas.Note + err := json.Unmarshal(contextMenuDataBytes, ¬e) + if err != nil { + app.Logger.Error("Failed to unmarshal context menu data", "error", err) + return + } + err = notes.RestoreNote(note.ID) + if err != nil { + app.Logger.Error("Failed to restore note", "error", err) + return + } + app.EmitEvent("note_restored", note.ID) + app.Logger.Info("Note restored", "note", note) + }) + + contextMenu.Add("Delete").OnClick(func(data *application.Context) { + contextMenuData := data.ContextMenuData() + app.Logger.Info("Context menu data", "data", contextMenuData) + if contextMenuData == nil { + app.Logger.Error("Context menu data is nil") + return + } + contextMenuDataStr, ok := contextMenuData.(string) + if !ok { + app.Logger.Error("Failed to assert context menu data to string") + return + } + contextMenuDataBytes := []byte(contextMenuDataStr) + var note schemas.Note + err := json.Unmarshal(contextMenuDataBytes, ¬e) + if err != nil { + app.Logger.Error("Failed to unmarshal context menu data", "error", err) + return + } + err = notes.DeleteNote(note.ID) + if err != nil { + app.Logger.Error("Failed to delete note", "error", err) + return + } + app.EmitEvent("note_deleted", note.ID) + app.Logger.Info("Note deleted", "note", note) + }) + + return contextMenu +} diff --git a/backend/service/app_service.go b/backend/service/app_service.go new file mode 100644 index 00000000..e5cf4304 --- /dev/null +++ b/backend/service/app_service.go @@ -0,0 +1,267 @@ +package service + +import ( + "comet/backend/db/schemas" + "comet/backend/service/notebooks" // Import the notebooks package + "comet/backend/service/notes" // Import the notes package + "comet/backend/service/relays" // Import the relays package + "comet/backend/service/tags" // Import the tags package + "comet/backend/service/users" // Import the users package +) + +type AppService struct{} + +// CreateNote inserts a new note into the database and returns the created note +func (s *AppService) CreateNote(title, content string) (*schemas.Note, error) { + return notes.CreateNote(title, content) // Use notes package +} + +// GetNotes retrieves all notes from the database with specified ordering, limit, offset, search, and trashed filter +func (s *AppService) GetNotes(orderBy string, orderDirection string, limit int, offset int, search string, showTrashed bool) ([]schemas.Note, error) { + return notes.GetNotes(orderBy, orderDirection, limit, offset, search, showTrashed) // Use notes package +} + +// UpdateNote updates the content and title of an existing note +func (s *AppService) UpdateNote(note schemas.Note) error { + return notes.UpdateNote(note) // Use notes package +} + +// DeleteNote deletes a note by its ID +func (s *AppService) DeleteNote(id int) error { + return notes.DeleteNote(id) // Use notes package +} + +// GetNoteByID retrieves a single note by its ID +func (s *AppService) GetNoteByID(id int) (*schemas.Note, error) { + return notes.GetNoteByID(id) // Use notes package +} + +// PinNote pins a note by its ID +func (s *AppService) PinNote(id int) error { + return notes.PinNote(id) // Use notes package +} + +// UnpinNote unpins a note by its ID +func (s *AppService) UnpinNote(id int) error { + return notes.UnpinNote(id) // Use notes package +} + +// TrashNote moves a note to the trash by its ID +func (s *AppService) TrashNote(id int) error { + return notes.TrashNote(id) // Use notes package +} + +// RestoreNote restores a note from the trash by its ID +func (s *AppService) RestoreNote(id int) error { + return notes.RestoreNote(id) // Use notes package +} + +// SearchNotes searches for notes by content +func (s *AppService) SearchNotes(query string) ([]schemas.Note, error) { + return notes.SearchNotes(query) // Use notes package +} + +// GetPinnedNotes retrieves all pinned notes from the database +func (s *AppService) GetPinnedNotes() ([]schemas.Note, error) { + return notes.GetPinnedNotes() // Use notes package +} + +// GetTrashedNotes retrieves all trashed notes from the database +func (s *AppService) GetTrashedNotes() ([]schemas.Note, error) { + return notes.GetTrashedNotes() // Use notes package +} + +// ArchiveNote archives a note by its ID +func (s *AppService) ArchiveNote(id int) error { + return notes.ArchiveNote(id) // Use notes package +} + +// UnarchiveNote unarchives a note by its ID +func (s *AppService) UnarchiveNote(id int) error { + return notes.UnarchiveNote(id) // Use notes package +} + +// GetArchivedNotes retrieves all archived notes from the database +func (s *AppService) GetArchivedNotes() ([]schemas.Note, error) { + return notes.GetArchivedNotes() // Use notes package +} + +// GetNotesByNotebookID retrieves all notes by a specific notebook ID +func (s *AppService) GetNotesByNotebookID(notebookID int) ([]schemas.Note, error) { + return notes.GetNotesByNotebookID(notebookID) // Use notes package +} + +// SetActiveNote sets the specified note as active and deactivates all other notes +func (s *AppService) SetActiveNote(noteID int) error { + return notes.SetActiveNote(noteID) // Use notes package +} + +// ClearActiveNote deactivates all active notes +func (s *AppService) ClearActiveNote() error { + return notes.ClearActiveNote() // Use notes package +} + +// GetActiveNote retrieves the active note from the database +func (s *AppService) GetActiveNote() (*schemas.Note, error) { + return notes.GetActiveNote() // Use notes package +} + +// SetPublishDetails updates the author, identifier, and published_at fields of a note +func (s *AppService) SetPublishDetails(noteID int, author, identifier, publishedAt string) error { + return notes.SetPublishDetails(noteID, author, identifier, publishedAt) // Use notes package +} + +// RemoveNoteTags removes all tag associations for a given note ID +func (s *AppService) RemoveNoteTags(noteID int) error { + return tags.RemoveNoteTags(noteID) // Use tags package +} + +// CreateTag inserts a new tag into the database +func (s *AppService) CreateTag(name, color, icon string, active bool, inactive bool) error { + return tags.CreateTag(name, color, icon, active, inactive) // Use tags package +} + +// CreateTags inserts multiple tags into the database +func (s *AppService) CreateTags(noteId int, tagList []string) error { + return tags.CreateTags(noteId, tagList) // Use tags package +} + +// GetTags retrieves all tags from the database +func (s *AppService) GetTags() ([]schemas.Tag, error) { + return tags.GetTags() // Use tags package +} + +// UpdateTag updates the details of an existing tag +func (s *AppService) UpdateTag(id int, name, color, icon string) error { + return tags.UpdateTag(id, name, color, icon) // Use tags package +} + +// DeleteTag deletes a tag by its ID +func (s *AppService) DeleteTag(id int) error { + return tags.DeleteTag(id) // Use tags package +} + +// GetTagByID retrieves a single tag by its ID +func (s *AppService) GetTagByID(id int) (*schemas.Tag, error) { + return tags.GetTagByID(id) // Use tags package +} + +// SetTagActive sets the active status of a tag to true +func (s *AppService) SetTagActive(tagID int, active bool) error { + return tags.SetTagActive(tagID, active) // Use tags package +} + +// SetTagInactive sets the active status of a tag to false +func (s *AppService) SetTagInactive(tagID int) error { + return tags.SetTagInactive(tagID) // Use tags package +} + +// ClearActiveTags sets the active status of all tags to false +func (s *AppService) ClearActiveTags() error { + return tags.ClearActiveTags() // Use tags package +} + +// GetTagsByNoteID retrieves all tags associated with a specific note ID +func (s *AppService) GetTagsByNoteID(noteID int) ([]schemas.Tag, error) { + return tags.GetTagsByNoteID(noteID) // Use tags package +} + +// CreateNotebook inserts a new notebook into the database +func (s *AppService) CreateNotebook(name string, pinned bool) error { + return notebooks.CreateNotebook(name, pinned) // Use notebooks package +} + +// GetNotebooks retrieves all notebooks from the database +func (s *AppService) GetNotebooks(pinned bool) ([]schemas.Notebook, error) { + return notebooks.GetNotebooks(pinned) // Use notebooks package +} + +// UpdateNotebook updates the details of an existing notebook +func (s *AppService) UpdateNotebook(id int, name string) error { + return notebooks.UpdateNotebook(id, name) // Use notebooks package +} + +// DeleteNotebook deletes a notebook by its ID +func (s *AppService) DeleteNotebook(id int) error { + return notebooks.DeleteNotebook(id) // Use notebooks package +} + +// GetNotebookByID retrieves a single notebook by its ID +func (s *AppService) GetNotebookByID(id int) (*schemas.Notebook, error) { + return notebooks.GetNotebookByID(id) // Use notebooks package +} + +// CheckNotebookExists checks if a notebook with the given name already exists in the database +func (s *AppService) CheckNotebookExists(name string) (bool, error) { + return notebooks.CheckNotebookExists(name) // Use notebooks package +} + +// SetNotebookActive sets a notebook to active by its ID +func (s *AppService) SetNotebookActive(id int) error { + return notebooks.SetNotebookActive(id) // Use notebooks package +} + +// ClearActiveNotebooks sets all notebooks to not active +func (s *AppService) ClearActiveNotebooks() error { + return notebooks.ClearActiveNotebooks() // Use notebooks package +} + +// GetActiveNotebook retrieves the active notebook from the database +func (s *AppService) GetActiveNotebook() (*schemas.Notebook, error) { + return notebooks.GetActiveNotebook() // Use notebooks package +} + +// CreateUser inserts a new user into the database +func (s *AppService) CreateUser(nsec, npub string, active bool) (*schemas.User, error) { + return users.CreateUser(nsec, npub, active) // Use users package +} + +// GetUserByID retrieves a single user by its ID +func (s *AppService) GetUserByID(id int) (*schemas.User, error) { + return users.GetUserByID(id) // Use users package +} + +// UpdateUser updates the details of an existing user +func (s *AppService) UpdateUser(user schemas.User) error { + return users.UpdateUser(user) // Use users package +} + +// DeleteUser deletes a user by its ID +func (s *AppService) DeleteUser(id int) error { + return users.DeleteUser(id) // Use users package +} + +// GetActiveUser retrieves the active user from the database +func (s *AppService) GetActiveUser() (*schemas.User, error) { + return users.GetActiveUser() // Use users package +} + +// CreateRelay inserts a new relay into the database and returns the created relay +func (s *AppService) CreateRelay(url string, read, write, sync bool) (*schemas.Relay, error) { + return relays.CreateRelay(url, read, write, sync) // Use relays package +} + +// GetRelayByID retrieves a relay by its ID +func (s *AppService) GetRelayByID(id int) (*schemas.Relay, error) { + return relays.GetRelayByID(id) // Use relays package +} + +// UpdateRelay updates an existing relay in the database +func (s *AppService) UpdateRelay(relay schemas.Relay) error { + return relays.UpdateRelay(relay) // Use relays package +} + +// DeleteRelay deletes a relay by its ID +func (s *AppService) DeleteRelay(id int) error { + return relays.DeleteRelay(id) // Use relays package +} + +// GetAllRelays retrieves all relays from the database +func (s *AppService) GetAllRelays() ([]*schemas.Relay, error) { + return relays.GetAllRelays() // Use relays package +} + +// ReplaceRelays removes all existing relays and inserts the new list of relays into the database +func (s *AppService) ReplaceRelays(relayData []relays.RelayData) ([]*schemas.Relay, error) { + return relays.ReplaceRelays(relayData) // Use relays package +} diff --git a/backend/service/notebooks/check_notebook_exists.go b/backend/service/notebooks/check_notebook_exists.go new file mode 100644 index 00000000..770bdbc3 --- /dev/null +++ b/backend/service/notebooks/check_notebook_exists.go @@ -0,0 +1,17 @@ +package notebooks + +import ( + "comet/backend/db" + "log" +) + +// CheckNotebookExists checks if a notebook with the given name already exists in the database +func CheckNotebookExists(name string) (bool, error) { + var exists bool + err := db.DB.QueryRow("SELECT EXISTS(SELECT 1 FROM notebooks WHERE name = ?)", name).Scan(&exists) + if err != nil { + log.Printf("Failed to check if notebook exists: %v", err) + return false, err + } + return exists, nil +} diff --git a/backend/service/notebooks/clear_active_notebooks.go b/backend/service/notebooks/clear_active_notebooks.go new file mode 100644 index 00000000..512dae5b --- /dev/null +++ b/backend/service/notebooks/clear_active_notebooks.go @@ -0,0 +1,16 @@ +package notebooks + +import ( + "comet/backend/db" + "log" +) + +// ClearActiveNotebooks sets all notebooks to not active +func ClearActiveNotebooks() error { + _, err := db.DB.Exec("UPDATE notebooks SET active = false") + if err != nil { + log.Printf("Failed to clear active notebooks: %v", err) + return err + } + return nil +} diff --git a/backend/service/notebooks/create_notebook.go b/backend/service/notebooks/create_notebook.go new file mode 100644 index 00000000..1911c51f --- /dev/null +++ b/backend/service/notebooks/create_notebook.go @@ -0,0 +1,16 @@ +package notebooks + +import ( + "comet/backend/db" + "log" +) + +// CreateNotebook inserts a new notebook into the database +func CreateNotebook(name string, pinned bool) error { + _, err := db.DB.Exec("INSERT INTO notebooks (name, pinned) VALUES (?, ?)", name, pinned) + if err != nil { + log.Printf("Failed to create notebook: %v", err) + return err + } + return nil +} diff --git a/backend/service/notebooks/delete_notebook.go b/backend/service/notebooks/delete_notebook.go new file mode 100644 index 00000000..f612f806 --- /dev/null +++ b/backend/service/notebooks/delete_notebook.go @@ -0,0 +1,16 @@ +package notebooks + +import ( + "comet/backend/db" + "log" +) + +// DeleteNotebook deletes a notebook by its ID +func DeleteNotebook(id int) error { + _, err := db.DB.Exec("DELETE FROM notebooks WHERE id = ?", id) + if err != nil { + log.Printf("Failed to delete notebook: %v", err) + return err + } + return nil +} diff --git a/backend/service/notebooks/get_active_notebook.go b/backend/service/notebooks/get_active_notebook.go new file mode 100644 index 00000000..a3a1c111 --- /dev/null +++ b/backend/service/notebooks/get_active_notebook.go @@ -0,0 +1,18 @@ +package notebooks + +import ( + "comet/backend/db" + "comet/backend/db/schemas" + "log" +) + +// GetActiveNotebook retrieves the active notebook from the database +func GetActiveNotebook() (*schemas.Notebook, error) { + var notebook schemas.Notebook + err := db.DB.Get(¬ebook, "SELECT id, name, created_at, modified_at, pinned, active FROM notebooks WHERE active = true LIMIT 1") + if err != nil { + log.Printf("Failed to get active notebook: %v", err) + return nil, err + } + return ¬ebook, nil +} diff --git a/backend/service/notebooks/get_notebook_by_id.go b/backend/service/notebooks/get_notebook_by_id.go new file mode 100644 index 00000000..25ccb5bb --- /dev/null +++ b/backend/service/notebooks/get_notebook_by_id.go @@ -0,0 +1,22 @@ +package notebooks + +import ( + "comet/backend/db" + "comet/backend/db/schemas" + "database/sql" + "log" +) + +// GetNotebookByID retrieves a single notebook by its ID +func GetNotebookByID(id int) (*schemas.Notebook, error) { + var notebook schemas.Notebook + err := db.DB.QueryRow("SELECT id, name, created_at, modified_at, active FROM notebooks WHERE id = ?", id).Scan(¬ebook.ID, ¬ebook.Name, ¬ebook.CreatedAt, ¬ebook.ModifiedAt, ¬ebook.Active) + if err != nil { + if err == sql.ErrNoRows { + return nil, nil + } + log.Printf("Failed to get notebook by ID: %v", err) + return nil, err + } + return ¬ebook, nil +} diff --git a/backend/service/notebooks/get_notebooks.go b/backend/service/notebooks/get_notebooks.go new file mode 100644 index 00000000..4cf4668a --- /dev/null +++ b/backend/service/notebooks/get_notebooks.go @@ -0,0 +1,33 @@ +package notebooks + +import ( + "comet/backend/db" + "comet/backend/db/schemas" + "log" +) + +// GetNotebooks retrieves all notebooks from the database +func GetNotebooks(pinned bool) ([]schemas.Notebook, error) { + query := "SELECT id, name, created_at, modified_at, pinned, active FROM notebooks" + if pinned { + query += " WHERE pinned = true" + } + + rows, err := db.DB.Query(query) + if err != nil { + log.Printf("Failed to get notebooks: %v", err) + return nil, err + } + defer rows.Close() + + var notebooks []schemas.Notebook + for rows.Next() { + var notebook schemas.Notebook + if err := rows.Scan(¬ebook.ID, ¬ebook.Name, ¬ebook.CreatedAt, ¬ebook.ModifiedAt, ¬ebook.Pinned, ¬ebook.Active); err != nil { + log.Printf("Failed to scan notebook: %v", err) + return nil, err + } + notebooks = append(notebooks, notebook) + } + return notebooks, nil +} diff --git a/backend/service/notebooks/set_notebook_active.go b/backend/service/notebooks/set_notebook_active.go new file mode 100644 index 00000000..d952d5bd --- /dev/null +++ b/backend/service/notebooks/set_notebook_active.go @@ -0,0 +1,37 @@ +package notebooks + +import ( + "comet/backend/db" + "log" +) + +// SetNotebookActive sets a notebook to active by its ID and sets all other notebooks to not active +func SetNotebookActive(id int) error { + tx, err := db.DB.Begin() + if err != nil { + log.Printf("Failed to begin transaction: %v", err) + return err + } + + _, err = tx.Exec("UPDATE notebooks SET active = false WHERE id != ?", id) + if err != nil { + tx.Rollback() + log.Printf("Failed to set other notebooks to not active: %v", err) + return err + } + + _, err = tx.Exec("UPDATE notebooks SET active = true WHERE id = ?", id) + if err != nil { + tx.Rollback() + log.Printf("Failed to set notebook to active: %v", err) + return err + } + + err = tx.Commit() + if err != nil { + log.Printf("Failed to commit transaction: %v", err) + return err + } + + return nil +} diff --git a/backend/service/notebooks/update_notebook.go b/backend/service/notebooks/update_notebook.go new file mode 100644 index 00000000..ef2fb661 --- /dev/null +++ b/backend/service/notebooks/update_notebook.go @@ -0,0 +1,16 @@ +package notebooks + +import ( + "comet/backend/db" + "log" +) + +// UpdateNotebook updates the details of an existing notebook +func UpdateNotebook(id int, name string) error { + _, err := db.DB.Exec("UPDATE notebooks SET name = ?, modified_at = CURRENT_TIMESTAMP WHERE id = ?", name, id) + if err != nil { + log.Printf("Failed to update notebook: %v", err) + return err + } + return nil +} diff --git a/backend/service/notes/archive_note.go b/backend/service/notes/archive_note.go new file mode 100644 index 00000000..6fad8e64 --- /dev/null +++ b/backend/service/notes/archive_note.go @@ -0,0 +1,16 @@ +package notes + +import ( + "comet/backend/db" + "log" +) + +// ArchiveNote archives a note by its ID +func ArchiveNote(id int) error { + _, err := db.DB.Exec("UPDATE notes SET archived_at = CURRENT_TIMESTAMP WHERE id = ?", id) + if err != nil { + log.Printf("Failed to archive note: %v", err) + return err + } + return nil +} diff --git a/backend/service/notes/clear_active_note.go b/backend/service/notes/clear_active_note.go new file mode 100644 index 00000000..a732588f --- /dev/null +++ b/backend/service/notes/clear_active_note.go @@ -0,0 +1,18 @@ +package notes + +import ( + "comet/backend/db" + "log" +) + +// ClearActiveNote deactivates all active notes +func ClearActiveNote() error { + // Deactivate all notes + _, err := db.DB.Exec("UPDATE notes SET active = FALSE WHERE active = TRUE") + if err != nil { + log.Printf("Failed to clear active notes: %v", err) + return err + } + + return nil +} diff --git a/backend/service/notes/create_note.go b/backend/service/notes/create_note.go new file mode 100644 index 00000000..2619ccd0 --- /dev/null +++ b/backend/service/notes/create_note.go @@ -0,0 +1,88 @@ +package notes + +import ( + "comet/backend/db" + "comet/backend/db/schemas" + "database/sql" + "log" + "strings" +) + +// CreateNote inserts a new note into the database and returns the created note +func CreateNote(title, content string) (*schemas.Note, error) { + // Directly clear all active notes + _, err := db.DB.Exec("UPDATE notes SET active = FALSE WHERE active = TRUE") + if err != nil { + log.Printf("Failed to clear active notes: %v", err) + return nil, err + } + + var notebookID *int + err = db.DB.Get(¬ebookID, "SELECT id FROM notebooks WHERE active = true LIMIT 1") + if err != nil && err != sql.ErrNoRows { + log.Printf("Failed to get active notebook: %v", err) + return nil, err + } + + // Check if there are any active tags + var activeTags []schemas.Tag + err = db.DB.Select(&activeTags, "SELECT * FROM tags WHERE active = 1") + if err != nil { + log.Printf("Failed to retrieve active tags: %v", err) + return nil, err + } + + // If there are active tags, modify the content to include them on the second line + if len(activeTags) > 0 { + var tags []string + for _, tag := range activeTags { + tags = append(tags, "#"+tag.Name) + } + tagsLine := strings.Join(tags, " ") + content = content + "\n" + tagsLine + } + + var result sql.Result + if notebookID != nil { + result, err = db.DB.Exec("INSERT INTO notes (title, content, notebook_id) VALUES (?, ?, ?)", title, content, notebookID) + } else { + result, err = db.DB.Exec("INSERT INTO notes (title, content) VALUES (?, ?)", title, content) + } + if err != nil { + log.Printf("Failed to create note: %v", err) + return nil, err + } + + id, err := result.LastInsertId() + if err != nil { + log.Printf("Failed to retrieve last insert ID: %v", err) + return nil, err + } + + var note schemas.Note + err = db.DB.Get(¬e, "SELECT * FROM notes WHERE id = ?", id) + if err != nil { + log.Printf("Failed to retrieve created note: %v", err) + return nil, err + } + + // Associate the note with active tags + if len(activeTags) > 0 { + stmtNoteTag, err := db.DB.Prepare("INSERT OR IGNORE INTO notes_tags (note_id, tag_id) VALUES (?, ?)") + if err != nil { + log.Printf("Failed to prepare note-tag association statement: %v", err) + return nil, err + } + defer stmtNoteTag.Close() + + for _, tag := range activeTags { + _, err = stmtNoteTag.Exec(id, tag.ID) + if err != nil { + log.Printf("Failed to associate tag with note: %v", err) + return nil, err + } + } + } + + return ¬e, nil +} diff --git a/backend/service/notes/delete_note.go b/backend/service/notes/delete_note.go new file mode 100644 index 00000000..94c30579 --- /dev/null +++ b/backend/service/notes/delete_note.go @@ -0,0 +1,16 @@ +package notes + +import ( + "comet/backend/db" + "log" +) + +// DeleteNote deletes a note by its ID +func DeleteNote(id int) error { + _, err := db.DB.Exec("DELETE FROM notes WHERE id = ?", id) + if err != nil { + log.Printf("Failed to delete note: %v", err) + return err + } + return nil +} diff --git a/backend/service/notes/get_active_note.go b/backend/service/notes/get_active_note.go new file mode 100644 index 00000000..1e66c8cb --- /dev/null +++ b/backend/service/notes/get_active_note.go @@ -0,0 +1,18 @@ +package notes + +import ( + "comet/backend/db" + "comet/backend/db/schemas" + "log" +) + +// GetActiveNote retrieves the active note from the database +func GetActiveNote() (*schemas.Note, error) { + var note schemas.Note + err := db.DB.Get(¬e, "SELECT * FROM notes WHERE active = TRUE LIMIT 1") + if err != nil { + log.Printf("Failed to retrieve active note: %v", err) + return nil, err + } + return ¬e, nil +} diff --git a/backend/service/notes/get_archived_notes.go b/backend/service/notes/get_archived_notes.go new file mode 100644 index 00000000..62a378f9 --- /dev/null +++ b/backend/service/notes/get_archived_notes.go @@ -0,0 +1,18 @@ +package notes + +import ( + "comet/backend/db" + "comet/backend/db/schemas" // Correct import path to schemas + "log" +) + +// GetArchivedNotes retrieves all archived notes from the database +func GetArchivedNotes() ([]schemas.Note, error) { // Use schemas.Note to refer to the imported struct + var notes []schemas.Note + err := db.DB.Select(¬es, "SELECT * FROM notes WHERE archived_at IS NOT NULL ORDER BY archived_at DESC") + if err != nil { + log.Printf("Failed to retrieve archived notes: %v", err) + return nil, err + } + return notes, nil +} diff --git a/backend/service/notes/get_note_by_id.go b/backend/service/notes/get_note_by_id.go new file mode 100644 index 00000000..440cf6c4 --- /dev/null +++ b/backend/service/notes/get_note_by_id.go @@ -0,0 +1,18 @@ +package notes + +import ( + "comet/backend/db" + "comet/backend/db/schemas" // Correct import path to schemas + "log" +) + +// GetNoteByID retrieves a single note by its ID +func GetNoteByID(id int) (*schemas.Note, error) { // Use schemas.Note to refer to the imported struct + var note schemas.Note + err := db.DB.Get(¬e, "SELECT * FROM notes WHERE id = ?", id) + if err != nil { + log.Printf("Failed to retrieve note: %v", err) + return nil, err + } + return ¬e, nil +} diff --git a/backend/service/notes/get_notes.go b/backend/service/notes/get_notes.go new file mode 100644 index 00000000..0f6a0523 --- /dev/null +++ b/backend/service/notes/get_notes.go @@ -0,0 +1,76 @@ +package notes + +import ( + "comet/backend/db" + "comet/backend/db/schemas" + "database/sql" + "fmt" + "log" +) + +// GetNotes retrieves all notes from the database with specified ordering, limit, offset, search, and trashed filter +func GetNotes(orderBy string, orderDirection string, limit int, offset int, search string, showTrashed bool) ([]schemas.Note, error) { + var notes []schemas.Note + var activeTags []schemas.Tag + var activeNotebookID *int + + // Check if there are any active tags + activeTagsQuery := "SELECT * FROM tags WHERE active = 1" + err := db.DB.Select(&activeTags, activeTagsQuery) + if err != nil { + log.Printf("Failed to retrieve active tags: %v", err) + return nil, err + } + + // Check if there is an active notebook + err = db.DB.Get(&activeNotebookID, "SELECT id FROM notebooks WHERE active = true LIMIT 1") + if err != nil && err != sql.ErrNoRows { + log.Printf("Failed to get active notebook: %v", err) + return nil, err + } + + // If there are active tags, filter and only show notes associated with those active tags + if len(activeTags) > 0 { + log.Printf("Active tags found, filtering notes by active tags") + query := fmt.Sprintf(` + SELECT DISTINCT notes.*, notes.active FROM notes + JOIN notes_tags ON notes.id = notes_tags.note_id + JOIN tags ON notes_tags.tag_id = tags.id + WHERE tags.active = 1 AND notes.content LIKE '%%%s%%'`, search) + if activeNotebookID != nil { + query += fmt.Sprintf(" AND notes.notebook_id = %d", *activeNotebookID) + } + if showTrashed { + query += " AND notes.trashed_at IS NOT NULL" + } else { + query += " AND notes.trashed_at IS NULL" + } + query += fmt.Sprintf(" ORDER BY %s %s LIMIT %d OFFSET %d", orderBy, orderDirection, limit, offset) + err = db.DB.Select(¬es, query) + if err != nil { + log.Printf("Failed to retrieve notes: %v", err) + return nil, err + } + } else { + // If there are no active tags, retrieve all notes + query := fmt.Sprintf("SELECT *, active FROM notes WHERE content LIKE '%%%s%%'", search) + if activeNotebookID != nil { + query += fmt.Sprintf(" AND notebook_id = %d", *activeNotebookID) + } + if showTrashed { + query += " AND trashed_at IS NOT NULL" + } else { + query += " AND trashed_at IS NULL" + } + query += fmt.Sprintf(" ORDER BY %s %s LIMIT %d OFFSET %d", orderBy, orderDirection, limit, offset) + err = db.DB.Select(¬es, query) + if err != nil { + log.Printf("Failed to retrieve notes: %v", err) + return nil, err + } + } + + log.Printf("Retrieved %d notes", len(notes)) + + return notes, nil +} diff --git a/backend/service/notes/get_notes_by_notebook_id.go b/backend/service/notes/get_notes_by_notebook_id.go new file mode 100644 index 00000000..b3abca59 --- /dev/null +++ b/backend/service/notes/get_notes_by_notebook_id.go @@ -0,0 +1,18 @@ +package notes + +import ( + "comet/backend/db" + "comet/backend/db/schemas" // Correct import path to schemas + "log" +) + +// GetNotesByNotebookID retrieves all notes by a specific notebook ID +func GetNotesByNotebookID(notebookID int) ([]schemas.Note, error) { // Use schemas.Note to refer to the imported struct + var notes []schemas.Note + err := db.DB.Select(¬es, "SELECT * FROM notes WHERE notebook_id = ? ORDER BY created_at DESC", notebookID) + if err != nil { + log.Printf("Failed to retrieve notes by notebook ID: %v", err) + return nil, err + } + return notes, nil +} diff --git a/backend/service/notes/get_pinned_notes.go b/backend/service/notes/get_pinned_notes.go new file mode 100644 index 00000000..c3fe8d1b --- /dev/null +++ b/backend/service/notes/get_pinned_notes.go @@ -0,0 +1,18 @@ +package notes + +import ( + "comet/backend/db" + "comet/backend/db/schemas" // Correct import path to schemas + "log" +) + +// GetPinnedNotes retrieves all pinned notes from the database +func GetPinnedNotes() ([]schemas.Note, error) { // Use schemas.Note to refer to the imported struct + var notes []schemas.Note + err := db.DB.Select(¬es, "SELECT * FROM notes WHERE pinned = 1 ORDER BY created_at DESC") + if err != nil { + log.Printf("Failed to retrieve pinned notes: %v", err) + return nil, err + } + return notes, nil +} diff --git a/backend/service/notes/get_trashed_notes.go b/backend/service/notes/get_trashed_notes.go new file mode 100644 index 00000000..683e76db --- /dev/null +++ b/backend/service/notes/get_trashed_notes.go @@ -0,0 +1,18 @@ +package notes + +import ( + "comet/backend/db" + "comet/backend/db/schemas" // Correct import path to schemas + "log" +) + +// GetTrashedNotes retrieves all trashed notes from the database +func GetTrashedNotes() ([]schemas.Note, error) { // Use schemas.Note to refer to the imported struct + var notes []schemas.Note + err := db.DB.Select(¬es, "SELECT * FROM notes WHERE trashed_at IS NOT NULL ORDER BY trashed_at DESC") + if err != nil { + log.Printf("Failed to retrieve trashed notes: %v", err) + return nil, err + } + return notes, nil +} diff --git a/backend/service/notes/pin_note.go b/backend/service/notes/pin_note.go new file mode 100644 index 00000000..ba76a22e --- /dev/null +++ b/backend/service/notes/pin_note.go @@ -0,0 +1,16 @@ +package notes + +import ( + "comet/backend/db" + "log" +) + +// PinNote pins a note by its ID +func PinNote(id int) error { + _, err := db.DB.Exec("UPDATE notes SET pinned = 1 WHERE id = ?", id) + if err != nil { + log.Printf("Failed to pin note: %v", err) + return err + } + return nil +} diff --git a/backend/service/notes/restore_note.go b/backend/service/notes/restore_note.go new file mode 100644 index 00000000..9e7c7eca --- /dev/null +++ b/backend/service/notes/restore_note.go @@ -0,0 +1,109 @@ +package notes + +import ( + "comet/backend/db" + "comet/backend/db/schemas" + "log" + "regexp" +) + +// RestoreNote restores a note from the trash by its ID +func RestoreNote(id int) error { + tx, err := db.DB.Begin() + if err != nil { + log.Printf("Failed to begin transaction: %v", err) + return err + } + + // Restore the note + _, err = tx.Exec("UPDATE notes SET trashed_at = NULL WHERE id = ?", id) + if err != nil { + tx.Rollback() + log.Printf("Failed to restore note: %v", err) + return err + } + + // Get the note content and notebook ID + var note schemas.Note + err = tx.QueryRow("SELECT content, notebook_id FROM notes WHERE id = ?", id).Scan(¬e.Content, ¬e.NotebookID) + if err != nil { + tx.Rollback() + log.Printf("Failed to retrieve note content: %v", err) + return err + } + + // Extract tags from the content + re := regexp.MustCompile(`#(\w+)`) + matches := re.FindAllStringSubmatch(note.Content, -1) + tags := make(map[string]bool) + for _, match := range matches { + tags[match[1]] = true + } + + // Prepare statements for tag and association operations + stmtTag, err := tx.Prepare("INSERT OR IGNORE INTO tags (name) VALUES (?)") + if err != nil { + tx.Rollback() + log.Printf("Failed to prepare tag statement: %v", err) + return err + } + defer stmtTag.Close() + + stmtNoteTag, err := tx.Prepare("INSERT OR IGNORE INTO notes_tags (note_id, tag_id) VALUES (?, ?)") + if err != nil { + tx.Rollback() + log.Printf("Failed to prepare note-tag association statement: %v", err) + return err + } + defer stmtNoteTag.Close() + + stmtNotebookTag, err := tx.Prepare("INSERT OR IGNORE INTO notebook_tags (notebook_id, tag_id) VALUES (?, ?)") + if err != nil { + tx.Rollback() + log.Printf("Failed to prepare notebook-tag association statement: %v", err) + return err + } + defer stmtNotebookTag.Close() + + // Process each tag + for tag := range tags { + _, err := stmtTag.Exec(tag) + if err != nil { + tx.Rollback() + log.Printf("Failed to insert tag: %v", err) + return err + } + + var tagID int + err = tx.QueryRow("SELECT id FROM tags WHERE name = ?", tag).Scan(&tagID) + if err != nil { + tx.Rollback() + log.Printf("Failed to retrieve tag ID: %v", err) + return err + } + + _, err = stmtNoteTag.Exec(id, tagID) + if err != nil { + tx.Rollback() + log.Printf("Failed to associate tag with note: %v", err) + return err + } + + if note.NotebookID != nil { + _, err = stmtNotebookTag.Exec(*note.NotebookID, tagID) + if err != nil { + tx.Rollback() + log.Printf("Failed to associate tag with notebook: %v", err) + return err + } + } + } + + err = tx.Commit() + if err != nil { + log.Printf("Failed to commit transaction: %v", err) + return err + } + + return nil +} diff --git a/backend/service/notes/search_notes.go b/backend/service/notes/search_notes.go new file mode 100644 index 00000000..fa5bf289 --- /dev/null +++ b/backend/service/notes/search_notes.go @@ -0,0 +1,18 @@ +package notes + +import ( + "comet/backend/db" + "comet/backend/db/schemas" // Correct import path to schemas + "log" +) + +// SearchNotes searches for notes by content +func SearchNotes(query string) ([]schemas.Note, error) { // Use schemas.Note to refer to the imported struct + var notes []schemas.Note + err := db.DB.Select(¬es, "SELECT * FROM notes WHERE content LIKE ? ORDER BY created_at DESC", "%"+query+"%") + if err != nil { + log.Printf("Failed to search notes: %v", err) + return nil, err + } + return notes, nil +} diff --git a/backend/service/notes/set_active_note.go b/backend/service/notes/set_active_note.go new file mode 100644 index 00000000..0d3b0adb --- /dev/null +++ b/backend/service/notes/set_active_note.go @@ -0,0 +1,41 @@ +package notes + +import ( + "comet/backend/db" + "log" +) + +// SetActiveNote sets the specified note as active and deactivates all other notes +func SetActiveNote(noteID int) error { + // Begin a transaction + tx, err := db.DB.Begin() + if err != nil { + log.Printf("Failed to begin transaction: %v", err) + return err + } + + // Deactivate all other notes + _, err = tx.Exec("UPDATE notes SET active = FALSE WHERE active = TRUE AND id != ?", noteID) + if err != nil { + tx.Rollback() + log.Printf("Failed to deactivate other notes: %v", err) + return err + } + + // Activate the specified note + _, err = tx.Exec("UPDATE notes SET active = TRUE WHERE id = ?", noteID) + if err != nil { + tx.Rollback() + log.Printf("Failed to activate the specified note: %v", err) + return err + } + + // Commit the transaction + err = tx.Commit() + if err != nil { + log.Printf("Failed to commit transaction: %v", err) + return err + } + + return nil +} diff --git a/backend/service/notes/set_publish_details.go b/backend/service/notes/set_publish_details.go new file mode 100644 index 00000000..100dc306 --- /dev/null +++ b/backend/service/notes/set_publish_details.go @@ -0,0 +1,19 @@ +package notes + +import ( + "comet/backend/db" + "log" +) + +// SetPublishDetails updates the author, identifier, and published_at fields of a note +func SetPublishDetails(noteID int, author, identifier, publishedAt string) error { + if publishedAt == "" { + publishedAt = "CURRENT_TIMESTAMP" + } + _, err := db.DB.Exec("UPDATE notes SET author = ?, identifier = ?, published_at = ? WHERE id = ?", author, identifier, publishedAt, noteID) + if err != nil { + log.Printf("Failed to set publish details for note %d: %v", noteID, err) + return err + } + return nil +} diff --git a/backend/service/notes/trash_note.go b/backend/service/notes/trash_note.go new file mode 100644 index 00000000..bc7ea04f --- /dev/null +++ b/backend/service/notes/trash_note.go @@ -0,0 +1,105 @@ +package notes + +import ( + "comet/backend/db" + "database/sql" + "log" +) + +// TrashNote moves a note to the trash by its ID, removes its tag associations, and sets it as inactive +func TrashNote(id int) error { + tx, err := db.DB.Begin() + if err != nil { + log.Printf("Failed to begin transaction: %v", err) + return err + } + + _, err = tx.Exec("UPDATE notes SET trashed_at = CURRENT_TIMESTAMP, active = false WHERE id = ?", id) + if err != nil { + tx.Rollback() + log.Printf("Failed to trash note: %v", err) + return err + } + + // Get all tag IDs associated with the note + rows, err := tx.Query("SELECT tag_id FROM notes_tags WHERE note_id = ?", id) + if err != nil { + tx.Rollback() + log.Printf("Failed to retrieve tag associations for note ID %d: %v", id, err) + return err + } + defer rows.Close() + + var tagIDs []int + for rows.Next() { + var tagID int + if err := rows.Scan(&tagID); err != nil { + tx.Rollback() + log.Printf("Failed to scan tag ID: %v", err) + return err + } + tagIDs = append(tagIDs, tagID) + } + + // Remove all tag associations for the note + _, err = tx.Exec("DELETE FROM notes_tags WHERE note_id = ?", id) + if err != nil { + tx.Rollback() + log.Printf("Failed to remove tag associations for note ID %d: %v", id, err) + return err + } + + // Get the notebook ID associated with the note + var notebookID *int + err = tx.QueryRow("SELECT notebook_id FROM notes WHERE id = ?", id).Scan(¬ebookID) + if err != nil && err != sql.ErrNoRows { + tx.Rollback() + log.Printf("Failed to retrieve notebook ID for note ID %d: %v", id, err) + return err + } + + // Check for remaining associations and remove tags with no remaining associations + for _, tagID := range tagIDs { + var count int + err = tx.QueryRow("SELECT COUNT(*) FROM notes_tags WHERE tag_id = ?", tagID).Scan(&count) + if err != nil { + tx.Rollback() + log.Printf("Failed to count remaining associations for tag ID %d: %v", tagID, err) + return err + } + if count == 0 { + _, err = tx.Exec("DELETE FROM tags WHERE id = ?", tagID) + if err != nil { + tx.Rollback() + log.Printf("Failed to delete tag ID %d: %v", tagID, err) + return err + } + } + + // If the note has a notebook, check if any other notes in the notebook have the tag + if notebookID != nil { + err = tx.QueryRow("SELECT COUNT(*) FROM notes_tags nt JOIN notes n ON nt.note_id = n.id WHERE nt.tag_id = ? AND n.notebook_id = ?", tagID, *notebookID).Scan(&count) + if err != nil { + tx.Rollback() + log.Printf("Failed to count remaining notebook associations for tag ID %d: %v", tagID, err) + return err + } + if count == 0 { + _, err = tx.Exec("DELETE FROM notebook_tags WHERE notebook_id = ? AND tag_id = ?", *notebookID, tagID) + if err != nil { + tx.Rollback() + log.Printf("Failed to delete notebook tag association for notebook ID %d and tag ID %d: %v", *notebookID, tagID, err) + return err + } + } + } + } + + err = tx.Commit() + if err != nil { + log.Printf("Failed to commit transaction: %v", err) + return err + } + + return nil +} diff --git a/backend/service/notes/unarchive_note.go b/backend/service/notes/unarchive_note.go new file mode 100644 index 00000000..4f09d4d2 --- /dev/null +++ b/backend/service/notes/unarchive_note.go @@ -0,0 +1,16 @@ +package notes + +import ( + "comet/backend/db" + "log" +) + +// UnarchiveNote unarchives a note by its ID +func UnarchiveNote(id int) error { + _, err := db.DB.Exec("UPDATE notes SET archived_at = NULL WHERE id = ?", id) + if err != nil { + log.Printf("Failed to unarchive note: %v", err) + return err + } + return nil +} diff --git a/backend/service/notes/unpin_note.go b/backend/service/notes/unpin_note.go new file mode 100644 index 00000000..0183e8a3 --- /dev/null +++ b/backend/service/notes/unpin_note.go @@ -0,0 +1,16 @@ +package notes + +import ( + "comet/backend/db" + "log" +) + +// UnpinNote unpins a note by its ID +func UnpinNote(id int) error { + _, err := db.DB.Exec("UPDATE notes SET pinned = 0 WHERE id = ?", id) + if err != nil { + log.Printf("Failed to unpin note: %v", err) + return err + } + return nil +} diff --git a/backend/service/notes/update_note.go b/backend/service/notes/update_note.go new file mode 100644 index 00000000..9c722da1 --- /dev/null +++ b/backend/service/notes/update_note.go @@ -0,0 +1,17 @@ +package notes + +import ( + "comet/backend/db" + "comet/backend/db/schemas" + "log" +) + +// UpdateNote updates the content and title of an existing note +func UpdateNote(note schemas.Note) error { + _, err := db.DB.Exec("UPDATE notes SET title = ?, content = ?, modified_at = CURRENT_TIMESTAMP WHERE id = ?", note.Title, note.Content, note.ID) + if err != nil { + log.Printf("Failed to update note: %v", err) + return err + } + return nil +} diff --git a/backend/service/relays/create_relay.go b/backend/service/relays/create_relay.go new file mode 100644 index 00000000..119eb974 --- /dev/null +++ b/backend/service/relays/create_relay.go @@ -0,0 +1,24 @@ +package relays + +import ( + "comet/backend/db" + "comet/backend/db/schemas" + "log" +) + +// CreateRelay inserts a new relay into the database and returns the created relay +func CreateRelay(url string, read, write, sync bool) (*schemas.Relay, error) { + result, err := db.DB.Exec("INSERT INTO relays (url, read, write, sync) VALUES (?, ?, ?, ?)", url, read, write, sync) + if err != nil { + log.Printf("Failed to create relay: %v", err) + return nil, err + } + + id, err := result.LastInsertId() + if err != nil { + log.Printf("Failed to get last insert ID: %v", err) + return nil, err + } + + return GetRelayByID(int(id)) +} diff --git a/backend/service/relays/delete_relay.go b/backend/service/relays/delete_relay.go new file mode 100644 index 00000000..629a6c17 --- /dev/null +++ b/backend/service/relays/delete_relay.go @@ -0,0 +1,16 @@ +package relays + +import ( + "comet/backend/db" + "log" +) + +// DeleteRelay deletes a relay by its ID +func DeleteRelay(id int) error { + _, err := db.DB.Exec("DELETE FROM relays WHERE id = ?", id) + if err != nil { + log.Printf("Failed to delete relay: %v", err) + return err + } + return nil +} diff --git a/backend/service/relays/get_all_relays.go b/backend/service/relays/get_all_relays.go new file mode 100644 index 00000000..e7e16d54 --- /dev/null +++ b/backend/service/relays/get_all_relays.go @@ -0,0 +1,38 @@ +package relays + +import ( + "comet/backend/db" + "comet/backend/db/schemas" + "log" +) + +// GetAllRelays retrieves all relays from the database +func GetAllRelays() ([]*schemas.Relay, error) { + rows, err := db.DB.Query("SELECT id, url, read, write, sync FROM relays") + if err != nil { + log.Printf("Failed to retrieve relays: %v", err) + return nil, err + } + defer rows.Close() + + var relays []*schemas.Relay + for rows.Next() { + var relay schemas.Relay + if err := rows.Scan(&relay.ID, &relay.URL, &relay.Read, &relay.Write, &relay.Sync); err != nil { + log.Printf("Failed to scan relay: %v", err) + return nil, err + } + relays = append(relays, &relay) + } + + if err := rows.Err(); err != nil { + log.Printf("Rows error: %v", err) + return nil, err + } + + if len(relays) == 0 { + return nil, nil + } + + return relays, nil +} diff --git a/backend/service/relays/get_relay_by_id.go b/backend/service/relays/get_relay_by_id.go new file mode 100644 index 00000000..c9c9396d --- /dev/null +++ b/backend/service/relays/get_relay_by_id.go @@ -0,0 +1,19 @@ +package relays + +import ( + "comet/backend/db" + "comet/backend/db/schemas" + "log" +) + +// GetRelayByID retrieves a relay by its ID +func GetRelayByID(id int) (*schemas.Relay, error) { + var relay schemas.Relay + err := db.DB.QueryRow("SELECT id, url, read, write, sync, created_at, modified_at FROM relays WHERE id = ?", id).Scan( + &relay.ID, &relay.URL, &relay.Read, &relay.Write, &relay.Sync, &relay.CreatedAt, &relay.ModifiedAt) + if err != nil { + log.Printf("Failed to get relay by ID: %v", err) + return nil, err + } + return &relay, nil +} diff --git a/backend/service/relays/replace_relays.go b/backend/service/relays/replace_relays.go new file mode 100644 index 00000000..7ff1609c --- /dev/null +++ b/backend/service/relays/replace_relays.go @@ -0,0 +1,64 @@ +package relays + +import ( + "comet/backend/db" + "comet/backend/db/schemas" + "log" +) + +// RelayData represents the data needed to create a relay +type RelayData struct { + URL string + Read bool + Write bool + Sync bool +} + +// ReplaceRelays removes all existing relays and inserts the new list of relays into the database +func ReplaceRelays(relayData []RelayData) ([]*schemas.Relay, error) { + tx, err := db.DB.Begin() + if err != nil { + log.Printf("Failed to begin transaction: %v", err) + return nil, err + } + + _, err = tx.Exec("DELETE FROM relays") + if err != nil { + tx.Rollback() + log.Printf("Failed to delete existing relays: %v", err) + return nil, err + } + + createdRelays := []*schemas.Relay{} + for _, data := range relayData { + result, err := tx.Exec("INSERT INTO relays (url, read, write, sync) VALUES (?, ?, ?, ?)", data.URL, data.Read, data.Write, data.Sync) + if err != nil { + tx.Rollback() + log.Printf("Failed to create relay: %v", err) + return nil, err + } + + id, err := result.LastInsertId() + if err != nil { + tx.Rollback() + log.Printf("Failed to get last insert ID: %v", err) + return nil, err + } + + createdRelay := &schemas.Relay{ + ID: int(id), + URL: data.URL, + Read: data.Read, + Write: data.Write, + Sync: data.Sync, + } + createdRelays = append(createdRelays, createdRelay) + } + + if err := tx.Commit(); err != nil { + log.Printf("Failed to commit transaction: %v", err) + return nil, err + } + + return createdRelays, nil +} diff --git a/backend/service/relays/update_relay.go b/backend/service/relays/update_relay.go new file mode 100644 index 00000000..752f15e8 --- /dev/null +++ b/backend/service/relays/update_relay.go @@ -0,0 +1,17 @@ +package relays + +import ( + "comet/backend/db" + "comet/backend/db/schemas" + "log" +) + +// UpdateRelay updates an existing relay in the database +func UpdateRelay(relay schemas.Relay) error { + _, err := db.DB.Exec("UPDATE relays SET url = ?, read = ?, write = ?, sync = ? WHERE id = ?", relay.URL, relay.Read, relay.Write, relay.Sync, relay.ID) + if err != nil { + log.Printf("Failed to update relay: %v", err) + return err + } + return nil +} diff --git a/backend/service/tags/clear_active_tags.go b/backend/service/tags/clear_active_tags.go new file mode 100644 index 00000000..a3f5b89b --- /dev/null +++ b/backend/service/tags/clear_active_tags.go @@ -0,0 +1,16 @@ +package tags + +import ( + "comet/backend/db" + "log" +) + +// SetAllTagsInactive sets the active status of all tags to false +func ClearActiveTags() error { + _, err := db.DB.Exec("UPDATE tags SET active = 0") + if err != nil { + log.Printf("Failed to set all tags inactive: %v", err) + return err + } + return nil +} diff --git a/backend/service/tags/create_tag.go b/backend/service/tags/create_tag.go new file mode 100644 index 00000000..6ebce6a9 --- /dev/null +++ b/backend/service/tags/create_tag.go @@ -0,0 +1,16 @@ +package tags + +import ( + "comet/backend/db" + "log" +) + +// CreateTag inserts a new tag into the database +func CreateTag(name, color, icon string, active, inactive bool) error { + _, err := db.DB.Exec("INSERT INTO tags (name, color, icon, active, inactive) VALUES (?, ?, ?, ?, ?)", name, color, icon, active, inactive) + if err != nil { + log.Printf("Failed to create tag: %v", err) + return err + } + return nil +} diff --git a/backend/service/tags/create_tags.go b/backend/service/tags/create_tags.go new file mode 100644 index 00000000..29f4ddbf --- /dev/null +++ b/backend/service/tags/create_tags.go @@ -0,0 +1,125 @@ +package tags + +import ( + "comet/backend/db" + "database/sql" + "log" +) + +// CreateTags inserts multiple tags into the database and associates them with a note ID +func CreateTags(noteID int, tags []string) error { + tx, err := db.DB.Begin() + if err != nil { + log.Printf("Failed to begin transaction: %v", err) + return err + } + + // Remove all existing associations for the note + _, err = tx.Exec("DELETE FROM notes_tags WHERE note_id = ?", noteID) + if err != nil { + tx.Rollback() + log.Printf("Failed to remove existing associations: %v", err) + return err + } + + // Get the notebook ID associated with the note + var notebookID sql.NullInt64 + err = tx.QueryRow("SELECT notebook_id FROM notes WHERE id = ?", noteID).Scan(¬ebookID) + if err != nil { + tx.Rollback() + log.Printf("Failed to retrieve notebook ID: %v", err) + return err + } + + // If the notebook ID is valid, proceed with notebook-related operations + if notebookID.Valid { + // Remove all associations with the notebook in the notebook_tags junction table + _, err = tx.Exec("DELETE FROM notebook_tags WHERE notebook_id = ?", notebookID.Int64) + if err != nil { + tx.Rollback() + log.Printf("Failed to remove associations with notebook: %v", err) + return err + } + } + + stmt, err := tx.Prepare("INSERT OR IGNORE INTO tags (name) VALUES (?)") + if err != nil { + log.Printf("Failed to prepare statement: %v", err) + return err + } + defer stmt.Close() + + for _, tag := range tags { + _, err := stmt.Exec(tag) + if err != nil { + tx.Rollback() + log.Printf("Failed to execute statement: %v", err) + return err + } + + // Get the tag ID + var tagID int + err = tx.QueryRow("SELECT id FROM tags WHERE name = ?", tag).Scan(&tagID) + if err != nil { + tx.Rollback() + log.Printf("Failed to retrieve tag ID: %v", err) + return err + } + + // Associate the tag with the note if not already associated + _, err = tx.Exec("INSERT OR IGNORE INTO notes_tags (note_id, tag_id) VALUES (?, ?)", noteID, tagID) + if err != nil { + tx.Rollback() + log.Printf("Failed to associate tag with note: %v", err) + return err + } + } + + // Delete tags with no associated notes + _, err = tx.Exec("DELETE FROM tags WHERE id NOT IN (SELECT DISTINCT tag_id FROM notes_tags)") + if err != nil { + tx.Rollback() + log.Printf("Failed to delete unused tags: %v", err) + return err + } + + // If the notebook ID is valid, proceed with notebook-related operations + if notebookID.Valid { + // Look up all notes for the notebook and their associated tags + rows, err := tx.Query(` + SELECT nt.tag_id + FROM notes_tags nt + JOIN notes n ON nt.note_id = n.id + WHERE n.notebook_id = ?`, notebookID.Int64) + if err != nil { + tx.Rollback() + log.Printf("Failed to retrieve tags for notebook: %v", err) + return err + } + defer rows.Close() + + // Add those tags to the notebook_tags table + for rows.Next() { + var tagID int + if err := rows.Scan(&tagID); err != nil { + tx.Rollback() + log.Printf("Failed to scan tag ID: %v", err) + return err + } + _, err = tx.Exec("INSERT OR IGNORE INTO notebook_tags (notebook_id, tag_id) VALUES (?, ?)", notebookID.Int64, tagID) + if err != nil { + tx.Rollback() + log.Printf("Failed to insert tag into notebook_tags: %v", err) + return err + } + } + } + + err = tx.Commit() + if err != nil { + log.Printf("Failed to commit transaction: %v", err) + return err + } + + return nil +} diff --git a/backend/service/tags/delete_tag.go b/backend/service/tags/delete_tag.go new file mode 100644 index 00000000..0fc5f510 --- /dev/null +++ b/backend/service/tags/delete_tag.go @@ -0,0 +1,16 @@ +package tags + +import ( + "comet/backend/db" + "log" +) + +// DeleteTag deletes a tag by its ID +func DeleteTag(id int) error { + _, err := db.DB.Exec("DELETE FROM tags WHERE id = ?", id) + if err != nil { + log.Printf("Failed to delete tag: %v", err) + return err + } + return nil +} diff --git a/backend/service/tags/get_tag_by_id.go b/backend/service/tags/get_tag_by_id.go new file mode 100644 index 00000000..f6c05120 --- /dev/null +++ b/backend/service/tags/get_tag_by_id.go @@ -0,0 +1,22 @@ +package tags + +import ( + "comet/backend/db" + "comet/backend/db/schemas" + "database/sql" + "log" +) + +// GetTagByID retrieves a single tag by its ID +func GetTagByID(id int) (*schemas.Tag, error) { + var tag schemas.Tag + err := db.DB.QueryRow("SELECT id, name, color, icon, created_at, modified_at FROM tags WHERE id = ?", id).Scan(&tag.ID, &tag.Name, &tag.Color, &tag.Icon, &tag.CreatedAt, &tag.ModifiedAt) + if err != nil { + if err == sql.ErrNoRows { + return nil, nil + } + log.Printf("Failed to get tag by ID: %v", err) + return nil, err + } + return &tag, nil +} diff --git a/backend/service/tags/get_tags.go b/backend/service/tags/get_tags.go new file mode 100644 index 00000000..2bdbac41 --- /dev/null +++ b/backend/service/tags/get_tags.go @@ -0,0 +1,52 @@ +package tags + +import ( + "comet/backend/db" + "comet/backend/db/schemas" + "database/sql" + "log" +) + +// GetTags retrieves all tags from the database +func GetTags() ([]schemas.Tag, error) { + var tags []schemas.Tag + var activeNotebookID *int + + // Check if there is an active notebook + err := db.DB.Get(&activeNotebookID, "SELECT id FROM notebooks WHERE active = true LIMIT 1") + if err != nil && err != sql.ErrNoRows { + log.Printf("Failed to get active notebook: %v", err) + return nil, err + } + + var rows *sql.Rows + if activeNotebookID != nil { + // Retrieve tags associated with the active notebook + query := ` + SELECT tags.id, tags.name, tags.color, tags.icon, tags.active, tags.inactive, tags.created_at, tags.modified_at + FROM tags + JOIN notebook_tags ON tags.id = notebook_tags.tag_id + WHERE notebook_tags.notebook_id = ? + ORDER BY tags.name ASC` + rows, err = db.DB.Query(query, *activeNotebookID) + } else { + // Retrieve all tags + query := "SELECT id, name, color, icon, active, inactive, created_at, modified_at FROM tags ORDER BY name ASC" + rows, err = db.DB.Query(query) + } + if err != nil { + log.Printf("Failed to get tags: %v", err) + return nil, err + } + defer rows.Close() + + for rows.Next() { + var tag schemas.Tag + if err := rows.Scan(&tag.ID, &tag.Name, &tag.Color, &tag.Icon, &tag.Active, &tag.Inactive, &tag.CreatedAt, &tag.ModifiedAt); err != nil { + log.Printf("Failed to scan tag: %v", err) + return nil, err + } + tags = append(tags, tag) + } + return tags, nil +} diff --git a/backend/service/tags/get_tags_by_note_id.go b/backend/service/tags/get_tags_by_note_id.go new file mode 100644 index 00000000..3369df38 --- /dev/null +++ b/backend/service/tags/get_tags_by_note_id.go @@ -0,0 +1,23 @@ +package tags + +import ( + "comet/backend/db" + "comet/backend/db/schemas" + "log" +) + +// GetTagsByNoteID retrieves all tags associated with a specific note ID +func GetTagsByNoteID(noteID int) ([]schemas.Tag, error) { + var tags []schemas.Tag + query := ` + SELECT tags.* FROM tags + JOIN notes_tags ON tags.id = notes_tags.tag_id + WHERE notes_tags.note_id = ? + ORDER BY tags.name ASC` + err := db.DB.Select(&tags, query, noteID) + if err != nil { + log.Printf("Failed to retrieve tags for note ID %d: %v", noteID, err) + return nil, err + } + return tags, nil +} diff --git a/backend/service/tags/remove_note_tags.go b/backend/service/tags/remove_note_tags.go new file mode 100644 index 00000000..370535c8 --- /dev/null +++ b/backend/service/tags/remove_note_tags.go @@ -0,0 +1,43 @@ +package tags + +import ( + "comet/backend/db" + "log" +) + +// RemoveNoteTags removes all tag associations for a given note ID and deletes tags with no remaining associations +func RemoveNoteTags(noteID int) error { + // Get all tag IDs associated with the note + var tagIDs []int + err := db.DB.Select(&tagIDs, "SELECT tag_id FROM notes_tags WHERE note_id = ?", noteID) + if err != nil { + log.Printf("Failed to retrieve tag associations for note ID %d: %v", noteID, err) + return err + } + + // Remove all tag associations for the note + _, err = db.DB.Exec("DELETE FROM notes_tags WHERE note_id = ?", noteID) + if err != nil { + log.Printf("Failed to remove tag associations for note ID %d: %v", noteID, err) + return err + } + + // Check for remaining associations and remove tags with no remaining associations + for _, tagID := range tagIDs { + var count int + err = db.DB.Get(&count, "SELECT COUNT(*) FROM notes_tags WHERE tag_id = ?", tagID) + if err != nil { + log.Printf("Failed to count remaining associations for tag ID %d: %v", tagID, err) + return err + } + if count == 0 { + _, err = db.DB.Exec("DELETE FROM tags WHERE id = ?", tagID) + if err != nil { + log.Printf("Failed to delete tag ID %d: %v", tagID, err) + return err + } + } + } + + return nil +} diff --git a/backend/service/tags/set_tag_active.go b/backend/service/tags/set_tag_active.go new file mode 100644 index 00000000..6f080869 --- /dev/null +++ b/backend/service/tags/set_tag_active.go @@ -0,0 +1,16 @@ +package tags + +import ( + "comet/backend/db" + "log" +) + +// SetTagActive sets the active status of a tag +func SetTagActive(tagID int, active bool) error { + _, err := db.DB.Exec("UPDATE tags SET active = ? WHERE id = ?", active, tagID) + if err != nil { + log.Printf("Failed to set tag active status: %v", err) + return err + } + return nil +} diff --git a/backend/service/tags/set_tag_inactive.go b/backend/service/tags/set_tag_inactive.go new file mode 100644 index 00000000..321c09dd --- /dev/null +++ b/backend/service/tags/set_tag_inactive.go @@ -0,0 +1,16 @@ +package tags + +import ( + "comet/backend/db" + "log" +) + +// SetTagInactive sets the active status of a tag to false +func SetTagInactive(tagID int) error { + _, err := db.DB.Exec("UPDATE tags SET active = 0 WHERE id = ?", tagID) + if err != nil { + log.Printf("Failed to set tag inactive: %v", err) + return err + } + return nil +} diff --git a/backend/service/tags/update_tag.go b/backend/service/tags/update_tag.go new file mode 100644 index 00000000..ecc6e441 --- /dev/null +++ b/backend/service/tags/update_tag.go @@ -0,0 +1,16 @@ +package tags + +import ( + "comet/backend/db" + "log" +) + +// UpdateTag updates the details of an existing tag +func UpdateTag(id int, name, color, icon string) error { + _, err := db.DB.Exec("UPDATE tags SET name = ?, color = ?, icon = ?, modified_at = CURRENT_TIMESTAMP WHERE id = ?", name, color, icon, id) + if err != nil { + log.Printf("Failed to update tag: %v", err) + return err + } + return nil +} diff --git a/backend/service/users/create_user.go b/backend/service/users/create_user.go new file mode 100644 index 00000000..b9ca48f9 --- /dev/null +++ b/backend/service/users/create_user.go @@ -0,0 +1,30 @@ +package users + +import ( + "comet/backend/db" + "comet/backend/db/schemas" + "log" +) + +func CreateUser(nsec, npub string, active bool) (*schemas.User, error) { + user := &schemas.User{ + Nsec: nsec, + Npub: npub, + Active: active, + } + + query := `INSERT INTO users (nsec, npub, active) VALUES (?, ?, ?)` + result, err := db.DB.Exec(query, user.Nsec, user.Npub, user.Active) + if err != nil { + log.Printf("Failed to create user: %v", err) + return nil, err + } + + id, err := result.LastInsertId() + if err != nil { + return nil, err + } + user.ID = int(id) + + return user, nil +} diff --git a/backend/service/users/delete_user.go b/backend/service/users/delete_user.go new file mode 100644 index 00000000..ef4a7835 --- /dev/null +++ b/backend/service/users/delete_user.go @@ -0,0 +1,15 @@ +package users + +import ( + "comet/backend/db" +) + +func DeleteUser(id int) error { + query := `DELETE FROM users WHERE id = ?` + _, err := db.DB.Exec(query, id) + if err != nil { + return err + } + + return nil +} diff --git a/backend/service/users/get_active_user.go b/backend/service/users/get_active_user.go new file mode 100644 index 00000000..1f87b251 --- /dev/null +++ b/backend/service/users/get_active_user.go @@ -0,0 +1,19 @@ +package users + +import ( + "comet/backend/db" + "comet/backend/db/schemas" +) + +func GetActiveUser() (*schemas.User, error) { + query := `SELECT id, nsec, npub, active, created_at, modified_at FROM users WHERE active = 1 LIMIT 1` + row := db.DB.QueryRow(query) + + var user schemas.User + err := row.Scan(&user.ID, &user.Nsec, &user.Npub, &user.Active, &user.CreatedAt, &user.ModifiedAt) + if err != nil { + return nil, err + } + + return &user, nil +} diff --git a/backend/service/users/get_user_by_id.go b/backend/service/users/get_user_by_id.go new file mode 100644 index 00000000..dc1c1e8b --- /dev/null +++ b/backend/service/users/get_user_by_id.go @@ -0,0 +1,22 @@ +package users + +import ( + "comet/backend/db" + "comet/backend/db/schemas" + "database/sql" + "errors" +) + +func GetUserByID(id int) (*schemas.User, error) { + user := &schemas.User{} + query := `SELECT id, nsec, npub, active, created_at, modified_at FROM users WHERE id = ?` + err := db.DB.QueryRow(query, id).Scan(&user.ID, &user.Nsec, &user.Npub, &user.Active, &user.CreatedAt, &user.ModifiedAt) + if err != nil { + if err == sql.ErrNoRows { + return nil, errors.New("user not found") + } + return nil, err + } + + return user, nil +} diff --git a/backend/service/users/update_user.go b/backend/service/users/update_user.go new file mode 100644 index 00000000..e948e8ae --- /dev/null +++ b/backend/service/users/update_user.go @@ -0,0 +1,16 @@ +package users + +import ( + "comet/backend/db" + "comet/backend/db/schemas" +) + +func UpdateUser(user schemas.User) error { + query := `UPDATE users SET nsec = ?, npub = ?, active = ? WHERE id = ?` + _, err := db.DB.Exec(query, user.Nsec, user.Npub, user.Active, user.ID) + if err != nil { + return err + } + + return nil +} diff --git a/build/darwin/Info.dev.plist b/build/Info.dev.plist similarity index 93% rename from build/darwin/Info.dev.plist rename to build/Info.dev.plist index a3ddfdc1..f654a6d7 100644 --- a/build/darwin/Info.dev.plist +++ b/build/Info.dev.plist @@ -6,9 +6,9 @@ CFBundleName My Product CFBundleExecutable - asdf + comet CFBundleIdentifier - com.wails.asdf + com.wails.comet CFBundleVersion 0.1.0 CFBundleGetInfoString diff --git a/build/darwin/Info.plist b/build/Info.plist similarity index 92% rename from build/darwin/Info.plist rename to build/Info.plist index ec6553a0..e42dac47 100644 --- a/build/darwin/Info.plist +++ b/build/Info.plist @@ -6,9 +6,9 @@ CFBundleName My Product CFBundleExecutable - asdf + comet CFBundleIdentifier - com.wails.asdf + com.wails.comet CFBundleVersion 0.1.0 CFBundleGetInfoString diff --git a/build/Taskfile.yml b/build/Taskfile.common.yml similarity index 87% rename from build/Taskfile.yml rename to build/Taskfile.common.yml index ee88d272..42f77b57 100644 --- a/build/Taskfile.yml +++ b/build/Taskfile.common.yml @@ -23,7 +23,7 @@ tasks: - sh: npm version msg: "Looks like npm isn't installed. Npm is part of the Node installer: https://nodejs.org/en/download/" cmds: - - npm install + - npm install --force build:frontend: summary: Build the frontend project @@ -47,7 +47,7 @@ tasks: generates: - "frontend/bindings/**/*" cmds: - - wails3 generate bindings -f '{{.BUILD_FLAGS}}'{{if .UseTypescript}} -ts{{end}} + - wails3 generate bindings -f '{{.BUILD_FLAGS}}' -ts generate:icons: summary: Generates Windows `.ico` and Mac `.icns` files from an image @@ -58,7 +58,7 @@ tasks: - "icons.icns" - "icons.ico" cmds: - - wails3 generate icons -input appicon.png -macfilename darwin/icons.icns -windowsfilename windows/icons.ico + - wails3 generate icons -input appicon.png dev:frontend: summary: Runs the frontend in development mode diff --git a/build/darwin/Taskfile.yml b/build/Taskfile.darwin.yml similarity index 52% rename from build/darwin/Taskfile.yml rename to build/Taskfile.darwin.yml index c7d5ce8b..59769769 100644 --- a/build/darwin/Taskfile.yml +++ b/build/Taskfile.darwin.yml @@ -1,7 +1,7 @@ version: '3' includes: - common: ../Taskfile.yml + common: Taskfile.common.yml tasks: build: @@ -11,11 +11,9 @@ tasks: - task: common:build:frontend - task: common:generate:icons cmds: - - go build {{.BUILD_FLAGS}} -o {{.OUTPUT}} + - go build {{.BUILD_FLAGS}} -o {{.BIN_DIR}}/{{.APP_NAME}} vars: BUILD_FLAGS: '{{if eq .PRODUCTION "true"}}-tags production,fts5 -trimpath -ldflags="-w -s"{{else}}-tags fts5 -gcflags=all="-N -l"{{end}}' - DEFAULT_OUTPUT: '{{.BIN_DIR}}/{{.APP_NAME}}' - OUTPUT: '{{ .OUTPUT | default .DEFAULT_OUTPUT }}' env: GOOS: darwin CGO_ENABLED: 1 @@ -25,21 +23,6 @@ tasks: MACOSX_DEPLOYMENT_TARGET: "10.15" PRODUCTION: '{{.PRODUCTION | default "false"}}' - build:universal: - summary: Builds darwin universal binary (arm64 + amd64) - deps: - - task: build - vars: - ARCH: amd64 - OUTPUT: "{{.BIN_DIR}}/{{.APP_NAME}}-amd64" - - task: build - vars: - ARCH: arm64 - OUTPUT: "{{.BIN_DIR}}/{{.APP_NAME}}-arm64" - cmds: - - lipo -create -output "{{.BIN_DIR}}/{{.APP_NAME}}" "{{.BIN_DIR}}/{{.APP_NAME}}-amd64" "{{.BIN_DIR}}/{{.APP_NAME}}-arm64" - - rm "{{.BIN_DIR}}/{{.APP_NAME}}-amd64" "{{.BIN_DIR}}/{{.APP_NAME}}-arm64" - package: summary: Packages a production build of the application into a `.app` bundle deps: @@ -49,21 +32,13 @@ tasks: cmds: - task: create:app:bundle - package:universal: - summary: Packages darwin universal binary (arm64 + amd64) - deps: - - task: build:universal - cmds: - - task: create:app:bundle - - create:app:bundle: summary: Creates an `.app` bundle cmds: - mkdir -p {{.BIN_DIR}}/{{.APP_NAME}}.app/Contents/{MacOS,Resources} - - cp build/darwin/icons.icns {{.BIN_DIR}}/{{.APP_NAME}}.app/Contents/Resources + - cp build/icons.icns {{.BIN_DIR}}/{{.APP_NAME}}.app/Contents/Resources - cp {{.BIN_DIR}}/{{.APP_NAME}} {{.BIN_DIR}}/{{.APP_NAME}}.app/Contents/MacOS - - cp build/darwin/Info.plist {{.BIN_DIR}}/{{.APP_NAME}}.app/Contents + - cp build/Info.plist {{.BIN_DIR}}/{{.APP_NAME}}.app/Contents run: cmds: diff --git a/build/linux/Taskfile.yml b/build/Taskfile.linux.yml similarity index 74% rename from build/linux/Taskfile.yml rename to build/Taskfile.linux.yml index 971ab5f1..2d686b5b 100644 --- a/build/linux/Taskfile.yml +++ b/build/Taskfile.linux.yml @@ -1,7 +1,7 @@ version: '3' includes: - common: ../Taskfile.yml + common: Taskfile.common.yml tasks: build: @@ -13,7 +13,7 @@ tasks: cmds: - go build {{.BUILD_FLAGS}} -o {{.BIN_DIR}}/{{.APP_NAME}} vars: - BUILD_FLAGS: '{{if eq .PRODUCTION "true"}}-tags production -trimpath -ldflags="-w -s"{{else}}-gcflags=all="-l"{{end}}' + BUILD_FLAGS: '{{if eq .PRODUCTION "true"}}-tags production,fts5 -trimpath -ldflags="-w -s"{{else}}-tags fts5 -gcflags=all="-N -l"{{end}}' env: GOOS: linux CGO_ENABLED: 1 @@ -34,7 +34,7 @@ tasks: create:appimage: summary: Creates an AppImage - dir: build/linux/appimage + dir: build/appimage deps: - task: build vars: @@ -42,14 +42,14 @@ tasks: - task: generate:dotdesktop cmds: - cp {{.APP_BINARY}} {{.APP_NAME}} - - cp ../../appicon.png appicon.png - - wails3 generate appimage -binary {{.APP_NAME}} -icon {{.ICON}} -desktopfile {{.DESKTOP_FILE}} -outputdir {{.OUTPUT_DIR}} -builddir {{.ROOT_DIR}}/build/linux/appimage/build + - cp ../appicon.png appicon.png + - wails3 generate appimage -binary {{.APP_NAME}} -icon {{.ICON}} -desktopfile {{.DESKTOP_FILE}} -outputdir {{.OUTPUT_DIR}} -builddir {{.ROOT_DIR}}/build/appimage vars: APP_NAME: '{{.APP_NAME}}' - APP_BINARY: '../../../bin/{{.APP_NAME}}' - ICON: '../../appicon.png' - DESKTOP_FILE: '../{{.APP_NAME}}.desktop' - OUTPUT_DIR: '../../../bin' + APP_BINARY: '../../bin/{{.APP_NAME}}' + ICON: '../appicon.png' + DESKTOP_FILE: '{{.APP_NAME}}.desktop' + OUTPUT_DIR: '../../bin' create:deb: summary: Creates a deb package @@ -84,30 +84,30 @@ tasks: generate:deb: summary: Creates a deb package cmds: - - wails3 tool package -name {{.APP_NAME}} -format deb -config ./build/linux/nfpm/nfpm.yaml -out {{.ROOT_DIR}}/bin + - wails3 tool package -name {{.APP_NAME}} -format deb -config ./build/nfpm/nfpm.yaml generate:rpm: summary: Creates a rpm package cmds: - - wails3 tool package -name {{.APP_NAME}} -format rpm -config ./build/linux/nfpm/nfpm.yaml -out {{.ROOT_DIR}}/bin + - wails3 tool package -name {{.APP_NAME}} -format rpm -config ./build/nfpm/nfpm.yaml generate:aur: summary: Creates a arch linux packager package cmds: - - wails3 tool package -name {{.APP_NAME}} -format archlinux -config ./build/linux/nfpm/nfpm.yaml -out {{.ROOT_DIR}}/bin + - wails3 tool package -name {{.APP_NAME}} -format arch -config ./build/nfpm/nfpm.yaml generate:dotdesktop: summary: Generates a `.desktop` file dir: build cmds: - - mkdir -p {{.ROOT_DIR}}/build/linux/appimage - - wails3 generate .desktop -name "{{.APP_NAME}}" -exec "{{.EXEC}}" -icon "{{.ICON}}" -outputfile {{.ROOT_DIR}}/build/linux/{{.APP_NAME}}.desktop -categories "{{.CATEGORIES}}" + - mkdir -p {{.ROOT_DIR}}/build/appimage + - wails3 generate .desktop -name "{{.APP_NAME}}" -exec "{{.EXEC}}" -icon "{{.ICON}}" -outputfile {{.ROOT_DIR}}/build/appimage/{{.APP_NAME}}.desktop -categories "{{.CATEGORIES}}" vars: APP_NAME: '{{.APP_NAME}}' EXEC: '{{.APP_NAME}}' ICON: 'appicon' CATEGORIES: 'Development;' - OUTPUTFILE: '{{.ROOT_DIR}}/build/linux/{{.APP_NAME}}.desktop' + OUTPUTFILE: '{{.ROOT_DIR}}/build/appimage/{{.APP_NAME}}.desktop' run: cmds: diff --git a/build/windows/Taskfile.yml b/build/Taskfile.windows.yml similarity index 82% rename from build/windows/Taskfile.yml rename to build/Taskfile.windows.yml index fd4c6d2f..260c2dbb 100644 --- a/build/windows/Taskfile.yml +++ b/build/Taskfile.windows.yml @@ -1,7 +1,7 @@ version: '3' includes: - common: ../Taskfile.yml + common: Taskfile.common.yml tasks: build: @@ -10,15 +10,15 @@ tasks: - task: common:go:mod:tidy - task: common:build:frontend - task: common:generate:icons - cmds: - task: generate:syso + cmds: - go build {{.BUILD_FLAGS}} -o {{.BIN_DIR}}/{{.APP_NAME}}.exe - cmd: powershell Remove-item *.syso platforms: [windows] - cmd: rm -f *.syso platforms: [linux, darwin] vars: - BUILD_FLAGS: '{{if eq .PRODUCTION "true"}}-tags production -trimpath -ldflags="-w -s -H windowsgui"{{else}}-gcflags=all="-l"{{end}}' + BUILD_FLAGS: '{{if eq .PRODUCTION "true"}}-tags production,fts5 -trimpath -ldflags="-w -s -H windowsgui"{{else}} fts5 -gcflags=all="-l"{{end}}' env: GOOS: windows CGO_ENABLED: 0 @@ -34,13 +34,13 @@ tasks: summary: Generates Windows `.syso` file dir: build cmds: - - wails3 generate syso -arch {{.ARCH}} -icon windows/icon.ico -manifest windows/wails.exe.manifest -info windows/info.json -out ../wails_windows_{{.ARCH}}.syso + - wails3 generate syso -arch {{.ARCH}} -icon icon.ico -manifest wails.exe.manifest -info info.json -out ../wails_windows_{{.ARCH}}.syso vars: ARCH: '{{.ARCH | default ARCH}}' create:nsis:installer: summary: Creates an NSIS installer - dir: build/windows/nsis + dir: build/nsis deps: - task: build vars: diff --git a/build/linux/appimage/build.sh b/build/appimage/build.sh similarity index 100% rename from build/linux/appimage/build.sh rename to build/appimage/build.sh diff --git a/build/windows/icon.ico b/build/icon.ico similarity index 100% rename from build/windows/icon.ico rename to build/icon.ico diff --git a/build/darwin/icons.icns b/build/icons.icns similarity index 100% rename from build/darwin/icons.icns rename to build/icons.icns diff --git a/build/windows/info.json b/build/info.json similarity index 100% rename from build/windows/info.json rename to build/info.json diff --git a/build/linux/nfpm/nfpm.yaml b/build/nfpm/nfpm.yaml similarity index 63% rename from build/linux/nfpm/nfpm.yaml rename to build/nfpm/nfpm.yaml index c40836bf..787eaff8 100644 --- a/build/linux/nfpm/nfpm.yaml +++ b/build/nfpm/nfpm.yaml @@ -3,7 +3,7 @@ # # The lines below are called `modelines`. See `:help modeline` -name: "asdf" +name: "comet" arch: ${GOARCH} platform: "linux" version: "0.1.0" @@ -17,12 +17,12 @@ license: "MIT" release: "1" contents: - - src: "./bin/asdf" - dst: "/usr/local/bin/asdf" + - src: "./bin/comet" + dst: "/usr/local/bin/comet" - src: "./build/appicon.png" - dst: "/usr/share/icons/hicolor/128x128/apps/asdf.png" - - src: "./build/linux/asdf.desktop" - dst: "/usr/share/applications/asdf.desktop" + dst: "/usr/share/icons/hicolor/128x128/apps/comet.png" + - src: "./build/comet.desktop" + dst: "/usr/share/applications/comet.desktop" depends: - gtk3 @@ -44,7 +44,7 @@ depends: # - not-bar # changelog: "changelog.yaml" # scripts: -# preinstall: ./build/linux/nfpm/scripts/preinstall.sh -# postinstall: ./build/linux/nfpm/scripts/postinstall.sh -# preremove: ./build/linux/nfpm/scripts/preremove.sh -# postremove: ./build/linux/nfpm/scripts/postremove.sh +# preinstall: ./build/nfpm/scripts/preinstall.sh +# postinstall: ./build/nfpm/scripts/postinstall.sh +# preremove: ./build/nfpm/scripts/preremove.sh +# postremove: ./build/nfpm/scripts/postremove.sh diff --git a/build/linux/nfpm/scripts/postinstall.sh b/build/nfpm/scripts/postinstall.sh similarity index 100% rename from build/linux/nfpm/scripts/postinstall.sh rename to build/nfpm/scripts/postinstall.sh diff --git a/build/linux/nfpm/scripts/postremove.sh b/build/nfpm/scripts/postremove.sh similarity index 100% rename from build/linux/nfpm/scripts/postremove.sh rename to build/nfpm/scripts/postremove.sh diff --git a/build/linux/nfpm/scripts/preinstall.sh b/build/nfpm/scripts/preinstall.sh similarity index 100% rename from build/linux/nfpm/scripts/preinstall.sh rename to build/nfpm/scripts/preinstall.sh diff --git a/build/linux/nfpm/scripts/preremove.sh b/build/nfpm/scripts/preremove.sh similarity index 100% rename from build/linux/nfpm/scripts/preremove.sh rename to build/nfpm/scripts/preremove.sh diff --git a/build/windows/nsis/project.nsi b/build/nsis/project.nsi similarity index 96% rename from build/windows/nsis/project.nsi rename to build/nsis/project.nsi index 98b232fa..71667057 100644 --- a/build/windows/nsis/project.nsi +++ b/build/nsis/project.nsi @@ -19,7 +19,7 @@ Unicode true #### ## The following information is taken from the wails_tools.nsh file, but they can be overwritten here. #### -## !define INFO_PROJECTNAME "my-project" # Default "asdf" +## !define INFO_PROJECTNAME "my-project" # Default "comet" ## !define INFO_COMPANYNAME "My Company" # Default "My Company" ## !define INFO_PRODUCTNAME "My Product Name" # Default "My Product" ## !define INFO_PRODUCTVERSION "1.0.0" # Default "0.1.0" @@ -71,7 +71,7 @@ ManifestDPIAware true #!finalize 'signtool --file "%1"' Name "${INFO_PRODUCTNAME}" -OutFile "..\..\..\bin\${INFO_PROJECTNAME}-${ARCH}-installer.exe" # Name of the installer's file. +OutFile "..\..\bin\${INFO_PROJECTNAME}-${ARCH}-installer.exe" # Name of the installer's file. InstallDir "$PROGRAMFILES64\${INFO_COMPANYNAME}\${INFO_PRODUCTNAME}" # Default installing folder ($PROGRAMFILES is Program Files folder). ShowInstDetails show # This will always show the installation details. diff --git a/build/windows/nsis/wails_tools.nsh b/build/nsis/wails_tools.nsh similarity index 99% rename from build/windows/nsis/wails_tools.nsh rename to build/nsis/wails_tools.nsh index 39da55ad..f64237b4 100644 --- a/build/windows/nsis/wails_tools.nsh +++ b/build/nsis/wails_tools.nsh @@ -5,7 +5,7 @@ !include "FileFunc.nsh" !ifndef INFO_PROJECTNAME - !define INFO_PROJECTNAME "asdf" + !define INFO_PROJECTNAME "comet" !endif !ifndef INFO_COMPANYNAME !define INFO_COMPANYNAME "My Company" diff --git a/build/windows/wails.exe.manifest b/build/wails.exe.manifest similarity index 89% rename from build/windows/wails.exe.manifest rename to build/wails.exe.manifest index c1310aa1..625c3ef6 100644 --- a/build/windows/wails.exe.manifest +++ b/build/wails.exe.manifest @@ -1,6 +1,6 @@ - + diff --git a/build/windows/icons.ico b/build/windows/icons.ico deleted file mode 100644 index bfa0690b..00000000 Binary files a/build/windows/icons.ico and /dev/null differ diff --git a/contextmenu/notecontextmenu.go b/contextmenu/notecontextmenu.go deleted file mode 100644 index 6cd6cb40..00000000 --- a/contextmenu/notecontextmenu.go +++ /dev/null @@ -1,72 +0,0 @@ -package contextmenu - -import ( - "context" - "strconv" - - "github.com/nodetec/comet/service" - "github.com/wailsapp/wails/v3/pkg/application" -) - -func CreateNoteMenu(app *application.App, mainWindow application.Window, ctx context.Context, noteService *service.NoteService, noteTagService *service.NoteTagService) { - noteMenu := app.NewMenu() - - noteMenu.Add("Move to trash").OnClick(func(data *application.Context) { - contextData, ok := data.ContextMenuData().(string) - if !ok { - app.Logger.Error("Invalid context menu data type") - return - } - - noteID, err := strconv.ParseInt(contextData, 10, 64) - if err != nil { - app.Logger.Error("Error converting context data to int64", "error", err) - return - } - - // Call your service method to delete the note - note, err := noteService.GetNote(ctx, noteID) - if err != nil { - app.Logger.Error("Error getting note", "error", err) - } - tags, err := noteTagService.GetTagsForNote(ctx, noteID) - if err != nil { - app.Logger.Error("Error getting tags for note", "error", err) - } - err = noteService.AddNoteToTrash(ctx, note, tags) - if err != nil { - app.Logger.Error("Error moving note to trash", "error", err) - } - err = noteService.DeleteNote(ctx, noteID) - - if err != nil { - app.Logger.Error("Error deleting note", "error", err) - return - } - - app.EmitEvent("noteDeleted", noteID) - }) - - noteMenu.Add("Move to Notebook").OnClick(func(data *application.Context) { - contextData, ok := data.ContextMenuData().(string) - if !ok { - app.Logger.Error("Invalid context menu data type") - return - } - - noteID, err := strconv.ParseInt(contextData, 10, 64) - if err != nil { - app.Logger.Error("Error converting context data to int64", "error", err) - return - } - - note, err := noteService.GetNote(ctx, noteID) - if err != nil { - app.Logger.Error("Error getting note", "error", err) - } - - app.EmitEvent("noteBookModal", note) - }) - - mainWindow.RegisterContextMenu("noteMenu", noteMenu) -} diff --git a/contextmenu/notetagcontextmenu.go b/contextmenu/notetagcontextmenu.go deleted file mode 100644 index 5222bc9e..00000000 --- a/contextmenu/notetagcontextmenu.go +++ /dev/null @@ -1,57 +0,0 @@ -package contextmenu - -import ( - "context" - "fmt" - "strconv" - "strings" - - "github.com/nodetec/comet/service" - "github.com/wailsapp/wails/v3/pkg/application" -) - -func CreateNoteTagMenu(app *application.App, mainWindow application.Window, ctx context.Context, noteTagService *service.NoteTagService) { - noteTagMenu := app.NewMenu() - - noteTagMenu.Add("Remove").OnClick(func(data *application.Context) { - contextData, ok := data.ContextMenuData().(string) - fmt.Println("Context data!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!:", contextData) - if !ok { - app.Logger.Error("Invalid context menu data type") - return - } - fmt.Println("Context data:", contextData) - - // parse {noteID}-{tagID} - noteTagData := contextData - noteTagDataSplit := strings.Split(noteTagData, ":") - if len(noteTagDataSplit) != 2 { - app.Logger.Error("Invalid context menu data format") - return - } - - noteID, err := strconv.Atoi(noteTagDataSplit[0]) - if err != nil { - app.Logger.Error("Invalid note ID", "error", err) - return - } - - tagID, err := strconv.Atoi(noteTagDataSplit[1]) - if err != nil { - app.Logger.Error("Invalid tag ID", "error", err) - return - } - - // Call your service method to delete the tag - err = noteTagService.RemoveTagFromNote(ctx, int64(noteID), int64(tagID)) - if err != nil { - app.Logger.Error("Error deleting tag", "error", err) - return - } - - // Emit an event to notify about tag deletion - app.EmitEvent("noteTagRemoved", tagID) - }) - - mainWindow.RegisterContextMenu("noteTagMenu", noteTagMenu) -} diff --git a/contextmenu/tagcontextmenu.go b/contextmenu/tagcontextmenu.go deleted file mode 100644 index baa65866..00000000 --- a/contextmenu/tagcontextmenu.go +++ /dev/null @@ -1,39 +0,0 @@ -package contextmenu - -import ( - "context" - "strconv" - - "github.com/nodetec/comet/service" - "github.com/wailsapp/wails/v3/pkg/application" -) - -func CreateTagMenu(app *application.App, mainWindow application.Window, ctx context.Context, tagService *service.TagService) { - tagMenu := app.NewMenu() - - tagMenu.Add("Delete").OnClick(func(data *application.Context) { - contextData, ok := data.ContextMenuData().(string) - if !ok { - app.Logger.Error("Invalid context menu data type") - return - } - - tagID, err := strconv.ParseInt(contextData, 10, 64) - if err != nil { - app.Logger.Error("Error converting context data to int64", "error", err) - return - } - - // Call your service method to delete the tag - err = tagService.DeleteTag(ctx, tagID) - if err != nil { - app.Logger.Error("Error deleting tag", "error", err) - return - } - - // Emit an event to notify about tag deletion - app.EmitEvent("tagDeleted", tagID) - }) - - mainWindow.RegisterContextMenu("tagMenu", tagMenu) -} diff --git a/contextmenu/trashnotecontextmenu.go b/contextmenu/trashnotecontextmenu.go deleted file mode 100644 index 9bc97cef..00000000 --- a/contextmenu/trashnotecontextmenu.go +++ /dev/null @@ -1,100 +0,0 @@ -package contextmenu - -import ( - "context" - "database/sql" - "strconv" - "strings" - - "github.com/nodetec/comet/service" - "github.com/wailsapp/wails/v3/pkg/application" -) - -func CreateTrashNoteMenu(app *application.App, mainWindow application.Window, ctx context.Context, noteService *service.NoteService, noteTagService *service.NoteTagService, tagService *service.TagService) { - trashNoteMenu := app.NewMenu() - - trashNoteMenu.Add("Restore from trash").OnClick(func(data *application.Context) { - contextData, ok := data.ContextMenuData().(string) - if !ok { - app.Logger.Error("Invalid context menu data type") - return - } - - trashNoteID, err := strconv.ParseInt(contextData, 10, 64) - if err != nil { - app.Logger.Error("Error converting context data to int64", "error", err) - return - } - - trashNote, err := noteService.GetNoteFromTrash(ctx, trashNoteID) - if err != nil { - app.Logger.Error("Error getting note from trash", "error", err) - } - var noteId = trashNote.NoteID - var tagNamesArray []string - if trashNote.Tags.Valid { - tagNamesArray = strings.Split(trashNote.Tags.String, ",") - } - - tags, err := tagService.GetTagsByNames(ctx, tagNamesArray) - if err != nil { - app.Logger.Error("Error getting tags for note restore", "error", err) - } - var tagIds []int64 - - // Iterate through the slice of tags and extract IDs - for _, tag := range tags { - tagIds = append(tagIds, tag.ID) - } - - noteId, content, title, createdAt, modifiedAt, notebookId, publishedAt, eventId, noteType, fileType := trashNote.NoteID, trashNote.Content, trashNote.Title, trashNote.CreatedAt, trashNote.ModifiedAt, trashNote.NotebookID, trashNote.PublishedAt, trashNote.EventID, trashNote.Notetype, trashNote.Filetype - var statusId sql.NullInt64 - statusId.Valid = false - note, err := noteService.RestoreNoteFromTrash(ctx, noteId, title, content, notebookId, statusId, createdAt, modifiedAt, publishedAt, eventId, noteType, fileType, tagIds) - if err != nil { - app.Logger.Error("Error moving note to trash", "error", err) - app.Logger.Error("Note Id", "error", note.ID) - } - - err = noteService.DeleteNoteFromTrash(ctx, trashNoteID) - - if err != nil { - app.Logger.Error("Error deleting note from trash", "error", err) - return - } - - // Emit an event to notify about note restoration - app.EmitEvent("noteRestored", trashNoteID) - }) - - trashNoteMenu.Add("Delete").OnClick(func(data *application.Context) { - contextData, ok := data.ContextMenuData().(string) - if !ok { - app.Logger.Error("Invalid context menu data type") - return - } - - trashNoteID, err := strconv.ParseInt(contextData, 10, 64) - if err != nil { - app.Logger.Error("Error converting context data to int64", "error", err) - return - } - - err = noteService.DeleteNoteFromTrash(ctx, trashNoteID) - - if err != nil { - app.Logger.Error("Error deleting note", "error", err) - return - } - - // Emit an event to notify about note deletion - // app.Events.Emit(&application.WailsEvent{ - // Name: "trashNoteDeleted", - // Data: trashNoteID, - // }) - app.EmitEvent("trashNoteDeleted", trashNoteID) - - }) - - mainWindow.RegisterContextMenu("trashNoteMenu", trashNoteMenu) -} diff --git a/db/custom_all_notes.go b/db/custom_all_notes.go deleted file mode 100644 index bb2d0429..00000000 --- a/db/custom_all_notes.go +++ /dev/null @@ -1,75 +0,0 @@ -package db - -import ( - "context" - "fmt" -) - -func (q *Queries) ListAllNotes(ctx context.Context, limit, offset int64, orderBy, sortDirection string) ([]Note, error) { - orderClause := "modified_at DESC" - switch orderBy { - case "modified_at": - orderClause = fmt.Sprintf("modified_at %s", sortDirection) - case "created_at": - orderClause = fmt.Sprintf("created_at %s", sortDirection) - case "title": - orderClause = fmt.Sprintf("title %s", sortDirection) - default: - orderClause = fmt.Sprintf("modified_at %s", sortDirection) - } - - query := fmt.Sprintf(` - SELECT - id, - status_id, - notebook_id, - content, - title, - created_at, - modified_at, - published_at, - event_id, - pinned, - notetype, - filetype - FROM - notes - ORDER BY - %s - LIMIT - ? - OFFSET - ?;`, orderClause) - - rows, err := q.db.QueryContext(ctx, query, limit, offset) - if err != nil { - return nil, err - } - defer rows.Close() - - var notes []Note - for rows.Next() { - var note Note - if err := rows.Scan( - ¬e.ID, - ¬e.StatusID, - ¬e.NotebookID, - ¬e.Content, - ¬e.Title, - ¬e.CreatedAt, - ¬e.ModifiedAt, - ¬e.PublishedAt, - ¬e.EventID, - ¬e.Pinned, - ¬e.Notetype, - ¬e.Filetype, - ); err != nil { - return nil, err - } - notes = append(notes, note) - } - if err := rows.Err(); err != nil { - return nil, err - } - return notes, nil -} diff --git a/db/custom_all_notes_tag.go b/db/custom_all_notes_tag.go deleted file mode 100644 index 6ca681a6..00000000 --- a/db/custom_all_notes_tag.go +++ /dev/null @@ -1,78 +0,0 @@ -package db - -import ( - "context" - "fmt" -) - -func (q *Queries) GetNotesForTag(ctx context.Context, tagID, limit, offset int64, orderBy, sortDirection string) ([]Note, error) { - orderClause := "n.modified_at DESC" - switch orderBy { - case "modified_at": - orderClause = fmt.Sprintf("n.modified_at %s", sortDirection) - case "created_at": - orderClause = fmt.Sprintf("n.created_at %s", sortDirection) - case "title": - orderClause = fmt.Sprintf("n.title %s", sortDirection) - default: - orderClause = fmt.Sprintf("n.modified_at %s", sortDirection) - } - - query := fmt.Sprintf(` - SELECT - n.id, - n.status_id, - n.notebook_id, - n.content, - n.title, - n.created_at, - n.modified_at, - n.published_at, - n.event_id, - n.pinned, - n.notetype, - n.filetype - FROM - notes n - JOIN note_tags nt ON n.id = nt.note_id - WHERE - nt.tag_id = ? - ORDER BY - %s - LIMIT - ? - OFFSET - ?;`, orderClause) - - rows, err := q.db.QueryContext(ctx, query, tagID, limit, offset) - if err != nil { - return nil, err - } - defer rows.Close() - - var notes []Note - for rows.Next() { - var note Note - if err := rows.Scan( - ¬e.ID, - ¬e.StatusID, - ¬e.NotebookID, - ¬e.Content, - ¬e.Title, - ¬e.CreatedAt, - ¬e.ModifiedAt, - ¬e.PublishedAt, - ¬e.EventID, - ¬e.Pinned, - ¬e.Notetype, - ¬e.Filetype, - ); err != nil { - return nil, err - } - notes = append(notes, note) - } - if err := rows.Err(); err != nil { - return nil, err - } - return notes, nil -} diff --git a/db/custom_notebook_notes.go b/db/custom_notebook_notes.go deleted file mode 100644 index 3c0710a0..00000000 --- a/db/custom_notebook_notes.go +++ /dev/null @@ -1,77 +0,0 @@ -package db - -import ( - "context" - "fmt" -) - -func (q *Queries) ListNotesByNotebook(ctx context.Context, notebookID int64, limit, offset int64, orderBy, sortDirection string) ([]Note, error) { - orderClause := "modified_at DESC" - switch orderBy { - case "modified_at": - orderClause = fmt.Sprintf("modified_at %s", sortDirection) - case "created_at": - orderClause = fmt.Sprintf("created_at %s", sortDirection) - case "title": - orderClause = fmt.Sprintf("title %s", sortDirection) - default: - orderClause = fmt.Sprintf("modified_at %s", sortDirection) - } - - query := fmt.Sprintf(` - SELECT - id, - status_id, - notebook_id, - content, - title, - created_at, - modified_at, - published_at, - event_id, - pinned, - notetype, - filetype - FROM - notes - WHERE - (notebook_id = ?) - ORDER BY - %s - LIMIT - ? - OFFSET - ?;`, orderClause) - - rows, err := q.db.QueryContext(ctx, query, notebookID, limit, offset) - if err != nil { - return nil, err - } - defer rows.Close() - - var notes []Note - for rows.Next() { - var note Note - if err := rows.Scan( - ¬e.ID, - ¬e.StatusID, - ¬e.NotebookID, - ¬e.Content, - ¬e.Title, - ¬e.CreatedAt, - ¬e.ModifiedAt, - ¬e.PublishedAt, - ¬e.EventID, - ¬e.Pinned, - ¬e.Notetype, - ¬e.Filetype, - ); err != nil { - return nil, err - } - notes = append(notes, note) - } - if err := rows.Err(); err != nil { - return nil, err - } - return notes, nil -} diff --git a/db/custom_notebook_notes_tag.go b/db/custom_notebook_notes_tag.go deleted file mode 100644 index 8234aa99..00000000 --- a/db/custom_notebook_notes_tag.go +++ /dev/null @@ -1,85 +0,0 @@ -package db - -import ( - "context" - "fmt" -) - -func (q *Queries) ListNotesByNotebookAndTag(ctx context.Context, notebookID, tagID, limit, offset int64, orderBy, sortDirection string) ([]Note, error) { - orderClause := "modified_at DESC" - switch orderBy { - case "modified_at": - orderClause = fmt.Sprintf("modified_at %s", sortDirection) - case "created_at": - orderClause = fmt.Sprintf("created_at %s", sortDirection) - case "title": - orderClause = fmt.Sprintf("title %s", sortDirection) - default: - orderClause = fmt.Sprintf("modified_at %s", sortDirection) - } - - query := fmt.Sprintf(` - SELECT - id, - status_id, - notebook_id, - content, - title, - created_at, - modified_at, - published_at, - event_id, - pinned, - notetype, - filetype - FROM - notes - WHERE - notebook_id = ? - AND id IN ( - SELECT - note_id - FROM - note_tags - WHERE - tag_id = ? - ) - ORDER BY - %s - LIMIT - ? - OFFSET - ?;`, orderClause) - - rows, err := q.db.QueryContext(ctx, query, notebookID, tagID, limit, offset) - if err != nil { - return nil, err - } - defer rows.Close() - - var notes []Note - for rows.Next() { - var note Note - if err := rows.Scan( - ¬e.ID, - ¬e.StatusID, - ¬e.NotebookID, - ¬e.Content, - ¬e.Title, - ¬e.CreatedAt, - ¬e.ModifiedAt, - ¬e.PublishedAt, - ¬e.EventID, - ¬e.Pinned, - ¬e.Notetype, - ¬e.Filetype, - ); err != nil { - return nil, err - } - notes = append(notes, note) - } - if err := rows.Err(); err != nil { - return nil, err - } - return notes, nil -} diff --git a/db/custom_search_notes.go b/db/custom_search_notes.go deleted file mode 100644 index e83fc24c..00000000 --- a/db/custom_search_notes.go +++ /dev/null @@ -1,65 +0,0 @@ -package db - -import ( - "context" - "fmt" -) - -func (q *Queries) SearchNotes(ctx context.Context, searchTerm string, notebookID, tagID, limit, offset int64, orderBy, sortDirection string) ([]Note, error) { - orderClause := "notes.id DESC" - switch orderBy { - case "modified_at": - orderClause = fmt.Sprintf("notes.modified_at %s", sortDirection) - case "created_at": - orderClause = fmt.Sprintf("notes.created_at %s", sortDirection) - case "title": - orderClause = fmt.Sprintf("notes.title %s", sortDirection) - default: - orderClause = fmt.Sprintf("notes.id %s", sortDirection) - } - - customSearchQuery := fmt.Sprintf(` - SELECT DISTINCT notes.* - FROM notes - JOIN notes_fts ON notes.id = notes_fts.rowid - LEFT JOIN note_tags ON notes.id = note_tags.note_id - LEFT JOIN tags ON note_tags.tag_id = tags.id - WHERE notes_fts MATCH ? || '*' - AND (CASE WHEN ? != 0 THEN notes.notebook_id = ? ELSE 1 END) - AND (CASE WHEN ? != 0 THEN tags.id = ? ELSE 1 END) - ORDER BY %s - LIMIT ? OFFSET ?; - `, orderClause) - - rows, err := q.db.QueryContext(ctx, customSearchQuery, searchTerm, notebookID, notebookID, tagID, tagID, limit, offset) - if err != nil { - return nil, err - } - defer rows.Close() - - var notes []Note - for rows.Next() { - var note Note - if err := rows.Scan( - ¬e.ID, - ¬e.StatusID, - ¬e.NotebookID, - ¬e.Content, - ¬e.Title, - ¬e.CreatedAt, - ¬e.ModifiedAt, - ¬e.PublishedAt, - ¬e.EventID, - ¬e.Pinned, - ¬e.Notetype, - ¬e.Filetype, - ); err != nil { - return nil, err - } - notes = append(notes, note) - } - if err := rows.Err(); err != nil { - return nil, err - } - return notes, nil -} diff --git a/db/custom_search_trash.go b/db/custom_search_trash.go deleted file mode 100644 index 98231c1c..00000000 --- a/db/custom_search_trash.go +++ /dev/null @@ -1,64 +0,0 @@ -package db - -import ( - "context" - "fmt" -) - -func (q *Queries) SearchTrash(ctx context.Context, searchTerm string, limit, offset int64, orderBy, sortDirection string) ([]Trash, error) { - orderClause := "trash.id DESC" - switch orderBy { - case "modified_at": - orderClause = fmt.Sprintf("trash.modified_at %s", sortDirection) - case "created_at": - orderClause = fmt.Sprintf("trash.created_at %s", sortDirection) - case "title": - orderClause = fmt.Sprintf("trash.title %s", sortDirection) - default: - orderClause = fmt.Sprintf("trash.id %s", sortDirection) - } - - customSearchQuery := fmt.Sprintf(` - SELECT DISTINCT trash.* - FROM trash - JOIN trash_fts ON trash.id = trash_fts.rowid - WHERE trash_fts MATCH ? || '*' - ORDER BY %s - LIMIT ? OFFSET ?; - `, orderClause) - - rows, err := q.db.QueryContext(ctx, customSearchQuery, searchTerm, limit, offset) - if err != nil { - return nil, err - } - defer rows.Close() - - // id INTEGER PRIMARY KEY AUTOINCREMENT, - // note_id INTEGER NOT NULL, - // content TEXT NOT NULL, - // title TEXT NOT NULL, - // created_at TEXT NOT NULL, - // modified_at TEXT NOT NULL, - // tags TEXT, -- Field to store tags - - var notes []Trash - for rows.Next() { - var note Trash - if err := rows.Scan( - ¬e.ID, - ¬e.NoteID, - ¬e.Content, - ¬e.Title, - ¬e.CreatedAt, - ¬e.ModifiedAt, - ¬e.Tags, - ); err != nil { - return nil, err - } - notes = append(notes, note) - } - if err := rows.Err(); err != nil { - return nil, err - } - return notes, nil -} diff --git a/db/custom_trash_notes.go b/db/custom_trash_notes.go deleted file mode 100644 index 14c7347d..00000000 --- a/db/custom_trash_notes.go +++ /dev/null @@ -1,65 +0,0 @@ -package db - -import ( - "context" - "fmt" -) - -func (q *Queries) ListNotesFromTrash(ctx context.Context, limit, offset int64, orderBy, sortDirection string) ([]Trash, error) { - orderClause := "id DESC" - switch orderBy { - case "modified_at": - orderClause = fmt.Sprintf("modified_at %s", sortDirection) - case "created_at": - orderClause = fmt.Sprintf("created_at %s", sortDirection) - case "title": - orderClause = fmt.Sprintf("title %s", sortDirection) - default: - orderClause = fmt.Sprintf("id %s", sortDirection) - } - - query := fmt.Sprintf(` - SELECT - id, - note_id, - content, - title, - created_at, - modified_at, - tags - FROM - trash - ORDER BY - %s - LIMIT - ? - OFFSET - ?;`, orderClause) - - rows, err := q.db.QueryContext(ctx, query, limit, offset) - if err != nil { - return nil, err - } - defer rows.Close() - - var notes []Trash - for rows.Next() { - var note Trash - if err := rows.Scan( - ¬e.ID, - ¬e.NoteID, - ¬e.Content, - ¬e.Title, - ¬e.CreatedAt, - ¬e.ModifiedAt, - ¬e.Tags, - ); err != nil { - return nil, err - } - notes = append(notes, note) - } - if err := rows.Err(); err != nil { - return nil, err - } - return notes, nil -} diff --git a/db/db.go b/db/db.go deleted file mode 100644 index 41b7a343..00000000 --- a/db/db.go +++ /dev/null @@ -1,31 +0,0 @@ -// Code generated by sqlc. DO NOT EDIT. -// versions: -// sqlc v1.27.0 - -package db - -import ( - "context" - "database/sql" -) - -type DBTX interface { - ExecContext(context.Context, string, ...interface{}) (sql.Result, error) - PrepareContext(context.Context, string) (*sql.Stmt, error) - QueryContext(context.Context, string, ...interface{}) (*sql.Rows, error) - QueryRowContext(context.Context, string, ...interface{}) *sql.Row -} - -func New(db DBTX) *Queries { - return &Queries{db: db} -} - -type Queries struct { - db DBTX -} - -func (q *Queries) WithTx(tx *sql.Tx) *Queries { - return &Queries{ - db: tx, - } -} diff --git a/db/models.go b/db/models.go deleted file mode 100644 index 5da4e4e6..00000000 --- a/db/models.go +++ /dev/null @@ -1,95 +0,0 @@ -// Code generated by sqlc. DO NOT EDIT. -// versions: -// sqlc v1.27.0 - -package db - -import ( - "database/sql" -) - -type NostrKey struct { - ID int64 - Nsec string - Npub string - Active bool - CreatedAt string - ModifiedAt string -} - -type Note struct { - ID int64 - StatusID sql.NullInt64 - NotebookID int64 - Content string - Title string - CreatedAt string - ModifiedAt string - PublishedAt sql.NullString - EventID sql.NullString - Pinned bool - Notetype string - Filetype string -} - -type NoteTag struct { - NoteID sql.NullInt64 - TagID sql.NullInt64 -} - -type Notebook struct { - ID int64 - Name string - CreatedAt string -} - -type NotebookTag struct { - NotebookID sql.NullInt64 - TagID sql.NullInt64 -} - -type NotesFt struct { - Content string -} - -type Relay struct { - ID int64 - Url string - Read bool - Write bool - Sync bool - CreatedAt string - ModifiedAt string -} - -type Setting struct { - Key string - Value string -} - -type Tag struct { - ID int64 - Name string - Color sql.NullString - Icon sql.NullString - CreatedAt string -} - -type Trash struct { - ID int64 - NoteID int64 - NotebookID int64 - Content string - Title string - CreatedAt string - ModifiedAt string - Tags sql.NullString - PublishedAt sql.NullString - EventID sql.NullString - Notetype string - Filetype string -} - -type TrashFt struct { - Content string -} diff --git a/db/nostr_keys.sql.go b/db/nostr_keys.sql.go deleted file mode 100644 index b3776bed..00000000 --- a/db/nostr_keys.sql.go +++ /dev/null @@ -1,137 +0,0 @@ -// Code generated by sqlc. DO NOT EDIT. -// versions: -// sqlc v1.27.0 -// source: nostr_keys.sql - -package db - -import ( - "context" -) - -const createNostrKey = `-- name: CreateNostrKey :one -INSERT INTO - nostr_keys (nsec, npub, active, created_at, modified_at) -VALUES - (?, ?, ?, ?, ?) RETURNING id, - nsec, - npub, - active, - created_at, - modified_at -` - -type CreateNostrKeyParams struct { - Nsec string - Npub string - Active bool - CreatedAt string - ModifiedAt string -} - -// NostrKey Queries -func (q *Queries) CreateNostrKey(ctx context.Context, arg CreateNostrKeyParams) (NostrKey, error) { - row := q.db.QueryRowContext(ctx, createNostrKey, - arg.Nsec, - arg.Npub, - arg.Active, - arg.CreatedAt, - arg.ModifiedAt, - ) - var i NostrKey - err := row.Scan( - &i.ID, - &i.Nsec, - &i.Npub, - &i.Active, - &i.CreatedAt, - &i.ModifiedAt, - ) - return i, err -} - -const deleteNostrKey = `-- name: DeleteNostrKey :exec -DELETE FROM nostr_keys WHERE id = ? -` - -func (q *Queries) DeleteNostrKey(ctx context.Context, id int64) error { - _, err := q.db.ExecContext(ctx, deleteNostrKey, id) - return err -} - -const getNostrKey = `-- name: GetNostrKey :one -SELECT id, nsec, npub, active, created_at, modified_at FROM nostr_keys WHERE id = ? -` - -func (q *Queries) GetNostrKey(ctx context.Context, id int64) (NostrKey, error) { - row := q.db.QueryRowContext(ctx, getNostrKey, id) - var i NostrKey - err := row.Scan( - &i.ID, - &i.Nsec, - &i.Npub, - &i.Active, - &i.CreatedAt, - &i.ModifiedAt, - ) - return i, err -} - -const listNostrKeys = `-- name: ListNostrKeys :many -SELECT id, nsec, npub, active, created_at, modified_at FROM nostr_keys -` - -func (q *Queries) ListNostrKeys(ctx context.Context) ([]NostrKey, error) { - rows, err := q.db.QueryContext(ctx, listNostrKeys) - if err != nil { - return nil, err - } - defer rows.Close() - var items []NostrKey - for rows.Next() { - var i NostrKey - if err := rows.Scan( - &i.ID, - &i.Nsec, - &i.Npub, - &i.Active, - &i.CreatedAt, - &i.ModifiedAt, - ); err != nil { - return nil, err - } - items = append(items, i) - } - if err := rows.Close(); err != nil { - return nil, err - } - if err := rows.Err(); err != nil { - return nil, err - } - return items, nil -} - -const updateNostrKey = `-- name: UpdateNostrKey :exec -UPDATE nostr_keys SET nsec = ?, npub = ?, active = ?, created_at = ?, modified_at = ? WHERE id = ? -` - -type UpdateNostrKeyParams struct { - Nsec string - Npub string - Active bool - CreatedAt string - ModifiedAt string - ID int64 -} - -func (q *Queries) UpdateNostrKey(ctx context.Context, arg UpdateNostrKeyParams) error { - _, err := q.db.ExecContext(ctx, updateNostrKey, - arg.Nsec, - arg.Npub, - arg.Active, - arg.CreatedAt, - arg.ModifiedAt, - arg.ID, - ) - return err -} diff --git a/db/note_tags.sql.go b/db/note_tags.sql.go deleted file mode 100644 index 70f8bbc3..00000000 --- a/db/note_tags.sql.go +++ /dev/null @@ -1,152 +0,0 @@ -// Code generated by sqlc. DO NOT EDIT. -// versions: -// sqlc v1.27.0 -// source: note_tags.sql - -package db - -import ( - "context" - "database/sql" -) - -const addTagToNote = `-- name: AddTagToNote :exec -INSERT INTO - note_tags (note_id, tag_id) -VALUES - (?, ?) -` - -type AddTagToNoteParams struct { - NoteID sql.NullInt64 - TagID sql.NullInt64 -} - -// Note-Tag Junction Table Queries -func (q *Queries) AddTagToNote(ctx context.Context, arg AddTagToNoteParams) error { - _, err := q.db.ExecContext(ctx, addTagToNote, arg.NoteID, arg.TagID) - return err -} - -const checkTagForNote = `-- name: CheckTagForNote :one -SELECT - COUNT(*) > 0 AS is_associated -FROM - note_tags -WHERE - note_id = ? - AND tag_id = ? -` - -type CheckTagForNoteParams struct { - NoteID sql.NullInt64 - TagID sql.NullInt64 -} - -func (q *Queries) CheckTagForNote(ctx context.Context, arg CheckTagForNoteParams) (bool, error) { - row := q.db.QueryRowContext(ctx, checkTagForNote, arg.NoteID, arg.TagID) - var is_associated bool - err := row.Scan(&is_associated) - return is_associated, err -} - -const getTagsForNote = `-- name: GetTagsForNote :many -SELECT - t.id, - t.name, - t.color, - t.icon, - t.created_at -FROM - tags t - JOIN note_tags nt ON t.id = nt.tag_id -WHERE - nt.note_id = ? -` - -func (q *Queries) GetTagsForNote(ctx context.Context, noteID sql.NullInt64) ([]Tag, error) { - rows, err := q.db.QueryContext(ctx, getTagsForNote, noteID) - if err != nil { - return nil, err - } - defer rows.Close() - var items []Tag - for rows.Next() { - var i Tag - if err := rows.Scan( - &i.ID, - &i.Name, - &i.Color, - &i.Icon, - &i.CreatedAt, - ); err != nil { - return nil, err - } - items = append(items, i) - } - if err := rows.Close(); err != nil { - return nil, err - } - if err := rows.Err(); err != nil { - return nil, err - } - return items, nil -} - -const removeAllTagsFromNote = `-- name: RemoveAllTagsFromNote :exec -DELETE FROM note_tags -WHERE - note_id = ? -` - -func (q *Queries) RemoveAllTagsFromNote(ctx context.Context, noteID sql.NullInt64) error { - _, err := q.db.ExecContext(ctx, removeAllTagsFromNote, noteID) - return err -} - -const removeTagFromNote = `-- name: RemoveTagFromNote :exec - -DELETE FROM note_tags -WHERE - note_id = ? - AND tag_id = ? -` - -type RemoveTagFromNoteParams struct { - NoteID sql.NullInt64 - TagID sql.NullInt64 -} - -// -- name: GetNotesForTag :many -// SELECT -// -// n.id, -// n.status_id, -// n.notebook_id, -// n.content, -// n.title, -// n.created_at, -// n.modified_at, -// n.published_at, -// n.event_id -// -// FROM -// -// notes n -// JOIN note_tags nt ON n.id = nt.note_id -// -// WHERE -// -// nt.tag_id = ? -// -// LIMIT -// -// ? -// -// OFFSET -// -// ?; -func (q *Queries) RemoveTagFromNote(ctx context.Context, arg RemoveTagFromNoteParams) error { - _, err := q.db.ExecContext(ctx, removeTagFromNote, arg.NoteID, arg.TagID) - return err -} diff --git a/db/notebook_tags.sql.go b/db/notebook_tags.sql.go deleted file mode 100644 index 22fa47ec..00000000 --- a/db/notebook_tags.sql.go +++ /dev/null @@ -1,122 +0,0 @@ -// Code generated by sqlc. DO NOT EDIT. -// versions: -// sqlc v1.27.0 -// source: notebook_tags.sql - -package db - -import ( - "context" - "database/sql" -) - -const addTagToNotebook = `-- name: AddTagToNotebook :exec -INSERT INTO - notebook_tags (notebook_id, tag_id) -VALUES - (?, ?) -` - -type AddTagToNotebookParams struct { - NotebookID sql.NullInt64 - TagID sql.NullInt64 -} - -// Notebook-Tag Junction Table Queries -func (q *Queries) AddTagToNotebook(ctx context.Context, arg AddTagToNotebookParams) error { - _, err := q.db.ExecContext(ctx, addTagToNotebook, arg.NotebookID, arg.TagID) - return err -} - -const checkTagForNotebook = `-- name: CheckTagForNotebook :one -SELECT - COUNT(*) > 0 AS is_associated -FROM - notebook_tags -WHERE - notebook_id = ? - AND tag_id = ? -` - -type CheckTagForNotebookParams struct { - NotebookID sql.NullInt64 - TagID sql.NullInt64 -} - -func (q *Queries) CheckTagForNotebook(ctx context.Context, arg CheckTagForNotebookParams) (bool, error) { - row := q.db.QueryRowContext(ctx, checkTagForNotebook, arg.NotebookID, arg.TagID) - var is_associated bool - err := row.Scan(&is_associated) - return is_associated, err -} - -const getTagsForNotebook = `-- name: GetTagsForNotebook :many -SELECT - t.id, - t.name, - t.color, - t.icon, - t.created_at -FROM - tags t - JOIN notebook_tags nt ON t.id = nt.tag_id -WHERE - nt.notebook_id = ? -` - -func (q *Queries) GetTagsForNotebook(ctx context.Context, notebookID sql.NullInt64) ([]Tag, error) { - rows, err := q.db.QueryContext(ctx, getTagsForNotebook, notebookID) - if err != nil { - return nil, err - } - defer rows.Close() - var items []Tag - for rows.Next() { - var i Tag - if err := rows.Scan( - &i.ID, - &i.Name, - &i.Color, - &i.Icon, - &i.CreatedAt, - ); err != nil { - return nil, err - } - items = append(items, i) - } - if err := rows.Close(); err != nil { - return nil, err - } - if err := rows.Err(); err != nil { - return nil, err - } - return items, nil -} - -const removeAllTagsFromNotebook = `-- name: RemoveAllTagsFromNotebook :exec -DELETE FROM notebook_tags -WHERE - notebook_id = ? -` - -func (q *Queries) RemoveAllTagsFromNotebook(ctx context.Context, notebookID sql.NullInt64) error { - _, err := q.db.ExecContext(ctx, removeAllTagsFromNotebook, notebookID) - return err -} - -const removeTagFromNotebook = `-- name: RemoveTagFromNotebook :exec -DELETE FROM notebook_tags -WHERE - notebook_id = ? - AND tag_id = ? -` - -type RemoveTagFromNotebookParams struct { - NotebookID sql.NullInt64 - TagID sql.NullInt64 -} - -func (q *Queries) RemoveTagFromNotebook(ctx context.Context, arg RemoveTagFromNotebookParams) error { - _, err := q.db.ExecContext(ctx, removeTagFromNotebook, arg.NotebookID, arg.TagID) - return err -} diff --git a/db/notebooks.sql.go b/db/notebooks.sql.go deleted file mode 100644 index 0a337727..00000000 --- a/db/notebooks.sql.go +++ /dev/null @@ -1,113 +0,0 @@ -// Code generated by sqlc. DO NOT EDIT. -// versions: -// sqlc v1.27.0 -// source: notebooks.sql - -package db - -import ( - "context" -) - -const createNotebook = `-- name: CreateNotebook :one -INSERT INTO - notebooks (name, created_at) -VALUES - (?, ?) RETURNING id, - name, - created_at -` - -type CreateNotebookParams struct { - Name string - CreatedAt string -} - -// Notebook Queries -func (q *Queries) CreateNotebook(ctx context.Context, arg CreateNotebookParams) (Notebook, error) { - row := q.db.QueryRowContext(ctx, createNotebook, arg.Name, arg.CreatedAt) - var i Notebook - err := row.Scan(&i.ID, &i.Name, &i.CreatedAt) - return i, err -} - -const deleteNotebook = `-- name: DeleteNotebook :exec -DELETE FROM notebooks -WHERE - id = ? -` - -func (q *Queries) DeleteNotebook(ctx context.Context, id int64) error { - _, err := q.db.ExecContext(ctx, deleteNotebook, id) - return err -} - -const getNotebook = `-- name: GetNotebook :one -SELECT - id, - name, - created_at -FROM - notebooks -WHERE - id = ? -` - -func (q *Queries) GetNotebook(ctx context.Context, id int64) (Notebook, error) { - row := q.db.QueryRowContext(ctx, getNotebook, id) - var i Notebook - err := row.Scan(&i.ID, &i.Name, &i.CreatedAt) - return i, err -} - -const listNotebooks = `-- name: ListNotebooks :many -SELECT - id, - name, - created_at -FROM - notebooks -` - -func (q *Queries) ListNotebooks(ctx context.Context) ([]Notebook, error) { - rows, err := q.db.QueryContext(ctx, listNotebooks) - if err != nil { - return nil, err - } - defer rows.Close() - var items []Notebook - for rows.Next() { - var i Notebook - if err := rows.Scan(&i.ID, &i.Name, &i.CreatedAt); err != nil { - return nil, err - } - items = append(items, i) - } - if err := rows.Close(); err != nil { - return nil, err - } - if err := rows.Err(); err != nil { - return nil, err - } - return items, nil -} - -const updateNotebook = `-- name: UpdateNotebook :exec -UPDATE notebooks -SET - name = ?, - created_at = ? -WHERE - id = ? -` - -type UpdateNotebookParams struct { - Name string - CreatedAt string - ID int64 -} - -func (q *Queries) UpdateNotebook(ctx context.Context, arg UpdateNotebookParams) error { - _, err := q.db.ExecContext(ctx, updateNotebook, arg.Name, arg.CreatedAt, arg.ID) - return err -} diff --git a/db/notes.sql.go b/db/notes.sql.go deleted file mode 100644 index ffa15840..00000000 --- a/db/notes.sql.go +++ /dev/null @@ -1,284 +0,0 @@ -// Code generated by sqlc. DO NOT EDIT. -// versions: -// sqlc v1.27.0 -// source: notes.sql - -package db - -import ( - "context" - "database/sql" -) - -const createNote = `-- name: CreateNote :one -INSERT INTO - notes ( - status_id, - notebook_id, - content, - title, - created_at, - modified_at, - published_at, - event_id, - pinned, - notetype, - filetype - ) -VALUES - (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) RETURNING id, - status_id, - notebook_id, - content, - title, - created_at, - modified_at, - published_at, - event_id, - pinned, - notetype, - filetype -` - -type CreateNoteParams struct { - StatusID sql.NullInt64 - NotebookID int64 - Content string - Title string - CreatedAt string - ModifiedAt string - PublishedAt sql.NullString - EventID sql.NullString - Pinned bool - Notetype string - Filetype string -} - -// Note Queries -func (q *Queries) CreateNote(ctx context.Context, arg CreateNoteParams) (Note, error) { - row := q.db.QueryRowContext(ctx, createNote, - arg.StatusID, - arg.NotebookID, - arg.Content, - arg.Title, - arg.CreatedAt, - arg.ModifiedAt, - arg.PublishedAt, - arg.EventID, - arg.Pinned, - arg.Notetype, - arg.Filetype, - ) - var i Note - err := row.Scan( - &i.ID, - &i.StatusID, - &i.NotebookID, - &i.Content, - &i.Title, - &i.CreatedAt, - &i.ModifiedAt, - &i.PublishedAt, - &i.EventID, - &i.Pinned, - &i.Notetype, - &i.Filetype, - ) - return i, err -} - -const createNoteFromTrash = `-- name: CreateNoteFromTrash :one -INSERT INTO - notes ( - id, - status_id, - notebook_id, - content, - title, - created_at, - modified_at, - published_at, - event_id, - pinned, - notetype, - filetype - ) -VALUES - (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) RETURNING id, - id, - status_id, - notebook_id, - content, - title, - created_at, - modified_at, - published_at, - event_id, - pinned, - notetype, - filetype -` - -type CreateNoteFromTrashParams struct { - ID int64 - StatusID sql.NullInt64 - NotebookID int64 - Content string - Title string - CreatedAt string - ModifiedAt string - PublishedAt sql.NullString - EventID sql.NullString - Pinned bool - Notetype string - Filetype string -} - -type CreateNoteFromTrashRow struct { - ID int64 - ID_2 int64 - StatusID sql.NullInt64 - NotebookID int64 - Content string - Title string - CreatedAt string - ModifiedAt string - PublishedAt sql.NullString - EventID sql.NullString - Pinned bool - Notetype string - Filetype string -} - -func (q *Queries) CreateNoteFromTrash(ctx context.Context, arg CreateNoteFromTrashParams) (CreateNoteFromTrashRow, error) { - row := q.db.QueryRowContext(ctx, createNoteFromTrash, - arg.ID, - arg.StatusID, - arg.NotebookID, - arg.Content, - arg.Title, - arg.CreatedAt, - arg.ModifiedAt, - arg.PublishedAt, - arg.EventID, - arg.Pinned, - arg.Notetype, - arg.Filetype, - ) - var i CreateNoteFromTrashRow - err := row.Scan( - &i.ID, - &i.ID_2, - &i.StatusID, - &i.NotebookID, - &i.Content, - &i.Title, - &i.CreatedAt, - &i.ModifiedAt, - &i.PublishedAt, - &i.EventID, - &i.Pinned, - &i.Notetype, - &i.Filetype, - ) - return i, err -} - -const deleteNote = `-- name: DeleteNote :exec -DELETE FROM notes -WHERE - id = ? -` - -func (q *Queries) DeleteNote(ctx context.Context, id int64) error { - _, err := q.db.ExecContext(ctx, deleteNote, id) - return err -} - -const getNote = `-- name: GetNote :one -SELECT - id, - status_id, - notebook_id, - content, - title, - created_at, - modified_at, - published_at, - event_id, - pinned, - notetype, - filetype -FROM - notes -WHERE - id = ? -` - -func (q *Queries) GetNote(ctx context.Context, id int64) (Note, error) { - row := q.db.QueryRowContext(ctx, getNote, id) - var i Note - err := row.Scan( - &i.ID, - &i.StatusID, - &i.NotebookID, - &i.Content, - &i.Title, - &i.CreatedAt, - &i.ModifiedAt, - &i.PublishedAt, - &i.EventID, - &i.Pinned, - &i.Notetype, - &i.Filetype, - ) - return i, err -} - -const updateNote = `-- name: UpdateNote :exec -UPDATE notes -SET - status_id = ?, - notebook_id = ?, - content = ?, - title = ?, - modified_at = ?, - published_at = ?, - event_id = ?, - pinned = ?, - notetype = ?, - filetype = ? -WHERE - id = ? -` - -type UpdateNoteParams struct { - StatusID sql.NullInt64 - NotebookID int64 - Content string - Title string - ModifiedAt string - PublishedAt sql.NullString - EventID sql.NullString - Pinned bool - Notetype string - Filetype string - ID int64 -} - -func (q *Queries) UpdateNote(ctx context.Context, arg UpdateNoteParams) error { - _, err := q.db.ExecContext(ctx, updateNote, - arg.StatusID, - arg.NotebookID, - arg.Content, - arg.Title, - arg.ModifiedAt, - arg.PublishedAt, - arg.EventID, - arg.Pinned, - arg.Notetype, - arg.Filetype, - arg.ID, - ) - return err -} diff --git a/db/relay.sql.go b/db/relay.sql.go deleted file mode 100644 index 064f87be..00000000 --- a/db/relay.sql.go +++ /dev/null @@ -1,145 +0,0 @@ -// Code generated by sqlc. DO NOT EDIT. -// versions: -// sqlc v1.27.0 -// source: relay.sql - -package db - -import ( - "context" -) - -const createRelay = `-- name: CreateRelay :one -INSERT INTO - relay (url, read, write, sync, created_at, modified_at) -VALUES - (?, ?, ?, ?, ?, ?) RETURNING id, - url, - read, - write, - sync, - created_at, - modified_at -` - -type CreateRelayParams struct { - Url string - Read bool - Write bool - Sync bool - CreatedAt string - ModifiedAt string -} - -// Relay Queries -func (q *Queries) CreateRelay(ctx context.Context, arg CreateRelayParams) (Relay, error) { - row := q.db.QueryRowContext(ctx, createRelay, - arg.Url, - arg.Read, - arg.Write, - arg.Sync, - arg.CreatedAt, - arg.ModifiedAt, - ) - var i Relay - err := row.Scan( - &i.ID, - &i.Url, - &i.Read, - &i.Write, - &i.Sync, - &i.CreatedAt, - &i.ModifiedAt, - ) - return i, err -} - -const deleteRelays = `-- name: DeleteRelays :exec -DELETE FROM relay -` - -func (q *Queries) DeleteRelays(ctx context.Context) error { - _, err := q.db.ExecContext(ctx, deleteRelays) - return err -} - -const getRelay = `-- name: GetRelay :one -SELECT id, url, read, write, sync, created_at, modified_at FROM relay WHERE id = ? -` - -func (q *Queries) GetRelay(ctx context.Context, id int64) (Relay, error) { - row := q.db.QueryRowContext(ctx, getRelay, id) - var i Relay - err := row.Scan( - &i.ID, - &i.Url, - &i.Read, - &i.Write, - &i.Sync, - &i.CreatedAt, - &i.ModifiedAt, - ) - return i, err -} - -const listRelays = `-- name: ListRelays :many -SELECT id, url, read, write, sync, created_at, modified_at FROM relay -` - -func (q *Queries) ListRelays(ctx context.Context) ([]Relay, error) { - rows, err := q.db.QueryContext(ctx, listRelays) - if err != nil { - return nil, err - } - defer rows.Close() - var items []Relay - for rows.Next() { - var i Relay - if err := rows.Scan( - &i.ID, - &i.Url, - &i.Read, - &i.Write, - &i.Sync, - &i.CreatedAt, - &i.ModifiedAt, - ); err != nil { - return nil, err - } - items = append(items, i) - } - if err := rows.Close(); err != nil { - return nil, err - } - if err := rows.Err(); err != nil { - return nil, err - } - return items, nil -} - -const updateRelay = `-- name: UpdateRelay :exec -UPDATE relay SET url = ?, read = ?, write = ?, sync = ?, created_at = ?, modified_at = ? WHERE id = ? -` - -type UpdateRelayParams struct { - Url string - Read bool - Write bool - Sync bool - CreatedAt string - ModifiedAt string - ID int64 -} - -func (q *Queries) UpdateRelay(ctx context.Context, arg UpdateRelayParams) error { - _, err := q.db.ExecContext(ctx, updateRelay, - arg.Url, - arg.Read, - arg.Write, - arg.Sync, - arg.CreatedAt, - arg.ModifiedAt, - arg.ID, - ) - return err -} diff --git a/db/settings.sql.go b/db/settings.sql.go deleted file mode 100644 index efee42ef..00000000 --- a/db/settings.sql.go +++ /dev/null @@ -1,77 +0,0 @@ -// Code generated by sqlc. DO NOT EDIT. -// versions: -// sqlc v1.27.0 -// source: settings.sql - -package db - -import ( - "context" -) - -const getAllSettings = `-- name: GetAllSettings :many -SELECT - key, - value -FROM - settings -` - -func (q *Queries) GetAllSettings(ctx context.Context) ([]Setting, error) { - rows, err := q.db.QueryContext(ctx, getAllSettings) - if err != nil { - return nil, err - } - defer rows.Close() - var items []Setting - for rows.Next() { - var i Setting - if err := rows.Scan(&i.Key, &i.Value); err != nil { - return nil, err - } - items = append(items, i) - } - if err := rows.Close(); err != nil { - return nil, err - } - if err := rows.Err(); err != nil { - return nil, err - } - return items, nil -} - -const getSetting = `-- name: GetSetting :one -SELECT - key, - value -FROM - settings -WHERE - key = ? -` - -// Settings Queries -func (q *Queries) GetSetting(ctx context.Context, key string) (Setting, error) { - row := q.db.QueryRowContext(ctx, getSetting, key) - var i Setting - err := row.Scan(&i.Key, &i.Value) - return i, err -} - -const updateSetting = `-- name: UpdateSetting :exec -UPDATE settings -SET - value = ? -WHERE - key = ? -` - -type UpdateSettingParams struct { - Value string - Key string -} - -func (q *Queries) UpdateSetting(ctx context.Context, arg UpdateSettingParams) error { - _, err := q.db.ExecContext(ctx, updateSetting, arg.Value, arg.Key) - return err -} diff --git a/db/tags.sql.go b/db/tags.sql.go deleted file mode 100644 index 952944c8..00000000 --- a/db/tags.sql.go +++ /dev/null @@ -1,233 +0,0 @@ -// Code generated by sqlc. DO NOT EDIT. -// versions: -// sqlc v1.27.0 -// source: tags.sql - -package db - -import ( - "context" - "database/sql" - "strings" -) - -const createTag = `-- name: CreateTag :one -INSERT INTO - tags (name, color, icon, created_at) -VALUES - (?, ?, ?, ?) RETURNING id, - name, - color, - icon, - created_at -` - -type CreateTagParams struct { - Name string - Color sql.NullString - Icon sql.NullString - CreatedAt string -} - -// Tag Queries -func (q *Queries) CreateTag(ctx context.Context, arg CreateTagParams) (Tag, error) { - row := q.db.QueryRowContext(ctx, createTag, - arg.Name, - arg.Color, - arg.Icon, - arg.CreatedAt, - ) - var i Tag - err := row.Scan( - &i.ID, - &i.Name, - &i.Color, - &i.Icon, - &i.CreatedAt, - ) - return i, err -} - -const deleteTag = `-- name: DeleteTag :exec -DELETE FROM tags -WHERE - id = ? -` - -func (q *Queries) DeleteTag(ctx context.Context, id int64) error { - _, err := q.db.ExecContext(ctx, deleteTag, id) - return err -} - -const getTag = `-- name: GetTag :one -SELECT - id, - name, - color, - icon, - created_at -FROM - tags -WHERE - id = ? -` - -func (q *Queries) GetTag(ctx context.Context, id int64) (Tag, error) { - row := q.db.QueryRowContext(ctx, getTag, id) - var i Tag - err := row.Scan( - &i.ID, - &i.Name, - &i.Color, - &i.Icon, - &i.CreatedAt, - ) - return i, err -} - -const getTagByName = `-- name: GetTagByName :one -SELECT - id, - name, - color, - icon, - created_at -FROM - tags -WHERE - name = ? -` - -func (q *Queries) GetTagByName(ctx context.Context, name string) (Tag, error) { - row := q.db.QueryRowContext(ctx, getTagByName, name) - var i Tag - err := row.Scan( - &i.ID, - &i.Name, - &i.Color, - &i.Icon, - &i.CreatedAt, - ) - return i, err -} - -const getTagsByNames = `-- name: GetTagsByNames :many -SELECT - id, - name, - color, - icon, - created_at -FROM - tags -WHERE name IN (/*SLICE:names*/?) -` - -func (q *Queries) GetTagsByNames(ctx context.Context, names []string) ([]Tag, error) { - query := getTagsByNames - var queryParams []interface{} - if len(names) > 0 { - for _, v := range names { - queryParams = append(queryParams, v) - } - query = strings.Replace(query, "/*SLICE:names*/?", strings.Repeat(",?", len(names))[1:], 1) - } else { - query = strings.Replace(query, "/*SLICE:names*/?", "NULL", 1) - } - rows, err := q.db.QueryContext(ctx, query, queryParams...) - if err != nil { - return nil, err - } - defer rows.Close() - var items []Tag - for rows.Next() { - var i Tag - if err := rows.Scan( - &i.ID, - &i.Name, - &i.Color, - &i.Icon, - &i.CreatedAt, - ); err != nil { - return nil, err - } - items = append(items, i) - } - if err := rows.Close(); err != nil { - return nil, err - } - if err := rows.Err(); err != nil { - return nil, err - } - return items, nil -} - -const listTags = `-- name: ListTags :many -SELECT - id, - name, - color, - icon, - created_at -FROM - tags -` - -func (q *Queries) ListTags(ctx context.Context) ([]Tag, error) { - rows, err := q.db.QueryContext(ctx, listTags) - if err != nil { - return nil, err - } - defer rows.Close() - var items []Tag - for rows.Next() { - var i Tag - if err := rows.Scan( - &i.ID, - &i.Name, - &i.Color, - &i.Icon, - &i.CreatedAt, - ); err != nil { - return nil, err - } - items = append(items, i) - } - if err := rows.Close(); err != nil { - return nil, err - } - if err := rows.Err(); err != nil { - return nil, err - } - return items, nil -} - -const updateTag = `-- name: UpdateTag :exec -UPDATE tags -SET - name = ?, - color = ?, - icon = ?, - created_at = ? -WHERE - id = ? -` - -type UpdateTagParams struct { - Name string - Color sql.NullString - Icon sql.NullString - CreatedAt string - ID int64 -} - -func (q *Queries) UpdateTag(ctx context.Context, arg UpdateTagParams) error { - _, err := q.db.ExecContext(ctx, updateTag, - arg.Name, - arg.Color, - arg.Icon, - arg.CreatedAt, - arg.ID, - ) - return err -} diff --git a/db/trash.sql.go b/db/trash.sql.go deleted file mode 100644 index f7dc6c0f..00000000 --- a/db/trash.sql.go +++ /dev/null @@ -1,169 +0,0 @@ -// Code generated by sqlc. DO NOT EDIT. -// versions: -// sqlc v1.27.0 -// source: trash.sql - -package db - -import ( - "context" - "database/sql" -) - -const addNoteToTrash = `-- name: AddNoteToTrash :one -INSERT INTO - trash ( - note_id, - content, - title, - created_at, - modified_at, - tags, - notebook_id, - published_at, - event_id, - notetype, - filetype - ) -VALUES - (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) RETURNING id, - note_id, - content, - title, - created_at, - modified_at, - tags, - notebook_id, - published_at, - event_id, - notetype, - filetype -` - -type AddNoteToTrashParams struct { - NoteID int64 - Content string - Title string - CreatedAt string - ModifiedAt string - Tags sql.NullString - NotebookID int64 - PublishedAt sql.NullString - EventID sql.NullString - Notetype string - Filetype string -} - -type AddNoteToTrashRow struct { - ID int64 - NoteID int64 - Content string - Title string - CreatedAt string - ModifiedAt string - Tags sql.NullString - NotebookID int64 - PublishedAt sql.NullString - EventID sql.NullString - Notetype string - Filetype string -} - -// Trashed Note Queries -func (q *Queries) AddNoteToTrash(ctx context.Context, arg AddNoteToTrashParams) (AddNoteToTrashRow, error) { - row := q.db.QueryRowContext(ctx, addNoteToTrash, - arg.NoteID, - arg.Content, - arg.Title, - arg.CreatedAt, - arg.ModifiedAt, - arg.Tags, - arg.NotebookID, - arg.PublishedAt, - arg.EventID, - arg.Notetype, - arg.Filetype, - ) - var i AddNoteToTrashRow - err := row.Scan( - &i.ID, - &i.NoteID, - &i.Content, - &i.Title, - &i.CreatedAt, - &i.ModifiedAt, - &i.Tags, - &i.NotebookID, - &i.PublishedAt, - &i.EventID, - &i.Notetype, - &i.Filetype, - ) - return i, err -} - -const deleteNoteFromTrash = `-- name: DeleteNoteFromTrash :exec -DELETE FROM trash -WHERE - id = ? -` - -func (q *Queries) DeleteNoteFromTrash(ctx context.Context, id int64) error { - _, err := q.db.ExecContext(ctx, deleteNoteFromTrash, id) - return err -} - -const getNoteFromTrash = `-- name: GetNoteFromTrash :one -SELECT - id, - note_id, - content, - title, - created_at, - modified_at, - tags, - notebook_id, - published_at, - event_id, - notetype, - filetype -FROM - trash -WHERE - id = ? -` - -type GetNoteFromTrashRow struct { - ID int64 - NoteID int64 - Content string - Title string - CreatedAt string - ModifiedAt string - Tags sql.NullString - NotebookID int64 - PublishedAt sql.NullString - EventID sql.NullString - Notetype string - Filetype string -} - -func (q *Queries) GetNoteFromTrash(ctx context.Context, id int64) (GetNoteFromTrashRow, error) { - row := q.db.QueryRowContext(ctx, getNoteFromTrash, id) - var i GetNoteFromTrashRow - err := row.Scan( - &i.ID, - &i.NoteID, - &i.Content, - &i.Title, - &i.CreatedAt, - &i.ModifiedAt, - &i.Tags, - &i.NotebookID, - &i.PublishedAt, - &i.EventID, - &i.Notetype, - &i.Filetype, - ) - return i, err -} diff --git a/frontend/.eslintrc.cjs b/frontend/.eslintrc.cjs new file mode 100644 index 00000000..775bb657 --- /dev/null +++ b/frontend/.eslintrc.cjs @@ -0,0 +1,44 @@ +/** @type {import("eslint").Linter.Config} */ +const config = { + parser: "@typescript-eslint/parser", + parserOptions: { + project: "./frontend/tsconfig.json", // Update this line + }, + plugins: ["@typescript-eslint", "react-hooks"], + extends: [ + "plugin:@typescript-eslint/recommended-type-checked", + "plugin:@typescript-eslint/stylistic-type-checked", + "plugin:react-hooks/recommended", + ], + ignorePatterns: ["bindings/"], + rules: { + // These opinionated rules are enabled in stylistic-type-checked above. + // Feel free to reconfigure them to your own preference. + "@typescript-eslint/no-empty-object-type": "off", + "@typescript-eslint/array-type": "off", + "@typescript-eslint/consistent-type-definitions": "off", + "@typescript-eslint/prefer-nullish-coalescing": "warn", + "@typescript-eslint/no-empty-function": "off", + "@typescript-eslint/no-empty-interface": "off", + // "@typescript-eslint/ban-ts-comment": "off", + + "@typescript-eslint/consistent-type-imports": [ + "warn", + { + prefer: "type-imports", + fixStyle: "inline-type-imports", + }, + ], + "@typescript-eslint/no-unused-vars": ["warn", { argsIgnorePattern: "^_" }], + "@typescript-eslint/require-await": "off", + "@typescript-eslint/no-misused-promises": [ + "error", + { + checksVoidReturn: { attributes: false }, + }, + ], + }, +}; + +// eslint-disable-next-line +module.exports = config; diff --git a/frontend/bindings/changeme/greetservice.ts b/frontend/bindings/changeme/greetservice.ts deleted file mode 100644 index 27eef2be..00000000 --- a/frontend/bindings/changeme/greetservice.ts +++ /dev/null @@ -1,11 +0,0 @@ -// Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL -// This file is automatically generated. DO NOT EDIT - -// eslint-disable-next-line @typescript-eslint/ban-ts-comment -// @ts-ignore: Unused imports -import {Call as $Call, Create as $Create} from "@wailsio/runtime"; - -export function Greet(name: string): Promise & { cancel(): void } { - let $resultPromise = $Call.ByID(1411160069, name) as any; - return $resultPromise; -} diff --git a/frontend/bindings/database/sql/index.ts b/frontend/bindings/comet/backend/db/schemas/index.ts similarity index 100% rename from frontend/bindings/database/sql/index.ts rename to frontend/bindings/comet/backend/db/schemas/index.ts diff --git a/frontend/bindings/comet/backend/db/schemas/models.ts b/frontend/bindings/comet/backend/db/schemas/models.ts new file mode 100644 index 00000000..153f2dea --- /dev/null +++ b/frontend/bindings/comet/backend/db/schemas/models.ts @@ -0,0 +1,294 @@ +// Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL +// This file is automatically generated. DO NOT EDIT + +// eslint-disable-next-line @typescript-eslint/ban-ts-comment +// @ts-ignore: Unused imports +import {Create as $Create} from "@wailsio/runtime"; + +/** + * Note represents a note in the application + */ +export class Note { + "ID": number; + "NotebookID": number | null; + "Content": string; + "Title": string; + "CreatedAt": string; + "ModifiedAt": string; + "PublishedAt": string | null; + "EventAddress": string | null; + "Identifier": string | null; + "Pinned": boolean; + "TrashedAt": string | null; + "ArchivedAt": string | null; + "Active": boolean; + "Author": string | null; + + /** Creates a new Note instance. */ + constructor($$source: Partial = {}) { + if (!("ID" in $$source)) { + this["ID"] = 0; + } + if (!("NotebookID" in $$source)) { + this["NotebookID"] = null; + } + if (!("Content" in $$source)) { + this["Content"] = ""; + } + if (!("Title" in $$source)) { + this["Title"] = ""; + } + if (!("CreatedAt" in $$source)) { + this["CreatedAt"] = ""; + } + if (!("ModifiedAt" in $$source)) { + this["ModifiedAt"] = ""; + } + if (!("PublishedAt" in $$source)) { + this["PublishedAt"] = null; + } + if (!("EventAddress" in $$source)) { + this["EventAddress"] = null; + } + if (!("Identifier" in $$source)) { + this["Identifier"] = null; + } + if (!("Pinned" in $$source)) { + this["Pinned"] = false; + } + if (!("TrashedAt" in $$source)) { + this["TrashedAt"] = null; + } + if (!("ArchivedAt" in $$source)) { + this["ArchivedAt"] = null; + } + if (!("Active" in $$source)) { + this["Active"] = false; + } + if (!("Author" in $$source)) { + this["Author"] = null; + } + + Object.assign(this, $$source); + } + + /** + * Creates a new Note instance from a string or object. + */ + static createFrom($$source: any = {}): Note { + let $$parsedSource = typeof $$source === 'string' ? JSON.parse($$source) : $$source; + return new Note($$parsedSource as Partial); + } +} + +/** + * Notebook represents a notebook in the application + */ +export class Notebook { + "ID": number; + "Name": string; + "CreatedAt": string; + "ModifiedAt": string; + "Pinned": boolean; + "Active": boolean; + + /** Creates a new Notebook instance. */ + constructor($$source: Partial = {}) { + if (!("ID" in $$source)) { + this["ID"] = 0; + } + if (!("Name" in $$source)) { + this["Name"] = ""; + } + if (!("CreatedAt" in $$source)) { + this["CreatedAt"] = ""; + } + if (!("ModifiedAt" in $$source)) { + this["ModifiedAt"] = ""; + } + if (!("Pinned" in $$source)) { + this["Pinned"] = false; + } + if (!("Active" in $$source)) { + this["Active"] = false; + } + + Object.assign(this, $$source); + } + + /** + * Creates a new Notebook instance from a string or object. + */ + static createFrom($$source: any = {}): Notebook { + let $$parsedSource = typeof $$source === 'string' ? JSON.parse($$source) : $$source; + return new Notebook($$parsedSource as Partial); + } +} + +/** + * Relay represents a row in the relays table + */ +export class Relay { + "ID": number; + "URL": string; + "Read": boolean; + "Write": boolean; + "Sync": boolean; + "CreatedAt": string; + "ModifiedAt": string; + + /** Creates a new Relay instance. */ + constructor($$source: Partial = {}) { + if (!("ID" in $$source)) { + this["ID"] = 0; + } + if (!("URL" in $$source)) { + this["URL"] = ""; + } + if (!("Read" in $$source)) { + this["Read"] = false; + } + if (!("Write" in $$source)) { + this["Write"] = false; + } + if (!("Sync" in $$source)) { + this["Sync"] = false; + } + if (!("CreatedAt" in $$source)) { + this["CreatedAt"] = ""; + } + if (!("ModifiedAt" in $$source)) { + this["ModifiedAt"] = ""; + } + + Object.assign(this, $$source); + } + + /** + * Creates a new Relay instance from a string or object. + */ + static createFrom($$source: any = {}): Relay { + let $$parsedSource = typeof $$source === 'string' ? JSON.parse($$source) : $$source; + return new Relay($$parsedSource as Partial); + } +} + +/** + * Tag represents a tag in the application + */ +export class Tag { + "ID": number; + "Name": string; + "Color": string | null; + "Icon": string | null; + "Active": boolean; + "Inactive": boolean; + "CreatedAt": string; + "ModifiedAt": string; + + /** Creates a new Tag instance. */ + constructor($$source: Partial = {}) { + if (!("ID" in $$source)) { + this["ID"] = 0; + } + if (!("Name" in $$source)) { + this["Name"] = ""; + } + if (!("Color" in $$source)) { + this["Color"] = null; + } + if (!("Icon" in $$source)) { + this["Icon"] = null; + } + if (!("Active" in $$source)) { + this["Active"] = false; + } + if (!("Inactive" in $$source)) { + this["Inactive"] = false; + } + if (!("CreatedAt" in $$source)) { + this["CreatedAt"] = ""; + } + if (!("ModifiedAt" in $$source)) { + this["ModifiedAt"] = ""; + } + + Object.assign(this, $$source); + } + + /** + * Creates a new Tag instance from a string or object. + */ + static createFrom($$source: any = {}): Tag { + let $$parsedSource = typeof $$source === 'string' ? JSON.parse($$source) : $$source; + return new Tag($$parsedSource as Partial); + } +} + +/** + * User represents a row in the users table + */ +export class User { + "ID": number; + "Nsec": string; + "Npub": string; + "Active": boolean; + "CreatedAt": string; + "ModifiedAt": string; + "Name": string; + "About": string; + "Picture": string; + "Nip05": string; + "Website": string; + "Lud16": string; + + /** Creates a new User instance. */ + constructor($$source: Partial = {}) { + if (!("ID" in $$source)) { + this["ID"] = 0; + } + if (!("Nsec" in $$source)) { + this["Nsec"] = ""; + } + if (!("Npub" in $$source)) { + this["Npub"] = ""; + } + if (!("Active" in $$source)) { + this["Active"] = false; + } + if (!("CreatedAt" in $$source)) { + this["CreatedAt"] = ""; + } + if (!("ModifiedAt" in $$source)) { + this["ModifiedAt"] = ""; + } + if (!("Name" in $$source)) { + this["Name"] = ""; + } + if (!("About" in $$source)) { + this["About"] = ""; + } + if (!("Picture" in $$source)) { + this["Picture"] = ""; + } + if (!("Nip05" in $$source)) { + this["Nip05"] = ""; + } + if (!("Website" in $$source)) { + this["Website"] = ""; + } + if (!("Lud16" in $$source)) { + this["Lud16"] = ""; + } + + Object.assign(this, $$source); + } + + /** + * Creates a new User instance from a string or object. + */ + static createFrom($$source: any = {}): User { + let $$parsedSource = typeof $$source === 'string' ? JSON.parse($$source) : $$source; + return new User($$parsedSource as Partial); + } +} diff --git a/frontend/bindings/comet/backend/service/appservice.ts b/frontend/bindings/comet/backend/service/appservice.ts new file mode 100644 index 00000000..2c90b3c6 --- /dev/null +++ b/frontend/bindings/comet/backend/service/appservice.ts @@ -0,0 +1,525 @@ +// Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL +// This file is automatically generated. DO NOT EDIT + +// eslint-disable-next-line @typescript-eslint/ban-ts-comment +// @ts-ignore: Unused imports +import {Call as $Call, Create as $Create} from "@wailsio/runtime"; + +// eslint-disable-next-line @typescript-eslint/ban-ts-comment +// @ts-ignore: Unused imports +import * as schemas$0 from "../db/schemas/models.js"; +// eslint-disable-next-line @typescript-eslint/ban-ts-comment +// @ts-ignore: Unused imports +import * as relays$0 from "./relays/models.js"; + +/** + * ArchiveNote archives a note by its ID + */ +export function ArchiveNote(id: number): Promise & { cancel(): void } { + let $resultPromise = $Call.ByID(902761560, id) as any; + return $resultPromise; +} + +/** + * CheckNotebookExists checks if a notebook with the given name already exists in the database + */ +export function CheckNotebookExists(name: string): Promise & { cancel(): void } { + let $resultPromise = $Call.ByID(268777487, name) as any; + return $resultPromise; +} + +/** + * ClearActiveNote deactivates all active notes + */ +export function ClearActiveNote(): Promise & { cancel(): void } { + let $resultPromise = $Call.ByID(2004080249) as any; + return $resultPromise; +} + +/** + * ClearActiveNotebooks sets all notebooks to not active + */ +export function ClearActiveNotebooks(): Promise & { cancel(): void } { + let $resultPromise = $Call.ByID(3795418685) as any; + return $resultPromise; +} + +/** + * ClearActiveTags sets the active status of all tags to false + */ +export function ClearActiveTags(): Promise & { cancel(): void } { + let $resultPromise = $Call.ByID(687238284) as any; + return $resultPromise; +} + +/** + * CreateNote inserts a new note into the database and returns the created note + */ +export function CreateNote(title: string, content: string): Promise & { cancel(): void } { + let $resultPromise = $Call.ByID(3783994422, title, content) as any; + let $typingPromise = $resultPromise.then(($result) => { + return $$createType1($result); + }) as any; + $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); + return $typingPromise; +} + +/** + * CreateNotebook inserts a new notebook into the database + */ +export function CreateNotebook(name: string, pinned: boolean): Promise & { cancel(): void } { + let $resultPromise = $Call.ByID(882431131, name, pinned) as any; + return $resultPromise; +} + +/** + * CreateRelay inserts a new relay into the database and returns the created relay + */ +export function CreateRelay(url: string, read: boolean, write: boolean, sync: boolean): Promise & { cancel(): void } { + let $resultPromise = $Call.ByID(2667641403, url, read, write, sync) as any; + let $typingPromise = $resultPromise.then(($result) => { + return $$createType3($result); + }) as any; + $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); + return $typingPromise; +} + +/** + * CreateTag inserts a new tag into the database + */ +export function CreateTag(name: string, color: string, icon: string, active: boolean, inactive: boolean): Promise & { cancel(): void } { + let $resultPromise = $Call.ByID(2492870674, name, color, icon, active, inactive) as any; + return $resultPromise; +} + +/** + * CreateTags inserts multiple tags into the database + */ +export function CreateTags(noteId: number, tagList: string[]): Promise & { cancel(): void } { + let $resultPromise = $Call.ByID(1231956147, noteId, tagList) as any; + return $resultPromise; +} + +/** + * CreateUser inserts a new user into the database + */ +export function CreateUser(nsec: string, npub: string, active: boolean): Promise & { cancel(): void } { + let $resultPromise = $Call.ByID(2530128525, nsec, npub, active) as any; + let $typingPromise = $resultPromise.then(($result) => { + return $$createType5($result); + }) as any; + $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); + return $typingPromise; +} + +/** + * DeleteNote deletes a note by its ID + */ +export function DeleteNote(id: number): Promise & { cancel(): void } { + let $resultPromise = $Call.ByID(1337121777, id) as any; + return $resultPromise; +} + +/** + * DeleteNotebook deletes a notebook by its ID + */ +export function DeleteNotebook(id: number): Promise & { cancel(): void } { + let $resultPromise = $Call.ByID(790888740, id) as any; + return $resultPromise; +} + +/** + * DeleteRelay deletes a relay by its ID + */ +export function DeleteRelay(id: number): Promise & { cancel(): void } { + let $resultPromise = $Call.ByID(3660646350, id) as any; + return $resultPromise; +} + +/** + * DeleteTag deletes a tag by its ID + */ +export function DeleteTag(id: number): Promise & { cancel(): void } { + let $resultPromise = $Call.ByID(1279528063, id) as any; + return $resultPromise; +} + +/** + * DeleteUser deletes a user by its ID + */ +export function DeleteUser(id: number): Promise & { cancel(): void } { + let $resultPromise = $Call.ByID(3387249414, id) as any; + return $resultPromise; +} + +/** + * GetActiveNote retrieves the active note from the database + */ +export function GetActiveNote(): Promise & { cancel(): void } { + let $resultPromise = $Call.ByID(2175076152) as any; + let $typingPromise = $resultPromise.then(($result) => { + return $$createType1($result); + }) as any; + $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); + return $typingPromise; +} + +/** + * GetActiveNotebook retrieves the active notebook from the database + */ +export function GetActiveNotebook(): Promise & { cancel(): void } { + let $resultPromise = $Call.ByID(2283957325) as any; + let $typingPromise = $resultPromise.then(($result) => { + return $$createType7($result); + }) as any; + $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); + return $typingPromise; +} + +/** + * GetActiveUser retrieves the active user from the database + */ +export function GetActiveUser(): Promise & { cancel(): void } { + let $resultPromise = $Call.ByID(2477491471) as any; + let $typingPromise = $resultPromise.then(($result) => { + return $$createType5($result); + }) as any; + $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); + return $typingPromise; +} + +/** + * GetAllRelays retrieves all relays from the database + */ +export function GetAllRelays(): Promise<(schemas$0.Relay | null)[]> & { cancel(): void } { + let $resultPromise = $Call.ByID(2242042095) as any; + let $typingPromise = $resultPromise.then(($result) => { + return $$createType8($result); + }) as any; + $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); + return $typingPromise; +} + +/** + * GetArchivedNotes retrieves all archived notes from the database + */ +export function GetArchivedNotes(): Promise & { cancel(): void } { + let $resultPromise = $Call.ByID(3503187217) as any; + let $typingPromise = $resultPromise.then(($result) => { + return $$createType9($result); + }) as any; + $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); + return $typingPromise; +} + +/** + * GetNoteByID retrieves a single note by its ID + */ +export function GetNoteByID(id: number): Promise & { cancel(): void } { + let $resultPromise = $Call.ByID(2859106818, id) as any; + let $typingPromise = $resultPromise.then(($result) => { + return $$createType1($result); + }) as any; + $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); + return $typingPromise; +} + +/** + * GetNotebookByID retrieves a single notebook by its ID + */ +export function GetNotebookByID(id: number): Promise & { cancel(): void } { + let $resultPromise = $Call.ByID(1987921963, id) as any; + let $typingPromise = $resultPromise.then(($result) => { + return $$createType7($result); + }) as any; + $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); + return $typingPromise; +} + +/** + * GetNotebooks retrieves all notebooks from the database + */ +export function GetNotebooks(pinned: boolean): Promise & { cancel(): void } { + let $resultPromise = $Call.ByID(763701224, pinned) as any; + let $typingPromise = $resultPromise.then(($result) => { + return $$createType10($result); + }) as any; + $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); + return $typingPromise; +} + +/** + * GetNotes retrieves all notes from the database with specified ordering, limit, offset, search, and trashed filter + */ +export function GetNotes(orderBy: string, orderDirection: string, limit: number, offset: number, search: string, showTrashed: boolean): Promise & { cancel(): void } { + let $resultPromise = $Call.ByID(961141263, orderBy, orderDirection, limit, offset, search, showTrashed) as any; + let $typingPromise = $resultPromise.then(($result) => { + return $$createType9($result); + }) as any; + $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); + return $typingPromise; +} + +/** + * GetNotesByNotebookID retrieves all notes by a specific notebook ID + */ +export function GetNotesByNotebookID(notebookID: number): Promise & { cancel(): void } { + let $resultPromise = $Call.ByID(10554070, notebookID) as any; + let $typingPromise = $resultPromise.then(($result) => { + return $$createType9($result); + }) as any; + $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); + return $typingPromise; +} + +/** + * GetPinnedNotes retrieves all pinned notes from the database + */ +export function GetPinnedNotes(): Promise & { cancel(): void } { + let $resultPromise = $Call.ByID(3277905433) as any; + let $typingPromise = $resultPromise.then(($result) => { + return $$createType9($result); + }) as any; + $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); + return $typingPromise; +} + +/** + * GetRelayByID retrieves a relay by its ID + */ +export function GetRelayByID(id: number): Promise & { cancel(): void } { + let $resultPromise = $Call.ByID(1106514443, id) as any; + let $typingPromise = $resultPromise.then(($result) => { + return $$createType3($result); + }) as any; + $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); + return $typingPromise; +} + +/** + * GetTagByID retrieves a single tag by its ID + */ +export function GetTagByID(id: number): Promise & { cancel(): void } { + let $resultPromise = $Call.ByID(2723008278, id) as any; + let $typingPromise = $resultPromise.then(($result) => { + return $$createType12($result); + }) as any; + $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); + return $typingPromise; +} + +/** + * GetTags retrieves all tags from the database + */ +export function GetTags(): Promise & { cancel(): void } { + let $resultPromise = $Call.ByID(3835819395) as any; + let $typingPromise = $resultPromise.then(($result) => { + return $$createType13($result); + }) as any; + $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); + return $typingPromise; +} + +/** + * GetTagsByNoteID retrieves all tags associated with a specific note ID + */ +export function GetTagsByNoteID(noteID: number): Promise & { cancel(): void } { + let $resultPromise = $Call.ByID(3922355959, noteID) as any; + let $typingPromise = $resultPromise.then(($result) => { + return $$createType13($result); + }) as any; + $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); + return $typingPromise; +} + +/** + * GetTrashedNotes retrieves all trashed notes from the database + */ +export function GetTrashedNotes(): Promise & { cancel(): void } { + let $resultPromise = $Call.ByID(2170508510) as any; + let $typingPromise = $resultPromise.then(($result) => { + return $$createType9($result); + }) as any; + $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); + return $typingPromise; +} + +/** + * GetUserByID retrieves a single user by its ID + */ +export function GetUserByID(id: number): Promise & { cancel(): void } { + let $resultPromise = $Call.ByID(2716774129, id) as any; + let $typingPromise = $resultPromise.then(($result) => { + return $$createType5($result); + }) as any; + $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); + return $typingPromise; +} + +/** + * PinNote pins a note by its ID + */ +export function PinNote(id: number): Promise & { cancel(): void } { + let $resultPromise = $Call.ByID(1626400925, id) as any; + return $resultPromise; +} + +/** + * RemoveNoteTags removes all tag associations for a given note ID + */ +export function RemoveNoteTags(noteID: number): Promise & { cancel(): void } { + let $resultPromise = $Call.ByID(1625995215, noteID) as any; + return $resultPromise; +} + +/** + * ReplaceRelays removes all existing relays and inserts the new list of relays into the database + */ +export function ReplaceRelays(relayData: relays$0.RelayData[]): Promise<(schemas$0.Relay | null)[]> & { cancel(): void } { + let $resultPromise = $Call.ByID(2472126696, relayData) as any; + let $typingPromise = $resultPromise.then(($result) => { + return $$createType8($result); + }) as any; + $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); + return $typingPromise; +} + +/** + * RestoreNote restores a note from the trash by its ID + */ +export function RestoreNote(id: number): Promise & { cancel(): void } { + let $resultPromise = $Call.ByID(543428744, id) as any; + return $resultPromise; +} + +/** + * SearchNotes searches for notes by content + */ +export function SearchNotes(query: string): Promise & { cancel(): void } { + let $resultPromise = $Call.ByID(2567554219, query) as any; + let $typingPromise = $resultPromise.then(($result) => { + return $$createType9($result); + }) as any; + $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); + return $typingPromise; +} + +/** + * SetActiveNote sets the specified note as active and deactivates all other notes + */ +export function SetActiveNote(noteID: number): Promise & { cancel(): void } { + let $resultPromise = $Call.ByID(3110951196, noteID) as any; + return $resultPromise; +} + +/** + * SetNotebookActive sets a notebook to active by its ID + */ +export function SetNotebookActive(id: number): Promise & { cancel(): void } { + let $resultPromise = $Call.ByID(455909673, id) as any; + return $resultPromise; +} + +/** + * SetPublishDetails updates the author, identifier, and published_at fields of a note + */ +export function SetPublishDetails(noteID: number, author: string, identifier: string, publishedAt: string): Promise & { cancel(): void } { + let $resultPromise = $Call.ByID(1835734245, noteID, author, identifier, publishedAt) as any; + return $resultPromise; +} + +/** + * SetTagActive sets the active status of a tag to true + */ +export function SetTagActive(tagID: number, active: boolean): Promise & { cancel(): void } { + let $resultPromise = $Call.ByID(3115775920, tagID, active) as any; + return $resultPromise; +} + +/** + * SetTagInactive sets the active status of a tag to false + */ +export function SetTagInactive(tagID: number): Promise & { cancel(): void } { + let $resultPromise = $Call.ByID(2142607883, tagID) as any; + return $resultPromise; +} + +/** + * TrashNote moves a note to the trash by its ID + */ +export function TrashNote(id: number): Promise & { cancel(): void } { + let $resultPromise = $Call.ByID(1322424416, id) as any; + return $resultPromise; +} + +/** + * UnarchiveNote unarchives a note by its ID + */ +export function UnarchiveNote(id: number): Promise & { cancel(): void } { + let $resultPromise = $Call.ByID(3018250821, id) as any; + return $resultPromise; +} + +/** + * UnpinNote unpins a note by its ID + */ +export function UnpinNote(id: number): Promise & { cancel(): void } { + let $resultPromise = $Call.ByID(365380808, id) as any; + return $resultPromise; +} + +/** + * UpdateNote updates the content and title of an existing note + */ +export function UpdateNote(note: schemas$0.Note): Promise & { cancel(): void } { + let $resultPromise = $Call.ByID(1594419559, note) as any; + return $resultPromise; +} + +/** + * UpdateNotebook updates the details of an existing notebook + */ +export function UpdateNotebook(id: number, name: string): Promise & { cancel(): void } { + let $resultPromise = $Call.ByID(2776840946, id, name) as any; + return $resultPromise; +} + +/** + * UpdateRelay updates an existing relay in the database + */ +export function UpdateRelay(relay: schemas$0.Relay): Promise & { cancel(): void } { + let $resultPromise = $Call.ByID(3000693652, relay) as any; + return $resultPromise; +} + +/** + * UpdateTag updates the details of an existing tag + */ +export function UpdateTag(id: number, name: string, color: string, icon: string): Promise & { cancel(): void } { + let $resultPromise = $Call.ByID(193443197, id, name, color, icon) as any; + return $resultPromise; +} + +/** + * UpdateUser updates the details of an existing user + */ +export function UpdateUser(user: schemas$0.User): Promise & { cancel(): void } { + let $resultPromise = $Call.ByID(1224790596, user) as any; + return $resultPromise; +} + +// Private type creation functions +const $$createType0 = schemas$0.Note.createFrom; +const $$createType1 = $Create.Nullable($$createType0); +const $$createType2 = schemas$0.Relay.createFrom; +const $$createType3 = $Create.Nullable($$createType2); +const $$createType4 = schemas$0.User.createFrom; +const $$createType5 = $Create.Nullable($$createType4); +const $$createType6 = schemas$0.Notebook.createFrom; +const $$createType7 = $Create.Nullable($$createType6); +const $$createType8 = $Create.Array($$createType3); +const $$createType9 = $Create.Array($$createType0); +const $$createType10 = $Create.Array($$createType6); +const $$createType11 = schemas$0.Tag.createFrom; +const $$createType12 = $Create.Nullable($$createType11); +const $$createType13 = $Create.Array($$createType11); diff --git a/frontend/bindings/changeme/index.ts b/frontend/bindings/comet/backend/service/index.ts similarity index 64% rename from frontend/bindings/changeme/index.ts rename to frontend/bindings/comet/backend/service/index.ts index 50e3f043..a5a4b857 100644 --- a/frontend/bindings/changeme/index.ts +++ b/frontend/bindings/comet/backend/service/index.ts @@ -1,7 +1,7 @@ // Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL // This file is automatically generated. DO NOT EDIT -import * as GreetService from "./greetservice.js"; +import * as AppService from "./appservice.js"; export { - GreetService + AppService }; diff --git a/frontend/bindings/github.com/nodetec/captains-log/db/index.ts b/frontend/bindings/comet/backend/service/relays/index.ts similarity index 100% rename from frontend/bindings/github.com/nodetec/captains-log/db/index.ts rename to frontend/bindings/comet/backend/service/relays/index.ts diff --git a/frontend/bindings/comet/backend/service/relays/models.ts b/frontend/bindings/comet/backend/service/relays/models.ts new file mode 100644 index 00000000..b9a0f4da --- /dev/null +++ b/frontend/bindings/comet/backend/service/relays/models.ts @@ -0,0 +1,42 @@ +// Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL +// This file is automatically generated. DO NOT EDIT + +// eslint-disable-next-line @typescript-eslint/ban-ts-comment +// @ts-ignore: Unused imports +import {Create as $Create} from "@wailsio/runtime"; + +/** + * RelayData represents the data needed to create a relay + */ +export class RelayData { + "URL": string; + "Read": boolean; + "Write": boolean; + "Sync": boolean; + + /** Creates a new RelayData instance. */ + constructor($$source: Partial = {}) { + if (!("URL" in $$source)) { + this["URL"] = ""; + } + if (!("Read" in $$source)) { + this["Read"] = false; + } + if (!("Write" in $$source)) { + this["Write"] = false; + } + if (!("Sync" in $$source)) { + this["Sync"] = false; + } + + Object.assign(this, $$source); + } + + /** + * Creates a new RelayData instance from a string or object. + */ + static createFrom($$source: any = {}): RelayData { + let $$parsedSource = typeof $$source === 'string' ? JSON.parse($$source) : $$source; + return new RelayData($$parsedSource as Partial); + } +} diff --git a/frontend/bindings/database/sql/index.js b/frontend/bindings/database/sql/index.js deleted file mode 100644 index 580fb67a..00000000 --- a/frontend/bindings/database/sql/index.js +++ /dev/null @@ -1,5 +0,0 @@ -// @ts-check -// Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL -// This file is automatically generated. DO NOT EDIT - -export * from "./models.js"; diff --git a/frontend/bindings/database/sql/models.js b/frontend/bindings/database/sql/models.js deleted file mode 100644 index 02ff7f8b..00000000 --- a/frontend/bindings/database/sql/models.js +++ /dev/null @@ -1,98 +0,0 @@ -// @ts-check -// Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL -// This file is automatically generated. DO NOT EDIT - -// eslint-disable-next-line @typescript-eslint/ban-ts-comment -// @ts-ignore: Unused imports -import {Create as $Create} from "@wailsio/runtime"; - -/** - * NullInt64 represents an int64 that may be null. - * NullInt64 implements the [Scanner] interface so - * it can be used as a scan destination, similar to [NullString]. - */ -export class NullInt64 { - /** - * Creates a new NullInt64 instance. - * @param {Partial} [$$source = {}] - The source object to create the NullInt64. - */ - constructor($$source = {}) { - if (!("Int64" in $$source)) { - /** - * @member - * @type {number} - */ - this["Int64"] = 0; - } - if (!("Valid" in $$source)) { - /** - * Valid is true if Int64 is not NULL - * @member - * @type {boolean} - */ - this["Valid"] = false; - } - - Object.assign(this, $$source); - } - - /** - * Creates a new NullInt64 instance from a string or object. - * @param {any} [$$source = {}] - * @returns {NullInt64} - */ - static createFrom($$source = {}) { - let $$parsedSource = typeof $$source === 'string' ? JSON.parse($$source) : $$source; - return new NullInt64(/** @type {Partial} */($$parsedSource)); - } -} - -/** - * NullString represents a string that may be null. - * NullString implements the [Scanner] interface so - * it can be used as a scan destination: - * - * var s NullString - * err := db.QueryRow("SELECT name FROM foo WHERE id=?", id).Scan(&s) - * ... - * if s.Valid { - * // use s.String - * } else { - * // NULL value - * } - */ -export class NullString { - /** - * Creates a new NullString instance. - * @param {Partial} [$$source = {}] - The source object to create the NullString. - */ - constructor($$source = {}) { - if (!("String" in $$source)) { - /** - * @member - * @type {string} - */ - this["String"] = ""; - } - if (!("Valid" in $$source)) { - /** - * Valid is true if String is not NULL - * @member - * @type {boolean} - */ - this["Valid"] = false; - } - - Object.assign(this, $$source); - } - - /** - * Creates a new NullString instance from a string or object. - * @param {any} [$$source = {}] - * @returns {NullString} - */ - static createFrom($$source = {}) { - let $$parsedSource = typeof $$source === 'string' ? JSON.parse($$source) : $$source; - return new NullString(/** @type {Partial} */($$parsedSource)); - } -} diff --git a/frontend/bindings/database/sql/models.ts b/frontend/bindings/database/sql/models.ts deleted file mode 100644 index bc5a9c97..00000000 --- a/frontend/bindings/database/sql/models.ts +++ /dev/null @@ -1,83 +0,0 @@ -// Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL -// This file is automatically generated. DO NOT EDIT - -// eslint-disable-next-line @typescript-eslint/ban-ts-comment -// @ts-ignore: Unused imports -import {Create as $Create} from "@wailsio/runtime"; - -/** - * NullInt64 represents an int64 that may be null. - * NullInt64 implements the [Scanner] interface so - * it can be used as a scan destination, similar to [NullString]. - */ -export class NullInt64 { - "Int64": number; - - /** - * Valid is true if Int64 is not NULL - */ - "Valid": boolean; - - /** Creates a new NullInt64 instance. */ - constructor($$source: Partial = {}) { - if (!("Int64" in $$source)) { - this["Int64"] = 0; - } - if (!("Valid" in $$source)) { - this["Valid"] = false; - } - - Object.assign(this, $$source); - } - - /** - * Creates a new NullInt64 instance from a string or object. - */ - static createFrom($$source: any = {}): NullInt64 { - let $$parsedSource = typeof $$source === 'string' ? JSON.parse($$source) : $$source; - return new NullInt64($$parsedSource as Partial); - } -} - -/** - * NullString represents a string that may be null. - * NullString implements the [Scanner] interface so - * it can be used as a scan destination: - * - * var s NullString - * err := db.QueryRow("SELECT name FROM foo WHERE id=?", id).Scan(&s) - * ... - * if s.Valid { - * // use s.String - * } else { - * // NULL value - * } - */ -export class NullString { - "String": string; - - /** - * Valid is true if String is not NULL - */ - "Valid": boolean; - - /** Creates a new NullString instance. */ - constructor($$source: Partial = {}) { - if (!("String" in $$source)) { - this["String"] = ""; - } - if (!("Valid" in $$source)) { - this["Valid"] = false; - } - - Object.assign(this, $$source); - } - - /** - * Creates a new NullString instance from a string or object. - */ - static createFrom($$source: any = {}): NullString { - let $$parsedSource = typeof $$source === 'string' ? JSON.parse($$source) : $$source; - return new NullString($$parsedSource as Partial); - } -} diff --git a/frontend/bindings/github.com/nodetec/captains-log/db/models.ts b/frontend/bindings/github.com/nodetec/captains-log/db/models.ts deleted file mode 100644 index e2a46ea0..00000000 --- a/frontend/bindings/github.com/nodetec/captains-log/db/models.ts +++ /dev/null @@ -1,400 +0,0 @@ -// Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL -// This file is automatically generated. DO NOT EDIT - -// eslint-disable-next-line @typescript-eslint/ban-ts-comment -// @ts-ignore: Unused imports -import {Create as $Create} from "@wailsio/runtime"; - -// eslint-disable-next-line @typescript-eslint/ban-ts-comment -// @ts-ignore: Unused imports -import * as sql$0 from "../../../../database/sql/models.js"; - -export class CreateNoteFromTrashRow { - "ID": number; - "ID_2": number; - "StatusID": sql$0.NullInt64; - "NotebookID": number; - "Content": string; - "Title": string; - "CreatedAt": string; - "ModifiedAt": string; - "PublishedAt": sql$0.NullString; - "EventID": sql$0.NullString; - "Pinned": boolean; - "Notetype": string; - "Filetype": string; - - /** Creates a new CreateNoteFromTrashRow instance. */ - constructor($$source: Partial = {}) { - if (!("ID" in $$source)) { - this["ID"] = 0; - } - if (!("ID_2" in $$source)) { - this["ID_2"] = 0; - } - if (!("StatusID" in $$source)) { - this["StatusID"] = (new sql$0.NullInt64()); - } - if (!("NotebookID" in $$source)) { - this["NotebookID"] = 0; - } - if (!("Content" in $$source)) { - this["Content"] = ""; - } - if (!("Title" in $$source)) { - this["Title"] = ""; - } - if (!("CreatedAt" in $$source)) { - this["CreatedAt"] = ""; - } - if (!("ModifiedAt" in $$source)) { - this["ModifiedAt"] = ""; - } - if (!("PublishedAt" in $$source)) { - this["PublishedAt"] = (new sql$0.NullString()); - } - if (!("EventID" in $$source)) { - this["EventID"] = (new sql$0.NullString()); - } - if (!("Pinned" in $$source)) { - this["Pinned"] = false; - } - if (!("Notetype" in $$source)) { - this["Notetype"] = ""; - } - if (!("Filetype" in $$source)) { - this["Filetype"] = ""; - } - - Object.assign(this, $$source); - } - - /** - * Creates a new CreateNoteFromTrashRow instance from a string or object. - */ - static createFrom($$source: any = {}): CreateNoteFromTrashRow { - const $$createField2_0 = $$createType0; - const $$createField8_0 = $$createType1; - const $$createField9_0 = $$createType1; - let $$parsedSource = typeof $$source === 'string' ? JSON.parse($$source) : $$source; - if ("StatusID" in $$parsedSource) { - $$parsedSource["StatusID"] = $$createField2_0($$parsedSource["StatusID"]); - } - if ("PublishedAt" in $$parsedSource) { - $$parsedSource["PublishedAt"] = $$createField8_0($$parsedSource["PublishedAt"]); - } - if ("EventID" in $$parsedSource) { - $$parsedSource["EventID"] = $$createField9_0($$parsedSource["EventID"]); - } - return new CreateNoteFromTrashRow($$parsedSource as Partial); - } -} - -export class GetNoteFromTrashRow { - "ID": number; - "NoteID": number; - "Content": string; - "Title": string; - "CreatedAt": string; - "ModifiedAt": string; - "Tags": sql$0.NullString; - "NotebookID": number; - "PublishedAt": sql$0.NullString; - "EventID": sql$0.NullString; - "Notetype": string; - "Filetype": string; - - /** Creates a new GetNoteFromTrashRow instance. */ - constructor($$source: Partial = {}) { - if (!("ID" in $$source)) { - this["ID"] = 0; - } - if (!("NoteID" in $$source)) { - this["NoteID"] = 0; - } - if (!("Content" in $$source)) { - this["Content"] = ""; - } - if (!("Title" in $$source)) { - this["Title"] = ""; - } - if (!("CreatedAt" in $$source)) { - this["CreatedAt"] = ""; - } - if (!("ModifiedAt" in $$source)) { - this["ModifiedAt"] = ""; - } - if (!("Tags" in $$source)) { - this["Tags"] = (new sql$0.NullString()); - } - if (!("NotebookID" in $$source)) { - this["NotebookID"] = 0; - } - if (!("PublishedAt" in $$source)) { - this["PublishedAt"] = (new sql$0.NullString()); - } - if (!("EventID" in $$source)) { - this["EventID"] = (new sql$0.NullString()); - } - if (!("Notetype" in $$source)) { - this["Notetype"] = ""; - } - if (!("Filetype" in $$source)) { - this["Filetype"] = ""; - } - - Object.assign(this, $$source); - } - - /** - * Creates a new GetNoteFromTrashRow instance from a string or object. - */ - static createFrom($$source: any = {}): GetNoteFromTrashRow { - const $$createField6_0 = $$createType1; - const $$createField8_0 = $$createType1; - const $$createField9_0 = $$createType1; - let $$parsedSource = typeof $$source === 'string' ? JSON.parse($$source) : $$source; - if ("Tags" in $$parsedSource) { - $$parsedSource["Tags"] = $$createField6_0($$parsedSource["Tags"]); - } - if ("PublishedAt" in $$parsedSource) { - $$parsedSource["PublishedAt"] = $$createField8_0($$parsedSource["PublishedAt"]); - } - if ("EventID" in $$parsedSource) { - $$parsedSource["EventID"] = $$createField9_0($$parsedSource["EventID"]); - } - return new GetNoteFromTrashRow($$parsedSource as Partial); - } -} - -export class Note { - "ID": number; - "StatusID": sql$0.NullInt64; - "NotebookID": number; - "Content": string; - "Title": string; - "CreatedAt": string; - "ModifiedAt": string; - "PublishedAt": sql$0.NullString; - "EventID": sql$0.NullString; - "Pinned": boolean; - "Notetype": string; - "Filetype": string; - - /** Creates a new Note instance. */ - constructor($$source: Partial = {}) { - if (!("ID" in $$source)) { - this["ID"] = 0; - } - if (!("StatusID" in $$source)) { - this["StatusID"] = (new sql$0.NullInt64()); - } - if (!("NotebookID" in $$source)) { - this["NotebookID"] = 0; - } - if (!("Content" in $$source)) { - this["Content"] = ""; - } - if (!("Title" in $$source)) { - this["Title"] = ""; - } - if (!("CreatedAt" in $$source)) { - this["CreatedAt"] = ""; - } - if (!("ModifiedAt" in $$source)) { - this["ModifiedAt"] = ""; - } - if (!("PublishedAt" in $$source)) { - this["PublishedAt"] = (new sql$0.NullString()); - } - if (!("EventID" in $$source)) { - this["EventID"] = (new sql$0.NullString()); - } - if (!("Pinned" in $$source)) { - this["Pinned"] = false; - } - if (!("Notetype" in $$source)) { - this["Notetype"] = ""; - } - if (!("Filetype" in $$source)) { - this["Filetype"] = ""; - } - - Object.assign(this, $$source); - } - - /** - * Creates a new Note instance from a string or object. - */ - static createFrom($$source: any = {}): Note { - const $$createField1_0 = $$createType0; - const $$createField7_0 = $$createType1; - const $$createField8_0 = $$createType1; - let $$parsedSource = typeof $$source === 'string' ? JSON.parse($$source) : $$source; - if ("StatusID" in $$parsedSource) { - $$parsedSource["StatusID"] = $$createField1_0($$parsedSource["StatusID"]); - } - if ("PublishedAt" in $$parsedSource) { - $$parsedSource["PublishedAt"] = $$createField7_0($$parsedSource["PublishedAt"]); - } - if ("EventID" in $$parsedSource) { - $$parsedSource["EventID"] = $$createField8_0($$parsedSource["EventID"]); - } - return new Note($$parsedSource as Partial); - } -} - -export class Notebook { - "ID": number; - "Name": string; - "CreatedAt": string; - - /** Creates a new Notebook instance. */ - constructor($$source: Partial = {}) { - if (!("ID" in $$source)) { - this["ID"] = 0; - } - if (!("Name" in $$source)) { - this["Name"] = ""; - } - if (!("CreatedAt" in $$source)) { - this["CreatedAt"] = ""; - } - - Object.assign(this, $$source); - } - - /** - * Creates a new Notebook instance from a string or object. - */ - static createFrom($$source: any = {}): Notebook { - let $$parsedSource = typeof $$source === 'string' ? JSON.parse($$source) : $$source; - return new Notebook($$parsedSource as Partial); - } -} - -export class Tag { - "ID": number; - "Name": string; - "Color": sql$0.NullString; - "Icon": sql$0.NullString; - "CreatedAt": string; - - /** Creates a new Tag instance. */ - constructor($$source: Partial = {}) { - if (!("ID" in $$source)) { - this["ID"] = 0; - } - if (!("Name" in $$source)) { - this["Name"] = ""; - } - if (!("Color" in $$source)) { - this["Color"] = (new sql$0.NullString()); - } - if (!("Icon" in $$source)) { - this["Icon"] = (new sql$0.NullString()); - } - if (!("CreatedAt" in $$source)) { - this["CreatedAt"] = ""; - } - - Object.assign(this, $$source); - } - - /** - * Creates a new Tag instance from a string or object. - */ - static createFrom($$source: any = {}): Tag { - const $$createField2_0 = $$createType1; - const $$createField3_0 = $$createType1; - let $$parsedSource = typeof $$source === 'string' ? JSON.parse($$source) : $$source; - if ("Color" in $$parsedSource) { - $$parsedSource["Color"] = $$createField2_0($$parsedSource["Color"]); - } - if ("Icon" in $$parsedSource) { - $$parsedSource["Icon"] = $$createField3_0($$parsedSource["Icon"]); - } - return new Tag($$parsedSource as Partial); - } -} - -export class Trash { - "ID": number; - "NoteID": number; - "NotebookID": number; - "Content": string; - "Title": string; - "CreatedAt": string; - "ModifiedAt": string; - "Tags": sql$0.NullString; - "PublishedAt": sql$0.NullString; - "EventID": sql$0.NullString; - "Notetype": string; - "Filetype": string; - - /** Creates a new Trash instance. */ - constructor($$source: Partial = {}) { - if (!("ID" in $$source)) { - this["ID"] = 0; - } - if (!("NoteID" in $$source)) { - this["NoteID"] = 0; - } - if (!("NotebookID" in $$source)) { - this["NotebookID"] = 0; - } - if (!("Content" in $$source)) { - this["Content"] = ""; - } - if (!("Title" in $$source)) { - this["Title"] = ""; - } - if (!("CreatedAt" in $$source)) { - this["CreatedAt"] = ""; - } - if (!("ModifiedAt" in $$source)) { - this["ModifiedAt"] = ""; - } - if (!("Tags" in $$source)) { - this["Tags"] = (new sql$0.NullString()); - } - if (!("PublishedAt" in $$source)) { - this["PublishedAt"] = (new sql$0.NullString()); - } - if (!("EventID" in $$source)) { - this["EventID"] = (new sql$0.NullString()); - } - if (!("Notetype" in $$source)) { - this["Notetype"] = ""; - } - if (!("Filetype" in $$source)) { - this["Filetype"] = ""; - } - - Object.assign(this, $$source); - } - - /** - * Creates a new Trash instance from a string or object. - */ - static createFrom($$source: any = {}): Trash { - const $$createField7_0 = $$createType1; - const $$createField8_0 = $$createType1; - const $$createField9_0 = $$createType1; - let $$parsedSource = typeof $$source === 'string' ? JSON.parse($$source) : $$source; - if ("Tags" in $$parsedSource) { - $$parsedSource["Tags"] = $$createField7_0($$parsedSource["Tags"]); - } - if ("PublishedAt" in $$parsedSource) { - $$parsedSource["PublishedAt"] = $$createField8_0($$parsedSource["PublishedAt"]); - } - if ("EventID" in $$parsedSource) { - $$parsedSource["EventID"] = $$createField9_0($$parsedSource["EventID"]); - } - return new Trash($$parsedSource as Partial); - } -} - -// Private type creation functions -const $$createType0 = sql$0.NullInt64.createFrom; -const $$createType1 = sql$0.NullString.createFrom; diff --git a/frontend/bindings/github.com/nodetec/captains-log/service/index.ts b/frontend/bindings/github.com/nodetec/captains-log/service/index.ts deleted file mode 100644 index 0b82bfa5..00000000 --- a/frontend/bindings/github.com/nodetec/captains-log/service/index.ts +++ /dev/null @@ -1,21 +0,0 @@ -// Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL -// This file is automatically generated. DO NOT EDIT - -import * as NostrKeyService from "./nostrkeyservice.js"; -import * as NoteService from "./noteservice.js"; -import * as NoteTagService from "./notetagservice.js"; -import * as NotebookService from "./notebookservice.js"; -import * as RelayService from "./relayservice.js"; -import * as SettingService from "./settingservice.js"; -import * as TagService from "./tagservice.js"; -export { - NostrKeyService, - NoteService, - NoteTagService, - NotebookService, - RelayService, - SettingService, - TagService -}; - -export * from "./models.js"; diff --git a/frontend/bindings/github.com/nodetec/captains-log/service/models.ts b/frontend/bindings/github.com/nodetec/captains-log/service/models.ts deleted file mode 100644 index c2ebc7d5..00000000 --- a/frontend/bindings/github.com/nodetec/captains-log/service/models.ts +++ /dev/null @@ -1,208 +0,0 @@ -// Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL -// This file is automatically generated. DO NOT EDIT - -// eslint-disable-next-line @typescript-eslint/ban-ts-comment -// @ts-ignore: Unused imports -import {Create as $Create} from "@wailsio/runtime"; - -// eslint-disable-next-line @typescript-eslint/ban-ts-comment -// @ts-ignore: Unused imports -import * as sql$0 from "../../../../database/sql/models.js"; - -export class NostrKey { - "ID": number; - "Nsec": string; - "Npub": string; - "Active": boolean; - - /** Creates a new NostrKey instance. */ - constructor($$source: Partial = {}) { - if (!("ID" in $$source)) { - this["ID"] = 0; - } - if (!("Nsec" in $$source)) { - this["Nsec"] = ""; - } - if (!("Npub" in $$source)) { - this["Npub"] = ""; - } - if (!("Active" in $$source)) { - this["Active"] = false; - } - - Object.assign(this, $$source); - } - - /** - * Creates a new NostrKey instance from a string or object. - */ - static createFrom($$source: any = {}): NostrKey { - let $$parsedSource = typeof $$source === 'string' ? JSON.parse($$source) : $$source; - return new NostrKey($$parsedSource as Partial); - } -} - -export class Relay { - "ID": number; - "Url": string; - "Read": boolean; - "Write": boolean; - "Sync": boolean; - - /** Creates a new Relay instance. */ - constructor($$source: Partial = {}) { - if (!("ID" in $$source)) { - this["ID"] = 0; - } - if (!("Url" in $$source)) { - this["Url"] = ""; - } - if (!("Read" in $$source)) { - this["Read"] = false; - } - if (!("Write" in $$source)) { - this["Write"] = false; - } - if (!("Sync" in $$source)) { - this["Sync"] = false; - } - - Object.assign(this, $$source); - } - - /** - * Creates a new Relay instance from a string or object. - */ - static createFrom($$source: any = {}): Relay { - let $$parsedSource = typeof $$source === 'string' ? JSON.parse($$source) : $$source; - return new Relay($$parsedSource as Partial); - } -} - -export class Settings { - /** - * theme - */ - "Theme": string; - - /** - * editor - */ - "Vim": string; - "LineNumbers": string; - "HighlightActiveLine": string; - "LineWrapping": string; - "IndentSpaces": string; - "FontSize": string; - "FontFamily": string; - "LineHeight": string; - - /** - * profile - */ - "Npub": string; - "Nsec": string; - - /** - * relays - */ - "Relays": string; - - /** Creates a new Settings instance. */ - constructor($$source: Partial = {}) { - if (!("Theme" in $$source)) { - this["Theme"] = ""; - } - if (!("Vim" in $$source)) { - this["Vim"] = ""; - } - if (!("LineNumbers" in $$source)) { - this["LineNumbers"] = ""; - } - if (!("HighlightActiveLine" in $$source)) { - this["HighlightActiveLine"] = ""; - } - if (!("LineWrapping" in $$source)) { - this["LineWrapping"] = ""; - } - if (!("IndentSpaces" in $$source)) { - this["IndentSpaces"] = ""; - } - if (!("FontSize" in $$source)) { - this["FontSize"] = ""; - } - if (!("FontFamily" in $$source)) { - this["FontFamily"] = ""; - } - if (!("LineHeight" in $$source)) { - this["LineHeight"] = ""; - } - if (!("Npub" in $$source)) { - this["Npub"] = ""; - } - if (!("Nsec" in $$source)) { - this["Nsec"] = ""; - } - if (!("Relays" in $$source)) { - this["Relays"] = ""; - } - - Object.assign(this, $$source); - } - - /** - * Creates a new Settings instance from a string or object. - */ - static createFrom($$source: any = {}): Settings { - let $$parsedSource = typeof $$source === 'string' ? JSON.parse($$source) : $$source; - return new Settings($$parsedSource as Partial); - } -} - -export class Tag { - "ID": number; - "Name": string; - "Color": sql$0.NullString; - "Icon": sql$0.NullString; - "CreatedAt": string; - - /** Creates a new Tag instance. */ - constructor($$source: Partial = {}) { - if (!("ID" in $$source)) { - this["ID"] = 0; - } - if (!("Name" in $$source)) { - this["Name"] = ""; - } - if (!("Color" in $$source)) { - this["Color"] = (new sql$0.NullString()); - } - if (!("Icon" in $$source)) { - this["Icon"] = (new sql$0.NullString()); - } - if (!("CreatedAt" in $$source)) { - this["CreatedAt"] = ""; - } - - Object.assign(this, $$source); - } - - /** - * Creates a new Tag instance from a string or object. - */ - static createFrom($$source: any = {}): Tag { - const $$createField2_0 = $$createType0; - const $$createField3_0 = $$createType0; - let $$parsedSource = typeof $$source === 'string' ? JSON.parse($$source) : $$source; - if ("Color" in $$parsedSource) { - $$parsedSource["Color"] = $$createField2_0($$parsedSource["Color"]); - } - if ("Icon" in $$parsedSource) { - $$parsedSource["Icon"] = $$createField3_0($$parsedSource["Icon"]); - } - return new Tag($$parsedSource as Partial); - } -} - -// Private type creation functions -const $$createType0 = sql$0.NullString.createFrom; diff --git a/frontend/bindings/github.com/nodetec/captains-log/service/nostrkeyservice.ts b/frontend/bindings/github.com/nodetec/captains-log/service/nostrkeyservice.ts deleted file mode 100644 index d0baa748..00000000 --- a/frontend/bindings/github.com/nodetec/captains-log/service/nostrkeyservice.ts +++ /dev/null @@ -1,51 +0,0 @@ -// Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL -// This file is automatically generated. DO NOT EDIT - -// eslint-disable-next-line @typescript-eslint/ban-ts-comment -// @ts-ignore: Unused imports -import {Call as $Call, Create as $Create} from "@wailsio/runtime"; - -// eslint-disable-next-line @typescript-eslint/ban-ts-comment -// @ts-ignore: Unused imports -import * as $models from "./models.js"; - -export function CreateNostrKey(nsec: string, npub: string, active: boolean): Promise<$models.NostrKey> & { cancel(): void } { - let $resultPromise = $Call.ByID(1139917670, nsec, npub, active) as any; - let $typingPromise = $resultPromise.then(($result) => { - return $$createType0($result); - }) as any; - $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); - return $typingPromise; -} - -export function DeleteNostrKey(id: number): Promise & { cancel(): void } { - let $resultPromise = $Call.ByID(2873522469, id) as any; - return $resultPromise; -} - -export function GetNostrKey(id: number): Promise<$models.NostrKey> & { cancel(): void } { - let $resultPromise = $Call.ByID(1862764116, id) as any; - let $typingPromise = $resultPromise.then(($result) => { - return $$createType0($result); - }) as any; - $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); - return $typingPromise; -} - -export function ListNostrKeys(): Promise<$models.NostrKey[]> & { cancel(): void } { - let $resultPromise = $Call.ByID(3075221463) as any; - let $typingPromise = $resultPromise.then(($result) => { - return $$createType1($result); - }) as any; - $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); - return $typingPromise; -} - -export function UpdateNostrKey(id: number, nsec: string, npub: string, active: boolean): Promise & { cancel(): void } { - let $resultPromise = $Call.ByID(3672862547, id, nsec, npub, active) as any; - return $resultPromise; -} - -// Private type creation functions -const $$createType0 = $models.NostrKey.createFrom; -const $$createType1 = $Create.Array($$createType0); diff --git a/frontend/bindings/github.com/nodetec/captains-log/service/notebookservice.ts b/frontend/bindings/github.com/nodetec/captains-log/service/notebookservice.ts deleted file mode 100644 index 231512f8..00000000 --- a/frontend/bindings/github.com/nodetec/captains-log/service/notebookservice.ts +++ /dev/null @@ -1,82 +0,0 @@ -// Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL -// This file is automatically generated. DO NOT EDIT - -// eslint-disable-next-line @typescript-eslint/ban-ts-comment -// @ts-ignore: Unused imports -import {Call as $Call, Create as $Create} from "@wailsio/runtime"; - -// eslint-disable-next-line @typescript-eslint/ban-ts-comment -// @ts-ignore: Unused imports -import * as db$0 from "../db/models.js"; - -export function AddTagToNotebook(notebookID: number, tagID: number): Promise & { cancel(): void } { - let $resultPromise = $Call.ByID(413074938, notebookID, tagID) as any; - return $resultPromise; -} - -export function CheckTagForNotebook(notebookID: number, tagID: number): Promise & { cancel(): void } { - let $resultPromise = $Call.ByID(1014327243, notebookID, tagID) as any; - return $resultPromise; -} - -export function CreateNotebook(name: string): Promise & { cancel(): void } { - let $resultPromise = $Call.ByID(1869216282, name) as any; - let $typingPromise = $resultPromise.then(($result) => { - return $$createType0($result); - }) as any; - $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); - return $typingPromise; -} - -export function DeleteNotebook(id: number): Promise & { cancel(): void } { - let $resultPromise = $Call.ByID(2925036805, id) as any; - return $resultPromise; -} - -export function GetNotebook(id: number): Promise & { cancel(): void } { - let $resultPromise = $Call.ByID(542902412, id) as any; - let $typingPromise = $resultPromise.then(($result) => { - return $$createType0($result); - }) as any; - $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); - return $typingPromise; -} - -export function GetTagsForNotebook(notebookID: number): Promise & { cancel(): void } { - let $resultPromise = $Call.ByID(1296614222, notebookID) as any; - let $typingPromise = $resultPromise.then(($result) => { - return $$createType2($result); - }) as any; - $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); - return $typingPromise; -} - -export function ListNotebooks(): Promise & { cancel(): void } { - let $resultPromise = $Call.ByID(3041603755) as any; - let $typingPromise = $resultPromise.then(($result) => { - return $$createType3($result); - }) as any; - $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); - return $typingPromise; -} - -export function RemoveAllTagsFromNotebook(notebookID: number): Promise & { cancel(): void } { - let $resultPromise = $Call.ByID(3020598822, notebookID) as any; - return $resultPromise; -} - -export function RemoveTagFromNotebook(notebookID: number, tagID: number): Promise & { cancel(): void } { - let $resultPromise = $Call.ByID(1292342828, notebookID, tagID) as any; - return $resultPromise; -} - -export function UpdateNotebook(id: number, name: string, createdAt: string): Promise & { cancel(): void } { - let $resultPromise = $Call.ByID(1472371799, id, name, createdAt) as any; - return $resultPromise; -} - -// Private type creation functions -const $$createType0 = db$0.Notebook.createFrom; -const $$createType1 = db$0.Tag.createFrom; -const $$createType2 = $Create.Array($$createType1); -const $$createType3 = $Create.Array($$createType0); diff --git a/frontend/bindings/github.com/nodetec/captains-log/service/noteservice.ts b/frontend/bindings/github.com/nodetec/captains-log/service/noteservice.ts deleted file mode 100644 index eb8d1d61..00000000 --- a/frontend/bindings/github.com/nodetec/captains-log/service/noteservice.ts +++ /dev/null @@ -1,113 +0,0 @@ -// Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL -// This file is automatically generated. DO NOT EDIT - -// eslint-disable-next-line @typescript-eslint/ban-ts-comment -// @ts-ignore: Unused imports -import {Call as $Call, Create as $Create} from "@wailsio/runtime"; - -// eslint-disable-next-line @typescript-eslint/ban-ts-comment -// @ts-ignore: Unused imports -import * as sql$0 from "../../../../database/sql/models.js"; -// eslint-disable-next-line @typescript-eslint/ban-ts-comment -// @ts-ignore: Unused imports -import * as db$0 from "../db/models.js"; - -export function AddNoteToTrash(note: db$0.Note, tags: db$0.Tag[]): Promise & { cancel(): void } { - let $resultPromise = $Call.ByID(3629355206, note, tags) as any; - return $resultPromise; -} - -export function CreateNote(title: string, content: string, notebookID: number, statusID: sql$0.NullInt64, publishedAt: sql$0.NullString, eventId: sql$0.NullString, notetype: string, filetype: string): Promise & { cancel(): void } { - let $resultPromise = $Call.ByID(718095870, title, content, notebookID, statusID, publishedAt, eventId, notetype, filetype) as any; - let $typingPromise = $resultPromise.then(($result) => { - return $$createType0($result); - }) as any; - $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); - return $typingPromise; -} - -export function DeleteNote(id: number): Promise & { cancel(): void } { - let $resultPromise = $Call.ByID(2694105033, id) as any; - return $resultPromise; -} - -export function DeleteNoteFromTrash(id: number): Promise & { cancel(): void } { - let $resultPromise = $Call.ByID(3062769697, id) as any; - return $resultPromise; -} - -export function GetNote(id: number): Promise & { cancel(): void } { - let $resultPromise = $Call.ByID(1682701374, id) as any; - let $typingPromise = $resultPromise.then(($result) => { - return $$createType0($result); - }) as any; - $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); - return $typingPromise; -} - -export function GetNoteFromTrash(id: number): Promise & { cancel(): void } { - let $resultPromise = $Call.ByID(2404583840, id) as any; - let $typingPromise = $resultPromise.then(($result) => { - return $$createType1($result); - }) as any; - $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); - return $typingPromise; -} - -export function ListNotes(notebookId: number, tagId: number, limit: number, pageParam: number, orderBy: string, sortDirection: string): Promise & { cancel(): void } { - let $resultPromise = $Call.ByID(3066540231, notebookId, tagId, limit, pageParam, orderBy, sortDirection) as any; - let $typingPromise = $resultPromise.then(($result) => { - return $$createType2($result); - }) as any; - $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); - return $typingPromise; -} - -export function ListNotesFromTrash(limit: number, pageParam: number, orderBy: string, sortDirection: string): Promise & { cancel(): void } { - let $resultPromise = $Call.ByID(3687280279, limit, pageParam, orderBy, sortDirection) as any; - let $typingPromise = $resultPromise.then(($result) => { - return $$createType4($result); - }) as any; - $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); - return $typingPromise; -} - -export function RestoreNoteFromTrash(noteId: number, title: string, content: string, notebookID: number, statusID: sql$0.NullInt64, createdAt: string, modifiedAt: string, publishedAt: sql$0.NullString, eventId: sql$0.NullString, notetype: string, filetype: string, tagIds: number[]): Promise & { cancel(): void } { - let $resultPromise = $Call.ByID(1566556202, noteId, title, content, notebookID, statusID, createdAt, modifiedAt, publishedAt, eventId, notetype, filetype, tagIds) as any; - let $typingPromise = $resultPromise.then(($result) => { - return $$createType5($result); - }) as any; - $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); - return $typingPromise; -} - -export function SearchNotes(searchTerm: string, notebookID: number, tagID: number, limit: number, pageParam: number, orderBy: string, sortDirection: string): Promise & { cancel(): void } { - let $resultPromise = $Call.ByID(769326515, searchTerm, notebookID, tagID, limit, pageParam, orderBy, sortDirection) as any; - let $typingPromise = $resultPromise.then(($result) => { - return $$createType2($result); - }) as any; - $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); - return $typingPromise; -} - -export function SearchTrash(searchTerm: string, limit: number, pageParam: number, orderBy: string, sortDirection: string): Promise & { cancel(): void } { - let $resultPromise = $Call.ByID(1243198908, searchTerm, limit, pageParam, orderBy, sortDirection) as any; - let $typingPromise = $resultPromise.then(($result) => { - return $$createType4($result); - }) as any; - $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); - return $typingPromise; -} - -export function UpdateNote(id: number, title: string, content: string, notebookID: number, statusID: sql$0.NullInt64, published: boolean, eventId: sql$0.NullString, pinned: boolean, notetype: string, filetype: string): Promise & { cancel(): void } { - let $resultPromise = $Call.ByID(3047331695, id, title, content, notebookID, statusID, published, eventId, pinned, notetype, filetype) as any; - return $resultPromise; -} - -// Private type creation functions -const $$createType0 = db$0.Note.createFrom; -const $$createType1 = db$0.GetNoteFromTrashRow.createFrom; -const $$createType2 = $Create.Array($$createType0); -const $$createType3 = db$0.Trash.createFrom; -const $$createType4 = $Create.Array($$createType3); -const $$createType5 = db$0.CreateNoteFromTrashRow.createFrom; diff --git a/frontend/bindings/github.com/nodetec/captains-log/service/notetagservice.ts b/frontend/bindings/github.com/nodetec/captains-log/service/notetagservice.ts deleted file mode 100644 index 342140d6..00000000 --- a/frontend/bindings/github.com/nodetec/captains-log/service/notetagservice.ts +++ /dev/null @@ -1,38 +0,0 @@ -// Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL -// This file is automatically generated. DO NOT EDIT - -// eslint-disable-next-line @typescript-eslint/ban-ts-comment -// @ts-ignore: Unused imports -import {Call as $Call, Create as $Create} from "@wailsio/runtime"; - -// eslint-disable-next-line @typescript-eslint/ban-ts-comment -// @ts-ignore: Unused imports -import * as db$0 from "../db/models.js"; - -export function AddTagToNote(noteID: number, tagID: number): Promise & { cancel(): void } { - let $resultPromise = $Call.ByID(674475180, noteID, tagID) as any; - return $resultPromise; -} - -export function CheckTagForNote(noteID: number, tagID: number): Promise & { cancel(): void } { - let $resultPromise = $Call.ByID(2860258327, noteID, tagID) as any; - return $resultPromise; -} - -export function GetTagsForNote(noteID: number): Promise & { cancel(): void } { - let $resultPromise = $Call.ByID(385519868, noteID) as any; - let $typingPromise = $resultPromise.then(($result) => { - return $$createType1($result); - }) as any; - $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); - return $typingPromise; -} - -export function RemoveTagFromNote(noteID: number, tagID: number): Promise & { cancel(): void } { - let $resultPromise = $Call.ByID(1414310996, noteID, tagID) as any; - return $resultPromise; -} - -// Private type creation functions -const $$createType0 = db$0.Tag.createFrom; -const $$createType1 = $Create.Array($$createType0); diff --git a/frontend/bindings/github.com/nodetec/captains-log/service/relayservice.ts b/frontend/bindings/github.com/nodetec/captains-log/service/relayservice.ts deleted file mode 100644 index de26b257..00000000 --- a/frontend/bindings/github.com/nodetec/captains-log/service/relayservice.ts +++ /dev/null @@ -1,51 +0,0 @@ -// Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL -// This file is automatically generated. DO NOT EDIT - -// eslint-disable-next-line @typescript-eslint/ban-ts-comment -// @ts-ignore: Unused imports -import {Call as $Call, Create as $Create} from "@wailsio/runtime"; - -// eslint-disable-next-line @typescript-eslint/ban-ts-comment -// @ts-ignore: Unused imports -import * as $models from "./models.js"; - -export function CreateRelay(url: string, read: boolean, write: boolean, sync: boolean): Promise<$models.Relay> & { cancel(): void } { - let $resultPromise = $Call.ByID(2092870154, url, read, write, sync) as any; - let $typingPromise = $resultPromise.then(($result) => { - return $$createType0($result); - }) as any; - $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); - return $typingPromise; -} - -export function DeleteRelays(): Promise & { cancel(): void } { - let $resultPromise = $Call.ByID(1994699448) as any; - return $resultPromise; -} - -export function GetRelay(id: number): Promise<$models.Relay> & { cancel(): void } { - let $resultPromise = $Call.ByID(22572148, id) as any; - let $typingPromise = $resultPromise.then(($result) => { - return $$createType0($result); - }) as any; - $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); - return $typingPromise; -} - -export function ListRelays(): Promise<$models.Relay[]> & { cancel(): void } { - let $resultPromise = $Call.ByID(2174753327) as any; - let $typingPromise = $resultPromise.then(($result) => { - return $$createType1($result); - }) as any; - $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); - return $typingPromise; -} - -export function UpdateRelay(id: number, url: string, read: boolean, write: boolean, sync: boolean): Promise & { cancel(): void } { - let $resultPromise = $Call.ByID(3330694229, id, url, read, write, sync) as any; - return $resultPromise; -} - -// Private type creation functions -const $$createType0 = $models.Relay.createFrom; -const $$createType1 = $Create.Array($$createType0); diff --git a/frontend/bindings/github.com/nodetec/captains-log/service/settingservice.ts b/frontend/bindings/github.com/nodetec/captains-log/service/settingservice.ts deleted file mode 100644 index 76698f7a..00000000 --- a/frontend/bindings/github.com/nodetec/captains-log/service/settingservice.ts +++ /dev/null @@ -1,32 +0,0 @@ -// Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL -// This file is automatically generated. DO NOT EDIT - -// eslint-disable-next-line @typescript-eslint/ban-ts-comment -// @ts-ignore: Unused imports -import {Call as $Call, Create as $Create} from "@wailsio/runtime"; - -// eslint-disable-next-line @typescript-eslint/ban-ts-comment -// @ts-ignore: Unused imports -import * as $models from "./models.js"; - -export function GetAllSettings(): Promise<$models.Settings> & { cancel(): void } { - let $resultPromise = $Call.ByID(1009539482) as any; - let $typingPromise = $resultPromise.then(($result) => { - return $$createType0($result); - }) as any; - $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); - return $typingPromise; -} - -export function GetSetting(key: string): Promise & { cancel(): void } { - let $resultPromise = $Call.ByID(1457156808, key) as any; - return $resultPromise; -} - -export function UpdateSetting(key: string, value: string): Promise & { cancel(): void } { - let $resultPromise = $Call.ByID(136830423, key, value) as any; - return $resultPromise; -} - -// Private type creation functions -const $$createType0 = $models.Settings.createFrom; diff --git a/frontend/bindings/github.com/nodetec/captains-log/service/tagservice.ts b/frontend/bindings/github.com/nodetec/captains-log/service/tagservice.ts deleted file mode 100644 index fa60c945..00000000 --- a/frontend/bindings/github.com/nodetec/captains-log/service/tagservice.ts +++ /dev/null @@ -1,73 +0,0 @@ -// Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL -// This file is automatically generated. DO NOT EDIT - -// eslint-disable-next-line @typescript-eslint/ban-ts-comment -// @ts-ignore: Unused imports -import {Call as $Call, Create as $Create} from "@wailsio/runtime"; - -// eslint-disable-next-line @typescript-eslint/ban-ts-comment -// @ts-ignore: Unused imports -import * as sql$0 from "../../../../database/sql/models.js"; - -// eslint-disable-next-line @typescript-eslint/ban-ts-comment -// @ts-ignore: Unused imports -import * as $models from "./models.js"; - -export function CreateTag(name: string, color: sql$0.NullString, icon: sql$0.NullString, createdAt: string): Promise<$models.Tag> & { cancel(): void } { - let $resultPromise = $Call.ByID(1673117124, name, color, icon, createdAt) as any; - let $typingPromise = $resultPromise.then(($result) => { - return $$createType0($result); - }) as any; - $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); - return $typingPromise; -} - -export function DeleteTag(id: number): Promise & { cancel(): void } { - let $resultPromise = $Call.ByID(1066084529, id) as any; - return $resultPromise; -} - -export function GetTag(id: number): Promise<$models.Tag> & { cancel(): void } { - let $resultPromise = $Call.ByID(2058995772, id) as any; - let $typingPromise = $resultPromise.then(($result) => { - return $$createType0($result); - }) as any; - $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); - return $typingPromise; -} - -export function GetTagByName(name: string): Promise<$models.Tag> & { cancel(): void } { - let $resultPromise = $Call.ByID(2689542354, name) as any; - let $typingPromise = $resultPromise.then(($result) => { - return $$createType0($result); - }) as any; - $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); - return $typingPromise; -} - -export function GetTagsByNames(names: string[]): Promise<$models.Tag[]> & { cancel(): void } { - let $resultPromise = $Call.ByID(1187259212, names) as any; - let $typingPromise = $resultPromise.then(($result) => { - return $$createType1($result); - }) as any; - $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); - return $typingPromise; -} - -export function ListTags(): Promise<$models.Tag[]> & { cancel(): void } { - let $resultPromise = $Call.ByID(3082273913) as any; - let $typingPromise = $resultPromise.then(($result) => { - return $$createType1($result); - }) as any; - $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); - return $typingPromise; -} - -export function UpdateTag(id: number, name: string, color: sql$0.NullString, icon: sql$0.NullString, createdAt: string): Promise & { cancel(): void } { - let $resultPromise = $Call.ByID(156168943, id, name, color, icon, createdAt) as any; - return $resultPromise; -} - -// Private type creation functions -const $$createType0 = $models.Tag.createFrom; -const $$createType1 = $Create.Array($$createType0); diff --git a/frontend/bindings/github.com/nodetec/comet/db/index.js b/frontend/bindings/github.com/nodetec/comet/db/index.js deleted file mode 100644 index 580fb67a..00000000 --- a/frontend/bindings/github.com/nodetec/comet/db/index.js +++ /dev/null @@ -1,5 +0,0 @@ -// @ts-check -// Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL -// This file is automatically generated. DO NOT EDIT - -export * from "./models.js"; diff --git a/frontend/bindings/github.com/nodetec/comet/db/index.ts b/frontend/bindings/github.com/nodetec/comet/db/index.ts deleted file mode 100644 index c9d993ab..00000000 --- a/frontend/bindings/github.com/nodetec/comet/db/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -// Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL -// This file is automatically generated. DO NOT EDIT - -export * from "./models.js"; diff --git a/frontend/bindings/github.com/nodetec/comet/db/models.js b/frontend/bindings/github.com/nodetec/comet/db/models.js deleted file mode 100644 index 14b4f175..00000000 --- a/frontend/bindings/github.com/nodetec/comet/db/models.js +++ /dev/null @@ -1,596 +0,0 @@ -// @ts-check -// Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL -// This file is automatically generated. DO NOT EDIT - -// eslint-disable-next-line @typescript-eslint/ban-ts-comment -// @ts-ignore: Unused imports -import {Create as $Create} from "@wailsio/runtime"; - -// eslint-disable-next-line @typescript-eslint/ban-ts-comment -// @ts-ignore: Unused imports -import * as sql$0 from "../../../../database/sql/models.js"; - -export class CreateNoteFromTrashRow { - /** - * Creates a new CreateNoteFromTrashRow instance. - * @param {Partial} [$$source = {}] - The source object to create the CreateNoteFromTrashRow. - */ - constructor($$source = {}) { - if (!("ID" in $$source)) { - /** - * @member - * @type {number} - */ - this["ID"] = 0; - } - if (!("ID_2" in $$source)) { - /** - * @member - * @type {number} - */ - this["ID_2"] = 0; - } - if (!("StatusID" in $$source)) { - /** - * @member - * @type {sql$0.NullInt64} - */ - this["StatusID"] = (new sql$0.NullInt64()); - } - if (!("NotebookID" in $$source)) { - /** - * @member - * @type {number} - */ - this["NotebookID"] = 0; - } - if (!("Content" in $$source)) { - /** - * @member - * @type {string} - */ - this["Content"] = ""; - } - if (!("Title" in $$source)) { - /** - * @member - * @type {string} - */ - this["Title"] = ""; - } - if (!("CreatedAt" in $$source)) { - /** - * @member - * @type {string} - */ - this["CreatedAt"] = ""; - } - if (!("ModifiedAt" in $$source)) { - /** - * @member - * @type {string} - */ - this["ModifiedAt"] = ""; - } - if (!("PublishedAt" in $$source)) { - /** - * @member - * @type {sql$0.NullString} - */ - this["PublishedAt"] = (new sql$0.NullString()); - } - if (!("EventID" in $$source)) { - /** - * @member - * @type {sql$0.NullString} - */ - this["EventID"] = (new sql$0.NullString()); - } - if (!("Pinned" in $$source)) { - /** - * @member - * @type {boolean} - */ - this["Pinned"] = false; - } - if (!("Notetype" in $$source)) { - /** - * @member - * @type {string} - */ - this["Notetype"] = ""; - } - if (!("Filetype" in $$source)) { - /** - * @member - * @type {string} - */ - this["Filetype"] = ""; - } - - Object.assign(this, $$source); - } - - /** - * Creates a new CreateNoteFromTrashRow instance from a string or object. - * @param {any} [$$source = {}] - * @returns {CreateNoteFromTrashRow} - */ - static createFrom($$source = {}) { - const $$createField2_0 = $$createType0; - const $$createField8_0 = $$createType1; - const $$createField9_0 = $$createType1; - let $$parsedSource = typeof $$source === 'string' ? JSON.parse($$source) : $$source; - if ("StatusID" in $$parsedSource) { - $$parsedSource["StatusID"] = $$createField2_0($$parsedSource["StatusID"]); - } - if ("PublishedAt" in $$parsedSource) { - $$parsedSource["PublishedAt"] = $$createField8_0($$parsedSource["PublishedAt"]); - } - if ("EventID" in $$parsedSource) { - $$parsedSource["EventID"] = $$createField9_0($$parsedSource["EventID"]); - } - return new CreateNoteFromTrashRow(/** @type {Partial} */($$parsedSource)); - } -} - -export class GetNoteFromTrashRow { - /** - * Creates a new GetNoteFromTrashRow instance. - * @param {Partial} [$$source = {}] - The source object to create the GetNoteFromTrashRow. - */ - constructor($$source = {}) { - if (!("ID" in $$source)) { - /** - * @member - * @type {number} - */ - this["ID"] = 0; - } - if (!("NoteID" in $$source)) { - /** - * @member - * @type {number} - */ - this["NoteID"] = 0; - } - if (!("Content" in $$source)) { - /** - * @member - * @type {string} - */ - this["Content"] = ""; - } - if (!("Title" in $$source)) { - /** - * @member - * @type {string} - */ - this["Title"] = ""; - } - if (!("CreatedAt" in $$source)) { - /** - * @member - * @type {string} - */ - this["CreatedAt"] = ""; - } - if (!("ModifiedAt" in $$source)) { - /** - * @member - * @type {string} - */ - this["ModifiedAt"] = ""; - } - if (!("Tags" in $$source)) { - /** - * @member - * @type {sql$0.NullString} - */ - this["Tags"] = (new sql$0.NullString()); - } - if (!("NotebookID" in $$source)) { - /** - * @member - * @type {number} - */ - this["NotebookID"] = 0; - } - if (!("PublishedAt" in $$source)) { - /** - * @member - * @type {sql$0.NullString} - */ - this["PublishedAt"] = (new sql$0.NullString()); - } - if (!("EventID" in $$source)) { - /** - * @member - * @type {sql$0.NullString} - */ - this["EventID"] = (new sql$0.NullString()); - } - if (!("Notetype" in $$source)) { - /** - * @member - * @type {string} - */ - this["Notetype"] = ""; - } - if (!("Filetype" in $$source)) { - /** - * @member - * @type {string} - */ - this["Filetype"] = ""; - } - - Object.assign(this, $$source); - } - - /** - * Creates a new GetNoteFromTrashRow instance from a string or object. - * @param {any} [$$source = {}] - * @returns {GetNoteFromTrashRow} - */ - static createFrom($$source = {}) { - const $$createField6_0 = $$createType1; - const $$createField8_0 = $$createType1; - const $$createField9_0 = $$createType1; - let $$parsedSource = typeof $$source === 'string' ? JSON.parse($$source) : $$source; - if ("Tags" in $$parsedSource) { - $$parsedSource["Tags"] = $$createField6_0($$parsedSource["Tags"]); - } - if ("PublishedAt" in $$parsedSource) { - $$parsedSource["PublishedAt"] = $$createField8_0($$parsedSource["PublishedAt"]); - } - if ("EventID" in $$parsedSource) { - $$parsedSource["EventID"] = $$createField9_0($$parsedSource["EventID"]); - } - return new GetNoteFromTrashRow(/** @type {Partial} */($$parsedSource)); - } -} - -export class Note { - /** - * Creates a new Note instance. - * @param {Partial} [$$source = {}] - The source object to create the Note. - */ - constructor($$source = {}) { - if (!("ID" in $$source)) { - /** - * @member - * @type {number} - */ - this["ID"] = 0; - } - if (!("StatusID" in $$source)) { - /** - * @member - * @type {sql$0.NullInt64} - */ - this["StatusID"] = (new sql$0.NullInt64()); - } - if (!("NotebookID" in $$source)) { - /** - * @member - * @type {number} - */ - this["NotebookID"] = 0; - } - if (!("Content" in $$source)) { - /** - * @member - * @type {string} - */ - this["Content"] = ""; - } - if (!("Title" in $$source)) { - /** - * @member - * @type {string} - */ - this["Title"] = ""; - } - if (!("CreatedAt" in $$source)) { - /** - * @member - * @type {string} - */ - this["CreatedAt"] = ""; - } - if (!("ModifiedAt" in $$source)) { - /** - * @member - * @type {string} - */ - this["ModifiedAt"] = ""; - } - if (!("PublishedAt" in $$source)) { - /** - * @member - * @type {sql$0.NullString} - */ - this["PublishedAt"] = (new sql$0.NullString()); - } - if (!("EventID" in $$source)) { - /** - * @member - * @type {sql$0.NullString} - */ - this["EventID"] = (new sql$0.NullString()); - } - if (!("Pinned" in $$source)) { - /** - * @member - * @type {boolean} - */ - this["Pinned"] = false; - } - if (!("Notetype" in $$source)) { - /** - * @member - * @type {string} - */ - this["Notetype"] = ""; - } - if (!("Filetype" in $$source)) { - /** - * @member - * @type {string} - */ - this["Filetype"] = ""; - } - - Object.assign(this, $$source); - } - - /** - * Creates a new Note instance from a string or object. - * @param {any} [$$source = {}] - * @returns {Note} - */ - static createFrom($$source = {}) { - const $$createField1_0 = $$createType0; - const $$createField7_0 = $$createType1; - const $$createField8_0 = $$createType1; - let $$parsedSource = typeof $$source === 'string' ? JSON.parse($$source) : $$source; - if ("StatusID" in $$parsedSource) { - $$parsedSource["StatusID"] = $$createField1_0($$parsedSource["StatusID"]); - } - if ("PublishedAt" in $$parsedSource) { - $$parsedSource["PublishedAt"] = $$createField7_0($$parsedSource["PublishedAt"]); - } - if ("EventID" in $$parsedSource) { - $$parsedSource["EventID"] = $$createField8_0($$parsedSource["EventID"]); - } - return new Note(/** @type {Partial} */($$parsedSource)); - } -} - -export class Notebook { - /** - * Creates a new Notebook instance. - * @param {Partial} [$$source = {}] - The source object to create the Notebook. - */ - constructor($$source = {}) { - if (!("ID" in $$source)) { - /** - * @member - * @type {number} - */ - this["ID"] = 0; - } - if (!("Name" in $$source)) { - /** - * @member - * @type {string} - */ - this["Name"] = ""; - } - if (!("CreatedAt" in $$source)) { - /** - * @member - * @type {string} - */ - this["CreatedAt"] = ""; - } - - Object.assign(this, $$source); - } - - /** - * Creates a new Notebook instance from a string or object. - * @param {any} [$$source = {}] - * @returns {Notebook} - */ - static createFrom($$source = {}) { - let $$parsedSource = typeof $$source === 'string' ? JSON.parse($$source) : $$source; - return new Notebook(/** @type {Partial} */($$parsedSource)); - } -} - -export class Tag { - /** - * Creates a new Tag instance. - * @param {Partial} [$$source = {}] - The source object to create the Tag. - */ - constructor($$source = {}) { - if (!("ID" in $$source)) { - /** - * @member - * @type {number} - */ - this["ID"] = 0; - } - if (!("Name" in $$source)) { - /** - * @member - * @type {string} - */ - this["Name"] = ""; - } - if (!("Color" in $$source)) { - /** - * @member - * @type {sql$0.NullString} - */ - this["Color"] = (new sql$0.NullString()); - } - if (!("Icon" in $$source)) { - /** - * @member - * @type {sql$0.NullString} - */ - this["Icon"] = (new sql$0.NullString()); - } - if (!("CreatedAt" in $$source)) { - /** - * @member - * @type {string} - */ - this["CreatedAt"] = ""; - } - - Object.assign(this, $$source); - } - - /** - * Creates a new Tag instance from a string or object. - * @param {any} [$$source = {}] - * @returns {Tag} - */ - static createFrom($$source = {}) { - const $$createField2_0 = $$createType1; - const $$createField3_0 = $$createType1; - let $$parsedSource = typeof $$source === 'string' ? JSON.parse($$source) : $$source; - if ("Color" in $$parsedSource) { - $$parsedSource["Color"] = $$createField2_0($$parsedSource["Color"]); - } - if ("Icon" in $$parsedSource) { - $$parsedSource["Icon"] = $$createField3_0($$parsedSource["Icon"]); - } - return new Tag(/** @type {Partial} */($$parsedSource)); - } -} - -export class Trash { - /** - * Creates a new Trash instance. - * @param {Partial} [$$source = {}] - The source object to create the Trash. - */ - constructor($$source = {}) { - if (!("ID" in $$source)) { - /** - * @member - * @type {number} - */ - this["ID"] = 0; - } - if (!("NoteID" in $$source)) { - /** - * @member - * @type {number} - */ - this["NoteID"] = 0; - } - if (!("NotebookID" in $$source)) { - /** - * @member - * @type {number} - */ - this["NotebookID"] = 0; - } - if (!("Content" in $$source)) { - /** - * @member - * @type {string} - */ - this["Content"] = ""; - } - if (!("Title" in $$source)) { - /** - * @member - * @type {string} - */ - this["Title"] = ""; - } - if (!("CreatedAt" in $$source)) { - /** - * @member - * @type {string} - */ - this["CreatedAt"] = ""; - } - if (!("ModifiedAt" in $$source)) { - /** - * @member - * @type {string} - */ - this["ModifiedAt"] = ""; - } - if (!("Tags" in $$source)) { - /** - * @member - * @type {sql$0.NullString} - */ - this["Tags"] = (new sql$0.NullString()); - } - if (!("PublishedAt" in $$source)) { - /** - * @member - * @type {sql$0.NullString} - */ - this["PublishedAt"] = (new sql$0.NullString()); - } - if (!("EventID" in $$source)) { - /** - * @member - * @type {sql$0.NullString} - */ - this["EventID"] = (new sql$0.NullString()); - } - if (!("Notetype" in $$source)) { - /** - * @member - * @type {string} - */ - this["Notetype"] = ""; - } - if (!("Filetype" in $$source)) { - /** - * @member - * @type {string} - */ - this["Filetype"] = ""; - } - - Object.assign(this, $$source); - } - - /** - * Creates a new Trash instance from a string or object. - * @param {any} [$$source = {}] - * @returns {Trash} - */ - static createFrom($$source = {}) { - const $$createField7_0 = $$createType1; - const $$createField8_0 = $$createType1; - const $$createField9_0 = $$createType1; - let $$parsedSource = typeof $$source === 'string' ? JSON.parse($$source) : $$source; - if ("Tags" in $$parsedSource) { - $$parsedSource["Tags"] = $$createField7_0($$parsedSource["Tags"]); - } - if ("PublishedAt" in $$parsedSource) { - $$parsedSource["PublishedAt"] = $$createField8_0($$parsedSource["PublishedAt"]); - } - if ("EventID" in $$parsedSource) { - $$parsedSource["EventID"] = $$createField9_0($$parsedSource["EventID"]); - } - return new Trash(/** @type {Partial} */($$parsedSource)); - } -} - -// Private type creation functions -const $$createType0 = sql$0.NullInt64.createFrom; -const $$createType1 = sql$0.NullString.createFrom; diff --git a/frontend/bindings/github.com/nodetec/comet/db/models.ts b/frontend/bindings/github.com/nodetec/comet/db/models.ts deleted file mode 100644 index e2a46ea0..00000000 --- a/frontend/bindings/github.com/nodetec/comet/db/models.ts +++ /dev/null @@ -1,400 +0,0 @@ -// Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL -// This file is automatically generated. DO NOT EDIT - -// eslint-disable-next-line @typescript-eslint/ban-ts-comment -// @ts-ignore: Unused imports -import {Create as $Create} from "@wailsio/runtime"; - -// eslint-disable-next-line @typescript-eslint/ban-ts-comment -// @ts-ignore: Unused imports -import * as sql$0 from "../../../../database/sql/models.js"; - -export class CreateNoteFromTrashRow { - "ID": number; - "ID_2": number; - "StatusID": sql$0.NullInt64; - "NotebookID": number; - "Content": string; - "Title": string; - "CreatedAt": string; - "ModifiedAt": string; - "PublishedAt": sql$0.NullString; - "EventID": sql$0.NullString; - "Pinned": boolean; - "Notetype": string; - "Filetype": string; - - /** Creates a new CreateNoteFromTrashRow instance. */ - constructor($$source: Partial = {}) { - if (!("ID" in $$source)) { - this["ID"] = 0; - } - if (!("ID_2" in $$source)) { - this["ID_2"] = 0; - } - if (!("StatusID" in $$source)) { - this["StatusID"] = (new sql$0.NullInt64()); - } - if (!("NotebookID" in $$source)) { - this["NotebookID"] = 0; - } - if (!("Content" in $$source)) { - this["Content"] = ""; - } - if (!("Title" in $$source)) { - this["Title"] = ""; - } - if (!("CreatedAt" in $$source)) { - this["CreatedAt"] = ""; - } - if (!("ModifiedAt" in $$source)) { - this["ModifiedAt"] = ""; - } - if (!("PublishedAt" in $$source)) { - this["PublishedAt"] = (new sql$0.NullString()); - } - if (!("EventID" in $$source)) { - this["EventID"] = (new sql$0.NullString()); - } - if (!("Pinned" in $$source)) { - this["Pinned"] = false; - } - if (!("Notetype" in $$source)) { - this["Notetype"] = ""; - } - if (!("Filetype" in $$source)) { - this["Filetype"] = ""; - } - - Object.assign(this, $$source); - } - - /** - * Creates a new CreateNoteFromTrashRow instance from a string or object. - */ - static createFrom($$source: any = {}): CreateNoteFromTrashRow { - const $$createField2_0 = $$createType0; - const $$createField8_0 = $$createType1; - const $$createField9_0 = $$createType1; - let $$parsedSource = typeof $$source === 'string' ? JSON.parse($$source) : $$source; - if ("StatusID" in $$parsedSource) { - $$parsedSource["StatusID"] = $$createField2_0($$parsedSource["StatusID"]); - } - if ("PublishedAt" in $$parsedSource) { - $$parsedSource["PublishedAt"] = $$createField8_0($$parsedSource["PublishedAt"]); - } - if ("EventID" in $$parsedSource) { - $$parsedSource["EventID"] = $$createField9_0($$parsedSource["EventID"]); - } - return new CreateNoteFromTrashRow($$parsedSource as Partial); - } -} - -export class GetNoteFromTrashRow { - "ID": number; - "NoteID": number; - "Content": string; - "Title": string; - "CreatedAt": string; - "ModifiedAt": string; - "Tags": sql$0.NullString; - "NotebookID": number; - "PublishedAt": sql$0.NullString; - "EventID": sql$0.NullString; - "Notetype": string; - "Filetype": string; - - /** Creates a new GetNoteFromTrashRow instance. */ - constructor($$source: Partial = {}) { - if (!("ID" in $$source)) { - this["ID"] = 0; - } - if (!("NoteID" in $$source)) { - this["NoteID"] = 0; - } - if (!("Content" in $$source)) { - this["Content"] = ""; - } - if (!("Title" in $$source)) { - this["Title"] = ""; - } - if (!("CreatedAt" in $$source)) { - this["CreatedAt"] = ""; - } - if (!("ModifiedAt" in $$source)) { - this["ModifiedAt"] = ""; - } - if (!("Tags" in $$source)) { - this["Tags"] = (new sql$0.NullString()); - } - if (!("NotebookID" in $$source)) { - this["NotebookID"] = 0; - } - if (!("PublishedAt" in $$source)) { - this["PublishedAt"] = (new sql$0.NullString()); - } - if (!("EventID" in $$source)) { - this["EventID"] = (new sql$0.NullString()); - } - if (!("Notetype" in $$source)) { - this["Notetype"] = ""; - } - if (!("Filetype" in $$source)) { - this["Filetype"] = ""; - } - - Object.assign(this, $$source); - } - - /** - * Creates a new GetNoteFromTrashRow instance from a string or object. - */ - static createFrom($$source: any = {}): GetNoteFromTrashRow { - const $$createField6_0 = $$createType1; - const $$createField8_0 = $$createType1; - const $$createField9_0 = $$createType1; - let $$parsedSource = typeof $$source === 'string' ? JSON.parse($$source) : $$source; - if ("Tags" in $$parsedSource) { - $$parsedSource["Tags"] = $$createField6_0($$parsedSource["Tags"]); - } - if ("PublishedAt" in $$parsedSource) { - $$parsedSource["PublishedAt"] = $$createField8_0($$parsedSource["PublishedAt"]); - } - if ("EventID" in $$parsedSource) { - $$parsedSource["EventID"] = $$createField9_0($$parsedSource["EventID"]); - } - return new GetNoteFromTrashRow($$parsedSource as Partial); - } -} - -export class Note { - "ID": number; - "StatusID": sql$0.NullInt64; - "NotebookID": number; - "Content": string; - "Title": string; - "CreatedAt": string; - "ModifiedAt": string; - "PublishedAt": sql$0.NullString; - "EventID": sql$0.NullString; - "Pinned": boolean; - "Notetype": string; - "Filetype": string; - - /** Creates a new Note instance. */ - constructor($$source: Partial = {}) { - if (!("ID" in $$source)) { - this["ID"] = 0; - } - if (!("StatusID" in $$source)) { - this["StatusID"] = (new sql$0.NullInt64()); - } - if (!("NotebookID" in $$source)) { - this["NotebookID"] = 0; - } - if (!("Content" in $$source)) { - this["Content"] = ""; - } - if (!("Title" in $$source)) { - this["Title"] = ""; - } - if (!("CreatedAt" in $$source)) { - this["CreatedAt"] = ""; - } - if (!("ModifiedAt" in $$source)) { - this["ModifiedAt"] = ""; - } - if (!("PublishedAt" in $$source)) { - this["PublishedAt"] = (new sql$0.NullString()); - } - if (!("EventID" in $$source)) { - this["EventID"] = (new sql$0.NullString()); - } - if (!("Pinned" in $$source)) { - this["Pinned"] = false; - } - if (!("Notetype" in $$source)) { - this["Notetype"] = ""; - } - if (!("Filetype" in $$source)) { - this["Filetype"] = ""; - } - - Object.assign(this, $$source); - } - - /** - * Creates a new Note instance from a string or object. - */ - static createFrom($$source: any = {}): Note { - const $$createField1_0 = $$createType0; - const $$createField7_0 = $$createType1; - const $$createField8_0 = $$createType1; - let $$parsedSource = typeof $$source === 'string' ? JSON.parse($$source) : $$source; - if ("StatusID" in $$parsedSource) { - $$parsedSource["StatusID"] = $$createField1_0($$parsedSource["StatusID"]); - } - if ("PublishedAt" in $$parsedSource) { - $$parsedSource["PublishedAt"] = $$createField7_0($$parsedSource["PublishedAt"]); - } - if ("EventID" in $$parsedSource) { - $$parsedSource["EventID"] = $$createField8_0($$parsedSource["EventID"]); - } - return new Note($$parsedSource as Partial); - } -} - -export class Notebook { - "ID": number; - "Name": string; - "CreatedAt": string; - - /** Creates a new Notebook instance. */ - constructor($$source: Partial = {}) { - if (!("ID" in $$source)) { - this["ID"] = 0; - } - if (!("Name" in $$source)) { - this["Name"] = ""; - } - if (!("CreatedAt" in $$source)) { - this["CreatedAt"] = ""; - } - - Object.assign(this, $$source); - } - - /** - * Creates a new Notebook instance from a string or object. - */ - static createFrom($$source: any = {}): Notebook { - let $$parsedSource = typeof $$source === 'string' ? JSON.parse($$source) : $$source; - return new Notebook($$parsedSource as Partial); - } -} - -export class Tag { - "ID": number; - "Name": string; - "Color": sql$0.NullString; - "Icon": sql$0.NullString; - "CreatedAt": string; - - /** Creates a new Tag instance. */ - constructor($$source: Partial = {}) { - if (!("ID" in $$source)) { - this["ID"] = 0; - } - if (!("Name" in $$source)) { - this["Name"] = ""; - } - if (!("Color" in $$source)) { - this["Color"] = (new sql$0.NullString()); - } - if (!("Icon" in $$source)) { - this["Icon"] = (new sql$0.NullString()); - } - if (!("CreatedAt" in $$source)) { - this["CreatedAt"] = ""; - } - - Object.assign(this, $$source); - } - - /** - * Creates a new Tag instance from a string or object. - */ - static createFrom($$source: any = {}): Tag { - const $$createField2_0 = $$createType1; - const $$createField3_0 = $$createType1; - let $$parsedSource = typeof $$source === 'string' ? JSON.parse($$source) : $$source; - if ("Color" in $$parsedSource) { - $$parsedSource["Color"] = $$createField2_0($$parsedSource["Color"]); - } - if ("Icon" in $$parsedSource) { - $$parsedSource["Icon"] = $$createField3_0($$parsedSource["Icon"]); - } - return new Tag($$parsedSource as Partial); - } -} - -export class Trash { - "ID": number; - "NoteID": number; - "NotebookID": number; - "Content": string; - "Title": string; - "CreatedAt": string; - "ModifiedAt": string; - "Tags": sql$0.NullString; - "PublishedAt": sql$0.NullString; - "EventID": sql$0.NullString; - "Notetype": string; - "Filetype": string; - - /** Creates a new Trash instance. */ - constructor($$source: Partial = {}) { - if (!("ID" in $$source)) { - this["ID"] = 0; - } - if (!("NoteID" in $$source)) { - this["NoteID"] = 0; - } - if (!("NotebookID" in $$source)) { - this["NotebookID"] = 0; - } - if (!("Content" in $$source)) { - this["Content"] = ""; - } - if (!("Title" in $$source)) { - this["Title"] = ""; - } - if (!("CreatedAt" in $$source)) { - this["CreatedAt"] = ""; - } - if (!("ModifiedAt" in $$source)) { - this["ModifiedAt"] = ""; - } - if (!("Tags" in $$source)) { - this["Tags"] = (new sql$0.NullString()); - } - if (!("PublishedAt" in $$source)) { - this["PublishedAt"] = (new sql$0.NullString()); - } - if (!("EventID" in $$source)) { - this["EventID"] = (new sql$0.NullString()); - } - if (!("Notetype" in $$source)) { - this["Notetype"] = ""; - } - if (!("Filetype" in $$source)) { - this["Filetype"] = ""; - } - - Object.assign(this, $$source); - } - - /** - * Creates a new Trash instance from a string or object. - */ - static createFrom($$source: any = {}): Trash { - const $$createField7_0 = $$createType1; - const $$createField8_0 = $$createType1; - const $$createField9_0 = $$createType1; - let $$parsedSource = typeof $$source === 'string' ? JSON.parse($$source) : $$source; - if ("Tags" in $$parsedSource) { - $$parsedSource["Tags"] = $$createField7_0($$parsedSource["Tags"]); - } - if ("PublishedAt" in $$parsedSource) { - $$parsedSource["PublishedAt"] = $$createField8_0($$parsedSource["PublishedAt"]); - } - if ("EventID" in $$parsedSource) { - $$parsedSource["EventID"] = $$createField9_0($$parsedSource["EventID"]); - } - return new Trash($$parsedSource as Partial); - } -} - -// Private type creation functions -const $$createType0 = sql$0.NullInt64.createFrom; -const $$createType1 = sql$0.NullString.createFrom; diff --git a/frontend/bindings/github.com/nodetec/comet/service/index.js b/frontend/bindings/github.com/nodetec/comet/service/index.js deleted file mode 100644 index a6295320..00000000 --- a/frontend/bindings/github.com/nodetec/comet/service/index.js +++ /dev/null @@ -1,22 +0,0 @@ -// @ts-check -// Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL -// This file is automatically generated. DO NOT EDIT - -import * as NostrKeyService from "./nostrkeyservice.js"; -import * as NoteService from "./noteservice.js"; -import * as NoteTagService from "./notetagservice.js"; -import * as NotebookService from "./notebookservice.js"; -import * as RelayService from "./relayservice.js"; -import * as SettingService from "./settingservice.js"; -import * as TagService from "./tagservice.js"; -export { - NostrKeyService, - NoteService, - NoteTagService, - NotebookService, - RelayService, - SettingService, - TagService -}; - -export * from "./models.js"; diff --git a/frontend/bindings/github.com/nodetec/comet/service/index.ts b/frontend/bindings/github.com/nodetec/comet/service/index.ts deleted file mode 100644 index 0b82bfa5..00000000 --- a/frontend/bindings/github.com/nodetec/comet/service/index.ts +++ /dev/null @@ -1,21 +0,0 @@ -// Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL -// This file is automatically generated. DO NOT EDIT - -import * as NostrKeyService from "./nostrkeyservice.js"; -import * as NoteService from "./noteservice.js"; -import * as NoteTagService from "./notetagservice.js"; -import * as NotebookService from "./notebookservice.js"; -import * as RelayService from "./relayservice.js"; -import * as SettingService from "./settingservice.js"; -import * as TagService from "./tagservice.js"; -export { - NostrKeyService, - NoteService, - NoteTagService, - NotebookService, - RelayService, - SettingService, - TagService -}; - -export * from "./models.js"; diff --git a/frontend/bindings/github.com/nodetec/comet/service/models.js b/frontend/bindings/github.com/nodetec/comet/service/models.js deleted file mode 100644 index 7de58111..00000000 --- a/frontend/bindings/github.com/nodetec/comet/service/models.js +++ /dev/null @@ -1,292 +0,0 @@ -// @ts-check -// Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL -// This file is automatically generated. DO NOT EDIT - -// eslint-disable-next-line @typescript-eslint/ban-ts-comment -// @ts-ignore: Unused imports -import {Create as $Create} from "@wailsio/runtime"; - -// eslint-disable-next-line @typescript-eslint/ban-ts-comment -// @ts-ignore: Unused imports -import * as sql$0 from "../../../../database/sql/models.js"; - -export class NostrKey { - /** - * Creates a new NostrKey instance. - * @param {Partial} [$$source = {}] - The source object to create the NostrKey. - */ - constructor($$source = {}) { - if (!("ID" in $$source)) { - /** - * @member - * @type {number} - */ - this["ID"] = 0; - } - if (!("Nsec" in $$source)) { - /** - * @member - * @type {string} - */ - this["Nsec"] = ""; - } - if (!("Npub" in $$source)) { - /** - * @member - * @type {string} - */ - this["Npub"] = ""; - } - if (!("Active" in $$source)) { - /** - * @member - * @type {boolean} - */ - this["Active"] = false; - } - - Object.assign(this, $$source); - } - - /** - * Creates a new NostrKey instance from a string or object. - * @param {any} [$$source = {}] - * @returns {NostrKey} - */ - static createFrom($$source = {}) { - let $$parsedSource = typeof $$source === 'string' ? JSON.parse($$source) : $$source; - return new NostrKey(/** @type {Partial} */($$parsedSource)); - } -} - -export class Relay { - /** - * Creates a new Relay instance. - * @param {Partial} [$$source = {}] - The source object to create the Relay. - */ - constructor($$source = {}) { - if (!("ID" in $$source)) { - /** - * @member - * @type {number} - */ - this["ID"] = 0; - } - if (!("Url" in $$source)) { - /** - * @member - * @type {string} - */ - this["Url"] = ""; - } - if (!("Read" in $$source)) { - /** - * @member - * @type {boolean} - */ - this["Read"] = false; - } - if (!("Write" in $$source)) { - /** - * @member - * @type {boolean} - */ - this["Write"] = false; - } - if (!("Sync" in $$source)) { - /** - * @member - * @type {boolean} - */ - this["Sync"] = false; - } - - Object.assign(this, $$source); - } - - /** - * Creates a new Relay instance from a string or object. - * @param {any} [$$source = {}] - * @returns {Relay} - */ - static createFrom($$source = {}) { - let $$parsedSource = typeof $$source === 'string' ? JSON.parse($$source) : $$source; - return new Relay(/** @type {Partial} */($$parsedSource)); - } -} - -export class Settings { - /** - * Creates a new Settings instance. - * @param {Partial} [$$source = {}] - The source object to create the Settings. - */ - constructor($$source = {}) { - if (!("Theme" in $$source)) { - /** - * theme - * @member - * @type {string} - */ - this["Theme"] = ""; - } - if (!("Vim" in $$source)) { - /** - * editor - * @member - * @type {string} - */ - this["Vim"] = ""; - } - if (!("LineNumbers" in $$source)) { - /** - * @member - * @type {string} - */ - this["LineNumbers"] = ""; - } - if (!("HighlightActiveLine" in $$source)) { - /** - * @member - * @type {string} - */ - this["HighlightActiveLine"] = ""; - } - if (!("LineWrapping" in $$source)) { - /** - * @member - * @type {string} - */ - this["LineWrapping"] = ""; - } - if (!("IndentSpaces" in $$source)) { - /** - * @member - * @type {string} - */ - this["IndentSpaces"] = ""; - } - if (!("FontSize" in $$source)) { - /** - * @member - * @type {string} - */ - this["FontSize"] = ""; - } - if (!("FontFamily" in $$source)) { - /** - * @member - * @type {string} - */ - this["FontFamily"] = ""; - } - if (!("LineHeight" in $$source)) { - /** - * @member - * @type {string} - */ - this["LineHeight"] = ""; - } - if (!("Npub" in $$source)) { - /** - * profile - * @member - * @type {string} - */ - this["Npub"] = ""; - } - if (!("Nsec" in $$source)) { - /** - * @member - * @type {string} - */ - this["Nsec"] = ""; - } - if (!("Relays" in $$source)) { - /** - * relays - * @member - * @type {string} - */ - this["Relays"] = ""; - } - - Object.assign(this, $$source); - } - - /** - * Creates a new Settings instance from a string or object. - * @param {any} [$$source = {}] - * @returns {Settings} - */ - static createFrom($$source = {}) { - let $$parsedSource = typeof $$source === 'string' ? JSON.parse($$source) : $$source; - return new Settings(/** @type {Partial} */($$parsedSource)); - } -} - -export class Tag { - /** - * Creates a new Tag instance. - * @param {Partial} [$$source = {}] - The source object to create the Tag. - */ - constructor($$source = {}) { - if (!("ID" in $$source)) { - /** - * @member - * @type {number} - */ - this["ID"] = 0; - } - if (!("Name" in $$source)) { - /** - * @member - * @type {string} - */ - this["Name"] = ""; - } - if (!("Color" in $$source)) { - /** - * @member - * @type {sql$0.NullString} - */ - this["Color"] = (new sql$0.NullString()); - } - if (!("Icon" in $$source)) { - /** - * @member - * @type {sql$0.NullString} - */ - this["Icon"] = (new sql$0.NullString()); - } - if (!("CreatedAt" in $$source)) { - /** - * @member - * @type {string} - */ - this["CreatedAt"] = ""; - } - - Object.assign(this, $$source); - } - - /** - * Creates a new Tag instance from a string or object. - * @param {any} [$$source = {}] - * @returns {Tag} - */ - static createFrom($$source = {}) { - const $$createField2_0 = $$createType0; - const $$createField3_0 = $$createType0; - let $$parsedSource = typeof $$source === 'string' ? JSON.parse($$source) : $$source; - if ("Color" in $$parsedSource) { - $$parsedSource["Color"] = $$createField2_0($$parsedSource["Color"]); - } - if ("Icon" in $$parsedSource) { - $$parsedSource["Icon"] = $$createField3_0($$parsedSource["Icon"]); - } - return new Tag(/** @type {Partial} */($$parsedSource)); - } -} - -// Private type creation functions -const $$createType0 = sql$0.NullString.createFrom; diff --git a/frontend/bindings/github.com/nodetec/comet/service/models.ts b/frontend/bindings/github.com/nodetec/comet/service/models.ts deleted file mode 100644 index c2ebc7d5..00000000 --- a/frontend/bindings/github.com/nodetec/comet/service/models.ts +++ /dev/null @@ -1,208 +0,0 @@ -// Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL -// This file is automatically generated. DO NOT EDIT - -// eslint-disable-next-line @typescript-eslint/ban-ts-comment -// @ts-ignore: Unused imports -import {Create as $Create} from "@wailsio/runtime"; - -// eslint-disable-next-line @typescript-eslint/ban-ts-comment -// @ts-ignore: Unused imports -import * as sql$0 from "../../../../database/sql/models.js"; - -export class NostrKey { - "ID": number; - "Nsec": string; - "Npub": string; - "Active": boolean; - - /** Creates a new NostrKey instance. */ - constructor($$source: Partial = {}) { - if (!("ID" in $$source)) { - this["ID"] = 0; - } - if (!("Nsec" in $$source)) { - this["Nsec"] = ""; - } - if (!("Npub" in $$source)) { - this["Npub"] = ""; - } - if (!("Active" in $$source)) { - this["Active"] = false; - } - - Object.assign(this, $$source); - } - - /** - * Creates a new NostrKey instance from a string or object. - */ - static createFrom($$source: any = {}): NostrKey { - let $$parsedSource = typeof $$source === 'string' ? JSON.parse($$source) : $$source; - return new NostrKey($$parsedSource as Partial); - } -} - -export class Relay { - "ID": number; - "Url": string; - "Read": boolean; - "Write": boolean; - "Sync": boolean; - - /** Creates a new Relay instance. */ - constructor($$source: Partial = {}) { - if (!("ID" in $$source)) { - this["ID"] = 0; - } - if (!("Url" in $$source)) { - this["Url"] = ""; - } - if (!("Read" in $$source)) { - this["Read"] = false; - } - if (!("Write" in $$source)) { - this["Write"] = false; - } - if (!("Sync" in $$source)) { - this["Sync"] = false; - } - - Object.assign(this, $$source); - } - - /** - * Creates a new Relay instance from a string or object. - */ - static createFrom($$source: any = {}): Relay { - let $$parsedSource = typeof $$source === 'string' ? JSON.parse($$source) : $$source; - return new Relay($$parsedSource as Partial); - } -} - -export class Settings { - /** - * theme - */ - "Theme": string; - - /** - * editor - */ - "Vim": string; - "LineNumbers": string; - "HighlightActiveLine": string; - "LineWrapping": string; - "IndentSpaces": string; - "FontSize": string; - "FontFamily": string; - "LineHeight": string; - - /** - * profile - */ - "Npub": string; - "Nsec": string; - - /** - * relays - */ - "Relays": string; - - /** Creates a new Settings instance. */ - constructor($$source: Partial = {}) { - if (!("Theme" in $$source)) { - this["Theme"] = ""; - } - if (!("Vim" in $$source)) { - this["Vim"] = ""; - } - if (!("LineNumbers" in $$source)) { - this["LineNumbers"] = ""; - } - if (!("HighlightActiveLine" in $$source)) { - this["HighlightActiveLine"] = ""; - } - if (!("LineWrapping" in $$source)) { - this["LineWrapping"] = ""; - } - if (!("IndentSpaces" in $$source)) { - this["IndentSpaces"] = ""; - } - if (!("FontSize" in $$source)) { - this["FontSize"] = ""; - } - if (!("FontFamily" in $$source)) { - this["FontFamily"] = ""; - } - if (!("LineHeight" in $$source)) { - this["LineHeight"] = ""; - } - if (!("Npub" in $$source)) { - this["Npub"] = ""; - } - if (!("Nsec" in $$source)) { - this["Nsec"] = ""; - } - if (!("Relays" in $$source)) { - this["Relays"] = ""; - } - - Object.assign(this, $$source); - } - - /** - * Creates a new Settings instance from a string or object. - */ - static createFrom($$source: any = {}): Settings { - let $$parsedSource = typeof $$source === 'string' ? JSON.parse($$source) : $$source; - return new Settings($$parsedSource as Partial); - } -} - -export class Tag { - "ID": number; - "Name": string; - "Color": sql$0.NullString; - "Icon": sql$0.NullString; - "CreatedAt": string; - - /** Creates a new Tag instance. */ - constructor($$source: Partial = {}) { - if (!("ID" in $$source)) { - this["ID"] = 0; - } - if (!("Name" in $$source)) { - this["Name"] = ""; - } - if (!("Color" in $$source)) { - this["Color"] = (new sql$0.NullString()); - } - if (!("Icon" in $$source)) { - this["Icon"] = (new sql$0.NullString()); - } - if (!("CreatedAt" in $$source)) { - this["CreatedAt"] = ""; - } - - Object.assign(this, $$source); - } - - /** - * Creates a new Tag instance from a string or object. - */ - static createFrom($$source: any = {}): Tag { - const $$createField2_0 = $$createType0; - const $$createField3_0 = $$createType0; - let $$parsedSource = typeof $$source === 'string' ? JSON.parse($$source) : $$source; - if ("Color" in $$parsedSource) { - $$parsedSource["Color"] = $$createField2_0($$parsedSource["Color"]); - } - if ("Icon" in $$parsedSource) { - $$parsedSource["Icon"] = $$createField3_0($$parsedSource["Icon"]); - } - return new Tag($$parsedSource as Partial); - } -} - -// Private type creation functions -const $$createType0 = sql$0.NullString.createFrom; diff --git a/frontend/bindings/github.com/nodetec/comet/service/nostrkeyservice.js b/frontend/bindings/github.com/nodetec/comet/service/nostrkeyservice.js deleted file mode 100644 index 85623c14..00000000 --- a/frontend/bindings/github.com/nodetec/comet/service/nostrkeyservice.js +++ /dev/null @@ -1,76 +0,0 @@ -// @ts-check -// Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL -// This file is automatically generated. DO NOT EDIT - -// eslint-disable-next-line @typescript-eslint/ban-ts-comment -// @ts-ignore: Unused imports -import {Call as $Call, Create as $Create} from "@wailsio/runtime"; - -// eslint-disable-next-line @typescript-eslint/ban-ts-comment -// @ts-ignore: Unused imports -import * as $models from "./models.js"; - -/** - * @param {string} nsec - * @param {string} npub - * @param {boolean} active - * @returns {Promise<$models.NostrKey> & { cancel(): void }} - */ -export function CreateNostrKey(nsec, npub, active) { - let $resultPromise = /** @type {any} */($Call.ByID(450605574, nsec, npub, active)); - let $typingPromise = /** @type {any} */($resultPromise.then(($result) => { - return $$createType0($result); - })); - $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); - return $typingPromise; -} - -/** - * @param {number} id - * @returns {Promise & { cancel(): void }} - */ -export function DeleteNostrKey(id) { - let $resultPromise = /** @type {any} */($Call.ByID(907990853, id)); - return $resultPromise; -} - -/** - * @param {number} id - * @returns {Promise<$models.NostrKey> & { cancel(): void }} - */ -export function GetNostrKey(id) { - let $resultPromise = /** @type {any} */($Call.ByID(3016819188, id)); - let $typingPromise = /** @type {any} */($resultPromise.then(($result) => { - return $$createType0($result); - })); - $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); - return $typingPromise; -} - -/** - * @returns {Promise<$models.NostrKey[]> & { cancel(): void }} - */ -export function ListNostrKeys() { - let $resultPromise = /** @type {any} */($Call.ByID(2591303287)); - let $typingPromise = /** @type {any} */($resultPromise.then(($result) => { - return $$createType1($result); - })); - $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); - return $typingPromise; -} - -/** - * @param {number} id - * @param {string} nsec - * @param {string} npub - * @param {boolean} active - * @returns {Promise & { cancel(): void }} - */ -export function UpdateNostrKey(id, nsec, npub, active) { - let $resultPromise = /** @type {any} */($Call.ByID(3751870067, id, nsec, npub, active)); - return $resultPromise; -} - -// Private type creation functions -const $$createType0 = $models.NostrKey.createFrom; -const $$createType1 = $Create.Array($$createType0); diff --git a/frontend/bindings/github.com/nodetec/comet/service/nostrkeyservice.ts b/frontend/bindings/github.com/nodetec/comet/service/nostrkeyservice.ts deleted file mode 100644 index d1142c67..00000000 --- a/frontend/bindings/github.com/nodetec/comet/service/nostrkeyservice.ts +++ /dev/null @@ -1,51 +0,0 @@ -// Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL -// This file is automatically generated. DO NOT EDIT - -// eslint-disable-next-line @typescript-eslint/ban-ts-comment -// @ts-ignore: Unused imports -import {Call as $Call, Create as $Create} from "@wailsio/runtime"; - -// eslint-disable-next-line @typescript-eslint/ban-ts-comment -// @ts-ignore: Unused imports -import * as $models from "./models.js"; - -export function CreateNostrKey(nsec: string, npub: string, active: boolean): Promise<$models.NostrKey> & { cancel(): void } { - let $resultPromise = $Call.ByID(450605574, nsec, npub, active) as any; - let $typingPromise = $resultPromise.then(($result) => { - return $$createType0($result); - }) as any; - $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); - return $typingPromise; -} - -export function DeleteNostrKey(id: number): Promise & { cancel(): void } { - let $resultPromise = $Call.ByID(907990853, id) as any; - return $resultPromise; -} - -export function GetNostrKey(id: number): Promise<$models.NostrKey> & { cancel(): void } { - let $resultPromise = $Call.ByID(3016819188, id) as any; - let $typingPromise = $resultPromise.then(($result) => { - return $$createType0($result); - }) as any; - $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); - return $typingPromise; -} - -export function ListNostrKeys(): Promise<$models.NostrKey[]> & { cancel(): void } { - let $resultPromise = $Call.ByID(2591303287) as any; - let $typingPromise = $resultPromise.then(($result) => { - return $$createType1($result); - }) as any; - $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); - return $typingPromise; -} - -export function UpdateNostrKey(id: number, nsec: string, npub: string, active: boolean): Promise & { cancel(): void } { - let $resultPromise = $Call.ByID(3751870067, id, nsec, npub, active) as any; - return $resultPromise; -} - -// Private type creation functions -const $$createType0 = $models.NostrKey.createFrom; -const $$createType1 = $Create.Array($$createType0); diff --git a/frontend/bindings/github.com/nodetec/comet/service/notebookservice.js b/frontend/bindings/github.com/nodetec/comet/service/notebookservice.js deleted file mode 100644 index e7a6bc0f..00000000 --- a/frontend/bindings/github.com/nodetec/comet/service/notebookservice.js +++ /dev/null @@ -1,127 +0,0 @@ -// @ts-check -// Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL -// This file is automatically generated. DO NOT EDIT - -// eslint-disable-next-line @typescript-eslint/ban-ts-comment -// @ts-ignore: Unused imports -import {Call as $Call, Create as $Create} from "@wailsio/runtime"; - -// eslint-disable-next-line @typescript-eslint/ban-ts-comment -// @ts-ignore: Unused imports -import * as db$0 from "../db/models.js"; - -/** - * @param {number} notebookID - * @param {number} tagID - * @returns {Promise & { cancel(): void }} - */ -export function AddTagToNotebook(notebookID, tagID) { - let $resultPromise = /** @type {any} */($Call.ByID(2083083162, notebookID, tagID)); - return $resultPromise; -} - -/** - * @param {number} notebookID - * @param {number} tagID - * @returns {Promise & { cancel(): void }} - */ -export function CheckTagForNotebook(notebookID, tagID) { - let $resultPromise = /** @type {any} */($Call.ByID(1901298027, notebookID, tagID)); - return $resultPromise; -} - -/** - * @param {string} name - * @returns {Promise & { cancel(): void }} - */ -export function CreateNotebook(name) { - let $resultPromise = /** @type {any} */($Call.ByID(4169347514, name)); - let $typingPromise = /** @type {any} */($resultPromise.then(($result) => { - return $$createType0($result); - })); - $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); - return $typingPromise; -} - -/** - * @param {number} id - * @returns {Promise & { cancel(): void }} - */ -export function DeleteNotebook(id) { - let $resultPromise = /** @type {any} */($Call.ByID(588830629, id)); - return $resultPromise; -} - -/** - * @param {number} id - * @returns {Promise & { cancel(): void }} - */ -export function GetNotebook(id) { - let $resultPromise = /** @type {any} */($Call.ByID(2651103660, id)); - let $typingPromise = /** @type {any} */($resultPromise.then(($result) => { - return $$createType0($result); - })); - $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); - return $typingPromise; -} - -/** - * @param {number} notebookID - * @returns {Promise & { cancel(): void }} - */ -export function GetTagsForNotebook(notebookID) { - let $resultPromise = /** @type {any} */($Call.ByID(1666855918, notebookID)); - let $typingPromise = /** @type {any} */($resultPromise.then(($result) => { - return $$createType2($result); - })); - $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); - return $typingPromise; -} - -/** - * @returns {Promise & { cancel(): void }} - */ -export function ListNotebooks() { - let $resultPromise = /** @type {any} */($Call.ByID(595334731)); - let $typingPromise = /** @type {any} */($resultPromise.then(($result) => { - return $$createType3($result); - })); - $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); - return $typingPromise; -} - -/** - * @param {number} notebookID - * @returns {Promise & { cancel(): void }} - */ -export function RemoveAllTagsFromNotebook(notebookID) { - let $resultPromise = /** @type {any} */($Call.ByID(2397072902, notebookID)); - return $resultPromise; -} - -/** - * @param {number} notebookID - * @param {number} tagID - * @returns {Promise & { cancel(): void }} - */ -export function RemoveTagFromNotebook(notebookID, tagID) { - let $resultPromise = /** @type {any} */($Call.ByID(2184813900, notebookID, tagID)); - return $resultPromise; -} - -/** - * @param {number} id - * @param {string} name - * @param {string} createdAt - * @returns {Promise & { cancel(): void }} - */ -export function UpdateNotebook(id, name, createdAt) { - let $resultPromise = /** @type {any} */($Call.ByID(1306217847, id, name, createdAt)); - return $resultPromise; -} - -// Private type creation functions -const $$createType0 = db$0.Notebook.createFrom; -const $$createType1 = db$0.Tag.createFrom; -const $$createType2 = $Create.Array($$createType1); -const $$createType3 = $Create.Array($$createType0); diff --git a/frontend/bindings/github.com/nodetec/comet/service/notebookservice.ts b/frontend/bindings/github.com/nodetec/comet/service/notebookservice.ts deleted file mode 100644 index c184b348..00000000 --- a/frontend/bindings/github.com/nodetec/comet/service/notebookservice.ts +++ /dev/null @@ -1,82 +0,0 @@ -// Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL -// This file is automatically generated. DO NOT EDIT - -// eslint-disable-next-line @typescript-eslint/ban-ts-comment -// @ts-ignore: Unused imports -import {Call as $Call, Create as $Create} from "@wailsio/runtime"; - -// eslint-disable-next-line @typescript-eslint/ban-ts-comment -// @ts-ignore: Unused imports -import * as db$0 from "../db/models.js"; - -export function AddTagToNotebook(notebookID: number, tagID: number): Promise & { cancel(): void } { - let $resultPromise = $Call.ByID(2083083162, notebookID, tagID) as any; - return $resultPromise; -} - -export function CheckTagForNotebook(notebookID: number, tagID: number): Promise & { cancel(): void } { - let $resultPromise = $Call.ByID(1901298027, notebookID, tagID) as any; - return $resultPromise; -} - -export function CreateNotebook(name: string): Promise & { cancel(): void } { - let $resultPromise = $Call.ByID(4169347514, name) as any; - let $typingPromise = $resultPromise.then(($result) => { - return $$createType0($result); - }) as any; - $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); - return $typingPromise; -} - -export function DeleteNotebook(id: number): Promise & { cancel(): void } { - let $resultPromise = $Call.ByID(588830629, id) as any; - return $resultPromise; -} - -export function GetNotebook(id: number): Promise & { cancel(): void } { - let $resultPromise = $Call.ByID(2651103660, id) as any; - let $typingPromise = $resultPromise.then(($result) => { - return $$createType0($result); - }) as any; - $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); - return $typingPromise; -} - -export function GetTagsForNotebook(notebookID: number): Promise & { cancel(): void } { - let $resultPromise = $Call.ByID(1666855918, notebookID) as any; - let $typingPromise = $resultPromise.then(($result) => { - return $$createType2($result); - }) as any; - $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); - return $typingPromise; -} - -export function ListNotebooks(): Promise & { cancel(): void } { - let $resultPromise = $Call.ByID(595334731) as any; - let $typingPromise = $resultPromise.then(($result) => { - return $$createType3($result); - }) as any; - $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); - return $typingPromise; -} - -export function RemoveAllTagsFromNotebook(notebookID: number): Promise & { cancel(): void } { - let $resultPromise = $Call.ByID(2397072902, notebookID) as any; - return $resultPromise; -} - -export function RemoveTagFromNotebook(notebookID: number, tagID: number): Promise & { cancel(): void } { - let $resultPromise = $Call.ByID(2184813900, notebookID, tagID) as any; - return $resultPromise; -} - -export function UpdateNotebook(id: number, name: string, createdAt: string): Promise & { cancel(): void } { - let $resultPromise = $Call.ByID(1306217847, id, name, createdAt) as any; - return $resultPromise; -} - -// Private type creation functions -const $$createType0 = db$0.Notebook.createFrom; -const $$createType1 = db$0.Tag.createFrom; -const $$createType2 = $Create.Array($$createType1); -const $$createType3 = $Create.Array($$createType0); diff --git a/frontend/bindings/github.com/nodetec/comet/service/noteservice.js b/frontend/bindings/github.com/nodetec/comet/service/noteservice.js deleted file mode 100644 index 13b3496e..00000000 --- a/frontend/bindings/github.com/nodetec/comet/service/noteservice.js +++ /dev/null @@ -1,208 +0,0 @@ -// @ts-check -// Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL -// This file is automatically generated. DO NOT EDIT - -// eslint-disable-next-line @typescript-eslint/ban-ts-comment -// @ts-ignore: Unused imports -import {Call as $Call, Create as $Create} from "@wailsio/runtime"; - -// eslint-disable-next-line @typescript-eslint/ban-ts-comment -// @ts-ignore: Unused imports -import * as sql$0 from "../../../../database/sql/models.js"; -// eslint-disable-next-line @typescript-eslint/ban-ts-comment -// @ts-ignore: Unused imports -import * as db$0 from "../db/models.js"; - -/** - * @param {db$0.Note} note - * @param {db$0.Tag[]} tags - * @returns {Promise & { cancel(): void }} - */ -export function AddNoteToTrash(note, tags) { - let $resultPromise = /** @type {any} */($Call.ByID(36748134, note, tags)); - return $resultPromise; -} - -/** - * @param {string} title - * @param {string} content - * @param {number} notebookID - * @param {sql$0.NullInt64} statusID - * @param {sql$0.NullString} publishedAt - * @param {sql$0.NullString} eventId - * @param {string} notetype - * @param {string} filetype - * @returns {Promise & { cancel(): void }} - */ -export function CreateNote(title, content, notebookID, statusID, publishedAt, eventId, notetype, filetype) { - let $resultPromise = /** @type {any} */($Call.ByID(3651584158, title, content, notebookID, statusID, publishedAt, eventId, notetype, filetype)); - let $typingPromise = /** @type {any} */($resultPromise.then(($result) => { - return $$createType0($result); - })); - $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); - return $typingPromise; -} - -/** - * @param {number} id - * @returns {Promise & { cancel(): void }} - */ -export function DeleteNote(id) { - let $resultPromise = /** @type {any} */($Call.ByID(1854972521, id)); - return $resultPromise; -} - -/** - * @param {number} id - * @returns {Promise & { cancel(): void }} - */ -export function DeleteNoteFromTrash(id) { - let $resultPromise = /** @type {any} */($Call.ByID(1832826689, id)); - return $resultPromise; -} - -/** - * @param {number} id - * @returns {Promise & { cancel(): void }} - */ -export function GetNote(id) { - let $resultPromise = /** @type {any} */($Call.ByID(1230348126, id)); - let $typingPromise = /** @type {any} */($resultPromise.then(($result) => { - return $$createType0($result); - })); - $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); - return $typingPromise; -} - -/** - * @param {number} id - * @returns {Promise & { cancel(): void }} - */ -export function GetNoteFromTrash(id) { - let $resultPromise = /** @type {any} */($Call.ByID(1889602112, id)); - let $typingPromise = /** @type {any} */($resultPromise.then(($result) => { - return $$createType1($result); - })); - $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); - return $typingPromise; -} - -/** - * @param {number} notebookId - * @param {number} tagId - * @param {number} limit - * @param {number} pageParam - * @param {string} orderBy - * @param {string} sortDirection - * @returns {Promise & { cancel(): void }} - */ -export function ListNotes(notebookId, tagId, limit, pageParam, orderBy, sortDirection) { - let $resultPromise = /** @type {any} */($Call.ByID(1572240871, notebookId, tagId, limit, pageParam, orderBy, sortDirection)); - let $typingPromise = /** @type {any} */($resultPromise.then(($result) => { - return $$createType2($result); - })); - $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); - return $typingPromise; -} - -/** - * @param {number} limit - * @param {number} pageParam - * @param {string} orderBy - * @param {string} sortDirection - * @returns {Promise & { cancel(): void }} - */ -export function ListNotesFromTrash(limit, pageParam, orderBy, sortDirection) { - let $resultPromise = /** @type {any} */($Call.ByID(3661159223, limit, pageParam, orderBy, sortDirection)); - let $typingPromise = /** @type {any} */($resultPromise.then(($result) => { - return $$createType4($result); - })); - $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); - return $typingPromise; -} - -/** - * @param {number} noteId - * @param {string} title - * @param {string} content - * @param {number} notebookID - * @param {sql$0.NullInt64} statusID - * @param {string} createdAt - * @param {string} modifiedAt - * @param {sql$0.NullString} publishedAt - * @param {sql$0.NullString} eventId - * @param {string} notetype - * @param {string} filetype - * @param {number[]} tagIds - * @returns {Promise & { cancel(): void }} - */ -export function RestoreNoteFromTrash(noteId, title, content, notebookID, statusID, createdAt, modifiedAt, publishedAt, eventId, notetype, filetype, tagIds) { - let $resultPromise = /** @type {any} */($Call.ByID(3762311242, noteId, title, content, notebookID, statusID, createdAt, modifiedAt, publishedAt, eventId, notetype, filetype, tagIds)); - let $typingPromise = /** @type {any} */($resultPromise.then(($result) => { - return $$createType5($result); - })); - $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); - return $typingPromise; -} - -/** - * @param {string} searchTerm - * @param {number} notebookID - * @param {number} tagID - * @param {number} limit - * @param {number} pageParam - * @param {string} orderBy - * @param {string} sortDirection - * @returns {Promise & { cancel(): void }} - */ -export function SearchNotes(searchTerm, notebookID, tagID, limit, pageParam, orderBy, sortDirection) { - let $resultPromise = /** @type {any} */($Call.ByID(2746264403, searchTerm, notebookID, tagID, limit, pageParam, orderBy, sortDirection)); - let $typingPromise = /** @type {any} */($resultPromise.then(($result) => { - return $$createType2($result); - })); - $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); - return $typingPromise; -} - -/** - * @param {string} searchTerm - * @param {number} limit - * @param {number} pageParam - * @param {string} orderBy - * @param {string} sortDirection - * @returns {Promise & { cancel(): void }} - */ -export function SearchTrash(searchTerm, limit, pageParam, orderBy, sortDirection) { - let $resultPromise = /** @type {any} */($Call.ByID(3538009948, searchTerm, limit, pageParam, orderBy, sortDirection)); - let $typingPromise = /** @type {any} */($resultPromise.then(($result) => { - return $$createType4($result); - })); - $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); - return $typingPromise; -} - -/** - * @param {number} id - * @param {string} title - * @param {string} content - * @param {number} notebookID - * @param {sql$0.NullInt64} statusID - * @param {boolean} published - * @param {sql$0.NullString} eventId - * @param {boolean} pinned - * @param {string} notetype - * @param {string} filetype - * @returns {Promise & { cancel(): void }} - */ -export function UpdateNote(id, title, content, notebookID, statusID, published, eventId, pinned, notetype, filetype) { - let $resultPromise = /** @type {any} */($Call.ByID(518540175, id, title, content, notebookID, statusID, published, eventId, pinned, notetype, filetype)); - return $resultPromise; -} - -// Private type creation functions -const $$createType0 = db$0.Note.createFrom; -const $$createType1 = db$0.GetNoteFromTrashRow.createFrom; -const $$createType2 = $Create.Array($$createType0); -const $$createType3 = db$0.Trash.createFrom; -const $$createType4 = $Create.Array($$createType3); -const $$createType5 = db$0.CreateNoteFromTrashRow.createFrom; diff --git a/frontend/bindings/github.com/nodetec/comet/service/noteservice.ts b/frontend/bindings/github.com/nodetec/comet/service/noteservice.ts deleted file mode 100644 index 663216a5..00000000 --- a/frontend/bindings/github.com/nodetec/comet/service/noteservice.ts +++ /dev/null @@ -1,113 +0,0 @@ -// Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL -// This file is automatically generated. DO NOT EDIT - -// eslint-disable-next-line @typescript-eslint/ban-ts-comment -// @ts-ignore: Unused imports -import {Call as $Call, Create as $Create} from "@wailsio/runtime"; - -// eslint-disable-next-line @typescript-eslint/ban-ts-comment -// @ts-ignore: Unused imports -import * as sql$0 from "../../../../database/sql/models.js"; -// eslint-disable-next-line @typescript-eslint/ban-ts-comment -// @ts-ignore: Unused imports -import * as db$0 from "../db/models.js"; - -export function AddNoteToTrash(note: db$0.Note, tags: db$0.Tag[]): Promise & { cancel(): void } { - let $resultPromise = $Call.ByID(36748134, note, tags) as any; - return $resultPromise; -} - -export function CreateNote(title: string, content: string, notebookID: number, statusID: sql$0.NullInt64, publishedAt: sql$0.NullString, eventId: sql$0.NullString, notetype: string, filetype: string): Promise & { cancel(): void } { - let $resultPromise = $Call.ByID(3651584158, title, content, notebookID, statusID, publishedAt, eventId, notetype, filetype) as any; - let $typingPromise = $resultPromise.then(($result) => { - return $$createType0($result); - }) as any; - $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); - return $typingPromise; -} - -export function DeleteNote(id: number): Promise & { cancel(): void } { - let $resultPromise = $Call.ByID(1854972521, id) as any; - return $resultPromise; -} - -export function DeleteNoteFromTrash(id: number): Promise & { cancel(): void } { - let $resultPromise = $Call.ByID(1832826689, id) as any; - return $resultPromise; -} - -export function GetNote(id: number): Promise & { cancel(): void } { - let $resultPromise = $Call.ByID(1230348126, id) as any; - let $typingPromise = $resultPromise.then(($result) => { - return $$createType0($result); - }) as any; - $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); - return $typingPromise; -} - -export function GetNoteFromTrash(id: number): Promise & { cancel(): void } { - let $resultPromise = $Call.ByID(1889602112, id) as any; - let $typingPromise = $resultPromise.then(($result) => { - return $$createType1($result); - }) as any; - $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); - return $typingPromise; -} - -export function ListNotes(notebookId: number, tagId: number, limit: number, pageParam: number, orderBy: string, sortDirection: string): Promise & { cancel(): void } { - let $resultPromise = $Call.ByID(1572240871, notebookId, tagId, limit, pageParam, orderBy, sortDirection) as any; - let $typingPromise = $resultPromise.then(($result) => { - return $$createType2($result); - }) as any; - $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); - return $typingPromise; -} - -export function ListNotesFromTrash(limit: number, pageParam: number, orderBy: string, sortDirection: string): Promise & { cancel(): void } { - let $resultPromise = $Call.ByID(3661159223, limit, pageParam, orderBy, sortDirection) as any; - let $typingPromise = $resultPromise.then(($result) => { - return $$createType4($result); - }) as any; - $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); - return $typingPromise; -} - -export function RestoreNoteFromTrash(noteId: number, title: string, content: string, notebookID: number, statusID: sql$0.NullInt64, createdAt: string, modifiedAt: string, publishedAt: sql$0.NullString, eventId: sql$0.NullString, notetype: string, filetype: string, tagIds: number[]): Promise & { cancel(): void } { - let $resultPromise = $Call.ByID(3762311242, noteId, title, content, notebookID, statusID, createdAt, modifiedAt, publishedAt, eventId, notetype, filetype, tagIds) as any; - let $typingPromise = $resultPromise.then(($result) => { - return $$createType5($result); - }) as any; - $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); - return $typingPromise; -} - -export function SearchNotes(searchTerm: string, notebookID: number, tagID: number, limit: number, pageParam: number, orderBy: string, sortDirection: string): Promise & { cancel(): void } { - let $resultPromise = $Call.ByID(2746264403, searchTerm, notebookID, tagID, limit, pageParam, orderBy, sortDirection) as any; - let $typingPromise = $resultPromise.then(($result) => { - return $$createType2($result); - }) as any; - $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); - return $typingPromise; -} - -export function SearchTrash(searchTerm: string, limit: number, pageParam: number, orderBy: string, sortDirection: string): Promise & { cancel(): void } { - let $resultPromise = $Call.ByID(3538009948, searchTerm, limit, pageParam, orderBy, sortDirection) as any; - let $typingPromise = $resultPromise.then(($result) => { - return $$createType4($result); - }) as any; - $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); - return $typingPromise; -} - -export function UpdateNote(id: number, title: string, content: string, notebookID: number, statusID: sql$0.NullInt64, published: boolean, eventId: sql$0.NullString, pinned: boolean, notetype: string, filetype: string): Promise & { cancel(): void } { - let $resultPromise = $Call.ByID(518540175, id, title, content, notebookID, statusID, published, eventId, pinned, notetype, filetype) as any; - return $resultPromise; -} - -// Private type creation functions -const $$createType0 = db$0.Note.createFrom; -const $$createType1 = db$0.GetNoteFromTrashRow.createFrom; -const $$createType2 = $Create.Array($$createType0); -const $$createType3 = db$0.Trash.createFrom; -const $$createType4 = $Create.Array($$createType3); -const $$createType5 = db$0.CreateNoteFromTrashRow.createFrom; diff --git a/frontend/bindings/github.com/nodetec/comet/service/notetagservice.js b/frontend/bindings/github.com/nodetec/comet/service/notetagservice.js deleted file mode 100644 index 5acea8ce..00000000 --- a/frontend/bindings/github.com/nodetec/comet/service/notetagservice.js +++ /dev/null @@ -1,58 +0,0 @@ -// @ts-check -// Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL -// This file is automatically generated. DO NOT EDIT - -// eslint-disable-next-line @typescript-eslint/ban-ts-comment -// @ts-ignore: Unused imports -import {Call as $Call, Create as $Create} from "@wailsio/runtime"; - -// eslint-disable-next-line @typescript-eslint/ban-ts-comment -// @ts-ignore: Unused imports -import * as db$0 from "../db/models.js"; - -/** - * @param {number} noteID - * @param {number} tagID - * @returns {Promise & { cancel(): void }} - */ -export function AddTagToNote(noteID, tagID) { - let $resultPromise = /** @type {any} */($Call.ByID(2643393932, noteID, tagID)); - return $resultPromise; -} - -/** - * @param {number} noteID - * @param {number} tagID - * @returns {Promise & { cancel(): void }} - */ -export function CheckTagForNote(noteID, tagID) { - let $resultPromise = /** @type {any} */($Call.ByID(1794760311, noteID, tagID)); - return $resultPromise; -} - -/** - * @param {number} noteID - * @returns {Promise & { cancel(): void }} - */ -export function GetTagsForNote(noteID) { - let $resultPromise = /** @type {any} */($Call.ByID(2728210140, noteID)); - let $typingPromise = /** @type {any} */($resultPromise.then(($result) => { - return $$createType1($result); - })); - $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); - return $typingPromise; -} - -/** - * @param {number} noteID - * @param {number} tagID - * @returns {Promise & { cancel(): void }} - */ -export function RemoveTagFromNote(noteID, tagID) { - let $resultPromise = /** @type {any} */($Call.ByID(3246519988, noteID, tagID)); - return $resultPromise; -} - -// Private type creation functions -const $$createType0 = db$0.Tag.createFrom; -const $$createType1 = $Create.Array($$createType0); diff --git a/frontend/bindings/github.com/nodetec/comet/service/notetagservice.ts b/frontend/bindings/github.com/nodetec/comet/service/notetagservice.ts deleted file mode 100644 index 26abc760..00000000 --- a/frontend/bindings/github.com/nodetec/comet/service/notetagservice.ts +++ /dev/null @@ -1,38 +0,0 @@ -// Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL -// This file is automatically generated. DO NOT EDIT - -// eslint-disable-next-line @typescript-eslint/ban-ts-comment -// @ts-ignore: Unused imports -import {Call as $Call, Create as $Create} from "@wailsio/runtime"; - -// eslint-disable-next-line @typescript-eslint/ban-ts-comment -// @ts-ignore: Unused imports -import * as db$0 from "../db/models.js"; - -export function AddTagToNote(noteID: number, tagID: number): Promise & { cancel(): void } { - let $resultPromise = $Call.ByID(2643393932, noteID, tagID) as any; - return $resultPromise; -} - -export function CheckTagForNote(noteID: number, tagID: number): Promise & { cancel(): void } { - let $resultPromise = $Call.ByID(1794760311, noteID, tagID) as any; - return $resultPromise; -} - -export function GetTagsForNote(noteID: number): Promise & { cancel(): void } { - let $resultPromise = $Call.ByID(2728210140, noteID) as any; - let $typingPromise = $resultPromise.then(($result) => { - return $$createType1($result); - }) as any; - $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); - return $typingPromise; -} - -export function RemoveTagFromNote(noteID: number, tagID: number): Promise & { cancel(): void } { - let $resultPromise = $Call.ByID(3246519988, noteID, tagID) as any; - return $resultPromise; -} - -// Private type creation functions -const $$createType0 = db$0.Tag.createFrom; -const $$createType1 = $Create.Array($$createType0); diff --git a/frontend/bindings/github.com/nodetec/comet/service/relayservice.js b/frontend/bindings/github.com/nodetec/comet/service/relayservice.js deleted file mode 100644 index dcd576fb..00000000 --- a/frontend/bindings/github.com/nodetec/comet/service/relayservice.js +++ /dev/null @@ -1,77 +0,0 @@ -// @ts-check -// Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL -// This file is automatically generated. DO NOT EDIT - -// eslint-disable-next-line @typescript-eslint/ban-ts-comment -// @ts-ignore: Unused imports -import {Call as $Call, Create as $Create} from "@wailsio/runtime"; - -// eslint-disable-next-line @typescript-eslint/ban-ts-comment -// @ts-ignore: Unused imports -import * as $models from "./models.js"; - -/** - * @param {string} url - * @param {boolean} read - * @param {boolean} write - * @param {boolean} sync - * @returns {Promise<$models.Relay> & { cancel(): void }} - */ -export function CreateRelay(url, read, write, sync) { - let $resultPromise = /** @type {any} */($Call.ByID(2564037930, url, read, write, sync)); - let $typingPromise = /** @type {any} */($resultPromise.then(($result) => { - return $$createType0($result); - })); - $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); - return $typingPromise; -} - -/** - * @returns {Promise & { cancel(): void }} - */ -export function DeleteRelays() { - let $resultPromise = /** @type {any} */($Call.ByID(4014153816)); - return $resultPromise; -} - -/** - * @param {number} id - * @returns {Promise<$models.Relay> & { cancel(): void }} - */ -export function GetRelay(id) { - let $resultPromise = /** @type {any} */($Call.ByID(2570438932, id)); - let $typingPromise = /** @type {any} */($resultPromise.then(($result) => { - return $$createType0($result); - })); - $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); - return $typingPromise; -} - -/** - * @returns {Promise<$models.Relay[]> & { cancel(): void }} - */ -export function ListRelays() { - let $resultPromise = /** @type {any} */($Call.ByID(377038031)); - let $typingPromise = /** @type {any} */($resultPromise.then(($result) => { - return $$createType1($result); - })); - $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); - return $typingPromise; -} - -/** - * @param {number} id - * @param {string} url - * @param {boolean} read - * @param {boolean} write - * @param {boolean} sync - * @returns {Promise & { cancel(): void }} - */ -export function UpdateRelay(id, url, read, write, sync) { - let $resultPromise = /** @type {any} */($Call.ByID(1832504309, id, url, read, write, sync)); - return $resultPromise; -} - -// Private type creation functions -const $$createType0 = $models.Relay.createFrom; -const $$createType1 = $Create.Array($$createType0); diff --git a/frontend/bindings/github.com/nodetec/comet/service/relayservice.ts b/frontend/bindings/github.com/nodetec/comet/service/relayservice.ts deleted file mode 100644 index 4589369f..00000000 --- a/frontend/bindings/github.com/nodetec/comet/service/relayservice.ts +++ /dev/null @@ -1,51 +0,0 @@ -// Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL -// This file is automatically generated. DO NOT EDIT - -// eslint-disable-next-line @typescript-eslint/ban-ts-comment -// @ts-ignore: Unused imports -import {Call as $Call, Create as $Create} from "@wailsio/runtime"; - -// eslint-disable-next-line @typescript-eslint/ban-ts-comment -// @ts-ignore: Unused imports -import * as $models from "./models.js"; - -export function CreateRelay(url: string, read: boolean, write: boolean, sync: boolean): Promise<$models.Relay> & { cancel(): void } { - let $resultPromise = $Call.ByID(2564037930, url, read, write, sync) as any; - let $typingPromise = $resultPromise.then(($result) => { - return $$createType0($result); - }) as any; - $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); - return $typingPromise; -} - -export function DeleteRelays(): Promise & { cancel(): void } { - let $resultPromise = $Call.ByID(4014153816) as any; - return $resultPromise; -} - -export function GetRelay(id: number): Promise<$models.Relay> & { cancel(): void } { - let $resultPromise = $Call.ByID(2570438932, id) as any; - let $typingPromise = $resultPromise.then(($result) => { - return $$createType0($result); - }) as any; - $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); - return $typingPromise; -} - -export function ListRelays(): Promise<$models.Relay[]> & { cancel(): void } { - let $resultPromise = $Call.ByID(377038031) as any; - let $typingPromise = $resultPromise.then(($result) => { - return $$createType1($result); - }) as any; - $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); - return $typingPromise; -} - -export function UpdateRelay(id: number, url: string, read: boolean, write: boolean, sync: boolean): Promise & { cancel(): void } { - let $resultPromise = $Call.ByID(1832504309, id, url, read, write, sync) as any; - return $resultPromise; -} - -// Private type creation functions -const $$createType0 = $models.Relay.createFrom; -const $$createType1 = $Create.Array($$createType0); diff --git a/frontend/bindings/github.com/nodetec/comet/service/settingservice.js b/frontend/bindings/github.com/nodetec/comet/service/settingservice.js deleted file mode 100644 index 1eb447e2..00000000 --- a/frontend/bindings/github.com/nodetec/comet/service/settingservice.js +++ /dev/null @@ -1,45 +0,0 @@ -// @ts-check -// Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL -// This file is automatically generated. DO NOT EDIT - -// eslint-disable-next-line @typescript-eslint/ban-ts-comment -// @ts-ignore: Unused imports -import {Call as $Call, Create as $Create} from "@wailsio/runtime"; - -// eslint-disable-next-line @typescript-eslint/ban-ts-comment -// @ts-ignore: Unused imports -import * as $models from "./models.js"; - -/** - * @returns {Promise<$models.Settings> & { cancel(): void }} - */ -export function GetAllSettings() { - let $resultPromise = /** @type {any} */($Call.ByID(1346639610)); - let $typingPromise = /** @type {any} */($resultPromise.then(($result) => { - return $$createType0($result); - })); - $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); - return $typingPromise; -} - -/** - * @param {string} key - * @returns {Promise & { cancel(): void }} - */ -export function GetSetting(key) { - let $resultPromise = /** @type {any} */($Call.ByID(1317242856, key)); - return $resultPromise; -} - -/** - * @param {string} key - * @param {string} value - * @returns {Promise & { cancel(): void }} - */ -export function UpdateSetting(key, value) { - let $resultPromise = /** @type {any} */($Call.ByID(2612065271, key, value)); - return $resultPromise; -} - -// Private type creation functions -const $$createType0 = $models.Settings.createFrom; diff --git a/frontend/bindings/github.com/nodetec/comet/service/settingservice.ts b/frontend/bindings/github.com/nodetec/comet/service/settingservice.ts deleted file mode 100644 index 4572aa48..00000000 --- a/frontend/bindings/github.com/nodetec/comet/service/settingservice.ts +++ /dev/null @@ -1,32 +0,0 @@ -// Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL -// This file is automatically generated. DO NOT EDIT - -// eslint-disable-next-line @typescript-eslint/ban-ts-comment -// @ts-ignore: Unused imports -import {Call as $Call, Create as $Create} from "@wailsio/runtime"; - -// eslint-disable-next-line @typescript-eslint/ban-ts-comment -// @ts-ignore: Unused imports -import * as $models from "./models.js"; - -export function GetAllSettings(): Promise<$models.Settings> & { cancel(): void } { - let $resultPromise = $Call.ByID(1346639610) as any; - let $typingPromise = $resultPromise.then(($result) => { - return $$createType0($result); - }) as any; - $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); - return $typingPromise; -} - -export function GetSetting(key: string): Promise & { cancel(): void } { - let $resultPromise = $Call.ByID(1317242856, key) as any; - return $resultPromise; -} - -export function UpdateSetting(key: string, value: string): Promise & { cancel(): void } { - let $resultPromise = $Call.ByID(2612065271, key, value) as any; - return $resultPromise; -} - -// Private type creation functions -const $$createType0 = $models.Settings.createFrom; diff --git a/frontend/bindings/github.com/nodetec/comet/service/tagservice.js b/frontend/bindings/github.com/nodetec/comet/service/tagservice.js deleted file mode 100644 index 56c0a2e6..00000000 --- a/frontend/bindings/github.com/nodetec/comet/service/tagservice.js +++ /dev/null @@ -1,108 +0,0 @@ -// @ts-check -// Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL -// This file is automatically generated. DO NOT EDIT - -// eslint-disable-next-line @typescript-eslint/ban-ts-comment -// @ts-ignore: Unused imports -import {Call as $Call, Create as $Create} from "@wailsio/runtime"; - -// eslint-disable-next-line @typescript-eslint/ban-ts-comment -// @ts-ignore: Unused imports -import * as sql$0 from "../../../../database/sql/models.js"; - -// eslint-disable-next-line @typescript-eslint/ban-ts-comment -// @ts-ignore: Unused imports -import * as $models from "./models.js"; - -/** - * @param {string} name - * @param {sql$0.NullString} color - * @param {sql$0.NullString} icon - * @param {string} createdAt - * @returns {Promise<$models.Tag> & { cancel(): void }} - */ -export function CreateTag(name, color, icon, createdAt) { - let $resultPromise = /** @type {any} */($Call.ByID(4191103332, name, color, icon, createdAt)); - let $typingPromise = /** @type {any} */($resultPromise.then(($result) => { - return $$createType0($result); - })); - $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); - return $typingPromise; -} - -/** - * @param {number} id - * @returns {Promise & { cancel(): void }} - */ -export function DeleteTag(id) { - let $resultPromise = /** @type {any} */($Call.ByID(1411090129, id)); - return $resultPromise; -} - -/** - * @param {number} id - * @returns {Promise<$models.Tag> & { cancel(): void }} - */ -export function GetTag(id) { - let $resultPromise = /** @type {any} */($Call.ByID(2029176156, id)); - let $typingPromise = /** @type {any} */($resultPromise.then(($result) => { - return $$createType0($result); - })); - $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); - return $typingPromise; -} - -/** - * @param {string} name - * @returns {Promise<$models.Tag> & { cancel(): void }} - */ -export function GetTagByName(name) { - let $resultPromise = /** @type {any} */($Call.ByID(1160743666, name)); - let $typingPromise = /** @type {any} */($resultPromise.then(($result) => { - return $$createType0($result); - })); - $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); - return $typingPromise; -} - -/** - * @param {string[]} names - * @returns {Promise<$models.Tag[]> & { cancel(): void }} - */ -export function GetTagsByNames(names) { - let $resultPromise = /** @type {any} */($Call.ByID(1226187244, names)); - let $typingPromise = /** @type {any} */($resultPromise.then(($result) => { - return $$createType1($result); - })); - $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); - return $typingPromise; -} - -/** - * @returns {Promise<$models.Tag[]> & { cancel(): void }} - */ -export function ListTags() { - let $resultPromise = /** @type {any} */($Call.ByID(342385689)); - let $typingPromise = /** @type {any} */($resultPromise.then(($result) => { - return $$createType1($result); - })); - $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); - return $typingPromise; -} - -/** - * @param {number} id - * @param {string} name - * @param {sql$0.NullString} color - * @param {sql$0.NullString} icon - * @param {string} createdAt - * @returns {Promise & { cancel(): void }} - */ -export function UpdateTag(id, name, color, icon, createdAt) { - let $resultPromise = /** @type {any} */($Call.ByID(3312250639, id, name, color, icon, createdAt)); - return $resultPromise; -} - -// Private type creation functions -const $$createType0 = $models.Tag.createFrom; -const $$createType1 = $Create.Array($$createType0); diff --git a/frontend/bindings/github.com/nodetec/comet/service/tagservice.ts b/frontend/bindings/github.com/nodetec/comet/service/tagservice.ts deleted file mode 100644 index b4c7f4de..00000000 --- a/frontend/bindings/github.com/nodetec/comet/service/tagservice.ts +++ /dev/null @@ -1,73 +0,0 @@ -// Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL -// This file is automatically generated. DO NOT EDIT - -// eslint-disable-next-line @typescript-eslint/ban-ts-comment -// @ts-ignore: Unused imports -import {Call as $Call, Create as $Create} from "@wailsio/runtime"; - -// eslint-disable-next-line @typescript-eslint/ban-ts-comment -// @ts-ignore: Unused imports -import * as sql$0 from "../../../../database/sql/models.js"; - -// eslint-disable-next-line @typescript-eslint/ban-ts-comment -// @ts-ignore: Unused imports -import * as $models from "./models.js"; - -export function CreateTag(name: string, color: sql$0.NullString, icon: sql$0.NullString, createdAt: string): Promise<$models.Tag> & { cancel(): void } { - let $resultPromise = $Call.ByID(4191103332, name, color, icon, createdAt) as any; - let $typingPromise = $resultPromise.then(($result) => { - return $$createType0($result); - }) as any; - $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); - return $typingPromise; -} - -export function DeleteTag(id: number): Promise & { cancel(): void } { - let $resultPromise = $Call.ByID(1411090129, id) as any; - return $resultPromise; -} - -export function GetTag(id: number): Promise<$models.Tag> & { cancel(): void } { - let $resultPromise = $Call.ByID(2029176156, id) as any; - let $typingPromise = $resultPromise.then(($result) => { - return $$createType0($result); - }) as any; - $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); - return $typingPromise; -} - -export function GetTagByName(name: string): Promise<$models.Tag> & { cancel(): void } { - let $resultPromise = $Call.ByID(1160743666, name) as any; - let $typingPromise = $resultPromise.then(($result) => { - return $$createType0($result); - }) as any; - $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); - return $typingPromise; -} - -export function GetTagsByNames(names: string[]): Promise<$models.Tag[]> & { cancel(): void } { - let $resultPromise = $Call.ByID(1226187244, names) as any; - let $typingPromise = $resultPromise.then(($result) => { - return $$createType1($result); - }) as any; - $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); - return $typingPromise; -} - -export function ListTags(): Promise<$models.Tag[]> & { cancel(): void } { - let $resultPromise = $Call.ByID(342385689) as any; - let $typingPromise = $resultPromise.then(($result) => { - return $$createType1($result); - }) as any; - $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); - return $typingPromise; -} - -export function UpdateTag(id: number, name: string, color: sql$0.NullString, icon: sql$0.NullString, createdAt: string): Promise & { cancel(): void } { - let $resultPromise = $Call.ByID(3312250639, id, name, color, icon, createdAt) as any; - return $resultPromise; -} - -// Private type creation functions -const $$createType0 = $models.Tag.createFrom; -const $$createType1 = $Create.Array($$createType0); diff --git a/frontend/components.json b/frontend/components.json index 2844d716..02271c82 100644 --- a/frontend/components.json +++ b/frontend/components.json @@ -5,13 +5,17 @@ "tsx": true, "tailwind": { "config": "tailwind.config.js", - "css": "src/styles/globals.css", + "css": "src/index.css", "baseColor": "neutral", "cssVariables": true, "prefix": "" }, "aliases": { "components": "~/components", - "utils": "~/lib/utils" - } -} + "utils": "~/lib/utils", + "ui": "~/components/ui", + "lib": "~/lib", + "hooks": "~/hooks" + }, + "iconLibrary": "lucide" +} \ No newline at end of file diff --git a/frontend/index.html b/frontend/index.html index f8158db4..3cfb5f44 100644 --- a/frontend/index.html +++ b/frontend/index.html @@ -1,16 +1,13 @@ - - - - - - - - Wails + React + TS - - - -
- - - + + + + + + + Wails + React + TS + + +
+ + diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 1619761b..bb935c3b 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -8,84 +8,85 @@ "name": "react-ts-latest", "version": "0.0.0", "dependencies": { - "@codemirror/commands": "^6.6.0", - "@codemirror/lang-markdown": "^6.3.0", - "@codemirror/language-data": "^6.5.1", - "@codemirror/lint": "^6.8.1", - "@codemirror/state": "^6.4.1", - "@codemirror/view": "^6.28.2", - "@hookform/resolvers": "^3.6.0", - "@markdoc/markdoc": "^0.4.0", - "@radix-ui/react-accordion": "^1.2.0", - "@radix-ui/react-dialog": "^1.1.1", - "@radix-ui/react-dropdown-menu": "^2.1.1", - "@radix-ui/react-icons": "^1.3.0", - "@radix-ui/react-label": "^2.1.0", - "@radix-ui/react-popover": "^1.1.1", - "@radix-ui/react-scroll-area": "^1.1.0", - "@radix-ui/react-select": "^2.1.1", - "@radix-ui/react-separator": "^1.1.0", - "@radix-ui/react-slot": "^1.1.0", - "@radix-ui/react-switch": "^1.1.0", - "@radix-ui/react-tabs": "^1.1.0", - "@replit/codemirror-vim": "^6.2.1", - "@tanstack/react-query": "^5.56.2", - "@tanstack/react-query-devtools": "^5.58.0", - "class-variance-authority": "^0.7.0", + "@hookform/resolvers": "^3.9.1", + "@lexical/list": "^0.22.0", + "@lexical/markdown": "^0.22.0", + "@lexical/react": "^0.22.0", + "@lexical/rich-text": "^0.22.0", + "@radix-ui/react-accordion": "^1.2.2", + "@radix-ui/react-avatar": "^1.1.2", + "@radix-ui/react-checkbox": "^1.1.3", + "@radix-ui/react-dialog": "^1.1.4", + "@radix-ui/react-dropdown-menu": "^2.1.4", + "@radix-ui/react-label": "^2.1.1", + "@radix-ui/react-popover": "^1.1.4", + "@radix-ui/react-scroll-area": "^1.2.2", + "@radix-ui/react-separator": "^1.1.1", + "@radix-ui/react-slot": "^1.1.1", + "@radix-ui/react-tooltip": "^1.1.6", + "@tanstack/react-query": "^5.62.10", + "@tanstack/react-query-devtools": "^5.62.10", + "@uidotdev/usehooks": "^2.4.1", + "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", - "cmdk": "^1.0.0", - "codemirror": "^6.0.1", + "cmdk": "^1.0.4", "dayjs": "^1.11.13", - "embla-carousel-react": "^8.3.0", - "lucide-react": "^0.446.0", - "next-themes": "^0.3.0", - "nostr-tools": "^2.7.2", - "react": "^18.2.0", + "lexical": "^0.22.0", + "lucide-react": "^0.469.0", + "next-themes": "^0.4.4", + "nostr-tools": "^2.10.4", + "react": "19.0.0", "react-copy-to-clipboard": "^5.1.0", - "react-dom": "^18.2.0", - "react-hook-form": "^7.53.0", - "react-intersection-observer": "^9.13.1", - "react-resizable-panels": "^2.1.4", + "react-dom": "^19.0.0", + "react-hook-form": "^7.54.2", + "react-intersection-observer": "^9.14.0", + "react-resizable-panels": "^2.1.7", "rehype-external-links": "^3.0.0", "rehype-sanitize": "^6.0.0", "rehype-stringify": "^10.0.1", "remark-html": "^16.0.1", "remark-parse": "^11.0.0", "remark-youtube": "^1.3.2", - "sonner": "^1.5.0", - "tailwind-merge": "^2.5.2", + "sonner": "^1.7.1", + "tailwind-merge": "^2.6.0", "tailwindcss-animate": "^1.0.7", - "zod": "^3.23.8", - "zustand": "^4.5.4" + "vite-plugin-babel": "^1.3.0", + "zod": "^3.24.1", + "zustand": "^5.0.2" }, "devDependencies": { - "@ianvs/prettier-plugin-sort-imports": "^4.3.1", - "@tailwindcss/typography": "^0.5.15", - "@tanstack/eslint-plugin-query": "^5.58.1", - "@types/node": "^20.14.9", - "@types/react": "^18.3.10", - "@types/react-copy-to-clipboard": "^5.0.7", - "@types/react-dom": "^18.2.17", - "@typescript-eslint/eslint-plugin": "^6.14.0", - "@typescript-eslint/parser": "^6.14.0", - "@vitejs/plugin-react": "^4.3.2", - "@wailsio/runtime": "^3.0.0-alpha.27", + "@eslint/js": "^9.17.0", + "@ianvs/prettier-plugin-sort-imports": "^4.4.0", + "@tanstack/eslint-plugin-query": "^5.62.9", + "@types/node": "^22.10.2", + "@types/react": "^19.0.2", + "@types/react-dom": "^19.0.2", + "@typescript-eslint/eslint-plugin": "^8.18.2", + "@typescript-eslint/parser": "^8.18.2", + "@vitejs/plugin-react": "^4.2.1", + "@wailsio/runtime": "latest", "autoprefixer": "^10.4.20", - "eslint": "^8.55.0", - "eslint-plugin-react-hooks": "^4.6.0", - "eslint-plugin-react-refresh": "^0.4.12", - "postcss": "^8.4.47", - "prettier": "^3.3.3", - "prettier-plugin-tailwindcss": "^0.6.8", - "tailwindcss": "^3.4.13", - "typescript": "^5.6.2", - "vite": "^5.4.8" + "babel-plugin-react-compiler": "^19.0.0-beta-201e55d-20241215", + "eslint": "^8.57.0", + "eslint-plugin-prettier": "^5.2.1", + "eslint-plugin-react": "^7.37.3", + "eslint-plugin-react-compiler": "^19.0.0-beta-201e55d-20241215", + "eslint-plugin-react-hooks": "^5.1.0", + "eslint-plugin-react-refresh": "^0.4.5", + "globals": "^15.14.0", + "postcss": "^8.4.49", + "prettier-plugin-tailwindcss": "^0.6.9", + "tailwindcss": "^3.4.17", + "typescript": "^5.2.2", + "typescript-eslint": "^8.18.2", + "vite": "^6.0.6" } }, "node_modules/@alloc/quick-lru": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", + "license": "MIT", "engines": { "node": ">=10" }, @@ -97,7 +98,7 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", - "dev": true, + "license": "Apache-2.0", "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.24" @@ -107,12 +108,13 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", - "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", - "dev": true, + "version": "7.26.2", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", + "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", + "license": "MIT", "dependencies": { - "@babel/highlight": "^7.24.7", + "@babel/helper-validator-identifier": "^7.25.9", + "js-tokens": "^4.0.0", "picocolors": "^1.0.0" }, "engines": { @@ -120,32 +122,30 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.25.4", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.25.4.tgz", - "integrity": "sha512-+LGRog6RAsCJrrrg/IO6LGmpphNe5DiK30dGjCoxxeGv49B10/3XYGxPsAwrDlMFcFEvdAUavDT8r9k/hSyQqQ==", - "dev": true, + "version": "7.26.3", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.3.tgz", + "integrity": "sha512-nHIxvKPniQXpmQLb0vhY3VaFb3S0YrTAwpOWJZh1wn3oJPjJk9Asva204PsBdmAE8vpzfHudT8DB0scYvy9q0g==", "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.25.2", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.25.2.tgz", - "integrity": "sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==", - "dev": true, + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.0.tgz", + "integrity": "sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==", "license": "MIT", "dependencies": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.24.7", - "@babel/generator": "^7.25.0", - "@babel/helper-compilation-targets": "^7.25.2", - "@babel/helper-module-transforms": "^7.25.2", - "@babel/helpers": "^7.25.0", - "@babel/parser": "^7.25.0", - "@babel/template": "^7.25.0", - "@babel/traverse": "^7.25.2", - "@babel/types": "^7.25.2", + "@babel/code-frame": "^7.26.0", + "@babel/generator": "^7.26.0", + "@babel/helper-compilation-targets": "^7.25.9", + "@babel/helper-module-transforms": "^7.26.0", + "@babel/helpers": "^7.26.0", + "@babel/parser": "^7.26.0", + "@babel/template": "^7.25.9", + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.26.0", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -164,37 +164,49 @@ "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/@babel/generator": { - "version": "7.25.6", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.25.6.tgz", - "integrity": "sha512-VPC82gr1seXOpkjAAKoLhP50vx4vGNlF4msF64dSFq1P8RfB+QAuJWGHPXXPc8QyfVWwwB/TNNU4+ayZmHNbZw==", - "dev": true, + "version": "7.26.3", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.3.tgz", + "integrity": "sha512-6FF/urZvD0sTeO7k6/B15pMLC4CHUv1426lzr3N01aHJTl046uCAh9LXW/fzeXXjPNCJ6iABW5XaWOsIZB93aQ==", "license": "MIT", "dependencies": { - "@babel/types": "^7.25.6", + "@babel/parser": "^7.26.3", + "@babel/types": "^7.26.3", "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25", - "jsesc": "^2.5.1" + "jsesc": "^3.0.2" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.25.2", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.2.tgz", - "integrity": "sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==", + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.9.tgz", + "integrity": "sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==", "dev": true, "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.25.2", - "@babel/helper-validator-option": "^7.24.8", - "browserslist": "^4.23.1", + "@babel/types": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.9.tgz", + "integrity": "sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ==", + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.25.9", + "@babel/helper-validator-option": "^7.25.9", + "browserslist": "^4.24.0", "lru-cache": "^5.1.1", "semver": "^6.3.1" }, @@ -203,6 +215,37 @@ } }, "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.9.tgz", + "integrity": "sha512-UTZQMvt0d/rSz6KI+qdu7GQze5TIajwTS++GUozlw8VBJDEOAqSXwm1WvmYEZwqdqSGQshRocPDqrt4HBZB3fQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-member-expression-to-functions": "^7.25.9", + "@babel/helper-optimise-call-expression": "^7.25.9", + "@babel/helper-replace-supers": "^7.25.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9", + "@babel/traverse": "^7.25.9", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", @@ -212,31 +255,42 @@ "semver": "bin/semver.js" } }, - "node_modules/@babel/helper-module-imports": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz", - "integrity": "sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==", + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.25.9.tgz", + "integrity": "sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/traverse": "^7.24.7", - "@babel/types": "^7.24.7" + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz", + "integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==", + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.25.2", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.25.2.tgz", - "integrity": "sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==", - "dev": true, + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz", + "integrity": "sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==", "license": "MIT", "dependencies": { - "@babel/helper-module-imports": "^7.24.7", - "@babel/helper-simple-access": "^7.24.7", - "@babel/helper-validator-identifier": "^7.24.7", - "@babel/traverse": "^7.25.2" + "@babel/helper-module-imports": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9", + "@babel/traverse": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -245,95 +299,108 @@ "@babel/core": "^7.0.0" } }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.25.9.tgz", + "integrity": "sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.7.tgz", - "integrity": "sha512-Rq76wjt7yz9AAc1KnlRKNAi/dMSVWgDRx43FHoJEbcYU6xOWaE2dVPwcdTukJrjxS65GITyfbvEYHvkirZ6uEg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.9.tgz", + "integrity": "sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/helper-simple-access": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz", - "integrity": "sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==", + "node_modules/@babel/helper-replace-supers": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.25.9.tgz", + "integrity": "sha512-IiDqTOTBQy0sWyeXyGSC5TBJpGFXBkRynjBeXsvbhQFKj2viwJC76Epz35YLU1fpe/Am6Vppb7W7zM4fPQzLsQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/traverse": "^7.24.7", - "@babel/types": "^7.24.7" + "@babel/helper-member-expression-to-functions": "^7.25.9", + "@babel/helper-optimise-call-expression": "^7.25.9", + "@babel/traverse": "^7.25.9" }, "engines": { "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/@babel/helper-string-parser": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz", - "integrity": "sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==", + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.25.9.tgz", + "integrity": "sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA==", "dev": true, "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" + }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", - "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==", - "dev": true, + "node_modules/@babel/helper-string-parser": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", + "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", + "license": "MIT", "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/helper-validator-option": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.8.tgz", - "integrity": "sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==", - "dev": true, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", + "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", "license": "MIT", "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/helpers": { - "version": "7.25.6", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.25.6.tgz", - "integrity": "sha512-Xg0tn4HcfTijTwfDwYlvVCl43V6h4KyVVX2aEm4qdO/PC6L2YvzLHFdmxhoeSA3eslcE6+ZVXHgWwopXYLNq4Q==", - "dev": true, + "node_modules/@babel/helper-validator-option": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz", + "integrity": "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==", "license": "MIT", - "dependencies": { - "@babel/template": "^7.25.0", - "@babel/types": "^7.25.6" - }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/highlight": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz", - "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==", - "dev": true, + "node_modules/@babel/helpers": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.0.tgz", + "integrity": "sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==", + "license": "MIT", "dependencies": { - "@babel/helper-validator-identifier": "^7.24.7", - "chalk": "^2.4.2", - "js-tokens": "^4.0.0", - "picocolors": "^1.0.0" + "@babel/template": "^7.25.9", + "@babel/types": "^7.26.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/parser": { - "version": "7.25.6", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.6.tgz", - "integrity": "sha512-trGdfBdbD0l1ZPmcJ83eNxB9rbEax4ALFTF7fN386TMYbeCQbyme5cOEXQhbGXKebwGaB/J52w1mrklMcbgy6Q==", - "dev": true, + "version": "7.26.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.3.tgz", + "integrity": "sha512-WJ/CvmY8Mea8iDXo6a7RK2wbmJITT5fN3BEkRuFlxVyNx8jOKIIhmC4fSkTcPcf8JyavbBwIe6OpiCOBXt/IcA==", "license": "MIT", "dependencies": { - "@babel/types": "^7.25.6" + "@babel/types": "^7.26.3" }, "bin": { "parser": "bin/babel-parser.js" @@ -342,13 +409,32 @@ "node": ">=6.0.0" } }, + "node_modules/@babel/plugin-proposal-private-methods": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz", + "integrity": "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-private-methods instead.", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, "node_modules/@babel/plugin-transform-react-jsx-self": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.24.7.tgz", - "integrity": "sha512-fOPQYbGSgH0HUp4UJO4sMBFjY6DuWq+2i8rixyUMb3CdGixs/gccURvYOAhajBdKDoGajFr3mUq5rH3phtkGzw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.25.9.tgz", + "integrity": "sha512-y8quW6p0WHkEhmErnfe58r7x0A70uKphQm8Sp8cV7tjNQwK56sNVK0M73LK3WuYmsuyrftut4xAkjjgU0twaMg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -358,12 +444,13 @@ } }, "node_modules/@babel/plugin-transform-react-jsx-source": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.24.7.tgz", - "integrity": "sha512-J2z+MWzZHVOemyLweMqngXrgGC42jQ//R0KdxqkIz/OrbVIIlhFI3WigZ5fO+nwFvBlncr4MGapd8vTyc7RPNQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.25.9.tgz", + "integrity": "sha512-+iqjT8xmXhhYv4/uiYd8FNQsraMFZIfxVSqxxVSZP0WbbSAWvBXAul0m/zu+7Vv4O/3WtApy9pmaTMiumEZgfg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -373,9 +460,10 @@ } }, "node_modules/@babel/runtime": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.7.tgz", - "integrity": "sha512-UwgBRMjJP+xv857DCngvqXI3Iq6J4v0wXmwc6sapg+zyhbwmQX67LUEFrkK5tbyJ30jGuG3ZvWpBiB9LCy1kWw==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.0.tgz", + "integrity": "sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==", + "license": "MIT", "dependencies": { "regenerator-runtime": "^0.14.0" }, @@ -384,32 +472,30 @@ } }, "node_modules/@babel/template": { - "version": "7.25.0", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.0.tgz", - "integrity": "sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==", - "dev": true, + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.9.tgz", + "integrity": "sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==", "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.24.7", - "@babel/parser": "^7.25.0", - "@babel/types": "^7.25.0" + "@babel/code-frame": "^7.25.9", + "@babel/parser": "^7.25.9", + "@babel/types": "^7.25.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.25.6", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.6.tgz", - "integrity": "sha512-9Vrcx5ZW6UwK5tvqsj0nGpp/XzqthkT0dqIc9g1AdtygFToNtTF67XzYS//dm+SAK9cp3B9R4ZO/46p63SCjlQ==", - "dev": true, + "version": "7.26.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.4.tgz", + "integrity": "sha512-fH+b7Y4p3yqvApJALCPJcwb0/XaOSgtK4pzV6WVjPR5GLFQBRI7pfoX2V2iM48NXvX07NUxxm1Vw98YjqTcU5w==", "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.24.7", - "@babel/generator": "^7.25.6", - "@babel/parser": "^7.25.6", - "@babel/template": "^7.25.0", - "@babel/types": "^7.25.6", + "@babel/code-frame": "^7.26.2", + "@babel/generator": "^7.26.3", + "@babel/parser": "^7.26.3", + "@babel/template": "^7.25.9", + "@babel/types": "^7.26.3", "debug": "^4.3.1", "globals": "^11.1.0" }, @@ -417,787 +503,453 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/types": { - "version": "7.25.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.6.tgz", - "integrity": "sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw==", - "dev": true, + "node_modules/@babel/traverse/node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", "license": "MIT", - "dependencies": { - "@babel/helper-string-parser": "^7.24.8", - "@babel/helper-validator-identifier": "^7.24.7", - "to-fast-properties": "^2.0.0" - }, "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@codemirror/autocomplete": { - "version": "6.16.3", - "resolved": "https://registry.npmjs.org/@codemirror/autocomplete/-/autocomplete-6.16.3.tgz", - "integrity": "sha512-Vl/tIeRVVUCRDuOG48lttBasNQu8usGgXQawBXI7WJAiUDSFOfzflmEsZFZo48mAvAaa4FZ/4/yLLxFtdJaKYA==", - "dependencies": { - "@codemirror/language": "^6.0.0", - "@codemirror/state": "^6.0.0", - "@codemirror/view": "^6.17.0", - "@lezer/common": "^1.0.0" - }, - "peerDependencies": { - "@codemirror/language": "^6.0.0", - "@codemirror/state": "^6.0.0", - "@codemirror/view": "^6.0.0", - "@lezer/common": "^1.0.0" - } - }, - "node_modules/@codemirror/commands": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/@codemirror/commands/-/commands-6.6.0.tgz", - "integrity": "sha512-qnY+b7j1UNcTS31Eenuc/5YJB6gQOzkUoNmJQc0rznwqSRpeaWWpjkWy2C/MPTcePpsKJEM26hXrOXl1+nceXg==", - "dependencies": { - "@codemirror/language": "^6.0.0", - "@codemirror/state": "^6.4.0", - "@codemirror/view": "^6.27.0", - "@lezer/common": "^1.1.0" - } - }, - "node_modules/@codemirror/lang-angular": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@codemirror/lang-angular/-/lang-angular-0.1.3.tgz", - "integrity": "sha512-xgeWGJQQl1LyStvndWtruUvb4SnBZDAu/gvFH/ZU+c0W25tQR8e5hq7WTwiIY2dNxnf+49mRiGI/9yxIwB6f5w==", - "license": "MIT", - "dependencies": { - "@codemirror/lang-html": "^6.0.0", - "@codemirror/lang-javascript": "^6.1.2", - "@codemirror/language": "^6.0.0", - "@lezer/common": "^1.2.0", - "@lezer/highlight": "^1.0.0", - "@lezer/lr": "^1.3.3" - } - }, - "node_modules/@codemirror/lang-cpp": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/@codemirror/lang-cpp/-/lang-cpp-6.0.2.tgz", - "integrity": "sha512-6oYEYUKHvrnacXxWxYa6t4puTlbN3dgV662BDfSH8+MfjQjVmP697/KYTDOqpxgerkvoNm7q5wlFMBeX8ZMocg==", - "license": "MIT", - "dependencies": { - "@codemirror/language": "^6.0.0", - "@lezer/cpp": "^1.0.0" - } - }, - "node_modules/@codemirror/lang-css": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/@codemirror/lang-css/-/lang-css-6.3.0.tgz", - "integrity": "sha512-CyR4rUNG9OYcXDZwMPvJdtb6PHbBDKUc/6Na2BIwZ6dKab1JQqKa4di+RNRY9Myn7JB81vayKwJeQ7jEdmNVDA==", - "license": "MIT", - "dependencies": { - "@codemirror/autocomplete": "^6.0.0", - "@codemirror/language": "^6.0.0", - "@codemirror/state": "^6.0.0", - "@lezer/common": "^1.0.2", - "@lezer/css": "^1.1.7" - } - }, - "node_modules/@codemirror/lang-go": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@codemirror/lang-go/-/lang-go-6.0.1.tgz", - "integrity": "sha512-7fNvbyNylvqCphW9HD6WFnRpcDjr+KXX/FgqXy5H5ZS0eC5edDljukm/yNgYkwTsgp2busdod50AOTIy6Jikfg==", - "license": "MIT", - "dependencies": { - "@codemirror/autocomplete": "^6.0.0", - "@codemirror/language": "^6.6.0", - "@codemirror/state": "^6.0.0", - "@lezer/common": "^1.0.0", - "@lezer/go": "^1.0.0" - } - }, - "node_modules/@codemirror/lang-html": { - "version": "6.4.9", - "resolved": "https://registry.npmjs.org/@codemirror/lang-html/-/lang-html-6.4.9.tgz", - "integrity": "sha512-aQv37pIMSlueybId/2PVSP6NPnmurFDVmZwzc7jszd2KAF8qd4VBbvNYPXWQq90WIARjsdVkPbw29pszmHws3Q==", - "license": "MIT", - "dependencies": { - "@codemirror/autocomplete": "^6.0.0", - "@codemirror/lang-css": "^6.0.0", - "@codemirror/lang-javascript": "^6.0.0", - "@codemirror/language": "^6.4.0", - "@codemirror/state": "^6.0.0", - "@codemirror/view": "^6.17.0", - "@lezer/common": "^1.0.0", - "@lezer/css": "^1.1.0", - "@lezer/html": "^1.3.0" - } - }, - "node_modules/@codemirror/lang-java": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@codemirror/lang-java/-/lang-java-6.0.1.tgz", - "integrity": "sha512-OOnmhH67h97jHzCuFaIEspbmsT98fNdhVhmA3zCxW0cn7l8rChDhZtwiwJ/JOKXgfm4J+ELxQihxaI7bj7mJRg==", - "license": "MIT", - "dependencies": { - "@codemirror/language": "^6.0.0", - "@lezer/java": "^1.0.0" - } - }, - "node_modules/@codemirror/lang-javascript": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/@codemirror/lang-javascript/-/lang-javascript-6.2.2.tgz", - "integrity": "sha512-VGQfY+FCc285AhWuwjYxQyUQcYurWlxdKYT4bqwr3Twnd5wP5WSeu52t4tvvuWmljT4EmgEgZCqSieokhtY8hg==", - "license": "MIT", - "dependencies": { - "@codemirror/autocomplete": "^6.0.0", - "@codemirror/language": "^6.6.0", - "@codemirror/lint": "^6.0.0", - "@codemirror/state": "^6.0.0", - "@codemirror/view": "^6.17.0", - "@lezer/common": "^1.0.0", - "@lezer/javascript": "^1.0.0" - } - }, - "node_modules/@codemirror/lang-json": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@codemirror/lang-json/-/lang-json-6.0.1.tgz", - "integrity": "sha512-+T1flHdgpqDDlJZ2Lkil/rLiRy684WMLc74xUnjJH48GQdfJo/pudlTRreZmKwzP8/tGdKf83wlbAdOCzlJOGQ==", - "license": "MIT", - "dependencies": { - "@codemirror/language": "^6.0.0", - "@lezer/json": "^1.0.0" - } - }, - "node_modules/@codemirror/lang-less": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/@codemirror/lang-less/-/lang-less-6.0.2.tgz", - "integrity": "sha512-EYdQTG22V+KUUk8Qq582g7FMnCZeEHsyuOJisHRft/mQ+ZSZ2w51NupvDUHiqtsOy7It5cHLPGfHQLpMh9bqpQ==", - "license": "MIT", - "dependencies": { - "@codemirror/lang-css": "^6.2.0", - "@codemirror/language": "^6.0.0", - "@lezer/common": "^1.2.0", - "@lezer/highlight": "^1.0.0", - "@lezer/lr": "^1.0.0" - } - }, - "node_modules/@codemirror/lang-liquid": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/@codemirror/lang-liquid/-/lang-liquid-6.2.1.tgz", - "integrity": "sha512-J1Mratcm6JLNEiX+U2OlCDTysGuwbHD76XwuL5o5bo9soJtSbz2g6RU3vGHFyS5DC8rgVmFSzi7i6oBftm7tnA==", - "license": "MIT", - "dependencies": { - "@codemirror/autocomplete": "^6.0.0", - "@codemirror/lang-html": "^6.0.0", - "@codemirror/language": "^6.0.0", - "@codemirror/state": "^6.0.0", - "@codemirror/view": "^6.0.0", - "@lezer/common": "^1.0.0", - "@lezer/highlight": "^1.0.0", - "@lezer/lr": "^1.3.1" - } - }, - "node_modules/@codemirror/lang-markdown": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/@codemirror/lang-markdown/-/lang-markdown-6.3.0.tgz", - "integrity": "sha512-lYrI8SdL/vhd0w0aHIEvIRLRecLF7MiiRfzXFZY94dFwHqC9HtgxgagJ8fyYNBldijGatf9wkms60d8SrAj6Nw==", - "license": "MIT", - "dependencies": { - "@codemirror/autocomplete": "^6.7.1", - "@codemirror/lang-html": "^6.0.0", - "@codemirror/language": "^6.3.0", - "@codemirror/state": "^6.0.0", - "@codemirror/view": "^6.0.0", - "@lezer/common": "^1.2.1", - "@lezer/markdown": "^1.0.0" - } - }, - "node_modules/@codemirror/lang-php": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@codemirror/lang-php/-/lang-php-6.0.1.tgz", - "integrity": "sha512-ublojMdw/PNWa7qdN5TMsjmqkNuTBD3k6ndZ4Z0S25SBAiweFGyY68AS3xNcIOlb6DDFDvKlinLQ40vSLqf8xA==", - "license": "MIT", - "dependencies": { - "@codemirror/lang-html": "^6.0.0", - "@codemirror/language": "^6.0.0", - "@codemirror/state": "^6.0.0", - "@lezer/common": "^1.0.0", - "@lezer/php": "^1.0.0" - } - }, - "node_modules/@codemirror/lang-python": { - "version": "6.1.6", - "resolved": "https://registry.npmjs.org/@codemirror/lang-python/-/lang-python-6.1.6.tgz", - "integrity": "sha512-ai+01WfZhWqM92UqjnvorkxosZ2aq2u28kHvr+N3gu012XqY2CThD67JPMHnGceRfXPDBmn1HnyqowdpF57bNg==", - "license": "MIT", - "dependencies": { - "@codemirror/autocomplete": "^6.3.2", - "@codemirror/language": "^6.8.0", - "@codemirror/state": "^6.0.0", - "@lezer/common": "^1.2.1", - "@lezer/python": "^1.1.4" - } - }, - "node_modules/@codemirror/lang-rust": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@codemirror/lang-rust/-/lang-rust-6.0.1.tgz", - "integrity": "sha512-344EMWFBzWArHWdZn/NcgkwMvZIWUR1GEBdwG8FEp++6o6vT6KL9V7vGs2ONsKxxFUPXKI0SPcWhyYyl2zPYxQ==", - "license": "MIT", - "dependencies": { - "@codemirror/language": "^6.0.0", - "@lezer/rust": "^1.0.0" - } - }, - "node_modules/@codemirror/lang-sass": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/@codemirror/lang-sass/-/lang-sass-6.0.2.tgz", - "integrity": "sha512-l/bdzIABvnTo1nzdY6U+kPAC51czYQcOErfzQ9zSm9D8GmNPD0WTW8st/CJwBTPLO8jlrbyvlSEcN20dc4iL0Q==", - "license": "MIT", - "dependencies": { - "@codemirror/lang-css": "^6.2.0", - "@codemirror/language": "^6.0.0", - "@codemirror/state": "^6.0.0", - "@lezer/common": "^1.0.2", - "@lezer/sass": "^1.0.0" - } - }, - "node_modules/@codemirror/lang-sql": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/@codemirror/lang-sql/-/lang-sql-6.8.0.tgz", - "integrity": "sha512-aGLmY4OwGqN3TdSx3h6QeA1NrvaYtF7kkoWR/+W7/JzB0gQtJ+VJxewlnE3+VImhA4WVlhmkJr109PefOOhjLg==", - "license": "MIT", - "dependencies": { - "@codemirror/autocomplete": "^6.0.0", - "@codemirror/language": "^6.0.0", - "@codemirror/state": "^6.0.0", - "@lezer/common": "^1.2.0", - "@lezer/highlight": "^1.0.0", - "@lezer/lr": "^1.0.0" - } - }, - "node_modules/@codemirror/lang-vue": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@codemirror/lang-vue/-/lang-vue-0.1.3.tgz", - "integrity": "sha512-QSKdtYTDRhEHCfo5zOShzxCmqKJvgGrZwDQSdbvCRJ5pRLWBS7pD/8e/tH44aVQT6FKm0t6RVNoSUWHOI5vNug==", - "license": "MIT", - "dependencies": { - "@codemirror/lang-html": "^6.0.0", - "@codemirror/lang-javascript": "^6.1.2", - "@codemirror/language": "^6.0.0", - "@lezer/common": "^1.2.0", - "@lezer/highlight": "^1.0.0", - "@lezer/lr": "^1.3.1" - } - }, - "node_modules/@codemirror/lang-wast": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/@codemirror/lang-wast/-/lang-wast-6.0.2.tgz", - "integrity": "sha512-Imi2KTpVGm7TKuUkqyJ5NRmeFWF7aMpNiwHnLQe0x9kmrxElndyH0K6H/gXtWwY6UshMRAhpENsgfpSwsgmC6Q==", - "license": "MIT", - "dependencies": { - "@codemirror/language": "^6.0.0", - "@lezer/common": "^1.2.0", - "@lezer/highlight": "^1.0.0", - "@lezer/lr": "^1.0.0" - } - }, - "node_modules/@codemirror/lang-xml": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/@codemirror/lang-xml/-/lang-xml-6.1.0.tgz", - "integrity": "sha512-3z0blhicHLfwi2UgkZYRPioSgVTo9PV5GP5ducFH6FaHy0IAJRg+ixj5gTR1gnT/glAIC8xv4w2VL1LoZfs+Jg==", - "license": "MIT", - "dependencies": { - "@codemirror/autocomplete": "^6.0.0", - "@codemirror/language": "^6.4.0", - "@codemirror/state": "^6.0.0", - "@codemirror/view": "^6.0.0", - "@lezer/common": "^1.0.0", - "@lezer/xml": "^1.0.0" - } - }, - "node_modules/@codemirror/lang-yaml": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/@codemirror/lang-yaml/-/lang-yaml-6.1.1.tgz", - "integrity": "sha512-HV2NzbK9bbVnjWxwObuZh5FuPCowx51mEfoFT9y3y+M37fA3+pbxx4I7uePuygFzDsAmCTwQSc/kXh/flab4uw==", - "license": "MIT", - "dependencies": { - "@codemirror/autocomplete": "^6.0.0", - "@codemirror/language": "^6.0.0", - "@codemirror/state": "^6.0.0", - "@lezer/common": "^1.2.0", - "@lezer/highlight": "^1.2.0", - "@lezer/yaml": "^1.0.0" - } - }, - "node_modules/@codemirror/language": { - "version": "6.10.2", - "resolved": "https://registry.npmjs.org/@codemirror/language/-/language-6.10.2.tgz", - "integrity": "sha512-kgbTYTo0Au6dCSc/TFy7fK3fpJmgHDv1sG1KNQKJXVi+xBTEeBPY/M30YXiU6mMXeH+YIDLsbrT4ZwNRdtF+SA==", - "dependencies": { - "@codemirror/state": "^6.0.0", - "@codemirror/view": "^6.23.0", - "@lezer/common": "^1.1.0", - "@lezer/highlight": "^1.0.0", - "@lezer/lr": "^1.0.0", - "style-mod": "^4.0.0" - } - }, - "node_modules/@codemirror/language-data": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/@codemirror/language-data/-/language-data-6.5.1.tgz", - "integrity": "sha512-0sWxeUSNlBr6OmkqybUTImADFUP0M3P0IiSde4nc24bz/6jIYzqYSgkOSLS+CBIoW1vU8Q9KUWXscBXeoMVC9w==", - "license": "MIT", - "dependencies": { - "@codemirror/lang-angular": "^0.1.0", - "@codemirror/lang-cpp": "^6.0.0", - "@codemirror/lang-css": "^6.0.0", - "@codemirror/lang-go": "^6.0.0", - "@codemirror/lang-html": "^6.0.0", - "@codemirror/lang-java": "^6.0.0", - "@codemirror/lang-javascript": "^6.0.0", - "@codemirror/lang-json": "^6.0.0", - "@codemirror/lang-less": "^6.0.0", - "@codemirror/lang-liquid": "^6.0.0", - "@codemirror/lang-markdown": "^6.0.0", - "@codemirror/lang-php": "^6.0.0", - "@codemirror/lang-python": "^6.0.0", - "@codemirror/lang-rust": "^6.0.0", - "@codemirror/lang-sass": "^6.0.0", - "@codemirror/lang-sql": "^6.0.0", - "@codemirror/lang-vue": "^0.1.1", - "@codemirror/lang-wast": "^6.0.0", - "@codemirror/lang-xml": "^6.0.0", - "@codemirror/lang-yaml": "^6.0.0", - "@codemirror/language": "^6.0.0", - "@codemirror/legacy-modes": "^6.4.0" + "node": ">=4" } }, - "node_modules/@codemirror/legacy-modes": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/@codemirror/legacy-modes/-/legacy-modes-6.4.1.tgz", - "integrity": "sha512-vdg3XY7OAs5uLDx2Iw+cGfnwtd7kM+Et/eMsqAGTfT/JKiVBQZXosTzjEbWAi/FrY6DcQIz8mQjBozFHZEUWQA==", + "node_modules/@babel/types": { + "version": "7.26.3", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.3.tgz", + "integrity": "sha512-vN5p+1kl59GVKMvTHt55NzzmYVxprfJD+ql7U9NFIfKCBkYE55LYtS+WtPlaYOyzydrKI8Nezd+aZextrd+FMA==", "license": "MIT", "dependencies": { - "@codemirror/language": "^6.0.0" - } - }, - "node_modules/@codemirror/lint": { - "version": "6.8.1", - "resolved": "https://registry.npmjs.org/@codemirror/lint/-/lint-6.8.1.tgz", - "integrity": "sha512-IZ0Y7S4/bpaunwggW2jYqwLuHj0QtESf5xcROewY6+lDNwZ/NzvR4t+vpYgg9m7V8UXLPYqG+lu3DF470E5Oxg==", - "dependencies": { - "@codemirror/state": "^6.0.0", - "@codemirror/view": "^6.0.0", - "crelt": "^1.0.5" - } - }, - "node_modules/@codemirror/search": { - "version": "6.5.6", - "resolved": "https://registry.npmjs.org/@codemirror/search/-/search-6.5.6.tgz", - "integrity": "sha512-rpMgcsh7o0GuCDUXKPvww+muLA1pDJaFrpq/CCHtpQJYz8xopu4D1hPcKRoDD0YlF8gZaqTNIRa4VRBWyhyy7Q==", - "dependencies": { - "@codemirror/state": "^6.0.0", - "@codemirror/view": "^6.0.0", - "crelt": "^1.0.5" - } - }, - "node_modules/@codemirror/state": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/@codemirror/state/-/state-6.4.1.tgz", - "integrity": "sha512-QkEyUiLhsJoZkbumGZlswmAhA7CBU02Wrz7zvH4SrcifbsqwlXShVXg65f3v/ts57W3dqyamEriMhij1Z3Zz4A==" - }, - "node_modules/@codemirror/view": { - "version": "6.28.2", - "resolved": "https://registry.npmjs.org/@codemirror/view/-/view-6.28.2.tgz", - "integrity": "sha512-A3DmyVfjgPsGIjiJqM/zvODUAPQdQl3ci0ghehYNnbt5x+o76xq+dL5+mMBuysDXnI3kapgOkoeJ0sbtL/3qPw==", - "dependencies": { - "@codemirror/state": "^6.4.0", - "style-mod": "^4.1.0", - "w3c-keyname": "^2.2.4" + "@babel/helper-string-parser": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@esbuild/aix-ppc64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", - "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.24.2.tgz", + "integrity": "sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA==", "cpu": [ "ppc64" ], - "dev": true, + "license": "MIT", "optional": true, "os": [ "aix" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/android-arm": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", - "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.24.2.tgz", + "integrity": "sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q==", "cpu": [ "arm" ], - "dev": true, + "license": "MIT", "optional": true, "os": [ "android" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/android-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", - "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.24.2.tgz", + "integrity": "sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg==", "cpu": [ "arm64" ], - "dev": true, + "license": "MIT", "optional": true, "os": [ "android" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/android-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", - "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.24.2.tgz", + "integrity": "sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw==", "cpu": [ "x64" ], - "dev": true, + "license": "MIT", "optional": true, "os": [ "android" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", - "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.24.2.tgz", + "integrity": "sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA==", "cpu": [ "arm64" ], - "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", - "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.24.2.tgz", + "integrity": "sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA==", "cpu": [ "x64" ], - "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", - "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.24.2.tgz", + "integrity": "sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg==", "cpu": [ "arm64" ], - "dev": true, + "license": "MIT", "optional": true, "os": [ "freebsd" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", - "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.24.2.tgz", + "integrity": "sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q==", "cpu": [ "x64" ], - "dev": true, + "license": "MIT", "optional": true, "os": [ "freebsd" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-arm": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", - "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.24.2.tgz", + "integrity": "sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA==", "cpu": [ "arm" ], - "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", - "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.24.2.tgz", + "integrity": "sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg==", "cpu": [ "arm64" ], - "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", - "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.24.2.tgz", + "integrity": "sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw==", "cpu": [ "ia32" ], - "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", - "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.24.2.tgz", + "integrity": "sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ==", "cpu": [ "loong64" ], - "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", - "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.24.2.tgz", + "integrity": "sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw==", "cpu": [ "mips64el" ], - "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", - "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.24.2.tgz", + "integrity": "sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw==", "cpu": [ "ppc64" ], - "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", - "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.24.2.tgz", + "integrity": "sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q==", "cpu": [ "riscv64" ], - "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", - "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.24.2.tgz", + "integrity": "sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw==", "cpu": [ "s390x" ], - "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", - "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.24.2.tgz", + "integrity": "sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q==", "cpu": [ "x64" ], - "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.24.2.tgz", + "integrity": "sha512-wuLK/VztRRpMt9zyHSazyCVdCXlpHkKm34WUyinD2lzK07FAHTq0KQvZZlXikNWkDGoT6x3TD51jKQ7gMVpopw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", - "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.24.2.tgz", + "integrity": "sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw==", "cpu": [ "x64" ], - "dev": true, + "license": "MIT", "optional": true, "os": [ "netbsd" ], "engines": { - "node": ">=12" + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.24.2.tgz", + "integrity": "sha512-YQbi46SBct6iKnszhSvdluqDmxCJA+Pu280Av9WICNwQmMxV7nLRHZfjQzwbPs3jeWnuAhE9Jy0NrnJ12Oz+0A==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", - "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.24.2.tgz", + "integrity": "sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA==", "cpu": [ "x64" ], - "dev": true, + "license": "MIT", "optional": true, "os": [ "openbsd" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/sunos-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", - "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.24.2.tgz", + "integrity": "sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig==", "cpu": [ "x64" ], - "dev": true, + "license": "MIT", "optional": true, "os": [ "sunos" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", - "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.24.2.tgz", + "integrity": "sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ==", "cpu": [ "arm64" ], - "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", - "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.24.2.tgz", + "integrity": "sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA==", "cpu": [ "ia32" ], - "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/win32-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", - "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.24.2.tgz", + "integrity": "sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg==", "cpu": [ "x64" ], - "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@eslint-community/eslint-utils": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", - "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz", + "integrity": "sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==", "dev": true, + "license": "MIT", "dependencies": { - "eslint-visitor-keys": "^3.3.0" + "eslint-visitor-keys": "^3.4.3" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, + "funding": { + "url": "https://opencollective.com/eslint" + }, "peerDependencies": { "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, "node_modules/@eslint-community/regexpp": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.0.tgz", - "integrity": "sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==", + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", + "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", "dev": true, + "license": "MIT", "engines": { "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } @@ -1207,6 +959,7 @@ "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", "dev": true, + "license": "MIT", "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", @@ -1230,6 +983,7 @@ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -1240,6 +994,7 @@ "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "dev": true, + "license": "MIT", "dependencies": { "type-fest": "^0.20.2" }, @@ -1255,6 +1010,7 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -1263,35 +1019,39 @@ } }, "node_modules/@eslint/js": { - "version": "8.57.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", - "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", + "version": "9.17.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.17.0.tgz", + "integrity": "sha512-Sxc4hqcs1kTu0iID3kcZDW3JHq2a77HO9P8CP6YEA/FpH3Ll8UXE2r/86Rz9YJLKme39S9vU5OWNjC6Xl0Cr3w==", "dev": true, + "license": "MIT", "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, "node_modules/@floating-ui/core": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.3.tgz", - "integrity": "sha512-1ZpCvYf788/ZXOhRQGFxnYQOVgeU+pi0i+d0Ow34La7qjIXETi6RNswGVKkA6KcDO8/+Ysu2E/CeUmmeEBDvTg==", + "version": "1.6.8", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.8.tgz", + "integrity": "sha512-7XJ9cPU+yI2QeLS+FCSlqNFZJq8arvswefkZrYI1yQBbftw6FyrZOxYSh+9S7z7TpeWlRt9zJ5IhM1WIL334jA==", + "license": "MIT", "dependencies": { - "@floating-ui/utils": "^0.2.3" + "@floating-ui/utils": "^0.2.8" } }, "node_modules/@floating-ui/dom": { - "version": "1.6.6", - "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.6.tgz", - "integrity": "sha512-qiTYajAnh3P+38kECeffMSQgbvXty2VB6rS+42iWR4FPIlZjLK84E9qtLnMTLIpPz2znD/TaFqaiavMUrS+Hcw==", + "version": "1.6.12", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.12.tgz", + "integrity": "sha512-NP83c0HjokcGVEMeoStg317VD9W7eDlGK7457dMBANbKA6GJZdc7rjujdgqzTaz93jkGgc5P/jeWbaCHnMNc+w==", + "license": "MIT", "dependencies": { - "@floating-ui/core": "^1.0.0", - "@floating-ui/utils": "^0.2.3" + "@floating-ui/core": "^1.6.0", + "@floating-ui/utils": "^0.2.8" } }, "node_modules/@floating-ui/react-dom": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.1.tgz", - "integrity": "sha512-4h84MJt3CHrtG18mGsXuLCHMrug49d7DFkU0RMIyshRveBeyV2hmV/pDaF2Uxtu8kgq5r46llp5E5FQiR0K2Yg==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.2.tgz", + "integrity": "sha512-06okr5cgPzMNBy+Ycse2A6udMi4bqwW/zgBF/rwjcNqWkyr82Mcg8b0vjX8OJpZFy/FKjJmw6wV7t44kK6kW7A==", + "license": "MIT", "dependencies": { "@floating-ui/dom": "^1.0.0" }, @@ -1301,26 +1061,29 @@ } }, "node_modules/@floating-ui/utils": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.3.tgz", - "integrity": "sha512-XGndio0l5/Gvd6CLIABvsav9HHezgDFFhDfHk1bvLfr9ni8dojqLSvBbotJEjmIwNHL7vK4QzBJTdBRoB+c1ww==" + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.8.tgz", + "integrity": "sha512-kym7SodPp8/wloecOpcmSnWJsK7M0E5Wg8UcFA+uO4B9s5d0ywXOEro/8HM9x0rW+TljRzul/14UYz3TleT3ig==", + "license": "MIT" }, "node_modules/@hookform/resolvers": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/@hookform/resolvers/-/resolvers-3.6.0.tgz", - "integrity": "sha512-UBcpyOX3+RR+dNnqBd0lchXpoL8p4xC21XP8H6Meb8uve5Br1GCnmg0PcBoKKqPKgGu9GHQ/oygcmPrQhetwqw==", + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/@hookform/resolvers/-/resolvers-3.9.1.tgz", + "integrity": "sha512-ud2HqmGBM0P0IABqoskKWI6PEf6ZDDBZkFqe2Vnl+mTHCEHzr3ISjjZyCwTjC/qpL25JC9aIDkloQejvMeq0ug==", + "license": "MIT", "peerDependencies": { "react-hook-form": "^7.0.0" } }, "node_modules/@humanwhocodes/config-array": { - "version": "0.11.14", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", - "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", + "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==", "deprecated": "Use @eslint/config-array instead", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@humanwhocodes/object-schema": "^2.0.2", + "@humanwhocodes/object-schema": "^2.0.3", "debug": "^4.3.1", "minimatch": "^3.0.5" }, @@ -1333,6 +1096,7 @@ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -1343,6 +1107,7 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -1355,6 +1120,7 @@ "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=12.22" }, @@ -1368,20 +1134,20 @@ "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", "deprecated": "Use @eslint/object-schema instead", - "dev": true + "dev": true, + "license": "BSD-3-Clause" }, "node_modules/@ianvs/prettier-plugin-sort-imports": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/@ianvs/prettier-plugin-sort-imports/-/prettier-plugin-sort-imports-4.3.1.tgz", - "integrity": "sha512-ZHwbyjkANZOjaBm3ZosADD2OUYGFzQGxfy67HmGZU94mHqe7g1LCMA7YYKB1Cq+UTPCBqlAYapY0KXAjKEw8Sg==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@ianvs/prettier-plugin-sort-imports/-/prettier-plugin-sort-imports-4.4.0.tgz", + "integrity": "sha512-f4/e+/ANGk3tHuwRW0uh2YuBR50I4h1ZjGQ+5uD8sWfinHTivQsnieR5cz24t8M6Vx4rYvZ5v/IEKZhYpzQm9Q==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@babel/core": "^7.24.0", - "@babel/generator": "^7.23.6", - "@babel/parser": "^7.24.0", - "@babel/traverse": "^7.24.0", - "@babel/types": "^7.24.0", + "@babel/generator": "^7.26.2", + "@babel/parser": "^7.26.2", + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.26.0", "semver": "^7.5.2" }, "peerDependencies": { @@ -1398,6 +1164,7 @@ "version": "8.0.2", "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "license": "ISC", "dependencies": { "string-width": "^5.1.2", "string-width-cjs": "npm:string-width@^4.2.0", @@ -1411,9 +1178,10 @@ } }, "node_modules/@isaacs/cliui/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "license": "MIT", "engines": { "node": ">=12" }, @@ -1425,6 +1193,7 @@ "version": "7.1.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "license": "MIT", "dependencies": { "ansi-regex": "^6.0.1" }, @@ -1436,9 +1205,10 @@ } }, "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", - "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", + "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", + "license": "MIT", "dependencies": { "@jridgewell/set-array": "^1.2.1", "@jridgewell/sourcemap-codec": "^1.4.10", @@ -1452,6 +1222,7 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "license": "MIT", "engines": { "node": ">=6.0.0" } @@ -1460,225 +1231,288 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "license": "MIT", "engines": { "node": ">=6.0.0" } }, "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "license": "MIT" }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.25", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "license": "MIT", "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" } }, - "node_modules/@lezer/common": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@lezer/common/-/common-1.2.1.tgz", - "integrity": "sha512-yemX0ZD2xS/73llMZIK6KplkjIjf2EvAHcinDi/TfJ9hS25G0388+ClHt6/3but0oOxinTcQHJLDXh6w1crzFQ==" + "node_modules/@lexical/clipboard": { + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/@lexical/clipboard/-/clipboard-0.22.0.tgz", + "integrity": "sha512-nG3MX7MYmaf4f4Ia0YaYaJIS1QriuUxNaLHYeAqOPqYZLH1CUnXslCiak6OyQ4dt/QozKKvGM5vpZN2QWvs0Xw==", + "license": "MIT", + "dependencies": { + "@lexical/html": "0.22.0", + "@lexical/list": "0.22.0", + "@lexical/selection": "0.22.0", + "@lexical/utils": "0.22.0", + "lexical": "0.22.0" + } }, - "node_modules/@lezer/cpp": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@lezer/cpp/-/cpp-1.1.2.tgz", - "integrity": "sha512-macwKtyeUO0EW86r3xWQCzOV9/CF8imJLpJlPv3sDY57cPGeUZ8gXWOWNlJr52TVByMV3PayFQCA5SHEERDmVQ==", + "node_modules/@lexical/code": { + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/@lexical/code/-/code-0.22.0.tgz", + "integrity": "sha512-5HQGcv+R7+uOxFGGqGxE5Mj2LcYwxniHejri7s3OJTSeFrGxAXwP2Kxb+5FSvWsyg265snuxZlNNfKVozgJPhA==", "license": "MIT", "dependencies": { - "@lezer/common": "^1.2.0", - "@lezer/highlight": "^1.0.0", - "@lezer/lr": "^1.0.0" + "@lexical/utils": "0.22.0", + "lexical": "0.22.0", + "prismjs": "^1.27.0" } }, - "node_modules/@lezer/css": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/@lezer/css/-/css-1.1.9.tgz", - "integrity": "sha512-TYwgljcDv+YrV0MZFFvYFQHCfGgbPMR6nuqLabBdmZoFH3EP1gvw8t0vae326Ne3PszQkbXfVBjCnf3ZVCr0bA==", + "node_modules/@lexical/devtools-core": { + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/@lexical/devtools-core/-/devtools-core-0.22.0.tgz", + "integrity": "sha512-PFdaN2c+O/eLqNcWzuLBz0AaiLPHs9+iMHUZDQMgAWcKS6uiEBA61VS+ZNZn8zj8RZZvUtxgmZ9wQFFURklfww==", "license": "MIT", "dependencies": { - "@lezer/common": "^1.2.0", - "@lezer/highlight": "^1.0.0", - "@lezer/lr": "^1.0.0" + "@lexical/html": "0.22.0", + "@lexical/link": "0.22.0", + "@lexical/mark": "0.22.0", + "@lexical/table": "0.22.0", + "@lexical/utils": "0.22.0", + "lexical": "0.22.0" + }, + "peerDependencies": { + "react": ">=17.x", + "react-dom": ">=17.x" } }, - "node_modules/@lezer/go": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@lezer/go/-/go-1.0.0.tgz", - "integrity": "sha512-co9JfT3QqX1YkrMmourYw2Z8meGC50Ko4d54QEcQbEYpvdUvN4yb0NBZdn/9ertgvjsySxHsKzH3lbm3vqJ4Jw==", + "node_modules/@lexical/dragon": { + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/@lexical/dragon/-/dragon-0.22.0.tgz", + "integrity": "sha512-68b1EiFbYRqPEhbrFPhfTNe/hSTCFtwBmcIP5cGgEef+lL5XqCxc6NK2g2DK4Dx26DSGwXxTuRG8NuuxFN+CiA==", "license": "MIT", "dependencies": { - "@lezer/common": "^1.2.0", - "@lezer/highlight": "^1.0.0", - "@lezer/lr": "^1.0.0" + "lexical": "0.22.0" } }, - "node_modules/@lezer/highlight": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@lezer/highlight/-/highlight-1.2.0.tgz", - "integrity": "sha512-WrS5Mw51sGrpqjlh3d4/fOwpEV2Hd3YOkp9DBt4k8XZQcoTHZFB7sx030A6OcahF4J1nDQAa3jXlTVVYH50IFA==", + "node_modules/@lexical/hashtag": { + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/@lexical/hashtag/-/hashtag-0.22.0.tgz", + "integrity": "sha512-W6Wrz0+ClezZQavjCjYso+LzRP/rWNUIM6cLwnf7oFXsmIXeaLHXecIbRwZ+SChnj4eUlSlnlknMVi3bJKaOjw==", + "license": "MIT", "dependencies": { - "@lezer/common": "^1.0.0" + "@lexical/utils": "0.22.0", + "lexical": "0.22.0" } }, - "node_modules/@lezer/html": { - "version": "1.3.10", - "resolved": "https://registry.npmjs.org/@lezer/html/-/html-1.3.10.tgz", - "integrity": "sha512-dqpT8nISx/p9Do3AchvYGV3qYc4/rKr3IBZxlHmpIKam56P47RSHkSF5f13Vu9hebS1jM0HmtJIwLbWz1VIY6w==", + "node_modules/@lexical/history": { + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/@lexical/history/-/history-0.22.0.tgz", + "integrity": "sha512-4e/xL7CtYvsv8X4iGH1tPL8J6jthDpzh0a1WWZfL9ipeOYN9Btctq6o1Obdth5DfbMR7ELq7PSN2FK6+jZ4EQQ==", "license": "MIT", "dependencies": { - "@lezer/common": "^1.2.0", - "@lezer/highlight": "^1.0.0", - "@lezer/lr": "^1.0.0" + "@lexical/utils": "0.22.0", + "lexical": "0.22.0" } }, - "node_modules/@lezer/java": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@lezer/java/-/java-1.1.3.tgz", - "integrity": "sha512-yHquUfujwg6Yu4Fd1GNHCvidIvJwi/1Xu2DaKl/pfWIA2c1oXkVvawH3NyXhCaFx4OdlYBVX5wvz2f7Aoa/4Xw==", + "node_modules/@lexical/html": { + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/@lexical/html/-/html-0.22.0.tgz", + "integrity": "sha512-ED2Xik95a4kPg9vbU5pT/sA5hvEyGnuVxg0XvMx/6Gaa7OIhYDiZvSD4DCE+eVfn0xZMnIbX94Ygf4//71kCYw==", "license": "MIT", "dependencies": { - "@lezer/common": "^1.2.0", - "@lezer/highlight": "^1.0.0", - "@lezer/lr": "^1.0.0" + "@lexical/selection": "0.22.0", + "@lexical/utils": "0.22.0", + "lexical": "0.22.0" } }, - "node_modules/@lezer/javascript": { - "version": "1.4.19", - "resolved": "https://registry.npmjs.org/@lezer/javascript/-/javascript-1.4.19.tgz", - "integrity": "sha512-j44kbR1QL26l6dMunZ1uhKBFteVGLVCBGNUD2sUaMnic+rbTviVuoK0CD1l9FTW31EueWvFFswCKMH7Z+M3JRA==", + "node_modules/@lexical/link": { + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/@lexical/link/-/link-0.22.0.tgz", + "integrity": "sha512-mtlsOYW6sgbgvv1ecPt6/9CdlgP0MhVyrF8iu16JpngphVXu/Lz2BSh7TCfY0xho/H2OIu++9lUGn87cK1Zplw==", "license": "MIT", "dependencies": { - "@lezer/common": "^1.2.0", - "@lezer/highlight": "^1.1.3", - "@lezer/lr": "^1.3.0" + "@lexical/utils": "0.22.0", + "lexical": "0.22.0" } }, - "node_modules/@lezer/json": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@lezer/json/-/json-1.0.2.tgz", - "integrity": "sha512-xHT2P4S5eeCYECyKNPhr4cbEL9tc8w83SPwRC373o9uEdrvGKTZoJVAGxpOsZckMlEh9W23Pc72ew918RWQOBQ==", + "node_modules/@lexical/list": { + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/@lexical/list/-/list-0.22.0.tgz", + "integrity": "sha512-DZLzMg1/H+nclV8BNqZe2qk/bz1ogCr7Huzwab5o8jTjpsDJaqyUZasj8wRgBzyLu9jxMQngkarL47nnk+zrbA==", "license": "MIT", "dependencies": { - "@lezer/common": "^1.2.0", - "@lezer/highlight": "^1.0.0", - "@lezer/lr": "^1.0.0" + "@lexical/utils": "0.22.0", + "lexical": "0.22.0" } }, - "node_modules/@lezer/lr": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/@lezer/lr/-/lr-1.4.1.tgz", - "integrity": "sha512-CHsKq8DMKBf9b3yXPDIU4DbH+ZJd/sJdYOW2llbW/HudP5u0VS6Bfq1hLYfgU7uAYGFIyGGQIsSOXGPEErZiJw==", + "node_modules/@lexical/mark": { + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/@lexical/mark/-/mark-0.22.0.tgz", + "integrity": "sha512-d8Jb9xqhHwUrN2uBs0aIjvA/NgeAZCI5Zorynqq5ihBVSytrol09JyRt4t7SXRH4sCpDMDLMWfTjm820RQFq8g==", + "license": "MIT", "dependencies": { - "@lezer/common": "^1.0.0" + "@lexical/utils": "0.22.0", + "lexical": "0.22.0" } }, - "node_modules/@lezer/markdown": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@lezer/markdown/-/markdown-1.3.2.tgz", - "integrity": "sha512-Wu7B6VnrKTbBEohqa63h5vxXjiC4pO5ZQJ/TDbhJxPQaaIoRD/6UVDhSDtVsCwVZV12vvN9KxuLL3ATMnlG0oQ==", + "node_modules/@lexical/markdown": { + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/@lexical/markdown/-/markdown-0.22.0.tgz", + "integrity": "sha512-FJNfegbgry4dFwyzjdK6sasYHsVgiYy2WrVmVKYR/EDBxa0MARnVO7lRRXA37WcqMKi5N8dE/dABmjlmzuYzHA==", "license": "MIT", "dependencies": { - "@lezer/common": "^1.0.0", - "@lezer/highlight": "^1.0.0" + "@lexical/code": "0.22.0", + "@lexical/link": "0.22.0", + "@lexical/list": "0.22.0", + "@lexical/rich-text": "0.22.0", + "@lexical/text": "0.22.0", + "@lexical/utils": "0.22.0", + "lexical": "0.22.0" } }, - "node_modules/@lezer/php": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@lezer/php/-/php-1.0.2.tgz", - "integrity": "sha512-GN7BnqtGRpFyeoKSEqxvGvhJQiI4zkgmYnDk/JIyc7H7Ifc1tkPnUn/R2R8meH3h/aBf5rzjvU8ZQoyiNDtDrA==", + "node_modules/@lexical/offset": { + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/@lexical/offset/-/offset-0.22.0.tgz", + "integrity": "sha512-DgfO0q1+PzLzmMgRxTC7+y4whL6btlNSfv7f47TBAMBoj5tKdkGyMrru0xjoeYHVsMiSNgqMY2HTXU5YokKUOg==", "license": "MIT", "dependencies": { - "@lezer/common": "^1.2.0", - "@lezer/highlight": "^1.0.0", - "@lezer/lr": "^1.1.0" + "lexical": "0.22.0" } }, - "node_modules/@lezer/python": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/@lezer/python/-/python-1.1.14.tgz", - "integrity": "sha512-ykDOb2Ti24n76PJsSa4ZoDF0zH12BSw1LGfQXCYJhJyOGiFTfGaX0Du66Ze72R+u/P35U+O6I9m8TFXov1JzsA==", + "node_modules/@lexical/overflow": { + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/@lexical/overflow/-/overflow-0.22.0.tgz", + "integrity": "sha512-LPj27ChVsOUW7Gv28z9m7NfpPQs7e3OooYL1WzU3R8NYDj/U32YxQXpUDcxHKwBPo8j8NVEna2d3UAG1txz6BA==", "license": "MIT", "dependencies": { - "@lezer/common": "^1.2.0", - "@lezer/highlight": "^1.0.0", - "@lezer/lr": "^1.0.0" + "lexical": "0.22.0" } }, - "node_modules/@lezer/rust": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@lezer/rust/-/rust-1.0.2.tgz", - "integrity": "sha512-Lz5sIPBdF2FUXcWeCu1//ojFAZqzTQNRga0aYv6dYXqJqPfMdCAI0NzajWUd4Xijj1IKJLtjoXRPMvTKWBcqKg==", + "node_modules/@lexical/plain-text": { + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/@lexical/plain-text/-/plain-text-0.22.0.tgz", + "integrity": "sha512-MBlX4PfLN6I/As8uuRnL/17B+lIjmtNSIH90NjykRwBC8dtWr4gzSjm9OGTee6HctxnbQNb1BGLM7W1hLtiKAw==", "license": "MIT", "dependencies": { - "@lezer/common": "^1.2.0", - "@lezer/highlight": "^1.0.0", - "@lezer/lr": "^1.0.0" + "@lexical/clipboard": "0.22.0", + "@lexical/selection": "0.22.0", + "@lexical/utils": "0.22.0", + "lexical": "0.22.0" } }, - "node_modules/@lezer/sass": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/@lezer/sass/-/sass-1.0.7.tgz", - "integrity": "sha512-8HLlOkuX/SMHOggI2DAsXUw38TuURe+3eQ5hiuk9QmYOUyC55B1dYEIMkav5A4IELVaW4e1T4P9WRiI5ka4mdw==", + "node_modules/@lexical/react": { + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/@lexical/react/-/react-0.22.0.tgz", + "integrity": "sha512-kHeAX6QFsDcdih2kBQVnIATOQsDzpMp2VLYlSxatF8JvCTaMQ3quH/CGHLnUAauZDxM2LC/eV+Z4nrUOP3Alyg==", "license": "MIT", "dependencies": { - "@lezer/common": "^1.2.0", - "@lezer/highlight": "^1.0.0", - "@lezer/lr": "^1.0.0" + "@lexical/clipboard": "0.22.0", + "@lexical/code": "0.22.0", + "@lexical/devtools-core": "0.22.0", + "@lexical/dragon": "0.22.0", + "@lexical/hashtag": "0.22.0", + "@lexical/history": "0.22.0", + "@lexical/link": "0.22.0", + "@lexical/list": "0.22.0", + "@lexical/mark": "0.22.0", + "@lexical/markdown": "0.22.0", + "@lexical/overflow": "0.22.0", + "@lexical/plain-text": "0.22.0", + "@lexical/rich-text": "0.22.0", + "@lexical/selection": "0.22.0", + "@lexical/table": "0.22.0", + "@lexical/text": "0.22.0", + "@lexical/utils": "0.22.0", + "@lexical/yjs": "0.22.0", + "lexical": "0.22.0", + "react-error-boundary": "^3.1.4" + }, + "peerDependencies": { + "react": ">=17.x", + "react-dom": ">=17.x" } }, - "node_modules/@lezer/xml": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@lezer/xml/-/xml-1.0.5.tgz", - "integrity": "sha512-VFouqOzmUWfIg+tfmpcdV33ewtK+NSwd4ngSe1aG7HFb4BN0ExyY1b8msp+ndFrnlG4V4iC8yXacjFtrwERnaw==", + "node_modules/@lexical/rich-text": { + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/@lexical/rich-text/-/rich-text-0.22.0.tgz", + "integrity": "sha512-ILN/tht6emxbVK12Hp86y50fk0MGHMHg6Ivt/5OncoDPXfLMicuJRgLgLxLl5dCf7UVQOfa7z8eKEWnE83M5Mg==", "license": "MIT", "dependencies": { - "@lezer/common": "^1.2.0", - "@lezer/highlight": "^1.0.0", - "@lezer/lr": "^1.0.0" + "@lexical/clipboard": "0.22.0", + "@lexical/selection": "0.22.0", + "@lexical/utils": "0.22.0", + "lexical": "0.22.0" } }, - "node_modules/@lezer/yaml": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@lezer/yaml/-/yaml-1.0.3.tgz", - "integrity": "sha512-GuBLekbw9jDBDhGur82nuwkxKQ+a3W5H0GfaAthDXcAu+XdpS43VlnxA9E9hllkpSP5ellRDKjLLj7Lu9Wr6xA==", + "node_modules/@lexical/selection": { + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/@lexical/selection/-/selection-0.22.0.tgz", + "integrity": "sha512-DdRh8bHijQGV1OxeaywulaLRxgYtn1B7miS0I4pP04KkRXVxrlWRP5dGzQoMDghTh+W1QD9GiUSAyz4L9R3zxQ==", "license": "MIT", "dependencies": { - "@lezer/common": "^1.2.0", - "@lezer/highlight": "^1.0.0", - "@lezer/lr": "^1.4.0" + "lexical": "0.22.0" } }, - "node_modules/@markdoc/markdoc": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@markdoc/markdoc/-/markdoc-0.4.0.tgz", - "integrity": "sha512-fSh4P3Y4E7oaKYc2oNzSIJVPDto7SMzAuQN1Iyx53UxzleA6QzRdNWRxmiPqtVDaDi5dELd2yICoG91csrGrAw==", - "engines": { - "node": ">=14.7.0" - }, - "optionalDependencies": { - "@types/markdown-it": "12.2.3" + "node_modules/@lexical/table": { + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/@lexical/table/-/table-0.22.0.tgz", + "integrity": "sha512-Kx4N4kgYKTpcYtYYbp3hfG6We6ss3vWlhJ/f/QuUo18+w8c0a7aaCo4wTjNNUnSuXSFc1E02JlaTTVoI1pVfDw==", + "license": "MIT", + "dependencies": { + "@lexical/clipboard": "0.22.0", + "@lexical/utils": "0.22.0", + "lexical": "0.22.0" + } + }, + "node_modules/@lexical/text": { + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/@lexical/text/-/text-0.22.0.tgz", + "integrity": "sha512-eLQTH11FmTW8VBOcb3hKc6H4S4A2cXFDOXHE3lCA+ErLXOnwlj7tKm52eWyddPTlkNmZ3C8mIvfVPcS4Jxw20Q==", + "license": "MIT", + "dependencies": { + "lexical": "0.22.0" + } + }, + "node_modules/@lexical/utils": { + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/@lexical/utils/-/utils-0.22.0.tgz", + "integrity": "sha512-mQoNS4e0+lqkj3lPKE2u5vdQmdtgsqcLhzNJMhpCmFvJ896l5zKXOFQoFmF8BFz/v7w92FT7dpT5gd0lcIryyg==", + "license": "MIT", + "dependencies": { + "@lexical/list": "0.22.0", + "@lexical/selection": "0.22.0", + "@lexical/table": "0.22.0", + "lexical": "0.22.0" + } + }, + "node_modules/@lexical/yjs": { + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/@lexical/yjs/-/yjs-0.22.0.tgz", + "integrity": "sha512-JrQO03HIIfOURpCpSZgZoTH8WBFumhvl9ysP1ZAqh9f2bLZp7qxi/jFgwOorz0NdM11Qb1dJprNNPaqNnS4BKA==", + "license": "MIT", + "dependencies": { + "@lexical/offset": "0.22.0", + "@lexical/selection": "0.22.0", + "lexical": "0.22.0" }, "peerDependencies": { - "@types/react": "*", - "react": "*" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "react": { - "optional": true - } + "yjs": ">=13.5.22" } }, "node_modules/@noble/ciphers": { "version": "0.5.3", "resolved": "https://registry.npmjs.org/@noble/ciphers/-/ciphers-0.5.3.tgz", "integrity": "sha512-B0+6IIHiqEs3BPMT0hcRmHvEj2QHOLu+uwt+tqDDeVd0oyVzh7BPrDcPjRnV1PV/5LaknXJJQvOuRGR0zQJz+w==", + "license": "MIT", "funding": { "url": "https://paulmillr.com/funding/" } @@ -1687,6 +1521,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.2.0.tgz", "integrity": "sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==", + "license": "MIT", "dependencies": { "@noble/hashes": "1.3.2" }, @@ -1698,6 +1533,7 @@ "version": "1.3.2", "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.2.tgz", "integrity": "sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==", + "license": "MIT", "engines": { "node": ">= 16" }, @@ -1709,6 +1545,7 @@ "version": "1.3.1", "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.1.tgz", "integrity": "sha512-EbqwksQwz9xDRGfDST86whPBgM65E0OH/pCgqW0GBVzO22bNE+NuIbeTb714+IfSjU3aRk47EUvXIb5bTsenKA==", + "license": "MIT", "engines": { "node": ">= 16" }, @@ -1720,6 +1557,7 @@ "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "license": "MIT", "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" @@ -1732,6 +1570,7 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "license": "MIT", "engines": { "node": ">= 8" } @@ -1740,6 +1579,7 @@ "version": "1.2.8", "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "license": "MIT", "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" @@ -1752,34 +1592,51 @@ "version": "0.11.0", "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "license": "MIT", "optional": true, "engines": { "node": ">=14" } }, + "node_modules/@pkgr/core": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.1.1.tgz", + "integrity": "sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts" + } + }, "node_modules/@radix-ui/number": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@radix-ui/number/-/number-1.1.0.tgz", - "integrity": "sha512-V3gRzhVNU1ldS5XhAPTom1fOIo4ccrjjJgmE+LI2h/WaFpHmx0MQApT+KZHnx8abG6Avtfcz4WoEciMnpFT3HQ==" + "integrity": "sha512-V3gRzhVNU1ldS5XhAPTom1fOIo4ccrjjJgmE+LI2h/WaFpHmx0MQApT+KZHnx8abG6Avtfcz4WoEciMnpFT3HQ==", + "license": "MIT" }, "node_modules/@radix-ui/primitive": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.0.tgz", - "integrity": "sha512-4Z8dn6Upk0qk4P74xBhZ6Hd/w0mPEzOOLxy4xiPXOXqjF7jZS0VAKk7/x/H6FyY2zCkYJqePf1G5KmkmNJ4RBA==" + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.1.tgz", + "integrity": "sha512-SJ31y+Q/zAyShtXJc8x83i9TYdbAfHZ++tUZnvjJJqFjzsdUnKsxPL6IEtBlxKkU7yzer//GQtZSV4GbldL3YA==", + "license": "MIT" }, "node_modules/@radix-ui/react-accordion": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-accordion/-/react-accordion-1.2.0.tgz", - "integrity": "sha512-HJOzSX8dQqtsp/3jVxCU3CXEONF7/2jlGAB28oX8TTw1Dz8JYbEI1UcL8355PuLBE41/IRRMvCw7VkiK/jcUOQ==", - "dependencies": { - "@radix-ui/primitive": "1.1.0", - "@radix-ui/react-collapsible": "1.1.0", - "@radix-ui/react-collection": "1.1.0", - "@radix-ui/react-compose-refs": "1.1.0", - "@radix-ui/react-context": "1.1.0", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-accordion/-/react-accordion-1.2.2.tgz", + "integrity": "sha512-b1oh54x4DMCdGsB4/7ahiSrViXxaBwRPotiZNnYXjLha9vfuURSAZErki6qjDoSIV0eXx5v57XnTGVtGwnfp2g==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.1", + "@radix-ui/react-collapsible": "1.1.2", + "@radix-ui/react-collection": "1.1.1", + "@radix-ui/react-compose-refs": "1.1.1", + "@radix-ui/react-context": "1.1.1", "@radix-ui/react-direction": "1.1.0", "@radix-ui/react-id": "1.1.0", - "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-primitive": "2.0.1", "@radix-ui/react-use-controllable-state": "1.1.0" }, "peerDependencies": { @@ -1798,11 +1655,68 @@ } }, "node_modules/@radix-ui/react-arrow": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.1.0.tgz", - "integrity": "sha512-FmlW1rCg7hBpEBwFbjHwCW6AmWLQM6g/v0Sn8XbP9NvmSZ2San1FpQeyPtufzOMSIx7Y4dzjlHoifhp+7NkZhw==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.1.1.tgz", + "integrity": "sha512-NaVpZfmv8SKeZbn4ijN2V3jlHA9ngBG16VnIIm22nUR0Yk8KUALyBxT3KYEUnNuch9sTE8UTsS3whzBgKOL30w==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.0.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-avatar": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-avatar/-/react-avatar-1.1.2.tgz", + "integrity": "sha512-GaC7bXQZ5VgZvVvsJ5mu/AEbjYLnhhkoidOboC50Z6FFlLA03wG2ianUoH+zgDQ31/9gCF59bE4+2bBgTyMiig==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-primitive": "2.0.1", + "@radix-ui/react-use-callback-ref": "1.1.0", + "@radix-ui/react-use-layout-effect": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-checkbox": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-checkbox/-/react-checkbox-1.1.3.tgz", + "integrity": "sha512-HD7/ocp8f1B3e6OHygH0n7ZKjONkhciy1Nh0yuBgObqThc3oyx+vuMfFHKAknXRHHWVE9XvXStxJFyjUmB8PIw==", + "license": "MIT", "dependencies": { - "@radix-ui/react-primitive": "2.0.0" + "@radix-ui/primitive": "1.1.1", + "@radix-ui/react-compose-refs": "1.1.1", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-presence": "1.1.2", + "@radix-ui/react-primitive": "2.0.1", + "@radix-ui/react-use-controllable-state": "1.1.0", + "@radix-ui/react-use-previous": "1.1.0", + "@radix-ui/react-use-size": "1.1.0" }, "peerDependencies": { "@types/react": "*", @@ -1820,16 +1734,17 @@ } }, "node_modules/@radix-ui/react-collapsible": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-collapsible/-/react-collapsible-1.1.0.tgz", - "integrity": "sha512-zQY7Epa8sTL0mq4ajSJpjgn2YmCgyrG7RsQgLp3C0LQVkG7+Tf6Pv1CeNWZLyqMjhdPkBa5Lx7wYBeSu7uCSTA==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-collapsible/-/react-collapsible-1.1.2.tgz", + "integrity": "sha512-PliMB63vxz7vggcyq0IxNYk8vGDrLXVWw4+W4B8YnwI1s18x7YZYqlG9PLX7XxAJUi0g2DxP4XKJMFHh/iVh9A==", + "license": "MIT", "dependencies": { - "@radix-ui/primitive": "1.1.0", - "@radix-ui/react-compose-refs": "1.1.0", - "@radix-ui/react-context": "1.1.0", + "@radix-ui/primitive": "1.1.1", + "@radix-ui/react-compose-refs": "1.1.1", + "@radix-ui/react-context": "1.1.1", "@radix-ui/react-id": "1.1.0", - "@radix-ui/react-presence": "1.1.0", - "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-presence": "1.1.2", + "@radix-ui/react-primitive": "2.0.1", "@radix-ui/react-use-controllable-state": "1.1.0", "@radix-ui/react-use-layout-effect": "1.1.0" }, @@ -1849,14 +1764,15 @@ } }, "node_modules/@radix-ui/react-collection": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.1.0.tgz", - "integrity": "sha512-GZsZslMJEyo1VKm5L1ZJY8tGDxZNPAoUeQUIbKeJfoi7Q4kmig5AsgLMYYuyYbfjd8fBmFORAIwYAkXMnXZgZw==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.1.1.tgz", + "integrity": "sha512-LwT3pSho9Dljg+wY2KN2mrrh6y3qELfftINERIzBUO9e0N+t0oMTyn3k9iv+ZqgrwGkRnLpNJrsMv9BZlt2yuA==", + "license": "MIT", "dependencies": { - "@radix-ui/react-compose-refs": "1.1.0", - "@radix-ui/react-context": "1.1.0", - "@radix-ui/react-primitive": "2.0.0", - "@radix-ui/react-slot": "1.1.0" + "@radix-ui/react-compose-refs": "1.1.1", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-primitive": "2.0.1", + "@radix-ui/react-slot": "1.1.1" }, "peerDependencies": { "@types/react": "*", @@ -1874,9 +1790,10 @@ } }, "node_modules/@radix-ui/react-compose-refs": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.0.tgz", - "integrity": "sha512-b4inOtiaOnYf9KWyO3jAeeCG6FeyfY6ldiEPanbUjWd+xIk5wZeHa8yVwmrJ2vderhu/BQvzCrJI0lHd+wIiqw==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.1.tgz", + "integrity": "sha512-Y9VzoRDSJtgFMUCoiZBDVo084VQ5hfpXxVE+NgkdNsjiDBByiImMZKKhxMwCbdHvhlENG6a833CbFkOQvTricw==", + "license": "MIT", "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" @@ -1888,9 +1805,10 @@ } }, "node_modules/@radix-ui/react-context": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.0.tgz", - "integrity": "sha512-OKrckBy+sMEgYM/sMmqmErVn0kZqrHPJze+Ql3DzYsDDp0hl0L62nx/2122/Bvps1qz645jlcu2tD9lrRSdf8A==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.1.tgz", + "integrity": "sha512-UASk9zi+crv9WteK/NU4PLvOoL3OuE6BWVKNF6hPRBtYBDXQ2u5iu3O59zUlJiTVvkyuycnqrztsHVJwcK9K+Q==", + "license": "MIT", "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" @@ -1902,24 +1820,25 @@ } }, "node_modules/@radix-ui/react-dialog": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-dialog/-/react-dialog-1.1.1.tgz", - "integrity": "sha512-zysS+iU4YP3STKNS6USvFVqI4qqx8EpiwmT5TuCApVEBca+eRCbONi4EgzfNSuVnOXvC5UPHHMjs8RXO6DH9Bg==", - "dependencies": { - "@radix-ui/primitive": "1.1.0", - "@radix-ui/react-compose-refs": "1.1.0", - "@radix-ui/react-context": "1.1.0", - "@radix-ui/react-dismissable-layer": "1.1.0", - "@radix-ui/react-focus-guards": "1.1.0", - "@radix-ui/react-focus-scope": "1.1.0", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dialog/-/react-dialog-1.1.4.tgz", + "integrity": "sha512-Ur7EV1IwQGCyaAuyDRiOLA5JIUZxELJljF+MbM/2NC0BYwfuRrbpS30BiQBJrVruscgUkieKkqXYDOoByaxIoA==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.1", + "@radix-ui/react-compose-refs": "1.1.1", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-dismissable-layer": "1.1.3", + "@radix-ui/react-focus-guards": "1.1.1", + "@radix-ui/react-focus-scope": "1.1.1", "@radix-ui/react-id": "1.1.0", - "@radix-ui/react-portal": "1.1.1", - "@radix-ui/react-presence": "1.1.0", - "@radix-ui/react-primitive": "2.0.0", - "@radix-ui/react-slot": "1.1.0", + "@radix-ui/react-portal": "1.1.3", + "@radix-ui/react-presence": "1.1.2", + "@radix-ui/react-primitive": "2.0.1", + "@radix-ui/react-slot": "1.1.1", "@radix-ui/react-use-controllable-state": "1.1.0", "aria-hidden": "^1.1.1", - "react-remove-scroll": "2.5.7" + "react-remove-scroll": "^2.6.1" }, "peerDependencies": { "@types/react": "*", @@ -1940,6 +1859,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/@radix-ui/react-direction/-/react-direction-1.1.0.tgz", "integrity": "sha512-BUuBvgThEiAXh2DWu93XsT+a3aWrGqolGlqqw5VU1kG7p/ZH2cuDlM1sRLNnY3QcBS69UIz2mcKhMxDsdewhjg==", + "license": "MIT", "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" @@ -1951,13 +1871,14 @@ } }, "node_modules/@radix-ui/react-dismissable-layer": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.0.tgz", - "integrity": "sha512-/UovfmmXGptwGcBQawLzvn2jOfM0t4z3/uKffoBlj724+n3FvBbZ7M0aaBOmkp6pqFYpO4yx8tSVJjx3Fl2jig==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.3.tgz", + "integrity": "sha512-onrWn/72lQoEucDmJnr8uczSNTujT0vJnA/X5+3AkChVPowr8n1yvIKIabhWyMQeMvvmdpsvcyDqx3X1LEXCPg==", + "license": "MIT", "dependencies": { - "@radix-ui/primitive": "1.1.0", - "@radix-ui/react-compose-refs": "1.1.0", - "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/primitive": "1.1.1", + "@radix-ui/react-compose-refs": "1.1.1", + "@radix-ui/react-primitive": "2.0.1", "@radix-ui/react-use-callback-ref": "1.1.0", "@radix-ui/react-use-escape-keydown": "1.1.0" }, @@ -1977,16 +1898,17 @@ } }, "node_modules/@radix-ui/react-dropdown-menu": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-dropdown-menu/-/react-dropdown-menu-2.1.1.tgz", - "integrity": "sha512-y8E+x9fBq9qvteD2Zwa4397pUVhYsh9iq44b5RD5qu1GMJWBCBuVg1hMyItbc6+zH00TxGRqd9Iot4wzf3OoBQ==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dropdown-menu/-/react-dropdown-menu-2.1.4.tgz", + "integrity": "sha512-iXU1Ab5ecM+yEepGAWK8ZhMyKX4ubFdCNtol4sT9D0OVErG9PNElfx3TQhjw7n7BC5nFVz68/5//clWy+8TXzA==", + "license": "MIT", "dependencies": { - "@radix-ui/primitive": "1.1.0", - "@radix-ui/react-compose-refs": "1.1.0", - "@radix-ui/react-context": "1.1.0", + "@radix-ui/primitive": "1.1.1", + "@radix-ui/react-compose-refs": "1.1.1", + "@radix-ui/react-context": "1.1.1", "@radix-ui/react-id": "1.1.0", - "@radix-ui/react-menu": "2.1.1", - "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-menu": "2.1.4", + "@radix-ui/react-primitive": "2.0.1", "@radix-ui/react-use-controllable-state": "1.1.0" }, "peerDependencies": { @@ -2005,9 +1927,10 @@ } }, "node_modules/@radix-ui/react-focus-guards": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.1.0.tgz", - "integrity": "sha512-w6XZNUPVv6xCpZUqb/yN9DL6auvpGX3C/ee6Hdi16v2UUy25HV2Q5bcflsiDyT/g5RwbPQ/GIT1vLkeRb+ITBw==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.1.1.tgz", + "integrity": "sha512-pSIwfrT1a6sIoDASCSpFwOasEwKTZWDw/iBdtnqKO7v6FeOzYJ7U53cPzYFVR3geGGXgVHaH+CdngrrAzqUGxg==", + "license": "MIT", "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" @@ -2019,12 +1942,13 @@ } }, "node_modules/@radix-ui/react-focus-scope": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.1.0.tgz", - "integrity": "sha512-200UD8zylvEyL8Bx+z76RJnASR2gRMuxlgFCPAe/Q/679a/r0eK3MBVYMb7vZODZcffZBdob1EGnky78xmVvcA==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.1.1.tgz", + "integrity": "sha512-01omzJAYRxXdG2/he/+xy+c8a8gCydoQ1yOxnWNcRhrrBW5W+RQJ22EK1SaO8tb3WoUsuEw7mJjBozPzihDFjA==", + "license": "MIT", "dependencies": { - "@radix-ui/react-compose-refs": "1.1.0", - "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-compose-refs": "1.1.1", + "@radix-ui/react-primitive": "2.0.1", "@radix-ui/react-use-callback-ref": "1.1.0" }, "peerDependencies": { @@ -2042,18 +1966,11 @@ } } }, - "node_modules/@radix-ui/react-icons": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-icons/-/react-icons-1.3.0.tgz", - "integrity": "sha512-jQxj/0LKgp+j9BiTXz3O3sgs26RNet2iLWmsPyRz2SIcR4q/4SbazXfnYwbAr+vLYKSfc7qxzyGQA1HLlYiuNw==", - "peerDependencies": { - "react": "^16.x || ^17.x || ^18.x" - } - }, "node_modules/@radix-ui/react-id": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.1.0.tgz", "integrity": "sha512-EJUrI8yYh7WOjNOqpoJaf1jlFIH2LvtgAl+YcFqNCa+4hj64ZXmPkAKOFs/ukjz3byN6bdb/AVUqHkI8/uWWMA==", + "license": "MIT", "dependencies": { "@radix-ui/react-use-layout-effect": "1.1.0" }, @@ -2068,11 +1985,12 @@ } }, "node_modules/@radix-ui/react-label": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-label/-/react-label-2.1.0.tgz", - "integrity": "sha512-peLblDlFw/ngk3UWq0VnYaOLy6agTZZ+MUO/WhVfm14vJGML+xH4FAl2XQGLqdefjNb7ApRg6Yn7U42ZhmYXdw==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-label/-/react-label-2.1.1.tgz", + "integrity": "sha512-UUw5E4e/2+4kFMH7+YxORXGWggtY6sM8WIwh5RZchhLuUg2H1hc98Py+pr8HMz6rdaYrK2t296ZEjYLOCO5uUw==", + "license": "MIT", "dependencies": { - "@radix-ui/react-primitive": "2.0.0" + "@radix-ui/react-primitive": "2.0.1" }, "peerDependencies": { "@types/react": "*", @@ -2090,28 +2008,29 @@ } }, "node_modules/@radix-ui/react-menu": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-menu/-/react-menu-2.1.1.tgz", - "integrity": "sha512-oa3mXRRVjHi6DZu/ghuzdylyjaMXLymx83irM7hTxutQbD+7IhPKdMdRHD26Rm+kHRrWcrUkkRPv5pd47a2xFQ==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-menu/-/react-menu-2.1.4.tgz", + "integrity": "sha512-BnOgVoL6YYdHAG6DtXONaR29Eq4nvbi8rutrV/xlr3RQCMMb3yqP85Qiw/3NReozrSW+4dfLkK+rc1hb4wPU/A==", + "license": "MIT", "dependencies": { - "@radix-ui/primitive": "1.1.0", - "@radix-ui/react-collection": "1.1.0", - "@radix-ui/react-compose-refs": "1.1.0", - "@radix-ui/react-context": "1.1.0", + "@radix-ui/primitive": "1.1.1", + "@radix-ui/react-collection": "1.1.1", + "@radix-ui/react-compose-refs": "1.1.1", + "@radix-ui/react-context": "1.1.1", "@radix-ui/react-direction": "1.1.0", - "@radix-ui/react-dismissable-layer": "1.1.0", - "@radix-ui/react-focus-guards": "1.1.0", - "@radix-ui/react-focus-scope": "1.1.0", + "@radix-ui/react-dismissable-layer": "1.1.3", + "@radix-ui/react-focus-guards": "1.1.1", + "@radix-ui/react-focus-scope": "1.1.1", "@radix-ui/react-id": "1.1.0", - "@radix-ui/react-popper": "1.2.0", - "@radix-ui/react-portal": "1.1.1", - "@radix-ui/react-presence": "1.1.0", - "@radix-ui/react-primitive": "2.0.0", - "@radix-ui/react-roving-focus": "1.1.0", - "@radix-ui/react-slot": "1.1.0", + "@radix-ui/react-popper": "1.2.1", + "@radix-ui/react-portal": "1.1.3", + "@radix-ui/react-presence": "1.1.2", + "@radix-ui/react-primitive": "2.0.1", + "@radix-ui/react-roving-focus": "1.1.1", + "@radix-ui/react-slot": "1.1.1", "@radix-ui/react-use-callback-ref": "1.1.0", "aria-hidden": "^1.1.1", - "react-remove-scroll": "2.5.7" + "react-remove-scroll": "^2.6.1" }, "peerDependencies": { "@types/react": "*", @@ -2129,25 +2048,26 @@ } }, "node_modules/@radix-ui/react-popover": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-popover/-/react-popover-1.1.1.tgz", - "integrity": "sha512-3y1A3isulwnWhvTTwmIreiB8CF4L+qRjZnK1wYLO7pplddzXKby/GnZ2M7OZY3qgnl6p9AodUIHRYGXNah8Y7g==", - "dependencies": { - "@radix-ui/primitive": "1.1.0", - "@radix-ui/react-compose-refs": "1.1.0", - "@radix-ui/react-context": "1.1.0", - "@radix-ui/react-dismissable-layer": "1.1.0", - "@radix-ui/react-focus-guards": "1.1.0", - "@radix-ui/react-focus-scope": "1.1.0", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-popover/-/react-popover-1.1.4.tgz", + "integrity": "sha512-aUACAkXx8LaFymDma+HQVji7WhvEhpFJ7+qPz17Nf4lLZqtreGOFRiNQWQmhzp7kEWg9cOyyQJpdIMUMPc/CPw==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.1", + "@radix-ui/react-compose-refs": "1.1.1", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-dismissable-layer": "1.1.3", + "@radix-ui/react-focus-guards": "1.1.1", + "@radix-ui/react-focus-scope": "1.1.1", "@radix-ui/react-id": "1.1.0", - "@radix-ui/react-popper": "1.2.0", - "@radix-ui/react-portal": "1.1.1", - "@radix-ui/react-presence": "1.1.0", - "@radix-ui/react-primitive": "2.0.0", - "@radix-ui/react-slot": "1.1.0", + "@radix-ui/react-popper": "1.2.1", + "@radix-ui/react-portal": "1.1.3", + "@radix-ui/react-presence": "1.1.2", + "@radix-ui/react-primitive": "2.0.1", + "@radix-ui/react-slot": "1.1.1", "@radix-ui/react-use-controllable-state": "1.1.0", "aria-hidden": "^1.1.1", - "react-remove-scroll": "2.5.7" + "react-remove-scroll": "^2.6.1" }, "peerDependencies": { "@types/react": "*", @@ -2165,15 +2085,16 @@ } }, "node_modules/@radix-ui/react-popper": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.2.0.tgz", - "integrity": "sha512-ZnRMshKF43aBxVWPWvbj21+7TQCvhuULWJ4gNIKYpRlQt5xGRhLx66tMp8pya2UkGHTSlhpXwmjqltDYHhw7Vg==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.2.1.tgz", + "integrity": "sha512-3kn5Me69L+jv82EKRuQCXdYyf1DqHwD2U/sxoNgBGCB7K9TRc3bQamQ+5EPM9EvyPdli0W41sROd+ZU1dTCztw==", + "license": "MIT", "dependencies": { "@floating-ui/react-dom": "^2.0.0", - "@radix-ui/react-arrow": "1.1.0", - "@radix-ui/react-compose-refs": "1.1.0", - "@radix-ui/react-context": "1.1.0", - "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-arrow": "1.1.1", + "@radix-ui/react-compose-refs": "1.1.1", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-primitive": "2.0.1", "@radix-ui/react-use-callback-ref": "1.1.0", "@radix-ui/react-use-layout-effect": "1.1.0", "@radix-ui/react-use-rect": "1.1.0", @@ -2196,11 +2117,12 @@ } }, "node_modules/@radix-ui/react-portal": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.1.1.tgz", - "integrity": "sha512-A3UtLk85UtqhzFqtoC8Q0KvR2GbXF3mtPgACSazajqq6A41mEQgo53iPzY4i6BwDxlIFqWIhiQ2G729n+2aw/g==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.1.3.tgz", + "integrity": "sha512-NciRqhXnGojhT93RPyDaMPfLH3ZSl4jjIFbZQ1b/vxvZEdHsBZ49wP9w8L3HzUQwep01LcWtkUvm0OVB5JAHTw==", + "license": "MIT", "dependencies": { - "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-primitive": "2.0.1", "@radix-ui/react-use-layout-effect": "1.1.0" }, "peerDependencies": { @@ -2219,11 +2141,12 @@ } }, "node_modules/@radix-ui/react-presence": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.1.0.tgz", - "integrity": "sha512-Gq6wuRN/asf9H/E/VzdKoUtT8GC9PQc9z40/vEr0VCJ4u5XvvhWIrSsCB6vD2/cH7ugTdSfYq9fLJCcM00acrQ==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.1.2.tgz", + "integrity": "sha512-18TFr80t5EVgL9x1SwF/YGtfG+l0BS0PRAlCWBDoBEiDQjeKgnNZRVJp/oVBl24sr3Gbfwc/Qpj4OcWTQMsAEg==", + "license": "MIT", "dependencies": { - "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.1", "@radix-ui/react-use-layout-effect": "1.1.0" }, "peerDependencies": { @@ -2242,11 +2165,12 @@ } }, "node_modules/@radix-ui/react-primitive": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.0.0.tgz", - "integrity": "sha512-ZSpFm0/uHa8zTvKBDjLFWLo8dkr4MBsiDLz0g3gMUwqgLHz9rTaRRGYDgvZPtBJgYCBKXkS9fzmoySgr8CO6Cw==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.0.1.tgz", + "integrity": "sha512-sHCWTtxwNn3L3fH8qAfnF3WbUZycW93SM1j3NFDzXBiz8D6F5UTTy8G1+WFEaiCdvCVRJWj6N2R4Xq6HdiHmDg==", + "license": "MIT", "dependencies": { - "@radix-ui/react-slot": "1.1.0" + "@radix-ui/react-slot": "1.1.1" }, "peerDependencies": { "@types/react": "*", @@ -2264,17 +2188,18 @@ } }, "node_modules/@radix-ui/react-roving-focus": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-roving-focus/-/react-roving-focus-1.1.0.tgz", - "integrity": "sha512-EA6AMGeq9AEeQDeSH0aZgG198qkfHSbvWTf1HvoDmOB5bBG/qTxjYMWUKMnYiV6J/iP/J8MEFSuB2zRU2n7ODA==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-roving-focus/-/react-roving-focus-1.1.1.tgz", + "integrity": "sha512-QE1RoxPGJ/Nm8Qmk0PxP8ojmoaS67i0s7hVssS7KuI2FQoc/uzVlZsqKfQvxPE6D8hICCPHJ4D88zNhT3OOmkw==", + "license": "MIT", "dependencies": { - "@radix-ui/primitive": "1.1.0", - "@radix-ui/react-collection": "1.1.0", - "@radix-ui/react-compose-refs": "1.1.0", - "@radix-ui/react-context": "1.1.0", + "@radix-ui/primitive": "1.1.1", + "@radix-ui/react-collection": "1.1.1", + "@radix-ui/react-compose-refs": "1.1.1", + "@radix-ui/react-context": "1.1.1", "@radix-ui/react-direction": "1.1.0", "@radix-ui/react-id": "1.1.0", - "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-primitive": "2.0.1", "@radix-ui/react-use-callback-ref": "1.1.0", "@radix-ui/react-use-controllable-state": "1.1.0" }, @@ -2294,17 +2219,18 @@ } }, "node_modules/@radix-ui/react-scroll-area": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-scroll-area/-/react-scroll-area-1.1.0.tgz", - "integrity": "sha512-9ArIZ9HWhsrfqS765h+GZuLoxaRHD/j0ZWOWilsCvYTpYJp8XwCqNG7Dt9Nu/TItKOdgLGkOPCodQvDc+UMwYg==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-scroll-area/-/react-scroll-area-1.2.2.tgz", + "integrity": "sha512-EFI1N/S3YxZEW/lJ/H1jY3njlvTd8tBmgKEn4GHi51+aMm94i6NmAJstsm5cu3yJwYqYc93gpCPm21FeAbFk6g==", + "license": "MIT", "dependencies": { "@radix-ui/number": "1.1.0", - "@radix-ui/primitive": "1.1.0", - "@radix-ui/react-compose-refs": "1.1.0", - "@radix-ui/react-context": "1.1.0", + "@radix-ui/primitive": "1.1.1", + "@radix-ui/react-compose-refs": "1.1.1", + "@radix-ui/react-context": "1.1.1", "@radix-ui/react-direction": "1.1.0", - "@radix-ui/react-presence": "1.1.0", - "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-presence": "1.1.2", + "@radix-ui/react-primitive": "2.0.1", "@radix-ui/react-use-callback-ref": "1.1.0", "@radix-ui/react-use-layout-effect": "1.1.0" }, @@ -2323,54 +2249,13 @@ } } }, - "node_modules/@radix-ui/react-select": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-select/-/react-select-2.1.1.tgz", - "integrity": "sha512-8iRDfyLtzxlprOo9IicnzvpsO1wNCkuwzzCM+Z5Rb5tNOpCdMvcc2AkzX0Fz+Tz9v6NJ5B/7EEgyZveo4FBRfQ==", - "dependencies": { - "@radix-ui/number": "1.1.0", - "@radix-ui/primitive": "1.1.0", - "@radix-ui/react-collection": "1.1.0", - "@radix-ui/react-compose-refs": "1.1.0", - "@radix-ui/react-context": "1.1.0", - "@radix-ui/react-direction": "1.1.0", - "@radix-ui/react-dismissable-layer": "1.1.0", - "@radix-ui/react-focus-guards": "1.1.0", - "@radix-ui/react-focus-scope": "1.1.0", - "@radix-ui/react-id": "1.1.0", - "@radix-ui/react-popper": "1.2.0", - "@radix-ui/react-portal": "1.1.1", - "@radix-ui/react-primitive": "2.0.0", - "@radix-ui/react-slot": "1.1.0", - "@radix-ui/react-use-callback-ref": "1.1.0", - "@radix-ui/react-use-controllable-state": "1.1.0", - "@radix-ui/react-use-layout-effect": "1.1.0", - "@radix-ui/react-use-previous": "1.1.0", - "@radix-ui/react-visually-hidden": "1.1.0", - "aria-hidden": "^1.1.1", - "react-remove-scroll": "2.5.7" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, "node_modules/@radix-ui/react-separator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-separator/-/react-separator-1.1.0.tgz", - "integrity": "sha512-3uBAs+egzvJBDZAzvb/n4NxxOYpnspmWxO2u5NbZ8Y6FM/NdrGSF9bop3Cf6F6C71z1rTSn8KV0Fo2ZVd79lGA==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-separator/-/react-separator-1.1.1.tgz", + "integrity": "sha512-RRiNRSrD8iUiXriq/Y5n4/3iE8HzqgLHsusUSg5jVpU2+3tqcUFPJXHDymwEypunc2sWxDUS3UC+rkZRlHedsw==", + "license": "MIT", "dependencies": { - "@radix-ui/react-primitive": "2.0.0" + "@radix-ui/react-primitive": "2.0.1" }, "peerDependencies": { "@types/react": "*", @@ -2388,11 +2273,12 @@ } }, "node_modules/@radix-ui/react-slot": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.1.0.tgz", - "integrity": "sha512-FUCf5XMfmW4dtYl69pdS4DbxKy8nj4M7SafBgPllysxmdachynNflAdp/gCsnYWNDnge6tI9onzMp5ARYc1KNw==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.1.1.tgz", + "integrity": "sha512-RApLLOcINYJA+dMVbOju7MYv1Mb2EBp2nH4HdDzXTSyaR5optlm6Otrz1euW3HbdOR8UmmFK06TD+A9frYWv+g==", + "license": "MIT", "dependencies": { - "@radix-ui/react-compose-refs": "1.1.0" + "@radix-ui/react-compose-refs": "1.1.1" }, "peerDependencies": { "@types/react": "*", @@ -2404,47 +2290,24 @@ } } }, - "node_modules/@radix-ui/react-switch": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-switch/-/react-switch-1.1.0.tgz", - "integrity": "sha512-OBzy5WAj641k0AOSpKQtreDMe+isX0MQJ1IVyF03ucdF3DunOnROVrjWs8zsXUxC3zfZ6JL9HFVCUlMghz9dJw==", - "dependencies": { - "@radix-ui/primitive": "1.1.0", - "@radix-ui/react-compose-refs": "1.1.0", - "@radix-ui/react-context": "1.1.0", - "@radix-ui/react-primitive": "2.0.0", - "@radix-ui/react-use-controllable-state": "1.1.0", - "@radix-ui/react-use-previous": "1.1.0", - "@radix-ui/react-use-size": "1.1.0" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-tabs": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-tabs/-/react-tabs-1.1.0.tgz", - "integrity": "sha512-bZgOKB/LtZIij75FSuPzyEti/XBhJH52ExgtdVqjCIh+Nx/FW+LhnbXtbCzIi34ccyMsyOja8T0thCzoHFXNKA==", + "node_modules/@radix-ui/react-tooltip": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/@radix-ui/react-tooltip/-/react-tooltip-1.1.6.tgz", + "integrity": "sha512-TLB5D8QLExS1uDn7+wH/bjEmRurNMTzNrtq7IjaS4kjion9NtzsTGkvR5+i7yc9q01Pi2KMM2cN3f8UG4IvvXA==", + "license": "MIT", "dependencies": { - "@radix-ui/primitive": "1.1.0", - "@radix-ui/react-context": "1.1.0", - "@radix-ui/react-direction": "1.1.0", + "@radix-ui/primitive": "1.1.1", + "@radix-ui/react-compose-refs": "1.1.1", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-dismissable-layer": "1.1.3", "@radix-ui/react-id": "1.1.0", - "@radix-ui/react-presence": "1.1.0", - "@radix-ui/react-primitive": "2.0.0", - "@radix-ui/react-roving-focus": "1.1.0", - "@radix-ui/react-use-controllable-state": "1.1.0" + "@radix-ui/react-popper": "1.2.1", + "@radix-ui/react-portal": "1.1.3", + "@radix-ui/react-presence": "1.1.2", + "@radix-ui/react-primitive": "2.0.1", + "@radix-ui/react-slot": "1.1.1", + "@radix-ui/react-use-controllable-state": "1.1.0", + "@radix-ui/react-visually-hidden": "1.1.1" }, "peerDependencies": { "@types/react": "*", @@ -2465,6 +2328,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.1.0.tgz", "integrity": "sha512-CasTfvsy+frcFkbXtSJ2Zu9JHpN8TYKxkgJGWbjiZhFivxaeW7rMeZt7QELGVLaYVfFMsKHjb7Ak0nMEe+2Vfw==", + "license": "MIT", "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" @@ -2479,6 +2343,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.1.0.tgz", "integrity": "sha512-MtfMVJiSr2NjzS0Aa90NPTnvTSg6C/JLCV7ma0W6+OMV78vd8OyRpID+Ng9LxzsPbLeuBnWBA1Nq30AtBIDChw==", + "license": "MIT", "dependencies": { "@radix-ui/react-use-callback-ref": "1.1.0" }, @@ -2496,6 +2361,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.1.0.tgz", "integrity": "sha512-L7vwWlR1kTTQ3oh7g1O0CBF3YCyyTj8NmhLR+phShpyA50HCfBFKVJTpshm9PzLiKmehsrQzTYTpX9HvmC9rhw==", + "license": "MIT", "dependencies": { "@radix-ui/react-use-callback-ref": "1.1.0" }, @@ -2513,6 +2379,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.0.tgz", "integrity": "sha512-+FPE0rOdziWSrH9athwI1R0HDVbWlEhd+FR+aSDk4uWGmSJ9Z54sdZVDQPZAinJhJXwfT+qnj969mCsT2gfm5w==", + "license": "MIT", "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" @@ -2527,6 +2394,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/@radix-ui/react-use-previous/-/react-use-previous-1.1.0.tgz", "integrity": "sha512-Z/e78qg2YFnnXcW88A4JmTtm4ADckLno6F7OXotmkQfeuCVaKuYzqAATPhVzl3delXE7CxIV8shofPn3jPc5Og==", + "license": "MIT", "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" @@ -2541,6 +2409,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/@radix-ui/react-use-rect/-/react-use-rect-1.1.0.tgz", "integrity": "sha512-0Fmkebhr6PiseyZlYAOtLS+nb7jLmpqTrJyv61Pe68MKYW6OWdRE2kI70TaYY27u7H0lajqM3hSMMLFq18Z7nQ==", + "license": "MIT", "dependencies": { "@radix-ui/rect": "1.1.0" }, @@ -2558,6 +2427,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.1.0.tgz", "integrity": "sha512-XW3/vWuIXHa+2Uwcc2ABSfcCledmXhhQPlGbfcRXbiUQI5Icjcg19BGCZVKKInYbvUCut/ufbbLLPFC5cbb1hw==", + "license": "MIT", "dependencies": { "@radix-ui/react-use-layout-effect": "1.1.0" }, @@ -2572,11 +2442,12 @@ } }, "node_modules/@radix-ui/react-visually-hidden": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.1.0.tgz", - "integrity": "sha512-N8MDZqtgCgG5S3aV60INAB475osJousYpZ4cTJ2cFbMpdHS5Y6loLTH8LPtkj2QN0x93J30HT/M3qJXM0+lyeQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.1.1.tgz", + "integrity": "sha512-vVfA2IZ9q/J+gEamvj761Oq1FpWgCDaNOOIfbPVp2MVPLEomUr5+Vf7kJGwQ24YxZSlQVar7Bes8kyTo5Dshpg==", + "license": "MIT", "dependencies": { - "@radix-ui/react-primitive": "2.0.0" + "@radix-ui/react-primitive": "2.0.1" }, "peerDependencies": { "@types/react": "*", @@ -2596,28 +2467,16 @@ "node_modules/@radix-ui/rect": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@radix-ui/rect/-/rect-1.1.0.tgz", - "integrity": "sha512-A9+lCBZoaMJlVKcRBz2YByCG+Cp2t6nAnMnNba+XiWxnj6r4JUFqfsgwocMBZU9LPtdxC6wB56ySYpc7LQIoJg==" - }, - "node_modules/@replit/codemirror-vim": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/@replit/codemirror-vim/-/codemirror-vim-6.2.1.tgz", - "integrity": "sha512-qDAcGSHBYU5RrdO//qCmD8K9t6vbP327iCj/iqrkVnjbrpFhrjOt92weGXGHmTNRh16cUtkUZ7Xq7rZf+8HVow==", - "peerDependencies": { - "@codemirror/commands": "^6.0.0", - "@codemirror/language": "^6.1.0", - "@codemirror/search": "^6.2.0", - "@codemirror/state": "^6.0.1", - "@codemirror/view": "^6.0.3" - } + "integrity": "sha512-A9+lCBZoaMJlVKcRBz2YByCG+Cp2t6nAnMnNba+XiWxnj6r4JUFqfsgwocMBZU9LPtdxC6wB56ySYpc7LQIoJg==", + "license": "MIT" }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.22.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.22.5.tgz", - "integrity": "sha512-SU5cvamg0Eyu/F+kLeMXS7GoahL+OoizlclVFX3l5Ql6yNlywJJ0OuqTzUx0v+aHhPHEB/56CT06GQrRrGNYww==", + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.28.1.tgz", + "integrity": "sha512-2aZp8AES04KI2dy3Ss6/MDjXbwBzj+i0GqKtWXgw2/Ma6E4jJvujryO6gJAghIRVz7Vwr9Gtl/8na3nDUKpraQ==", "cpu": [ "arm" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2625,13 +2484,12 @@ ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.22.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.22.5.tgz", - "integrity": "sha512-S4pit5BP6E5R5C8S6tgU/drvgjtYW76FBuG6+ibG3tMvlD1h9LHVF9KmlmaUBQ8Obou7hEyS+0w+IR/VtxwNMQ==", + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.28.1.tgz", + "integrity": "sha512-EbkK285O+1YMrg57xVA+Dp0tDBRB93/BZKph9XhMjezf6F4TpYjaUSuPt5J0fZXlSag0LmZAsTmdGGqPp4pQFA==", "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2639,13 +2497,12 @@ ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.22.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.22.5.tgz", - "integrity": "sha512-250ZGg4ipTL0TGvLlfACkIxS9+KLtIbn7BCZjsZj88zSg2Lvu3Xdw6dhAhfe/FjjXPVNCtcSp+WZjVsD3a/Zlw==", + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.28.1.tgz", + "integrity": "sha512-prduvrMKU6NzMq6nxzQw445zXgaDBbMQvmKSJaxpaZ5R1QDM8w+eGxo6Y/jhT/cLoCvnZI42oEqf9KQNYz1fqQ==", "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2653,27 +2510,51 @@ ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.22.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.22.5.tgz", - "integrity": "sha512-D8brJEFg5D+QxFcW6jYANu+Rr9SlKtTenmsX5hOSzNYVrK5oLAEMTUgKWYJP+wdKyCdeSwnapLsn+OVRFycuQg==", + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.28.1.tgz", + "integrity": "sha512-WsvbOunsUk0wccO/TV4o7IKgloJ942hVFK1CLatwv6TJspcCZb9umQkPdvB7FihmdxgaKR5JyxDjWpCOp4uZlQ==", "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ "darwin" ] }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.28.1.tgz", + "integrity": "sha512-HTDPdY1caUcU4qK23FeeGxCdJF64cKkqajU0iBnTVxS8F7H/7BewvYoG+va1KPSL63kQ1PGNyiwKOfReavzvNA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.28.1.tgz", + "integrity": "sha512-m/uYasxkUevcFTeRSM9TeLyPe2QDuqtjkeoTpP9SW0XxUWfcYrGDMkO/m2tTw+4NMAF9P2fU3Mw4ahNvo7QmsQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.22.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.22.5.tgz", - "integrity": "sha512-PNqXYmdNFyWNg0ma5LdY8wP+eQfdvyaBAojAXgO7/gs0Q/6TQJVXAXe8gwW9URjbS0YAammur0fynYGiWsKlXw==", + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.28.1.tgz", + "integrity": "sha512-QAg11ZIt6mcmzpNE6JZBpKfJaKkqTm1A9+y9O+frdZJEuhQxiugM05gnCWiANHj4RmbgeVJpTdmKRmH/a+0QbA==", "cpu": [ "arm" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2681,13 +2562,12 @@ ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.22.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.22.5.tgz", - "integrity": "sha512-kSSCZOKz3HqlrEuwKd9TYv7vxPYD77vHSUvM2y0YaTGnFc8AdI5TTQRrM1yIp3tXCKrSL9A7JLoILjtad5t8pQ==", + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.28.1.tgz", + "integrity": "sha512-dRP9PEBfolq1dmMcFqbEPSd9VlRuVWEGSmbxVEfiq2cs2jlZAl0YNxFzAQS2OrQmsLBLAATDMb3Z6MFv5vOcXg==", "cpu": [ "arm" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2695,13 +2575,12 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.22.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.22.5.tgz", - "integrity": "sha512-oTXQeJHRbOnwRnRffb6bmqmUugz0glXaPyspp4gbQOPVApdpRrY/j7KP3lr7M8kTfQTyrBUzFjj5EuHAhqH4/w==", + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.28.1.tgz", + "integrity": "sha512-uGr8khxO+CKT4XU8ZUH1TTEUtlktK6Kgtv0+6bIFSeiSlnGJHG1tSFSjm41uQ9sAO/5ULx9mWOz70jYLyv1QkA==", "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2709,13 +2588,25 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.22.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.22.5.tgz", - "integrity": "sha512-qnOTIIs6tIGFKCHdhYitgC2XQ2X25InIbZFor5wh+mALH84qnFHvc+vmWUpyX97B0hNvwNUL4B+MB8vJvH65Fw==", + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.28.1.tgz", + "integrity": "sha512-QF54q8MYGAqMLrX2t7tNpi01nvq5RI59UBNx+3+37zoKX5KViPo/gk2QLhsuqok05sSCRluj0D00LzCwBikb0A==", "cpu": [ "arm64" ], - "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loongarch64-gnu": { + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.28.1.tgz", + "integrity": "sha512-vPul4uodvWvLhRco2w0GcyZcdyBfpfDRgNKU+p35AWEbJ/HPs1tOUrkSueVbBS0RQHAf/A+nNtDpvw95PeVKOA==", + "cpu": [ + "loong64" + ], "license": "MIT", "optional": true, "os": [ @@ -2723,13 +2614,12 @@ ] }, "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.22.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.22.5.tgz", - "integrity": "sha512-TMYu+DUdNlgBXING13rHSfUc3Ky5nLPbWs4bFnT+R6Vu3OvXkTkixvvBKk8uO4MT5Ab6lC3U7x8S8El2q5o56w==", + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.28.1.tgz", + "integrity": "sha512-pTnTdBuC2+pt1Rmm2SV7JWRqzhYpEILML4PKODqLz+C7Ou2apEV52h19CR7es+u04KlqplggmN9sqZlekg3R1A==", "cpu": [ "ppc64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2737,13 +2627,12 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.22.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.22.5.tgz", - "integrity": "sha512-PTQq1Kz22ZRvuhr3uURH+U/Q/a0pbxJoICGSprNLAoBEkyD3Sh9qP5I0Asn0y0wejXQBbsVMRZRxlbGFD9OK4A==", + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.28.1.tgz", + "integrity": "sha512-vWXy1Nfg7TPBSuAncfInmAI/WZDd5vOklyLJDdIRKABcZWojNDY0NJwruY2AcnCLnRJKSaBgf/GiJfauu8cQZA==", "cpu": [ "riscv64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2751,13 +2640,12 @@ ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.22.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.22.5.tgz", - "integrity": "sha512-bR5nCojtpuMss6TDEmf/jnBnzlo+6n1UhgwqUvRoe4VIotC7FG1IKkyJbwsT7JDsF2jxR+NTnuOwiGv0hLyDoQ==", + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.28.1.tgz", + "integrity": "sha512-/yqC2Y53oZjb0yz8PVuGOQQNOTwxcizudunl/tFs1aLvObTclTwZ0JhXF2XcPT/zuaymemCDSuuUPXJJyqeDOg==", "cpu": [ "s390x" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2765,13 +2653,12 @@ ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.22.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.22.5.tgz", - "integrity": "sha512-N0jPPhHjGShcB9/XXZQWuWBKZQnC1F36Ce3sDqWpujsGjDz/CQtOL9LgTrJ+rJC8MJeesMWrMWVLKKNR/tMOCA==", + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.28.1.tgz", + "integrity": "sha512-fzgeABz7rrAlKYB0y2kSEiURrI0691CSL0+KXwKwhxvj92VULEDQLpBYLHpF49MSiPG4sq5CK3qHMnb9tlCjBw==", "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2779,13 +2666,12 @@ ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.22.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.22.5.tgz", - "integrity": "sha512-uBa2e28ohzNNwjr6Uxm4XyaA1M/8aTgfF2T7UIlElLaeXkgpmIJ2EitVNQxjO9xLLLy60YqAgKn/AqSpCUkE9g==", + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.28.1.tgz", + "integrity": "sha512-xQTDVzSGiMlSshpJCtudbWyRfLaNiVPXt1WgdWTwWz9n0U12cI2ZVtWe/Jgwyv/6wjL7b66uu61Vg0POWVfz4g==", "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2793,13 +2679,12 @@ ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.22.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.22.5.tgz", - "integrity": "sha512-RXT8S1HP8AFN/Kr3tg4fuYrNxZ/pZf1HemC5Tsddc6HzgGnJm0+Lh5rAHJkDuW3StI0ynNXukidROMXYl6ew8w==", + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.28.1.tgz", + "integrity": "sha512-wSXmDRVupJstFP7elGMgv+2HqXelQhuNf+IS4V+nUpNVi/GUiBgDmfwD0UGN3pcAnWsgKG3I52wMOBnk1VHr/A==", "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2807,13 +2692,12 @@ ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.22.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.22.5.tgz", - "integrity": "sha512-ElTYOh50InL8kzyUD6XsnPit7jYCKrphmddKAe1/Ytt74apOxDq5YEcbsiKs0fR3vff3jEneMM+3I7jbqaMyBg==", + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.28.1.tgz", + "integrity": "sha512-ZkyTJ/9vkgrE/Rk9vhMXhf8l9D+eAhbAVbsGsXKy2ohmJaWg0LPQLnIxRdRp/bKyr8tXuPlXhIoGlEB5XpJnGA==", "cpu": [ "ia32" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2821,13 +2705,12 @@ ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.22.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.22.5.tgz", - "integrity": "sha512-+lvL/4mQxSV8MukpkKyyvfwhH266COcWlXE/1qxwN08ajovta3459zrjLghYMgDerlzNwLAcFpvU+WWE5y6nAQ==", + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.28.1.tgz", + "integrity": "sha512-ZvK2jBafvttJjoIdKm/Q/Bh7IJ1Ose9IBOwpOXcOvW3ikGTQGmKDgxTC6oCAzW6PynbkKP8+um1du81XJHZ0JA==", "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2843,12 +2726,14 @@ "type": "individual", "url": "https://paulmillr.com/funding/" } - ] + ], + "license": "MIT" }, "node_modules/@scure/bip32": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.3.1.tgz", "integrity": "sha512-osvveYtyzdEVbt3OfwwXFr4P2iVBL5u1Q3q4ONBfDY/UpOuXmOlbgwc1xECEboY8wIays8Yt6onaWMUdUbfl0A==", + "license": "MIT", "dependencies": { "@noble/curves": "~1.1.0", "@noble/hashes": "~1.3.1", @@ -2862,6 +2747,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.1.0.tgz", "integrity": "sha512-091oBExgENk/kGj3AZmtBDMpxQPDtxQABR2B9lb1JbVTs6ytdzZNwvhxQ4MWasRNEzlbEH8jCWFCwhF/Obj5AA==", + "license": "MIT", "dependencies": { "@noble/hashes": "1.3.1" }, @@ -2873,6 +2759,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.2.1.tgz", "integrity": "sha512-Z3/Fsz1yr904dduJD0NpiyRHhRYHdcnyh73FZWiV+/qhWi83wNJ3NWolYqCEN+ZWsUz2TWwajJggcRE9r1zUYg==", + "license": "MIT", "dependencies": { "@noble/hashes": "~1.3.0", "@scure/base": "~1.1.0" @@ -2881,30 +2768,14 @@ "url": "https://paulmillr.com/funding/" } }, - "node_modules/@tailwindcss/typography": { - "version": "0.5.15", - "resolved": "https://registry.npmjs.org/@tailwindcss/typography/-/typography-0.5.15.tgz", - "integrity": "sha512-AqhlCXl+8grUz8uqExv5OTtgpjuVIwFTSXTrh8y9/pw6q2ek7fJ+Y8ZEVw7EB2DCcuCOtEjf9w3+J3rzts01uA==", - "dev": true, - "license": "MIT", - "dependencies": { - "lodash.castarray": "^4.4.0", - "lodash.isplainobject": "^4.0.6", - "lodash.merge": "^4.6.2", - "postcss-selector-parser": "6.0.10" - }, - "peerDependencies": { - "tailwindcss": ">=3.0.0 || insiders || >=4.0.0-alpha.20" - } - }, "node_modules/@tanstack/eslint-plugin-query": { - "version": "5.58.1", - "resolved": "https://registry.npmjs.org/@tanstack/eslint-plugin-query/-/eslint-plugin-query-5.58.1.tgz", - "integrity": "sha512-hJR3N5ilK60gCgDWr7pWHV/vDiDVczT95F8AGIcg1gf9117aLPK+LDu+xP2JuEWpWKpsQ6OpWdVMim9kKlMybw==", + "version": "5.62.9", + "resolved": "https://registry.npmjs.org/@tanstack/eslint-plugin-query/-/eslint-plugin-query-5.62.9.tgz", + "integrity": "sha512-F3onhTcpBj7zQDo0NVtZwZQKRFx8BwpSabMJybl9no3+dFHUurvNMrH5M/6KNpkdDCf3zyHWadruZL6636B8Fw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/utils": "^8.3.0" + "@typescript-eslint/utils": "^8.18.1" }, "funding": { "type": "github", @@ -2915,9 +2786,9 @@ } }, "node_modules/@tanstack/query-core": { - "version": "5.56.2", - "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.56.2.tgz", - "integrity": "sha512-gor0RI3/R5rVV3gXfddh1MM+hgl0Z4G7tj6Xxpq6p2I03NGPaJ8dITY9Gz05zYYb/EJq9vPas/T4wn9EaDPd4Q==", + "version": "5.62.9", + "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.62.9.tgz", + "integrity": "sha512-lwePd8hNYhyQ4nM/iRQ+Wz2cDtspGeZZHFZmCzHJ7mfKXt+9S301fULiY2IR2byJYY6Z03T427E5PoVfMexHjw==", "license": "MIT", "funding": { "type": "github", @@ -2925,9 +2796,9 @@ } }, "node_modules/@tanstack/query-devtools": { - "version": "5.58.0", - "resolved": "https://registry.npmjs.org/@tanstack/query-devtools/-/query-devtools-5.58.0.tgz", - "integrity": "sha512-iFdQEFXaYYxqgrv63ots+65FGI+tNp5ZS5PdMU1DWisxk3fez5HG3FyVlbUva+RdYS5hSLbxZ9aw3yEs97GNTw==", + "version": "5.62.9", + "resolved": "https://registry.npmjs.org/@tanstack/query-devtools/-/query-devtools-5.62.9.tgz", + "integrity": "sha512-b1NZzDLVf6laJsB1Cfm3ieuYzM+WqoO8qpm9v+3Etwd+Ph4zkhUMiT+wcWj5AhEPsXiRodKYiiW048VDNdBxNg==", "license": "MIT", "funding": { "type": "github", @@ -2935,12 +2806,12 @@ } }, "node_modules/@tanstack/react-query": { - "version": "5.56.2", - "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.56.2.tgz", - "integrity": "sha512-SR0GzHVo6yzhN72pnRhkEFRAHMsUo5ZPzAxfTMvUxFIDVS6W9LYUp6nXW3fcHVdg0ZJl8opSH85jqahvm6DSVg==", + "version": "5.62.10", + "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.62.10.tgz", + "integrity": "sha512-1e1WpHM5oGf27nWM/NWLY62/X9pbMBWa6ErWYmeuK0OqB9/g9UzA59ogiWbxCmS2wtAFQRhOdHhfSofrkhPl2g==", "license": "MIT", "dependencies": { - "@tanstack/query-core": "5.56.2" + "@tanstack/query-core": "5.62.9" }, "funding": { "type": "github", @@ -2951,19 +2822,19 @@ } }, "node_modules/@tanstack/react-query-devtools": { - "version": "5.58.0", - "resolved": "https://registry.npmjs.org/@tanstack/react-query-devtools/-/react-query-devtools-5.58.0.tgz", - "integrity": "sha512-qF0xCyBeVuNLygTO1sAl1X4Gv52w52SeaDdbjYQmtTOooUJ3aAVlBEtiRJFfJblWQ9p/UQG8NIcC/65RjX8Jkw==", + "version": "5.62.10", + "resolved": "https://registry.npmjs.org/@tanstack/react-query-devtools/-/react-query-devtools-5.62.10.tgz", + "integrity": "sha512-TnFcvfEnOvH9j8iYKRl8Qn/U2P0NijdQ6nilhHobpdAcF4DLUwlKKufJZAlc759+1HBZ/jEvCqWo2g3mO9Ttvg==", "license": "MIT", "dependencies": { - "@tanstack/query-devtools": "5.58.0" + "@tanstack/query-devtools": "5.62.9" }, "funding": { "type": "github", "url": "https://github.com/sponsors/tannerlinsley" }, "peerDependencies": { - "@tanstack/react-query": "^5.56.2", + "@tanstack/react-query": "^5.62.10", "react": "^18 || ^19" } }, @@ -2972,6 +2843,7 @@ "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/parser": "^7.20.7", "@babel/types": "^7.20.7", @@ -2985,6 +2857,7 @@ "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/types": "^7.0.0" } @@ -2994,6 +2867,7 @@ "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", "dev": true, + "license": "MIT", "dependencies": { "@babel/parser": "^7.1.0", "@babel/types": "^7.0.0" @@ -3004,6 +2878,7 @@ "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.6.tgz", "integrity": "sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/types": "^7.20.7" } @@ -3021,53 +2896,26 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", - "dev": true, "license": "MIT" }, "node_modules/@types/hast": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", + "license": "MIT", "dependencies": { "@types/unist": "*" } }, - "node_modules/@types/json-schema": { - "version": "7.0.15", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", - "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", - "dev": true - }, - "node_modules/@types/linkify-it": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-5.0.0.tgz", - "integrity": "sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==", - "optional": true - }, - "node_modules/@types/markdown-it": { - "version": "12.2.3", - "resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-12.2.3.tgz", - "integrity": "sha512-GKMHFfv3458yYy+v/N8gjufHO6MSZKCOXpZc5GXIWWy8uldwfmPn98vp81gZ5f9SVw8YYBctgfJ22a2d7AOMeQ==", - "optional": true, - "dependencies": { - "@types/linkify-it": "*", - "@types/mdurl": "*" - } - }, "node_modules/@types/mdast": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", + "license": "MIT", "dependencies": { "@types/unist": "*" } }, - "node_modules/@types/mdurl": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@types/mdurl/-/mdurl-2.0.0.tgz", - "integrity": "sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==", - "optional": true - }, "node_modules/@types/ms": { "version": "0.7.34", "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.34.tgz", @@ -3075,160 +2923,108 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "20.14.9", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.9.tgz", - "integrity": "sha512-06OCtnTXtWOZBJlRApleWndH4JsRVs1pDCc8dLSQp+7PpUpX3ePdHyeNSFTeSe7FtKyQkrlPvHwJOW3SLd8Oyg==", - "dev": true, + "version": "22.10.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.2.tgz", + "integrity": "sha512-Xxr6BBRCAOQixvonOye19wnzyDiUtTeqldOOmj3CkeblonbccA12PFwlufvRdrpjXxqnmUaeiU5EOA+7s5diUQ==", + "devOptional": true, + "license": "MIT", "dependencies": { - "undici-types": "~5.26.4" + "undici-types": "~6.20.0" } }, - "node_modules/@types/prop-types": { - "version": "15.7.12", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.12.tgz", - "integrity": "sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==", - "devOptional": true - }, "node_modules/@types/react": { - "version": "18.3.10", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.10.tgz", - "integrity": "sha512-02sAAlBnP39JgXwkAq3PeU9DVaaGpZyF3MGcC0MKgQVkZor5IiiDAipVaxQHtDJAmO4GIy/rVBy/LzVj76Cyqg==", + "version": "19.0.2", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.0.2.tgz", + "integrity": "sha512-USU8ZI/xyKJwFTpjSVIrSeHBVAGagkHQKPNbxeWwql/vDmnTIBgx+TJnhFnj1NXgz8XfprU0egV2dROLGpsBEg==", "devOptional": true, "license": "MIT", "dependencies": { - "@types/prop-types": "*", "csstype": "^3.0.2" } }, - "node_modules/@types/react-copy-to-clipboard": { - "version": "5.0.7", - "resolved": "https://registry.npmjs.org/@types/react-copy-to-clipboard/-/react-copy-to-clipboard-5.0.7.tgz", - "integrity": "sha512-Gft19D+as4M+9Whq1oglhmK49vqPhcLzk8WfvfLvaYMIPYanyfLy0+CwFucMJfdKoSFyySPmkkWn8/E6voQXjQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/react": "*" - } - }, "node_modules/@types/react-dom": { - "version": "18.3.0", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.0.tgz", - "integrity": "sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg==", + "version": "19.0.2", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.0.2.tgz", + "integrity": "sha512-c1s+7TKFaDRRxr1TxccIX2u7sfCnc3RxkVyBIUA2lCpyqCF+QoAwQ/CBg7bsMdVwP120HEH143VQezKtef5nCg==", "devOptional": true, - "dependencies": { - "@types/react": "*" + "license": "MIT", + "peerDependencies": { + "@types/react": "^19.0.0" } }, - "node_modules/@types/semver": { - "version": "7.5.8", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", - "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==", - "dev": true - }, "node_modules/@types/unist": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", - "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", + "license": "MIT" }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.21.0.tgz", - "integrity": "sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==", + "version": "8.18.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.18.2.tgz", + "integrity": "sha512-adig4SzPLjeQ0Tm+jvsozSGiCliI2ajeURDGHjZ2llnA+A67HihCQ+a3amtPhUakd1GlwHxSRvzOZktbEvhPPg==", "dev": true, + "license": "MIT", "dependencies": { - "@eslint-community/regexpp": "^4.5.1", - "@typescript-eslint/scope-manager": "6.21.0", - "@typescript-eslint/type-utils": "6.21.0", - "@typescript-eslint/utils": "6.21.0", - "@typescript-eslint/visitor-keys": "6.21.0", - "debug": "^4.3.4", + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "8.18.2", + "@typescript-eslint/type-utils": "8.18.2", + "@typescript-eslint/utils": "8.18.2", + "@typescript-eslint/visitor-keys": "8.18.2", "graphemer": "^1.4.0", - "ignore": "^5.2.4", + "ignore": "^5.3.1", "natural-compare": "^1.4.0", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^6.0.0 || ^6.0.0-alpha", - "eslint": "^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/utils": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.21.0.tgz", - "integrity": "sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==", - "dev": true, - "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "@types/json-schema": "^7.0.12", - "@types/semver": "^7.5.0", - "@typescript-eslint/scope-manager": "6.21.0", - "@typescript-eslint/types": "6.21.0", - "@typescript-eslint/typescript-estree": "6.21.0", - "semver": "^7.5.4" + "ts-api-utils": "^1.3.0" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" + "@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0", + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.8.0" } }, "node_modules/@typescript-eslint/parser": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.21.0.tgz", - "integrity": "sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==", + "version": "8.18.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.18.2.tgz", + "integrity": "sha512-y7tcq4StgxQD4mDr9+Jb26dZ+HTZ/SkfqpXSiqeUXZHxOUyjWDKsmwKhJ0/tApR08DgOhrFAoAhyB80/p3ViuA==", "dev": true, + "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "6.21.0", - "@typescript-eslint/types": "6.21.0", - "@typescript-eslint/typescript-estree": "6.21.0", - "@typescript-eslint/visitor-keys": "6.21.0", + "@typescript-eslint/scope-manager": "8.18.2", + "@typescript-eslint/types": "8.18.2", + "@typescript-eslint/typescript-estree": "8.18.2", + "@typescript-eslint/visitor-keys": "8.18.2", "debug": "^4.3.4" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.8.0" } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz", - "integrity": "sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==", + "version": "8.18.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.18.2.tgz", + "integrity": "sha512-YJFSfbd0CJjy14r/EvWapYgV4R5CHzptssoag2M7y3Ra7XNta6GPAJPPP5KGB9j14viYXyrzRO5GkX7CRfo8/g==", "dev": true, + "license": "MIT", "dependencies": { - "@typescript-eslint/types": "6.21.0", - "@typescript-eslint/visitor-keys": "6.21.0" + "@typescript-eslint/types": "8.18.2", + "@typescript-eslint/visitor-keys": "8.18.2" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", @@ -3236,64 +3032,37 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.21.0.tgz", - "integrity": "sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag==", + "version": "8.18.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.18.2.tgz", + "integrity": "sha512-AB/Wr1Lz31bzHfGm/jgbFR0VB0SML/hd2P1yxzKDM48YmP7vbyJNHRExUE/wZsQj2wUCvbWH8poNHFuxLqCTnA==", "dev": true, + "license": "MIT", "dependencies": { - "@typescript-eslint/typescript-estree": "6.21.0", - "@typescript-eslint/utils": "6.21.0", + "@typescript-eslint/typescript-estree": "8.18.2", + "@typescript-eslint/utils": "8.18.2", "debug": "^4.3.4", - "ts-api-utils": "^1.0.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/utils": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.21.0.tgz", - "integrity": "sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==", - "dev": true, - "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "@types/json-schema": "^7.0.12", - "@types/semver": "^7.5.0", - "@typescript-eslint/scope-manager": "6.21.0", - "@typescript-eslint/types": "6.21.0", - "@typescript-eslint/typescript-estree": "6.21.0", - "semver": "^7.5.4" + "ts-api-utils": "^1.3.0" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.8.0" } }, "node_modules/@typescript-eslint/types": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.21.0.tgz", - "integrity": "sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==", + "version": "8.18.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.18.2.tgz", + "integrity": "sha512-Z/zblEPp8cIvmEn6+tPDIHUbRu/0z5lqZ+NvolL5SvXWT5rQy7+Nch83M0++XzO0XrWRFWECgOAyE8bsJTl1GQ==", "dev": true, + "license": "MIT", "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", @@ -3301,44 +3070,43 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz", - "integrity": "sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==", + "version": "8.18.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.18.2.tgz", + "integrity": "sha512-WXAVt595HjpmlfH4crSdM/1bcsqh+1weFRWIa9XMTx/XHZ9TCKMcr725tLYqWOgzKdeDrqVHxFotrvWcEsk2Tg==", "dev": true, + "license": "MIT", "dependencies": { - "@typescript-eslint/types": "6.21.0", - "@typescript-eslint/visitor-keys": "6.21.0", + "@typescript-eslint/types": "8.18.2", + "@typescript-eslint/visitor-keys": "8.18.2", "debug": "^4.3.4", - "globby": "^11.1.0", + "fast-glob": "^3.3.2", "is-glob": "^4.0.3", - "minimatch": "9.0.3", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^1.3.0" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "peerDependencies": { + "typescript": ">=4.8.4 <5.8.0" } }, "node_modules/@typescript-eslint/utils": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.7.0.tgz", - "integrity": "sha512-ZbdUdwsl2X/s3CiyAu3gOlfQzpbuG3nTWKPoIvAu1pu5r8viiJvv2NPN2AqArL35NCYtw/lrPPfM4gxrMLNLPw==", + "version": "8.18.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.18.2.tgz", + "integrity": "sha512-Cr4A0H7DtVIPkauj4sTSXVl+VBWewE9/o40KcF3TV9aqDEOWoXF3/+oRXNby3DYzZeCATvbdksYsGZzplwnK/Q==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "8.7.0", - "@typescript-eslint/types": "8.7.0", - "@typescript-eslint/typescript-estree": "8.7.0" + "@typescript-eslint/scope-manager": "8.18.2", + "@typescript-eslint/types": "8.18.2", + "@typescript-eslint/typescript-estree": "8.18.2" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -3348,33 +3116,20 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0" + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.8.0" } }, - "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/scope-manager": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.7.0.tgz", - "integrity": "sha512-87rC0k3ZlDOuz82zzXRtQ7Akv3GKhHs0ti4YcbAJtaomllXoSO8hi7Ix3ccEvCd824dy9aIX+j3d2UMAfCtVpg==", + "node_modules/@typescript-eslint/visitor-keys": { + "version": "8.18.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.18.2.tgz", + "integrity": "sha512-zORcwn4C3trOWiCqFQP1x6G3xTRyZ1LYydnj51cRnJ6hxBlr/cKPckk+PKPUw/fXmvfKTcw7bwY3w9izgx5jZw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.7.0", - "@typescript-eslint/visitor-keys": "8.7.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "@typescript-eslint/types": "8.18.2", + "eslint-visitor-keys": "^4.2.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/types": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.7.0.tgz", - "integrity": "sha512-LLt4BLHFwSfASHSF2K29SZ+ZCsbQOM+LuarPjRUuHm+Qd09hSe3GCeaQbcCr+Mik+0QFRmep/FyZBO6fJ64U3w==", - "dev": true, - "license": "MIT", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, @@ -3383,101 +3138,48 @@ "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/typescript-estree": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.7.0.tgz", - "integrity": "sha512-MC8nmcGHsmfAKxwnluTQpNqceniT8SteVwd2voYlmiSWGOtjvGXdPl17dYu2797GVscK30Z04WRM28CrKS9WOg==", + "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", + "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "@typescript-eslint/types": "8.7.0", - "@typescript-eslint/visitor-keys": "8.7.0", - "debug": "^4.3.4", - "fast-glob": "^3.3.2", - "is-glob": "^4.0.3", - "minimatch": "^9.0.4", - "semver": "^7.6.0", - "ts-api-utils": "^1.3.0" - }, + "license": "Apache-2.0", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "url": "https://opencollective.com/eslint" } }, - "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/visitor-keys": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.7.0.tgz", - "integrity": "sha512-b1tx0orFCCh/THWPQa2ZwWzvOeyzzp36vkJYOpVg0u8UVOIsfVrnuC9FqAw9gRKn+rG2VmWQ/zDJZzkxUnj/XQ==", - "dev": true, + "node_modules/@uidotdev/usehooks": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@uidotdev/usehooks/-/usehooks-2.4.1.tgz", + "integrity": "sha512-1I+RwWyS+kdv3Mv0Vmc+p0dPYH0DTRAo04HLyXReYBL9AeseDWUJyi4THuksBJcu9F0Pih69Ak150VDnqbVnXg==", "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.7.0", - "eslint-visitor-keys": "^3.4.3" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/utils/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz", - "integrity": "sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "6.21.0", - "eslint-visitor-keys": "^3.4.1" - }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": ">=16" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "peerDependencies": { + "react": ">=18.0.0", + "react-dom": ">=18.0.0" } }, "node_modules/@ungap/structured-clone": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", - "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==" + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.1.tgz", + "integrity": "sha512-fEzPV3hSkSMltkw152tJKNARhOupqbH96MZWyRjNaYZOMIzbrTeQDG+MTc6Mr2pgzFQzFxAfmhGDNP5QK++2ZA==", + "license": "ISC" }, "node_modules/@vitejs/plugin-react": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.3.2.tgz", - "integrity": "sha512-hieu+o05v4glEBucTcKMK3dlES0OeJlD9YVOAPraVMOInBCwzumaIFiUjr4bHK7NPgnAHgiskUoceKercrN8vg==", + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.3.4.tgz", + "integrity": "sha512-SCCPBJtYLdE8PX/7ZQAs1QAZ8Jqwih+0VBLum1EGqmCCQal+MIUqLCzj3ZUy8ufbC0cAM4LRlSTm7IQJwWT4ug==", "dev": true, "license": "MIT", "dependencies": { - "@babel/core": "^7.25.2", - "@babel/plugin-transform-react-jsx-self": "^7.24.7", - "@babel/plugin-transform-react-jsx-source": "^7.24.7", + "@babel/core": "^7.26.0", + "@babel/plugin-transform-react-jsx-self": "^7.25.9", + "@babel/plugin-transform-react-jsx-source": "^7.25.9", "@types/babel__core": "^7.20.5", "react-refresh": "^0.14.2" }, @@ -3485,13 +3187,13 @@ "node": "^14.18.0 || >=16.0.0" }, "peerDependencies": { - "vite": "^4.2.0 || ^5.0.0" + "vite": "^4.2.0 || ^5.0.0 || ^6.0.0" } }, "node_modules/@wailsio/runtime": { - "version": "3.0.0-alpha.27", - "resolved": "https://registry.npmjs.org/@wailsio/runtime/-/runtime-3.0.0-alpha.27.tgz", - "integrity": "sha512-uhUm0XbpKytoVdSQMu7uGsxdtXEPEkLBlTtppeGYvw2P7dISJK9SczmOUGGyAHyyzdNMf5wIKkGr9ipCk/6fwA==", + "version": "3.0.0-alpha.29", + "resolved": "https://registry.npmjs.org/@wailsio/runtime/-/runtime-3.0.0-alpha.29.tgz", + "integrity": "sha512-gap5qxcw3fgDBYBN75X65XZoo3vEPyJ9L+cqRd8I133Bf0kPT6XVVchm8Gc693eDqH7djyhXmCB7zJfosVH0fA==", "dev": true, "license": "MIT", "dependencies": { @@ -3499,10 +3201,11 @@ } }, "node_modules/acorn": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.0.tgz", - "integrity": "sha512-RTvkC4w+KNXrM39/lWCUaG0IbRkWdCv7W/IOW9oU6SawyxulvkQy5HQPVTKxEjczcUvapcrw3cFx/60VN/NRNw==", + "version": "8.14.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", + "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", "dev": true, + "license": "MIT", "bin": { "acorn": "bin/acorn" }, @@ -3515,6 +3218,7 @@ "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", "dev": true, + "license": "MIT", "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } @@ -3524,6 +3228,7 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -3539,31 +3244,37 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", "dependencies": { - "color-convert": "^1.9.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=4" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, "node_modules/any-promise": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", - "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==" + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", + "license": "MIT" }, "node_modules/anymatch": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "license": "ISC", "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" @@ -3575,18 +3286,21 @@ "node_modules/arg": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", - "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==" + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", + "license": "MIT" }, "node_modules/argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true + "dev": true, + "license": "Python-2.0" }, "node_modules/aria-hidden": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.4.tgz", "integrity": "sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==", + "license": "MIT", "dependencies": { "tslib": "^2.0.0" }, @@ -3594,13 +3308,140 @@ "node": ">=10" } }, - "node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "node_modules/array-buffer-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", + "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "is-array-buffer": "^3.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-includes": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", + "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", + "is-string": "^1.0.7" + }, "engines": { - "node": ">=8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.findlast": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", + "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz", + "integrity": "sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flatmap": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz", + "integrity": "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.tosorted": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz", + "integrity": "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.3", + "es-errors": "^1.3.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", + "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/autoprefixer": { @@ -3641,10 +3482,37 @@ "postcss": "^8.1.0" } }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/babel-plugin-react-compiler": { + "version": "19.0.0-beta-201e55d-20241215", + "resolved": "https://registry.npmjs.org/babel-plugin-react-compiler/-/babel-plugin-react-compiler-19.0.0-beta-201e55d-20241215.tgz", + "integrity": "sha512-c7YAJNlA8kSoIFx2Buq/CeGmC3MbZYznD3H7Q3cdaRyKtwDSSxbM3VJxEhv7lEo64g48aWSBSiCI3XcRw0y/Jw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.19.0" + } + }, "node_modules/bail": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -3653,12 +3521,14 @@ "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "license": "MIT" }, "node_modules/binary-extensions": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "license": "MIT", "engines": { "node": ">=8" }, @@ -3670,6 +3540,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } @@ -3678,6 +3549,7 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "license": "MIT", "dependencies": { "fill-range": "^7.1.1" }, @@ -3686,10 +3558,9 @@ } }, "node_modules/browserslist": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.0.tgz", - "integrity": "sha512-Rmb62sR1Zpjql25eSanFGEhAxcFwfA1K0GuQcLoaJBAcENegrQut3hYdhXFF1obQfiDyqIW/cLM5HSJ/9k884A==", - "dev": true, + "version": "4.24.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.3.tgz", + "integrity": "sha512-1CPmv8iobE2fyRMV97dAcMVegvvWKxmq94hkLiAkUGwKVTyDLw33K+ZxiFrREKmmps4rIw6grcCFCnTMSZ/YiA==", "funding": [ { "type": "opencollective", @@ -3706,10 +3577,10 @@ ], "license": "MIT", "dependencies": { - "caniuse-lite": "^1.0.30001663", - "electron-to-chromium": "^1.5.28", - "node-releases": "^2.0.18", - "update-browserslist-db": "^1.1.0" + "caniuse-lite": "^1.0.30001688", + "electron-to-chromium": "^1.5.73", + "node-releases": "^2.0.19", + "update-browserslist-db": "^1.1.1" }, "bin": { "browserslist": "cli.js" @@ -3718,11 +3589,62 @@ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, + "node_modules/call-bind": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", + "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.0", + "es-define-property": "^1.0.0", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.1.tgz", + "integrity": "sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.3.tgz", + "integrity": "sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -3731,15 +3653,15 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", + "license": "MIT", "engines": { "node": ">= 6" } }, "node_modules/caniuse-lite": { - "version": "1.0.30001664", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001664.tgz", - "integrity": "sha512-AmE7k4dXiNKQipgn7a2xg558IRqPN3jMQY/rOsbxDhrd0tyChwbITBfiwtnqz8bi2M5mIWbxAYBvk7W7QBUS2g==", - "dev": true, + "version": "1.0.30001689", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001689.tgz", + "integrity": "sha512-CmeR2VBycfa+5/jOfnp/NpWPGd06nf1XYiefUvhXFfZE4GkRc9jv+eGPS4nT558WS/8lYCzV8SlANCIPvbWP1g==", "funding": [ { "type": "opencollective", @@ -3760,23 +3682,27 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" } }, "node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=4" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, "node_modules/character-entities": { @@ -3793,6 +3719,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz", "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -3802,6 +3729,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -3811,6 +3739,7 @@ "version": "3.6.0", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "license": "MIT", "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", @@ -3834,6 +3763,7 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "license": "ISC", "dependencies": { "is-glob": "^4.0.1" }, @@ -3842,425 +3772,65 @@ } }, "node_modules/class-variance-authority": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/class-variance-authority/-/class-variance-authority-0.7.0.tgz", - "integrity": "sha512-jFI8IQw4hczaL4ALINxqLEXQbWcNjoSkloa4IaufXCJr6QawJyw7tuRysRsrE8w2p/4gGaxKIt/hX3qz/IbD1A==", + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/class-variance-authority/-/class-variance-authority-0.7.1.tgz", + "integrity": "sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==", + "license": "Apache-2.0", "dependencies": { - "clsx": "2.0.0" + "clsx": "^2.1.1" }, "funding": { - "url": "https://joebell.co.uk" - } - }, - "node_modules/class-variance-authority/node_modules/clsx": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.0.0.tgz", - "integrity": "sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==", - "engines": { - "node": ">=6" + "url": "https://polar.sh/cva" } }, "node_modules/clsx": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/cmdk": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/cmdk/-/cmdk-1.0.0.tgz", - "integrity": "sha512-gDzVf0a09TvoJ5jnuPvygTB77+XdOSwEmJ88L6XPFPlv7T3RxbP9jgenfylrAMD0+Le1aO0nVjQUzl2g+vjz5Q==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cmdk/-/cmdk-1.0.4.tgz", + "integrity": "sha512-AnsjfHyHpQ/EFeAnG216WY7A5LiYCoZzCSygiLvfXC3H3LFGCprErteUcszaVluGOhuOTbJS3jWHrSDYPBBygg==", + "license": "MIT", "dependencies": { - "@radix-ui/react-dialog": "1.0.5", - "@radix-ui/react-primitive": "1.0.3" + "@radix-ui/react-dialog": "^1.1.2", + "@radix-ui/react-id": "^1.1.0", + "@radix-ui/react-primitive": "^2.0.0", + "use-sync-external-store": "^1.2.2" }, "peerDependencies": { - "react": "^18.0.0", - "react-dom": "^18.0.0" - } - }, - "node_modules/cmdk/node_modules/@radix-ui/primitive": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.0.1.tgz", - "integrity": "sha512-yQ8oGX2GVsEYMWGxcovu1uGWPCxV5BFfeeYxqPmuAzUyLT9qmaMXSAhXpb0WrspIeqYzdJpkh2vHModJPgRIaw==", - "dependencies": { - "@babel/runtime": "^7.13.10" + "react": "^18 || ^19 || ^19.0.0-rc", + "react-dom": "^18 || ^19 || ^19.0.0-rc" } }, - "node_modules/cmdk/node_modules/@radix-ui/react-compose-refs": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.0.1.tgz", - "integrity": "sha512-fDSBgd44FKHa1FRMU59qBMPFcl2PZE+2nmqunj+BWFyYYjnhIDWL2ItDs3rrbJDQOtzt5nIebLCQc4QRfz6LJw==", - "dependencies": { - "@babel/runtime": "^7.13.10" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/cmdk/node_modules/@radix-ui/react-context": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.0.1.tgz", - "integrity": "sha512-ebbrdFoYTcuZ0v4wG5tedGnp9tzcV8awzsxYph7gXUyvnNLuTIcCk1q17JEbnVhXAKG9oX3KtchwiMIAYp9NLg==", - "dependencies": { - "@babel/runtime": "^7.13.10" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/cmdk/node_modules/@radix-ui/react-dialog": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@radix-ui/react-dialog/-/react-dialog-1.0.5.tgz", - "integrity": "sha512-GjWJX/AUpB703eEBanuBnIWdIXg6NvJFCXcNlSZk4xdszCdhrJgBoUd1cGk67vFO+WdA2pfI/plOpqz/5GUP6Q==", - "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/primitive": "1.0.1", - "@radix-ui/react-compose-refs": "1.0.1", - "@radix-ui/react-context": "1.0.1", - "@radix-ui/react-dismissable-layer": "1.0.5", - "@radix-ui/react-focus-guards": "1.0.1", - "@radix-ui/react-focus-scope": "1.0.4", - "@radix-ui/react-id": "1.0.1", - "@radix-ui/react-portal": "1.0.4", - "@radix-ui/react-presence": "1.0.1", - "@radix-ui/react-primitive": "1.0.3", - "@radix-ui/react-slot": "1.0.2", - "@radix-ui/react-use-controllable-state": "1.0.1", - "aria-hidden": "^1.1.1", - "react-remove-scroll": "2.5.5" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0", - "react-dom": "^16.8 || ^17.0 || ^18.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/cmdk/node_modules/@radix-ui/react-dismissable-layer": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.0.5.tgz", - "integrity": "sha512-aJeDjQhywg9LBu2t/At58hCvr7pEm0o2Ke1x33B+MhjNmmZ17sy4KImo0KPLgsnc/zN7GPdce8Cnn0SWvwZO7g==", - "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/primitive": "1.0.1", - "@radix-ui/react-compose-refs": "1.0.1", - "@radix-ui/react-primitive": "1.0.3", - "@radix-ui/react-use-callback-ref": "1.0.1", - "@radix-ui/react-use-escape-keydown": "1.0.3" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0", - "react-dom": "^16.8 || ^17.0 || ^18.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/cmdk/node_modules/@radix-ui/react-focus-guards": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.0.1.tgz", - "integrity": "sha512-Rect2dWbQ8waGzhMavsIbmSVCgYxkXLxxR3ZvCX79JOglzdEy4JXMb98lq4hPxUbLr77nP0UOGf4rcMU+s1pUA==", - "dependencies": { - "@babel/runtime": "^7.13.10" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/cmdk/node_modules/@radix-ui/react-focus-scope": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.0.4.tgz", - "integrity": "sha512-sL04Mgvf+FmyvZeYfNu1EPAaaxD+aw7cYeIB9L9Fvq8+urhltTRaEo5ysKOpHuKPclsZcSUMKlN05x4u+CINpA==", - "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-compose-refs": "1.0.1", - "@radix-ui/react-primitive": "1.0.3", - "@radix-ui/react-use-callback-ref": "1.0.1" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0", - "react-dom": "^16.8 || ^17.0 || ^18.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/cmdk/node_modules/@radix-ui/react-id": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.0.1.tgz", - "integrity": "sha512-tI7sT/kqYp8p96yGWY1OAnLHrqDgzHefRBKQ2YAkBS5ja7QLcZ9Z/uY7bEjPUatf8RomoXM8/1sMj1IJaE5UzQ==", - "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-use-layout-effect": "1.0.1" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/cmdk/node_modules/@radix-ui/react-portal": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.0.4.tgz", - "integrity": "sha512-Qki+C/EuGUVCQTOTD5vzJzJuMUlewbzuKyUy+/iHM2uwGiru9gZeBJtHAPKAEkB5KWGi9mP/CHKcY0wt1aW45Q==", - "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-primitive": "1.0.3" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0", - "react-dom": "^16.8 || ^17.0 || ^18.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/cmdk/node_modules/@radix-ui/react-presence": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.0.1.tgz", - "integrity": "sha512-UXLW4UAbIY5ZjcvzjfRFo5gxva8QirC9hF7wRE4U5gz+TP0DbRk+//qyuAQ1McDxBt1xNMBTaciFGvEmJvAZCg==", - "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-compose-refs": "1.0.1", - "@radix-ui/react-use-layout-effect": "1.0.1" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0", - "react-dom": "^16.8 || ^17.0 || ^18.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/cmdk/node_modules/@radix-ui/react-primitive": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-1.0.3.tgz", - "integrity": "sha512-yi58uVyoAcK/Nq1inRY56ZSjKypBNKTa/1mcL8qdl6oJeEaDbOldlzrGn7P6Q3Id5d+SYNGc5AJgc4vGhjs5+g==", - "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-slot": "1.0.2" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0", - "react-dom": "^16.8 || ^17.0 || ^18.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/cmdk/node_modules/@radix-ui/react-slot": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.0.2.tgz", - "integrity": "sha512-YeTpuq4deV+6DusvVUW4ivBgnkHwECUu0BiN43L5UCDFgdhsRUWAghhTF5MbvNTPzmiFOx90asDSUjWuCNapwg==", - "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-compose-refs": "1.0.1" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/cmdk/node_modules/@radix-ui/react-use-callback-ref": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.0.1.tgz", - "integrity": "sha512-D94LjX4Sp0xJFVaoQOd3OO9k7tpBYNOXdVhkltUbGv2Qb9OXdrg/CpsjlZv7ia14Sylv398LswWBVVu5nqKzAQ==", - "dependencies": { - "@babel/runtime": "^7.13.10" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/cmdk/node_modules/@radix-ui/react-use-controllable-state": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.0.1.tgz", - "integrity": "sha512-Svl5GY5FQeN758fWKrjM6Qb7asvXeiZltlT4U2gVfl8Gx5UAv2sMR0LWo8yhsIZh2oQ0eFdZ59aoOOMV7b47VA==", - "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-use-callback-ref": "1.0.1" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/cmdk/node_modules/@radix-ui/react-use-escape-keydown": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.0.3.tgz", - "integrity": "sha512-vyL82j40hcFicA+M4Ex7hVkB9vHgSse1ZWomAqV2Je3RleKGO5iM8KMOEtfoSB0PnIelMd2lATjTGMYqN5ylTg==", - "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-use-callback-ref": "1.0.1" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/cmdk/node_modules/@radix-ui/react-use-layout-effect": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.0.1.tgz", - "integrity": "sha512-v/5RegiJWYdoCvMnITBkNNx6bCj20fiaJnWtRkU18yITptraXjffz5Qbn05uOiQnOvi+dbkznkoaMltz1GnszQ==", - "dependencies": { - "@babel/runtime": "^7.13.10" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/cmdk/node_modules/react-remove-scroll": { - "version": "2.5.5", - "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.5.5.tgz", - "integrity": "sha512-ImKhrzJJsyXJfBZ4bzu8Bwpka14c/fQt0k+cyFp/PBhTfyDnU5hjOtM4AG/0AMyy8oKzOTR0lDgJIM7pYXI0kw==", + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", "dependencies": { - "react-remove-scroll-bar": "^2.3.3", - "react-style-singleton": "^2.2.1", - "tslib": "^2.1.0", - "use-callback-ref": "^1.3.0", - "use-sidecar": "^1.1.2" + "color-name": "~1.1.4" }, "engines": { - "node": ">=10" - }, - "peerDependencies": { - "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/codemirror": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-6.0.1.tgz", - "integrity": "sha512-J8j+nZ+CdWmIeFIGXEFbFPtpiYacFMDR8GlHK3IyHQJMCaVRfGx9NT+Hxivv1ckLWPvNdZqndbr/7lVhrf/Svg==", - "dependencies": { - "@codemirror/autocomplete": "^6.0.0", - "@codemirror/commands": "^6.0.0", - "@codemirror/language": "^6.0.0", - "@codemirror/lint": "^6.0.0", - "@codemirror/search": "^6.0.0", - "@codemirror/state": "^6.0.0", - "@codemirror/view": "^6.0.0" - } - }, - "node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" + "node": ">=7.0.0" } }, "node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" }, "node_modules/comma-separated-tokens": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -4270,6 +3840,7 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "license": "MIT", "engines": { "node": ">= 6" } @@ -4278,31 +3849,29 @@ "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/convert-source-map": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true + "license": "MIT" }, "node_modules/copy-to-clipboard": { "version": "3.3.3", "resolved": "https://registry.npmjs.org/copy-to-clipboard/-/copy-to-clipboard-3.3.3.tgz", "integrity": "sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA==", + "license": "MIT", "dependencies": { "toggle-selection": "^1.0.6" } }, - "node_modules/crelt": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/crelt/-/crelt-1.0.6.tgz", - "integrity": "sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==" - }, "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "license": "MIT", "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -4316,6 +3885,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "license": "MIT", "bin": { "cssesc": "bin/cssesc" }, @@ -4327,7 +3897,62 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", - "devOptional": true + "devOptional": true, + "license": "MIT" + }, + "node_modules/data-view-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", + "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", + "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/inspect-js" + } + }, + "node_modules/data-view-byte-offset": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", + "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/dayjs": { "version": "1.11.13", @@ -4336,11 +3961,12 @@ "license": "MIT" }, "node_modules/debug": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", - "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "license": "MIT", "dependencies": { - "ms": "2.1.2" + "ms": "^2.1.3" }, "engines": { "node": ">=6.0" @@ -4368,12 +3994,50 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true + "dev": true, + "license": "MIT" + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/dequal": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "license": "MIT", "engines": { "node": ">=6" } @@ -4381,12 +4045,14 @@ "node_modules/detect-node-es": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz", - "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==" + "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==", + "license": "MIT" }, "node_modules/devlop": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", + "license": "MIT", "dependencies": { "dequal": "^2.0.0" }, @@ -4395,153 +4061,305 @@ "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/didyoumean": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", - "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==" - }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "node_modules/didyoumean": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", + "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", + "license": "Apache-2.0" + }, + "node_modules/dlv": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", + "license": "MIT" + }, + "node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "license": "MIT" + }, + "node_modules/electron-to-chromium": { + "version": "1.5.74", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.74.tgz", + "integrity": "sha512-ck3//9RC+6oss/1Bh9tiAVFy5vfSKbRHAFh7Z3/eTRkEqJeWgymloShB17Vg3Z4nmDNp35vAd1BZ6CMW4Wt6Iw==", + "license": "ISC" + }, + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "license": "MIT" + }, + "node_modules/es-abstract": { + "version": "1.23.7", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.7.tgz", + "integrity": "sha512-OygGC8kIcDhXX+6yAZRGLqwi2CmEXCbLQixeGUgYeR+Qwlppqmo7DIDr8XibtEBZp+fJcoYpoatp5qwLMEdcqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.2", + "arraybuffer.prototype.slice": "^1.0.4", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "data-view-buffer": "^1.0.2", + "data-view-byte-length": "^1.0.2", + "data-view-byte-offset": "^1.0.1", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-set-tostringtag": "^2.0.3", + "es-to-primitive": "^1.3.0", + "function.prototype.name": "^1.1.8", + "get-intrinsic": "^1.2.6", + "get-symbol-description": "^1.1.0", + "globalthis": "^1.0.4", + "gopd": "^1.2.0", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "internal-slot": "^1.1.0", + "is-array-buffer": "^3.0.5", + "is-callable": "^1.2.7", + "is-data-view": "^1.0.2", + "is-regex": "^1.2.1", + "is-shared-array-buffer": "^1.0.4", + "is-string": "^1.1.1", + "is-typed-array": "^1.1.15", + "is-weakref": "^1.1.0", + "math-intrinsics": "^1.1.0", + "object-inspect": "^1.13.3", + "object-keys": "^1.1.1", + "object.assign": "^4.1.7", + "regexp.prototype.flags": "^1.5.3", + "safe-array-concat": "^1.1.3", + "safe-regex-test": "^1.1.0", + "string.prototype.trim": "^1.2.10", + "string.prototype.trimend": "^1.0.9", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.3", + "typed-array-byte-length": "^1.0.3", + "typed-array-byte-offset": "^1.0.4", + "typed-array-length": "^1.0.7", + "unbox-primitive": "^1.1.0", + "which-typed-array": "^1.1.18" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-iterator-helpers": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.2.1.tgz", + "integrity": "sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w==", "dev": true, + "license": "MIT", "dependencies": { - "path-type": "^4.0.0" + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.6", + "es-errors": "^1.3.0", + "es-set-tostringtag": "^2.0.3", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.6", + "globalthis": "^1.0.4", + "gopd": "^1.2.0", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", + "internal-slot": "^1.1.0", + "iterator.prototype": "^1.1.4", + "safe-array-concat": "^1.1.3" }, "engines": { - "node": ">=8" + "node": ">= 0.4" } }, - "node_modules/dlv": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", - "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==" - }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "node_modules/es-object-atoms": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", + "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", "dev": true, + "license": "MIT", "dependencies": { - "esutils": "^2.0.2" + "es-errors": "^1.3.0" }, "engines": { - "node": ">=6.0.0" + "node": ">= 0.4" } }, - "node_modules/eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" - }, - "node_modules/electron-to-chromium": { - "version": "1.5.29", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.29.tgz", - "integrity": "sha512-PF8n2AlIhCKXQ+gTpiJi0VhcHDb69kYX4MtCiivctc2QD3XuNZ/XIOlbGzt7WAjjEev0TtaH6Cu3arZExm5DOw==", + "node_modules/es-set-tostringtag": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", + "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", "dev": true, - "license": "ISC" - }, - "node_modules/embla-carousel": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/embla-carousel/-/embla-carousel-8.3.0.tgz", - "integrity": "sha512-Ve8dhI4w28qBqR8J+aMtv7rLK89r1ZA5HocwFz6uMB/i5EiC7bGI7y+AM80yAVUJw3qqaZYK7clmZMUR8kM3UA==", - "license": "MIT" - }, - "node_modules/embla-carousel-react": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/embla-carousel-react/-/embla-carousel-react-8.3.0.tgz", - "integrity": "sha512-P1FlinFDcIvggcErRjNuVqnUR8anyo8vLMIH8Rthgofw7Nj8qTguCa2QjFAbzxAUTQTPNNjNL7yt0BGGinVdFw==", "license": "MIT", "dependencies": { - "embla-carousel": "8.3.0", - "embla-carousel-reactive-utils": "8.3.0" + "get-intrinsic": "^1.2.4", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.1" }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.1 || ^18.0.0" + "engines": { + "node": ">= 0.4" } }, - "node_modules/embla-carousel-reactive-utils": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/embla-carousel-reactive-utils/-/embla-carousel-reactive-utils-8.3.0.tgz", - "integrity": "sha512-EYdhhJ302SC4Lmkx8GRsp0sjUhEN4WyFXPOk0kGu9OXZSRMmcBlRgTvHcq8eKJE1bXWBsOi1T83B+BSSVZSmwQ==", + "node_modules/es-shim-unscopables": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", + "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", + "dev": true, "license": "MIT", - "peerDependencies": { - "embla-carousel": "8.3.0" + "dependencies": { + "hasown": "^2.0.0" } }, - "node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" + "node_modules/es-to-primitive": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", + "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-callable": "^1.2.7", + "is-date-object": "^1.0.5", + "is-symbol": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/esbuild": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", - "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", - "dev": true, + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.24.2.tgz", + "integrity": "sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA==", "hasInstallScript": true, + "license": "MIT", "bin": { "esbuild": "bin/esbuild" }, "engines": { - "node": ">=12" + "node": ">=18" }, "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" + "@esbuild/aix-ppc64": "0.24.2", + "@esbuild/android-arm": "0.24.2", + "@esbuild/android-arm64": "0.24.2", + "@esbuild/android-x64": "0.24.2", + "@esbuild/darwin-arm64": "0.24.2", + "@esbuild/darwin-x64": "0.24.2", + "@esbuild/freebsd-arm64": "0.24.2", + "@esbuild/freebsd-x64": "0.24.2", + "@esbuild/linux-arm": "0.24.2", + "@esbuild/linux-arm64": "0.24.2", + "@esbuild/linux-ia32": "0.24.2", + "@esbuild/linux-loong64": "0.24.2", + "@esbuild/linux-mips64el": "0.24.2", + "@esbuild/linux-ppc64": "0.24.2", + "@esbuild/linux-riscv64": "0.24.2", + "@esbuild/linux-s390x": "0.24.2", + "@esbuild/linux-x64": "0.24.2", + "@esbuild/netbsd-arm64": "0.24.2", + "@esbuild/netbsd-x64": "0.24.2", + "@esbuild/openbsd-arm64": "0.24.2", + "@esbuild/openbsd-x64": "0.24.2", + "@esbuild/sunos-x64": "0.24.2", + "@esbuild/win32-arm64": "0.24.2", + "@esbuild/win32-ia32": "0.24.2", + "@esbuild/win32-x64": "0.24.2" } }, "node_modules/escalade": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", - "dev": true, "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true, + "license": "MIT", "engines": { - "node": ">=0.8.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/eslint": { - "version": "8.57.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", - "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz", + "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", + "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", "dev": true, + "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", "@eslint/eslintrc": "^2.1.4", - "@eslint/js": "8.57.0", - "@humanwhocodes/config-array": "^0.11.14", + "@eslint/js": "8.57.1", + "@humanwhocodes/config-array": "^0.13.0", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", "@ungap/structured-clone": "^1.2.0", @@ -4586,26 +4404,164 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/eslint-plugin-prettier": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.2.1.tgz", + "integrity": "sha512-gH3iR3g4JfF+yYPaJYkN7jEl9QbweL/YfkoRlNnuIEHEz1vHVlCmWOS+eGGiRuzHQXdJFCOTxRgvju9b8VUmrw==", + "dev": true, + "license": "MIT", + "dependencies": { + "prettier-linter-helpers": "^1.0.0", + "synckit": "^0.9.1" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint-plugin-prettier" + }, + "peerDependencies": { + "@types/eslint": ">=8.0.0", + "eslint": ">=8.0.0", + "eslint-config-prettier": "*", + "prettier": ">=3.0.0" + }, + "peerDependenciesMeta": { + "@types/eslint": { + "optional": true + }, + "eslint-config-prettier": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-react": { + "version": "7.37.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.3.tgz", + "integrity": "sha512-DomWuTQPFYZwF/7c9W2fkKkStqZmBd3uugfqBYLdkZ3Hii23WzZuOLUskGxB8qkSKqftxEeGL1TB2kMhrce0jA==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-includes": "^3.1.8", + "array.prototype.findlast": "^1.2.5", + "array.prototype.flatmap": "^1.3.3", + "array.prototype.tosorted": "^1.1.4", + "doctrine": "^2.1.0", + "es-iterator-helpers": "^1.2.1", + "estraverse": "^5.3.0", + "hasown": "^2.0.2", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.1.2", + "object.entries": "^1.1.8", + "object.fromentries": "^2.0.8", + "object.values": "^1.2.1", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.5", + "semver": "^6.3.1", + "string.prototype.matchall": "^4.0.12", + "string.prototype.repeat": "^1.0.0" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7" + } + }, + "node_modules/eslint-plugin-react-compiler": { + "version": "19.0.0-beta-201e55d-20241215", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-compiler/-/eslint-plugin-react-compiler-19.0.0-beta-201e55d-20241215.tgz", + "integrity": "sha512-KTOMW6Z4Eg2r5BPT/BncbwPswfuVH9KPPDVszOTQFXGNlxhExL8IZoSE3blYxk4e0wFDbCcAwe4UlTauQ8lIww==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.24.4", + "@babel/parser": "^7.24.4", + "@babel/plugin-proposal-private-methods": "^7.18.6", + "hermes-parser": "^0.25.1", + "zod": "^3.22.4", + "zod-validation-error": "^3.0.3" + }, + "engines": { + "node": "^14.17.0 || ^16.0.0 || >= 18.0.0" + }, + "peerDependencies": { + "eslint": ">=7" + } + }, "node_modules/eslint-plugin-react-hooks": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz", - "integrity": "sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.1.0.tgz", + "integrity": "sha512-mpJRtPgHN2tNAvZ35AMfqeB3Xqeo273QxrHJsbBEPWODRM4r0yB6jfoROqKEYrOn27UtRPpcpHc2UqyBSuUNTw==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, "peerDependencies": { - "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0" } }, "node_modules/eslint-plugin-react-refresh": { - "version": "0.4.12", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.12.tgz", - "integrity": "sha512-9neVjoGv20FwYtCP6CB1dzR1vr57ZDNOXst21wd2xJ/cTlM2xLq0GWVlSNTdMn/4BtP6cHYBMCSp1wFBJ9jBsg==", + "version": "0.4.16", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.16.tgz", + "integrity": "sha512-slterMlxAhov/DZO8NScf6mEeMBBXodFUolijDvrtTxyezyLoTQaa73FyYus/VbTdftd8wBgBxPMRk3poleXNQ==", "dev": true, "license": "MIT", "peerDependencies": { - "eslint": ">=7" + "eslint": ">=8.40" + } + }, + "node_modules/eslint-plugin-react/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/eslint-plugin-react/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/eslint-plugin-react/node_modules/resolve": { + "version": "2.0.0-next.5", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", + "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/eslint-plugin-react/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" } }, "node_modules/eslint-scope": { @@ -4613,6 +4569,7 @@ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" @@ -4629,6 +4586,7 @@ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true, + "license": "Apache-2.0", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, @@ -4636,19 +4594,14 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/eslint/node_modules/@eslint/js": { + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz", + "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==", "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, + "license": "MIT", "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, "node_modules/eslint/node_modules/brace-expansion": { @@ -4656,55 +4609,23 @@ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, - "node_modules/eslint/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/eslint/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/eslint/node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "color-name": "~1.1.4" + "esutils": "^2.0.2" }, "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/eslint/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/eslint/node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=6.0.0" } }, "node_modules/eslint/node_modules/globals": { @@ -4712,6 +4633,7 @@ "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "dev": true, + "license": "MIT", "dependencies": { "type-fest": "^0.20.2" }, @@ -4722,20 +4644,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/eslint/node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -4743,23 +4657,12 @@ "node": "*" } }, - "node_modules/eslint/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/espree": { "version": "9.6.1", "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "acorn": "^8.9.0", "acorn-jsx": "^5.3.2", @@ -4773,10 +4676,11 @@ } }, "node_modules/esquery": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", - "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "estraverse": "^5.1.0" }, @@ -4789,6 +4693,7 @@ "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "estraverse": "^5.2.0" }, @@ -4801,6 +4706,7 @@ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } @@ -4810,6 +4716,7 @@ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=0.10.0" } @@ -4817,18 +4724,28 @@ "node_modules/extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "license": "MIT" }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true + "dev": true, + "license": "MIT" + }, + "node_modules/fast-diff": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", + "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", + "dev": true, + "license": "Apache-2.0" }, "node_modules/fast-glob": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "license": "MIT", "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", @@ -4844,6 +4761,7 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "license": "ISC", "dependencies": { "is-glob": "^4.0.1" }, @@ -4855,18 +4773,21 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/fastq": { "version": "1.17.1", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "license": "ISC", "dependencies": { "reusify": "^1.0.4" } @@ -4876,6 +4797,7 @@ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", "dev": true, + "license": "MIT", "dependencies": { "flat-cache": "^3.0.4" }, @@ -4887,6 +4809,7 @@ "version": "7.1.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "license": "MIT", "dependencies": { "to-regex-range": "^5.0.1" }, @@ -4899,6 +4822,7 @@ "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, + "license": "MIT", "dependencies": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" @@ -4915,6 +4839,7 @@ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", "dev": true, + "license": "MIT", "dependencies": { "flatted": "^3.2.9", "keyv": "^4.5.3", @@ -4925,15 +4850,27 @@ } }, "node_modules/flatted": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", - "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", - "dev": true + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.2.tgz", + "integrity": "sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==", + "dev": true, + "license": "ISC" + }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-callable": "^1.1.3" + } }, "node_modules/foreground-child": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.2.1.tgz", - "integrity": "sha512-PXUUyLqrR2XCWICfv6ukppP96sdFwWbNEnfEMt7jNsISjMsvaLNinAHNDYyvkyU+SZG2BTSbT5NjG+vZslfGTA==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz", + "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==", + "license": "ISC", "dependencies": { "cross-spawn": "^7.0.0", "signal-exit": "^4.0.1" @@ -4950,6 +4887,7 @@ "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", "dev": true, + "license": "MIT", "engines": { "node": "*" }, @@ -4962,13 +4900,15 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/fsevents": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", "hasInstallScript": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -4981,6 +4921,38 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/function.prototype.name": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", + "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "functions-have-names": "^1.2.3", + "hasown": "^2.0.2", + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -4989,25 +4961,70 @@ "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } }, + "node_modules/get-intrinsic": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.6.tgz", + "integrity": "sha512-qxsEs+9A+u85HhllWJJFicJfPDhRmjzoYdl64aMWW9yRIJmSyxdn8IEkuIM530/7T+lv0TIHd8L6Q/ra0tEoeA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "dunder-proto": "^1.0.0", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "function-bind": "^1.1.2", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/get-nonce": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz", "integrity": "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==", + "license": "MIT", "engines": { "node": ">=6" } }, + "node_modules/get-symbol-description": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", + "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, + "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -5027,6 +5044,7 @@ "version": "6.0.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "license": "ISC", "dependencies": { "is-glob": "^4.0.3" }, @@ -5039,6 +5057,7 @@ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -5049,6 +5068,7 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -5057,53 +5077,141 @@ } }, "node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "version": "15.14.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-15.14.0.tgz", + "integrity": "sha512-OkToC372DtlQeje9/zHIo5CT8lRP/FUgEOKBEhU4e0abL7J7CD24fD9ohiLN5hagG/kWCYj4K5oaxxtj2Z0Dig==", "dev": true, + "license": "MIT", "engines": { - "node": ">=4" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "node_modules/globalthis": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", "dev": true, + "license": "MIT", "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" + "define-properties": "^1.2.1", + "gopd": "^1.0.1" }, "engines": { - "node": ">=10" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/graphemer": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "dev": true + "dev": true, + "license": "MIT" + }, + "node_modules/has-bigints": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", + "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "license": "MIT", "engines": { - "node": ">=4" + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", + "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/hasown": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", "dependencies": { "function-bind": "^1.1.2" }, @@ -5115,6 +5223,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-3.0.0.tgz", "integrity": "sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==", + "license": "MIT", "dependencies": { "@types/hast": "^3.0.0" }, @@ -5124,12 +5233,13 @@ } }, "node_modules/hast-util-sanitize": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/hast-util-sanitize/-/hast-util-sanitize-5.0.1.tgz", - "integrity": "sha512-IGrgWLuip4O2nq5CugXy4GI2V8kx4sFVy5Hd4vF7AR2gxS0N9s7nEAVUyeMtZKZvzrxVsHt73XdTsno1tClIkQ==", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/hast-util-sanitize/-/hast-util-sanitize-5.0.2.tgz", + "integrity": "sha512-3yTWghByc50aGS7JlGhk61SPenfE/p1oaFeNwkOOyrscaOkMGrcW9+Cy/QAIOBpZxP1yqDIzFMR0+Np0i0+usg==", + "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", - "@ungap/structured-clone": "^1.2.0", + "@ungap/structured-clone": "^1.0.0", "unist-util-position": "^5.0.0" }, "funding": { @@ -5138,9 +5248,9 @@ } }, "node_modules/hast-util-to-html": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-9.0.3.tgz", - "integrity": "sha512-M17uBDzMJ9RPCqLMO92gNNUDuBSq10a25SDBI08iCCxmorf4Yy6sYHK57n9WAbRAAaU+DuR4W6GN9K4DFZesYg==", + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-9.0.4.tgz", + "integrity": "sha512-wxQzXtdbhiwGAUKrnQJXlOPmHnEehzphwkK7aluUPQ+lEc1xefC8pblMgpp2w5ldBTEfveRIrADcrhGIWrlTDA==", "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", @@ -5164,6 +5274,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz", "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==", + "license": "MIT", "dependencies": { "@types/hast": "^3.0.0" }, @@ -5172,20 +5283,39 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/hermes-estree": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.25.1.tgz", + "integrity": "sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw==", + "dev": true, + "license": "MIT" + }, + "node_modules/hermes-parser": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.25.1.tgz", + "integrity": "sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA==", + "dev": true, + "license": "MIT", + "dependencies": { + "hermes-estree": "0.25.1" + } + }, "node_modules/html-void-elements": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-3.0.0.tgz", "integrity": "sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" } }, "node_modules/ignore": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", - "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", "dev": true, + "license": "MIT", "engines": { "node": ">= 4" } @@ -5195,6 +5325,7 @@ "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", "dev": true, + "license": "MIT", "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" @@ -5211,6 +5342,7 @@ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.8.19" } @@ -5221,6 +5353,7 @@ "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", "dev": true, + "license": "ISC", "dependencies": { "once": "^1.3.0", "wrappy": "1" @@ -5230,14 +5363,22 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true + "dev": true, + "license": "ISC" }, - "node_modules/invariant": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "node_modules/internal-slot": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", + "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", + "dev": true, + "license": "MIT", "dependencies": { - "loose-envify": "^1.0.0" + "es-errors": "^1.3.0", + "hasown": "^2.0.2", + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" } }, "node_modules/is-absolute-url": { @@ -5246,29 +5387,146 @@ "integrity": "sha512-/51/TKE88Lmm7Gc4/8btclNXWS+g50wXhYJq8HWIBAGUBnoAdRu1aXeh364t/O7wXDAcTJDP8PNuNKWUDWie+A==", "license": "MIT", "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", + "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-async-function": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz", + "integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bigint": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", + "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-bigints": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "license": "MIT", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-boolean-object": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.1.tgz", + "integrity": "sha512-l9qO6eFlUETHtuihLcYOaLKByJ1f+N4kthcU9YjHy3N+B3hWv0y/2Nd0mu/7lTFnRQHTrSdXF50HQ3bl5fEnng==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.0.tgz", + "integrity": "sha512-urTSINYfAYgcbLb0yDQ6egFm6h3Mo1DcF9EkyXSRjjzdHbsulg01qhwWuXdOoUBuTkbQ80KDboXa0vFJ+BDH+g==", + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "node_modules/is-data-view": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", + "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", + "dev": true, + "license": "MIT", "dependencies": { - "binary-extensions": "^2.0.0" + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "is-typed-array": "^1.1.13" }, "engines": { - "node": ">=8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-core-module": { - "version": "2.14.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.14.0.tgz", - "integrity": "sha512-a5dFJih5ZLYlRtDc0dZWP7RiKr6xIKzmn/oAYCDvdLThadVgyJwlaoQPmRtMSpz+rk0OGAgIu+TcM9HUF0fk1A==", + "node_modules/is-date-object": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", + "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", + "dev": true, + "license": "MIT", "dependencies": { - "hasown": "^2.0.2" + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -5281,22 +5539,57 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "license": "MIT", "engines": { "node": ">=0.10.0" } }, + "node_modules/is-finalizationregistry": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", + "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "license": "MIT", "engines": { "node": ">=8" } }, + "node_modules/is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "license": "MIT", "dependencies": { "is-extglob": "^2.1.1" }, @@ -5304,19 +5597,51 @@ "node": ">=0.10.0" } }, + "node_modules/is-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "license": "MIT", "engines": { "node": ">=0.12.0" } }, + "node_modules/is-number-object": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", + "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-path-inside": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -5325,6 +5650,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", + "license": "MIT", "engines": { "node": ">=12" }, @@ -5332,20 +5658,200 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/is-regex": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", + "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-set": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", + "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", + "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-string": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", + "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", + "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "has-symbols": "^1.1.0", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", + "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakmap": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.0.tgz", + "integrity": "sha512-SXM8Nwyys6nT5WP6pltOwKytLV7FqQ4UiibxVmW+EIosHcmCqkkjViTb5SNssDlkCiEYRP1/pdWUKVvZBmsR2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakset": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", + "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true, + "license": "MIT" + }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "license": "ISC" }, - "node_modules/jackspeak": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.0.tgz", - "integrity": "sha512-JVYhQnN59LVPFCEcVa2C3CrEKYacvjRfqIQl+h8oi91aLYQVWRYbxjPcv1bUiUy/kLmQaANrYfNMCO3kuEDHfw==", + "node_modules/isomorphic.js": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/isomorphic.js/-/isomorphic.js-0.2.5.tgz", + "integrity": "sha512-PIeMbHqMt4DnUP3MA/Flc0HElYjMXArsw1qwJZcm9sqR8mq3l8NYizFMty0pWwE/tzIGH3EKK5+jes5mAr85yw==", + "license": "MIT", + "peer": true, + "funding": { + "type": "GitHub Sponsors ❤", + "url": "https://github.com/sponsors/dmonad" + } + }, + "node_modules/iterator.prototype": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.4.tgz", + "integrity": "sha512-x4WH0BWmrMmg4oHHl+duwubhrvczGlyuGAZu3nvrf0UXOfPu8IhZObFEr7DE/iv01YgVZrsOiRcqw2srkKEDIA==", + "dev": true, + "license": "MIT", "dependencies": { - "@isaacs/cliui": "^8.0.2" + "define-data-property": "^1.1.4", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.6", + "has-symbols": "^1.1.0", + "reflect.getprototypeof": "^1.0.8", + "set-function-name": "^2.0.2" }, "engines": { - "node": ">=14" + "node": ">= 0.4" + } + }, + "node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -5355,9 +5861,10 @@ } }, "node_modules/jiti": { - "version": "1.21.6", - "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.6.tgz", - "integrity": "sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==", + "version": "1.21.7", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.7.tgz", + "integrity": "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==", + "license": "MIT", "bin": { "jiti": "bin/jiti.js" } @@ -5365,13 +5872,15 @@ "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "license": "MIT" }, "node_modules/js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, + "license": "MIT", "dependencies": { "argparse": "^2.0.1" }, @@ -5380,40 +5889,43 @@ } }, "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true, + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "license": "MIT", "bin": { "jsesc": "bin/jsesc" }, "engines": { - "node": ">=4" + "node": ">=6" } }, "node_modules/json-buffer": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/json5": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true, + "license": "MIT", "bin": { "json5": "lib/cli.js" }, @@ -5421,11 +5933,28 @@ "node": ">=6" } }, + "node_modules/jsx-ast-utils": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", + "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "object.assign": "^4.1.4", + "object.values": "^1.1.6" + }, + "engines": { + "node": ">=4.0" + } + }, "node_modules/keyv": { "version": "4.5.4", "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", "dev": true, + "license": "MIT", "dependencies": { "json-buffer": "3.0.1" } @@ -5435,6 +5964,7 @@ "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", "dev": true, + "license": "MIT", "dependencies": { "prelude-ls": "^1.2.1", "type-check": "~0.4.0" @@ -5443,24 +5973,58 @@ "node": ">= 0.8.0" } }, + "node_modules/lexical": { + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/lexical/-/lexical-0.22.0.tgz", + "integrity": "sha512-EquENoJZdhwAzsZ+Dz8dGZprlpPY1zez6Gk9yhGkPzmIVPRIGY4aEAmfKQCep1dZgkUUQB8Flr0xK0+u5TrFhw==", + "license": "MIT" + }, + "node_modules/lib0": { + "version": "0.2.99", + "resolved": "https://registry.npmjs.org/lib0/-/lib0-0.2.99.tgz", + "integrity": "sha512-vwztYuUf1uf/1zQxfzRfO5yzfNKhTtgOByCruuiQQxWQXnPb8Itaube5ylofcV0oM0aKal9Mv+S1s1Ky0UYP1w==", + "license": "MIT", + "peer": true, + "dependencies": { + "isomorphic.js": "^0.2.4" + }, + "bin": { + "0ecdsa-generate-keypair": "bin/0ecdsa-generate-keypair.js", + "0gentesthtml": "bin/gentesthtml.js", + "0serve": "bin/0serve.js" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "type": "GitHub Sponsors ❤", + "url": "https://github.com/sponsors/dmonad" + } + }, "node_modules/lilconfig": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", - "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", + "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==", + "license": "MIT", "engines": { - "node": ">=10" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" } }, "node_modules/lines-and-columns": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "license": "MIT" }, "node_modules/locate-path": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, + "license": "MIT", "dependencies": { "p-locate": "^5.0.0" }, @@ -5471,28 +6035,18 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/lodash.castarray": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.castarray/-/lodash.castarray-4.4.0.tgz", - "integrity": "sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==", - "dev": true - }, - "node_modules/lodash.isplainobject": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", - "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", - "dev": true - }, "node_modules/lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/loose-envify": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "license": "MIT", "dependencies": { "js-tokens": "^3.0.0 || ^4.0.0" }, @@ -5504,19 +6058,28 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, "license": "ISC", "dependencies": { "yallist": "^3.0.2" } }, "node_modules/lucide-react": { - "version": "0.446.0", - "resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-0.446.0.tgz", - "integrity": "sha512-BU7gy8MfBMqvEdDPH79VhOXSEgyG8TSPOKWaExWGCQVqnGH7wGgDngPbofu+KdtVjPQBWbEmnfMTq90CTiiDRg==", + "version": "0.469.0", + "resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-0.469.0.tgz", + "integrity": "sha512-28vvUnnKQ/dBwiCQtwJw7QauYnE7yd2Cyp4tTTJpvglX4EMpbflcdBgrgToX2j71B3YvugK/NH3BGUk+E/p/Fw==", "license": "ISC", "peerDependencies": { - "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0-rc" + "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" } }, "node_modules/mdast-util-from-markdown": { @@ -5547,6 +6110,7 @@ "version": "13.2.0", "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.0.tgz", "integrity": "sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==", + "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", "@types/mdast": "^4.0.0", @@ -5580,14 +6144,15 @@ "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "license": "MIT", "engines": { "node": ">= 8" } }, "node_modules/micromark": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.0.tgz", - "integrity": "sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.1.tgz", + "integrity": "sha512-eBPdkcoCNvYcxQOAKAlceo5SNdzZWfF+FcSupREAzdAh9rRmE239CEQAiTwIgblwnoM8zzj35sZ5ZwvSEOF6Kw==", "funding": [ { "type": "GitHub Sponsors", @@ -5620,9 +6185,9 @@ } }, "node_modules/micromark-core-commonmark": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.1.tgz", - "integrity": "sha512-CUQyKr1e///ZODyD1U3xit6zXwy1a8q2a1S1HKtIlmgvurrEpaw/Y9y6KSIbF8P59cn/NjzHyO+Q2fAyYLQrAA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.2.tgz", + "integrity": "sha512-FKjQKbxd1cibWMM1P9N+H8TwlgGgSkWZMmfuVucLCHaYqeSvJ0hFeHsIa65pA2nYbes0f8LDHPMrd9X7Ujxg9w==", "funding": [ { "type": "GitHub Sponsors", @@ -5654,9 +6219,9 @@ } }, "node_modules/micromark-factory-destination": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.0.tgz", - "integrity": "sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.1.tgz", + "integrity": "sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==", "funding": [ { "type": "GitHub Sponsors", @@ -5675,9 +6240,9 @@ } }, "node_modules/micromark-factory-label": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.0.tgz", - "integrity": "sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.1.tgz", + "integrity": "sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==", "funding": [ { "type": "GitHub Sponsors", @@ -5697,9 +6262,9 @@ } }, "node_modules/micromark-factory-space": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz", - "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz", + "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==", "funding": [ { "type": "GitHub Sponsors", @@ -5717,9 +6282,9 @@ } }, "node_modules/micromark-factory-title": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.0.tgz", - "integrity": "sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.1.tgz", + "integrity": "sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==", "funding": [ { "type": "GitHub Sponsors", @@ -5739,9 +6304,9 @@ } }, "node_modules/micromark-factory-whitespace": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.0.tgz", - "integrity": "sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.1.tgz", + "integrity": "sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==", "funding": [ { "type": "GitHub Sponsors", @@ -5761,9 +6326,9 @@ } }, "node_modules/micromark-util-character": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", - "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", "funding": [ { "type": "GitHub Sponsors", @@ -5774,15 +6339,16 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "node_modules/micromark-util-chunked": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.0.tgz", - "integrity": "sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.1.tgz", + "integrity": "sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==", "funding": [ { "type": "GitHub Sponsors", @@ -5799,9 +6365,9 @@ } }, "node_modules/micromark-util-classify-character": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.0.tgz", - "integrity": "sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.1.tgz", + "integrity": "sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==", "funding": [ { "type": "GitHub Sponsors", @@ -5820,9 +6386,9 @@ } }, "node_modules/micromark-util-combine-extensions": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.0.tgz", - "integrity": "sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.1.tgz", + "integrity": "sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==", "funding": [ { "type": "GitHub Sponsors", @@ -5840,9 +6406,9 @@ } }, "node_modules/micromark-util-decode-numeric-character-reference": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.1.tgz", - "integrity": "sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.2.tgz", + "integrity": "sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==", "funding": [ { "type": "GitHub Sponsors", @@ -5859,9 +6425,9 @@ } }, "node_modules/micromark-util-decode-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.0.tgz", - "integrity": "sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.1.tgz", + "integrity": "sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==", "funding": [ { "type": "GitHub Sponsors", @@ -5881,9 +6447,9 @@ } }, "node_modules/micromark-util-encode": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.0.tgz", - "integrity": "sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz", + "integrity": "sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==", "funding": [ { "type": "GitHub Sponsors", @@ -5893,12 +6459,13 @@ "type": "OpenCollective", "url": "https://opencollective.com/unified" } - ] + ], + "license": "MIT" }, "node_modules/micromark-util-html-tag-name": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.0.tgz", - "integrity": "sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.1.tgz", + "integrity": "sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==", "funding": [ { "type": "GitHub Sponsors", @@ -5912,9 +6479,9 @@ "license": "MIT" }, "node_modules/micromark-util-normalize-identifier": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.0.tgz", - "integrity": "sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.1.tgz", + "integrity": "sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==", "funding": [ { "type": "GitHub Sponsors", @@ -5931,9 +6498,9 @@ } }, "node_modules/micromark-util-resolve-all": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.0.tgz", - "integrity": "sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.1.tgz", + "integrity": "sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==", "funding": [ { "type": "GitHub Sponsors", @@ -5950,9 +6517,9 @@ } }, "node_modules/micromark-util-sanitize-uri": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.0.tgz", - "integrity": "sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz", + "integrity": "sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==", "funding": [ { "type": "GitHub Sponsors", @@ -5963,6 +6530,7 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-encode": "^2.0.0", @@ -5970,9 +6538,9 @@ } }, "node_modules/micromark-util-subtokenize": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.0.1.tgz", - "integrity": "sha512-jZNtiFl/1aY73yS3UGQkutD0UbhTt68qnRpw2Pifmz5wV9h8gOVsN70v+Lq/f1rKaU/W8pxRe8y8Q9FX1AOe1Q==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.0.3.tgz", + "integrity": "sha512-VXJJuNxYWSoYL6AJ6OQECCFGhIU2GGHMw8tahogePBrjkG8aCCas3ibkp7RnVOSTClg2is05/R7maAhF1XyQMg==", "funding": [ { "type": "GitHub Sponsors", @@ -5992,9 +6560,9 @@ } }, "node_modules/micromark-util-symbol": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", - "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", "funding": [ { "type": "GitHub Sponsors", @@ -6004,12 +6572,13 @@ "type": "OpenCollective", "url": "https://opencollective.com/unified" } - ] + ], + "license": "MIT" }, "node_modules/micromark-util-types": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", - "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.1.tgz", + "integrity": "sha512-534m2WhVTddrcKVepwmVEVnUAmtrx9bfIjNoQHRqfnvdaHQiFytEhJoTgpWJvDEXCO5gLTQh3wYC1PgOJA4NSQ==", "funding": [ { "type": "GitHub Sponsors", @@ -6019,12 +6588,14 @@ "type": "OpenCollective", "url": "https://opencollective.com/unified" } - ] + ], + "license": "MIT" }, "node_modules/micromatch": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", - "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "license": "MIT", "dependencies": { "braces": "^3.0.3", "picomatch": "^2.3.1" @@ -6034,10 +6605,10 @@ } }, "node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", - "dev": true, + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -6052,19 +6623,22 @@ "version": "7.1.2", "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "license": "ISC", "engines": { "node": ">=16 || 14 >=14.17" } }, "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" }, "node_modules/mz": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "license": "MIT", "dependencies": { "any-promise": "^1.0.0", "object-assign": "^4.0.1", @@ -6072,9 +6646,9 @@ } }, "node_modules/nanoid": { - "version": "5.0.7", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-5.0.7.tgz", - "integrity": "sha512-oLxFY2gd2IqnjcYyOXD8XGCftpGtZP2AbHbOkthDkvRywH5ayNtPVy9YlOPcHckXzbLTCHpkb7FB+yuxKV13pQ==", + "version": "5.0.9", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-5.0.9.tgz", + "integrity": "sha512-Aooyr6MXU6HpvvWXKoVoXwKMs/KyVakWwg7xQfv5/S/RIgJMy0Ifa45H9qqYy7pTCszrHzP21Uk4PZq2HpEM8Q==", "dev": true, "funding": [ { @@ -6082,6 +6656,7 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "bin": { "nanoid": "bin/nanoid.js" }, @@ -6093,29 +6668,30 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/next-themes": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/next-themes/-/next-themes-0.3.0.tgz", - "integrity": "sha512-/QHIrsYpd6Kfk7xakK4svpDI5mmXP0gfvCoJdGpZQ2TOrQZmsW0QxjaiLn8wbIKjtm4BTSqLoix4lxYYOnLJ/w==", + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/next-themes/-/next-themes-0.4.4.tgz", + "integrity": "sha512-LDQ2qIOJF0VnuVrrMSMLrWGjRMkq+0mpgl6e0juCLqdJ+oo8Q84JRWT6Wh11VDQKkMMe+dVzDKLWs5n87T+PkQ==", "license": "MIT", "peerDependencies": { - "react": "^16.8 || ^17 || ^18", - "react-dom": "^16.8 || ^17 || ^18" + "react": "^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc" } }, "node_modules/node-releases": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", - "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==", - "dev": true, + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", + "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", "license": "MIT" }, "node_modules/normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -6125,14 +6701,15 @@ "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/nostr-tools": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/nostr-tools/-/nostr-tools-2.7.2.tgz", - "integrity": "sha512-Bq3Ug0SZFtgtL1+0wCnAe8AJtI7yx/00/a2nUug9SkhfOwlKS92Tef12iCK9FdwXw+oFZWMtRnSwcLayQso+xA==", + "version": "2.10.4", + "resolved": "https://registry.npmjs.org/nostr-tools/-/nostr-tools-2.10.4.tgz", + "integrity": "sha512-biU7sk+jxHgVASfobg2T5ttxOGGSt69wEVBC51sHHOEaKAAdzHBLV/I2l9Rf61UzClhliZwNouYhqIso4a3HYg==", "license": "Unlicense", "dependencies": { "@noble/ciphers": "^0.5.1", @@ -6143,7 +6720,7 @@ "@scure/bip39": "1.2.1" }, "optionalDependencies": { - "nostr-wasm": "v0.1.0" + "nostr-wasm": "0.1.0" }, "peerDependencies": { "typescript": ">=5.0.0" @@ -6158,12 +6735,14 @@ "version": "0.1.0", "resolved": "https://registry.npmjs.org/nostr-wasm/-/nostr-wasm-0.1.0.tgz", "integrity": "sha512-78BTryCLcLYv96ONU8Ws3Q1JzjlAt+43pWQhIl86xZmWeegYCNLPml7yQ+gG3vR6V5h4XGj+TxO+SS5dsThQIA==", + "license": "MIT", "optional": true }, "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -6172,15 +6751,114 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", + "license": "MIT", "engines": { "node": ">= 6" } }, + "node_modules/object-inspect": { + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.3.tgz", + "integrity": "sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", + "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0", + "has-symbols": "^1.1.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.entries": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.8.tgz", + "integrity": "sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.fromentries": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", + "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.values": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.1.tgz", + "integrity": "sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "dev": true, + "license": "ISC", "dependencies": { "wrappy": "1" } @@ -6190,6 +6868,7 @@ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", "dev": true, + "license": "MIT", "dependencies": { "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", @@ -6207,6 +6886,7 @@ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, + "license": "MIT", "dependencies": { "yocto-queue": "^0.1.0" }, @@ -6222,6 +6902,7 @@ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, + "license": "MIT", "dependencies": { "p-limit": "^3.0.2" }, @@ -6233,15 +6914,17 @@ } }, "node_modules/package-json-from-dist": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz", - "integrity": "sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==" + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", + "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", + "license": "BlueOak-1.0.0" }, "node_modules/parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "dev": true, + "license": "MIT", "dependencies": { "callsites": "^3.0.0" }, @@ -6254,6 +6937,7 @@ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -6263,6 +6947,7 @@ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -6271,6 +6956,7 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "license": "MIT", "engines": { "node": ">=8" } @@ -6278,12 +6964,14 @@ "node_modules/path-parse": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "license": "MIT" }, "node_modules/path-scurry": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "license": "BlueOak-1.0.0", "dependencies": { "lru-cache": "^10.2.0", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" @@ -6296,32 +6984,22 @@ } }, "node_modules/path-scurry/node_modules/lru-cache": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.3.0.tgz", - "integrity": "sha512-CQl19J/g+Hbjbv4Y3mFNNXFEL/5t/KCg8POCuUqd4rMKjGG+j1ybER83hxV58zL+dFI1PTkt3GNFSHRt+d8qEQ==", - "engines": { - "node": "14 || >=16.14" - } - }, - "node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true, - "engines": { - "node": ">=8" - } + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "license": "ISC" }, "node_modules/picocolors": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.0.tgz", - "integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", "license": "ISC" }, "node_modules/picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "license": "MIT", "engines": { "node": ">=8.6" }, @@ -6333,6 +7011,7 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -6341,14 +7020,25 @@ "version": "4.0.6", "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", + "license": "MIT", "engines": { "node": ">= 6" } }, + "node_modules/possible-typed-array-names": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", + "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/postcss": { - "version": "8.4.47", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.47.tgz", - "integrity": "sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==", + "version": "8.4.49", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.49.tgz", + "integrity": "sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==", "funding": [ { "type": "opencollective", @@ -6366,7 +7056,7 @@ "license": "MIT", "dependencies": { "nanoid": "^3.3.7", - "picocolors": "^1.1.0", + "picocolors": "^1.1.1", "source-map-js": "^1.2.1" }, "engines": { @@ -6377,6 +7067,7 @@ "version": "15.1.0", "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", + "license": "MIT", "dependencies": { "postcss-value-parser": "^4.0.0", "read-cache": "^1.0.0", @@ -6393,6 +7084,7 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz", "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==", + "license": "MIT", "dependencies": { "camelcase-css": "^2.0.1" }, @@ -6421,6 +7113,7 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { "lilconfig": "^3.0.0", "yaml": "^2.3.4" @@ -6441,52 +7134,36 @@ } } }, - "node_modules/postcss-load-config/node_modules/lilconfig": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.2.tgz", - "integrity": "sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/antonk52" - } - }, "node_modules/postcss-nested": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.1.tgz", - "integrity": "sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.2.0.tgz", + "integrity": "sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", "dependencies": { - "postcss-selector-parser": "^6.0.11" + "postcss-selector-parser": "^6.1.1" }, "engines": { "node": ">=12.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, "peerDependencies": { "postcss": "^8.2.14" } }, - "node_modules/postcss-nested/node_modules/postcss-selector-parser": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.0.tgz", - "integrity": "sha512-UMz42UD0UY0EApS0ZL9o1XnLhSTtvvvLe5Dc2H2O56fvRZi+KulDyf5ctDhhtYJBGKStV2FL1fy6253cmLgqVQ==", - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/postcss-selector-parser": { - "version": "6.0.10", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", - "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", - "dev": true, + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", + "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", + "license": "MIT", "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -6498,18 +7175,20 @@ "node_modules/postcss-value-parser": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", - "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "license": "MIT" }, "node_modules/postcss/node_modules/nanoid": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", - "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "version": "3.3.8", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz", + "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==", "funding": [ { "type": "github", "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "bin": { "nanoid": "bin/nanoid.cjs" }, @@ -6522,16 +7201,18 @@ "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8.0" } }, "node_modules/prettier": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz", - "integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==", + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.4.2.tgz", + "integrity": "sha512-e9MewbtFo+Fevyuxn/4rrcDAaq0IYxPGLvObpQjiZBMAzB9IGmzlnG9RZy3FFas+eBMu2vA0CszMeduow5dIuQ==", "dev": true, "license": "MIT", + "peer": true, "bin": { "prettier": "bin/prettier.cjs" }, @@ -6542,10 +7223,23 @@ "url": "https://github.com/prettier/prettier?sponsor=1" } }, + "node_modules/prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-diff": "^1.1.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, "node_modules/prettier-plugin-tailwindcss": { - "version": "0.6.8", - "resolved": "https://registry.npmjs.org/prettier-plugin-tailwindcss/-/prettier-plugin-tailwindcss-0.6.8.tgz", - "integrity": "sha512-dGu3kdm7SXPkiW4nzeWKCl3uoImdd5CTZEJGxyypEPL37Wj0HT2pLqjrvSei1nTeuQfO4PUfjeW5cTUNRLZ4sA==", + "version": "0.6.9", + "resolved": "https://registry.npmjs.org/prettier-plugin-tailwindcss/-/prettier-plugin-tailwindcss-0.6.9.tgz", + "integrity": "sha512-r0i3uhaZAXYP0At5xGfJH876W3HHGHDp+LCRUJrs57PBeQ6mYHMwr25KH8NPX44F2yGTvdnH7OqCshlQx183Eg==", "dev": true, "license": "MIT", "engines": { @@ -6621,25 +7315,31 @@ } } }, + "node_modules/prismjs": { + "version": "1.29.0", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz", + "integrity": "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/prop-types": { "version": "15.8.1", "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "license": "MIT", "dependencies": { "loose-envify": "^1.4.0", "object-assign": "^4.1.1", "react-is": "^16.13.1" } }, - "node_modules/prop-types/node_modules/react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" - }, "node_modules/property-information": { "version": "6.5.0", "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.5.0.tgz", "integrity": "sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -6650,6 +7350,7 @@ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -6671,15 +7372,14 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT" }, "node_modules/react": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", - "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", - "dependencies": { - "loose-envify": "^1.1.0" - }, + "version": "19.0.0", + "resolved": "https://registry.npmjs.org/react/-/react-19.0.0.tgz", + "integrity": "sha512-V8AVnmPIICiWpGfm6GLzCR/W5FXLchHop40W4nXBmdlEceh16rCN8O8LNWm5bh5XUX91fh7KpA+W0TgMKmgTpQ==", + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -6688,6 +7388,7 @@ "version": "5.1.0", "resolved": "https://registry.npmjs.org/react-copy-to-clipboard/-/react-copy-to-clipboard-5.1.0.tgz", "integrity": "sha512-k61RsNgAayIJNoy9yDsYzDe/yAZAzEbEgcz3DZMhF686LEyukcE1hzurxe85JandPUG+yTfGVFzuEw3xt8WP/A==", + "license": "MIT", "dependencies": { "copy-to-clipboard": "^3.3.1", "prop-types": "^15.8.1" @@ -6696,22 +7397,38 @@ "react": "^15.3.0 || 16 || 17 || 18" } }, - "node_modules/react-dom": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", - "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", + "node_modules/react-dom": { + "version": "19.0.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.0.0.tgz", + "integrity": "sha512-4GV5sHFG0e/0AD4X+ySy6UJd3jVl1iNsNHdpad0qhABJ11twS3TTBnseqsKurKcsNqCEFeGL3uLpVChpIO3QfQ==", + "license": "MIT", + "dependencies": { + "scheduler": "^0.25.0" + }, + "peerDependencies": { + "react": "^19.0.0" + } + }, + "node_modules/react-error-boundary": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/react-error-boundary/-/react-error-boundary-3.1.4.tgz", + "integrity": "sha512-uM9uPzZJTF6wRQORmSrvOIgt4lJ9MC1sNgEOj2XGsDTRE4kmpWxg7ENK9EWNKJRMAOY9z0MuF4yIfl6gp4sotA==", + "license": "MIT", "dependencies": { - "loose-envify": "^1.1.0", - "scheduler": "^0.23.2" + "@babel/runtime": "^7.12.5" + }, + "engines": { + "node": ">=10", + "npm": ">=6" }, "peerDependencies": { - "react": "^18.3.1" + "react": ">=16.13.1" } }, "node_modules/react-hook-form": { - "version": "7.53.0", - "resolved": "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.53.0.tgz", - "integrity": "sha512-M1n3HhqCww6S2hxLxciEXy2oISPnAzxY7gvwVPrtlczTM/1dDadXgUxDpHMrMTblDOcm/AXtXxHwZ3jpg1mqKQ==", + "version": "7.54.2", + "resolved": "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.54.2.tgz", + "integrity": "sha512-eHpAUgUjWbZocoQYUHposymRb4ZP6d0uwUnooL2uOybA9/3tPUvoAKqEWK1WaSiTxxOfTpffNZP7QwlnM3/gEg==", "license": "MIT", "engines": { "node": ">=18.0.0" @@ -6725,13 +7442,13 @@ } }, "node_modules/react-intersection-observer": { - "version": "9.13.1", - "resolved": "https://registry.npmjs.org/react-intersection-observer/-/react-intersection-observer-9.13.1.tgz", - "integrity": "sha512-tSzDaTy0qwNPLJHg8XZhlyHTgGW6drFKTtvjdL+p6um12rcnp8Z5XstE+QNBJ7c64n5o0Lj4ilUleA41bmDoMw==", + "version": "9.14.0", + "resolved": "https://registry.npmjs.org/react-intersection-observer/-/react-intersection-observer-9.14.0.tgz", + "integrity": "sha512-AYqlmDZn85VUmlODwYym9y5OlqY2cFyIu41dkN0GJWvhdbd19Mh16mz5IH6fO1gp5V4FfQOO4m0zGc04Tj13rQ==", "license": "MIT", "peerDependencies": { - "react": "^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", - "react-dom": "^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + "react": "^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^17.0.0 || ^18.0.0 || ^19.0.0" }, "peerDependenciesMeta": { "react-dom": { @@ -6739,32 +7456,40 @@ } } }, + "node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "license": "MIT" + }, "node_modules/react-refresh": { "version": "0.14.2", "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.2.tgz", "integrity": "sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/react-remove-scroll": { - "version": "2.5.7", - "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.5.7.tgz", - "integrity": "sha512-FnrTWO4L7/Bhhf3CYBNArEG/yROV0tKmTv7/3h9QCFvH6sndeFf1wPqOcbFVu5VAulS5dV1wGT3GZZ/1GawqiA==", + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.6.2.tgz", + "integrity": "sha512-KmONPx5fnlXYJQqC62Q+lwIeAk64ws/cUw6omIumRzMRPqgnYqhSSti99nbj0Ry13bv7dF+BKn7NB+OqkdZGTw==", + "license": "MIT", "dependencies": { - "react-remove-scroll-bar": "^2.3.4", + "react-remove-scroll-bar": "^2.3.7", "react-style-singleton": "^2.2.1", "tslib": "^2.1.0", - "use-callback-ref": "^1.3.0", + "use-callback-ref": "^1.3.3", "use-sidecar": "^1.1.2" }, "engines": { "node": ">=10" }, "peerDependencies": { - "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" }, "peerDependenciesMeta": { "@types/react": { @@ -6773,19 +7498,20 @@ } }, "node_modules/react-remove-scroll-bar": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.6.tgz", - "integrity": "sha512-DtSYaao4mBmX+HDo5YWYdBWQwYIQQshUV/dVxFxK+KM26Wjwp1gZ6rv6OC3oujI6Bfu6Xyg3TwK533AQutsn/g==", + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.8.tgz", + "integrity": "sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q==", + "license": "MIT", "dependencies": { - "react-style-singleton": "^2.2.1", + "react-style-singleton": "^2.2.2", "tslib": "^2.0.0" }, "engines": { "node": ">=10" }, "peerDependencies": { - "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" }, "peerDependenciesMeta": { "@types/react": { @@ -6794,30 +7520,30 @@ } }, "node_modules/react-resizable-panels": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/react-resizable-panels/-/react-resizable-panels-2.1.4.tgz", - "integrity": "sha512-kzue8lsoSBdyyd2IfXLQMMhNujOxRoGVus+63K95fQqleGxTfvgYLTzbwYMOODeAHqnkjb3WV/Ks7f5+gDYZuQ==", + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/react-resizable-panels/-/react-resizable-panels-2.1.7.tgz", + "integrity": "sha512-JtT6gI+nURzhMYQYsx8DKkx6bSoOGFp7A3CwMrOb8y5jFHFyqwo9m68UhmXRw57fRVJksFn1TSlm3ywEQ9vMgA==", "license": "MIT", "peerDependencies": { - "react": "^16.14.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.14.0 || ^17.0.0 || ^18.0.0" + "react": "^16.14.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc", + "react-dom": "^16.14.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" } }, "node_modules/react-style-singleton": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.1.tgz", - "integrity": "sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==", + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.3.tgz", + "integrity": "sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ==", + "license": "MIT", "dependencies": { "get-nonce": "^1.0.0", - "invariant": "^2.2.4", "tslib": "^2.0.0" }, "engines": { "node": ">=10" }, "peerDependencies": { - "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" }, "peerDependenciesMeta": { "@types/react": { @@ -6829,6 +7555,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", + "license": "MIT", "dependencies": { "pify": "^2.3.0" } @@ -6837,6 +7564,7 @@ "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "license": "MIT", "dependencies": { "picomatch": "^2.2.1" }, @@ -6844,10 +7572,53 @@ "node": ">=8.10.0" } }, + "node_modules/reflect.getprototypeof": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.9.tgz", + "integrity": "sha512-r0Ay04Snci87djAsI4U+WNRcSw5S4pOH7qFjd/veA5gC7TbqESR3tcj28ia95L/fYUDw11JKP7uqUKUAfVvV5Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "dunder-proto": "^1.0.1", + "es-abstract": "^1.23.6", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "gopd": "^1.2.0", + "which-builtin-type": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/regenerator-runtime": { "version": "0.14.1", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", - "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==" + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", + "license": "MIT" + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.3.tgz", + "integrity": "sha512-vqlC04+RQoFalODCbCumG2xIOvapzVMHwsyIGM/SIE8fRhFFsXeH8/QQ+s0T0kDAhKc4k30s73/0ydkHQz6HlQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "set-function-name": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/rehype-external-links": { "version": "3.0.0", @@ -6871,6 +7642,7 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/rehype-sanitize/-/rehype-sanitize-6.0.0.tgz", "integrity": "sha512-CsnhKNsyI8Tub6L4sm5ZFsme4puGfc6pYylvXo1AeqaGbjOYyzNv3qZPwvs0oMJ39eryyeOdmxwUIo94IpEhqg==", + "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", "hast-util-sanitize": "^5.0.0" @@ -6929,9 +7701,10 @@ } }, "node_modules/remark-rehype": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-11.1.0.tgz", - "integrity": "sha512-z3tJrAs2kIs1AqIIy6pzHmAHlF1hWQ+OdY4/hv+Wxe35EhyLKcajL33iUEn3ScxtFox9nUvRufR/Zre8Q08H/g==", + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-11.1.1.tgz", + "integrity": "sha512-g/osARvjkBXb6Wo0XvAeXQohVta8i84ACbenPpoSsxTOQH/Ae0/RGP4WZgnMH5pMLpsj4FG7OHmcIcXxpza8eQ==", + "license": "MIT", "peer": true, "dependencies": { "@types/hast": "^3.0.0", @@ -6961,17 +7734,21 @@ } }, "node_modules/resolve": { - "version": "1.22.8", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", - "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "version": "1.22.10", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", + "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", + "license": "MIT", "dependencies": { - "is-core-module": "^2.13.0", + "is-core-module": "^2.16.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, "bin": { "resolve": "bin/resolve" }, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -6981,6 +7758,7 @@ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -6989,6 +7767,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "license": "MIT", "engines": { "iojs": ">=1.0.0", "node": ">=0.10.0" @@ -7000,6 +7779,7 @@ "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "deprecated": "Rimraf versions prior to v4 are no longer supported", "dev": true, + "license": "ISC", "dependencies": { "glob": "^7.1.3" }, @@ -7011,10 +7791,9 @@ } }, "node_modules/rollup": { - "version": "4.22.5", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.22.5.tgz", - "integrity": "sha512-WoinX7GeQOFMGznEcWA1WrTQCd/tpEbMkc3nuMs9BT0CPjMdSjPMTVClwWd4pgSQwJdP65SK9mTCNvItlr5o7w==", - "dev": true, + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.28.1.tgz", + "integrity": "sha512-61fXYl/qNVinKmGSTHAZ6Yy8I3YIJC/r2m9feHo6SwVAVcLT5MPwOUFe7EuURA/4m0NR8lXG4BBXuo/IZEsjMg==", "license": "MIT", "dependencies": { "@types/estree": "1.0.6" @@ -7027,22 +7806,25 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.22.5", - "@rollup/rollup-android-arm64": "4.22.5", - "@rollup/rollup-darwin-arm64": "4.22.5", - "@rollup/rollup-darwin-x64": "4.22.5", - "@rollup/rollup-linux-arm-gnueabihf": "4.22.5", - "@rollup/rollup-linux-arm-musleabihf": "4.22.5", - "@rollup/rollup-linux-arm64-gnu": "4.22.5", - "@rollup/rollup-linux-arm64-musl": "4.22.5", - "@rollup/rollup-linux-powerpc64le-gnu": "4.22.5", - "@rollup/rollup-linux-riscv64-gnu": "4.22.5", - "@rollup/rollup-linux-s390x-gnu": "4.22.5", - "@rollup/rollup-linux-x64-gnu": "4.22.5", - "@rollup/rollup-linux-x64-musl": "4.22.5", - "@rollup/rollup-win32-arm64-msvc": "4.22.5", - "@rollup/rollup-win32-ia32-msvc": "4.22.5", - "@rollup/rollup-win32-x64-msvc": "4.22.5", + "@rollup/rollup-android-arm-eabi": "4.28.1", + "@rollup/rollup-android-arm64": "4.28.1", + "@rollup/rollup-darwin-arm64": "4.28.1", + "@rollup/rollup-darwin-x64": "4.28.1", + "@rollup/rollup-freebsd-arm64": "4.28.1", + "@rollup/rollup-freebsd-x64": "4.28.1", + "@rollup/rollup-linux-arm-gnueabihf": "4.28.1", + "@rollup/rollup-linux-arm-musleabihf": "4.28.1", + "@rollup/rollup-linux-arm64-gnu": "4.28.1", + "@rollup/rollup-linux-arm64-musl": "4.28.1", + "@rollup/rollup-linux-loongarch64-gnu": "4.28.1", + "@rollup/rollup-linux-powerpc64le-gnu": "4.28.1", + "@rollup/rollup-linux-riscv64-gnu": "4.28.1", + "@rollup/rollup-linux-s390x-gnu": "4.28.1", + "@rollup/rollup-linux-x64-gnu": "4.28.1", + "@rollup/rollup-linux-x64-musl": "4.28.1", + "@rollup/rollup-win32-arm64-msvc": "4.28.1", + "@rollup/rollup-win32-ia32-msvc": "4.28.1", + "@rollup/rollup-win32-x64-msvc": "4.28.1", "fsevents": "~2.3.2" } }, @@ -7064,23 +7846,61 @@ "url": "https://feross.org/support" } ], + "license": "MIT", "dependencies": { "queue-microtask": "^1.2.2" } }, - "node_modules/scheduler": { - "version": "0.23.2", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", - "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", + "node_modules/safe-array-concat": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", + "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "has-symbols": "^1.1.0", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-regex-test": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", + "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", + "dev": true, + "license": "MIT", "dependencies": { - "loose-envify": "^1.1.0" + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-regex": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/scheduler": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.25.0.tgz", + "integrity": "sha512-xFVuu11jh+xcO7JOAGJNOXld8/TcEHK/4CituBUeUb5hqxJLj9YuemAEuvm9gQ/+pgXYfbQuqAkiYu+u7YEsNA==", + "license": "MIT" + }, "node_modules/semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -7088,10 +7908,45 @@ "node": ">=10" } }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "license": "MIT", "dependencies": { "shebang-regex": "^3.0.0" }, @@ -7103,14 +7958,92 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "license": "MIT", "engines": { "node": ">=8" } }, + "node_modules/side-channel": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/signal-exit": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "license": "ISC", "engines": { "node": ">=14" }, @@ -7118,23 +8051,14 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/sonner": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/sonner/-/sonner-1.5.0.tgz", - "integrity": "sha512-FBjhG/gnnbN6FY0jaNnqZOMmB73R+5IiyYAw8yBj7L54ER7HB3fOSE5OFiQiE2iXWxeXKvg6fIP4LtVppHEdJA==", + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/sonner/-/sonner-1.7.1.tgz", + "integrity": "sha512-b6LHBfH32SoVasRFECrdY8p8s7hXPDn3OHUFbZZbiB1ctLS9Gdh6rpX2dVrpQA0kiL5jcRzDDldwwLkSKk3+QQ==", "license": "MIT", "peerDependencies": { - "react": "^18.0.0", - "react-dom": "^18.0.0" + "react": "^18.0.0 || ^19.0.0 || ^19.0.0-rc", + "react-dom": "^18.0.0 || ^19.0.0 || ^19.0.0-rc" } }, "node_modules/source-map-js": { @@ -7150,6 +8074,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -7159,6 +8084,7 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "license": "MIT", "dependencies": { "eastasianwidth": "^0.2.0", "emoji-regex": "^9.2.2", @@ -7176,6 +8102,7 @@ "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -7188,12 +8115,14 @@ "node_modules/string-width-cjs/node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" }, "node_modules/string-width/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "license": "MIT", "engines": { "node": ">=12" }, @@ -7205,6 +8134,7 @@ "version": "7.1.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "license": "MIT", "dependencies": { "ansi-regex": "^6.0.1" }, @@ -7215,10 +8145,109 @@ "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, + "node_modules/string.prototype.matchall": { + "version": "4.0.12", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.12.tgz", + "integrity": "sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.6", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.6", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "internal-slot": "^1.1.0", + "regexp.prototype.flags": "^1.5.3", + "set-function-name": "^2.0.2", + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.repeat": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/string.prototype.repeat/-/string.prototype.repeat-1.0.0.tgz", + "integrity": "sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.10", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", + "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-data-property": "^1.1.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-object-atoms": "^1.0.0", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz", + "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/stringify-entities": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz", "integrity": "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==", + "license": "MIT", "dependencies": { "character-entities-html4": "^2.0.0", "character-entities-legacy": "^3.0.0" @@ -7232,6 +8261,7 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -7244,6 +8274,7 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -7256,6 +8287,7 @@ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" }, @@ -7263,15 +8295,11 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/style-mod": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/style-mod/-/style-mod-4.1.2.tgz", - "integrity": "sha512-wnD1HyVqpJUI2+eKZ+eo1UwghftP6yuFheBqqe+bWCotBjC2K1YnteJILRMs3SM4V/0dLEW1SC27MWP5y+mwmw==" - }, "node_modules/sucrase": { "version": "3.35.0", "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz", "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==", + "license": "MIT", "dependencies": { "@jridgewell/gen-mapping": "^0.3.2", "commander": "^4.0.0", @@ -7290,9 +8318,10 @@ } }, "node_modules/sucrase/node_modules/glob": { - "version": "10.4.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.2.tgz", - "integrity": "sha512-GwMlUF6PkPo3Gk21UxkCohOv0PLcIXVtKyLlpEI28R/cO/4eNOdmLk3CMW1wROV/WR/EsZOWAfBbBOqYvs88/w==", + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "license": "ISC", "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^3.1.2", @@ -7304,54 +8333,56 @@ "bin": { "glob": "dist/esm/bin.mjs" }, - "engines": { - "node": ">=16 || 14 >=14.18" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/sucrase/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", "dependencies": { - "has-flag": "^3.0.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/supports-preserve-symlinks-flag": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/synckit": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.9.2.tgz", + "integrity": "sha512-vrozgXDQwYO72vHjUb/HnFbQx1exDjoKzqx23aXEg2a9VIg2TSFZ8FmeZpTjUCFMYw7mpX4BE2SFu8wI7asYsw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@pkgr/core": "^0.1.0", + "tslib": "^2.6.2" + }, "engines": { - "node": ">= 0.4" + "node": "^14.18.0 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://opencollective.com/unts" } }, "node_modules/tailwind-merge": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-2.5.2.tgz", - "integrity": "sha512-kjEBm+pvD+6eAwzJL2Bi+02/9LFLal1Gs61+QB7HvTfQQ0aXwC5LGT8PEt1gS0CWKktKe6ysPTAy3cBC5MeiIg==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-2.6.0.tgz", + "integrity": "sha512-P+Vu1qXfzediirmHOC3xKGAYeZtPcV9g76X+xg2FD4tYgR71ewMA35Y3sCz3zhiN/dwefRpJX0yBcgwi1fXNQA==", "license": "MIT", "funding": { "type": "github", @@ -7359,33 +8390,33 @@ } }, "node_modules/tailwindcss": { - "version": "3.4.13", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.13.tgz", - "integrity": "sha512-KqjHOJKogOUt5Bs752ykCeiwvi0fKVkr5oqsFNt/8px/tA8scFPIlkygsf6jXrfCqGHz7VflA6+yytWuM+XhFw==", + "version": "3.4.17", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.17.tgz", + "integrity": "sha512-w33E2aCvSDP0tW9RZuNXadXlkHXqFzSkQew/aIa2i/Sj8fThxwovwlXHSPXTbAHwEIhBFXAedUhP2tueAKP8Og==", "license": "MIT", "dependencies": { "@alloc/quick-lru": "^5.2.0", "arg": "^5.0.2", - "chokidar": "^3.5.3", + "chokidar": "^3.6.0", "didyoumean": "^1.2.2", "dlv": "^1.1.3", - "fast-glob": "^3.3.0", + "fast-glob": "^3.3.2", "glob-parent": "^6.0.2", "is-glob": "^4.0.3", - "jiti": "^1.21.0", - "lilconfig": "^2.1.0", - "micromatch": "^4.0.5", + "jiti": "^1.21.6", + "lilconfig": "^3.1.3", + "micromatch": "^4.0.8", "normalize-path": "^3.0.0", "object-hash": "^3.0.0", - "picocolors": "^1.0.0", - "postcss": "^8.4.23", + "picocolors": "^1.1.1", + "postcss": "^8.4.47", "postcss-import": "^15.1.0", "postcss-js": "^4.0.1", - "postcss-load-config": "^4.0.1", - "postcss-nested": "^6.0.1", - "postcss-selector-parser": "^6.0.11", - "resolve": "^1.22.2", - "sucrase": "^3.32.0" + "postcss-load-config": "^4.0.2", + "postcss-nested": "^6.2.0", + "postcss-selector-parser": "^6.1.2", + "resolve": "^1.22.8", + "sucrase": "^3.35.0" }, "bin": { "tailwind": "lib/cli.js", @@ -7399,32 +8430,23 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/tailwindcss-animate/-/tailwindcss-animate-1.0.7.tgz", "integrity": "sha512-bl6mpH3T7I3UFxuvDEXLxy/VuFxBk5bbzplh7tXI68mwMokNYd1t9qPBHlnyTwfa4JGC4zP516I1hYYtQ/vspA==", + "license": "MIT", "peerDependencies": { "tailwindcss": ">=3.0.0 || insiders" } }, - "node_modules/tailwindcss/node_modules/postcss-selector-parser": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.0.tgz", - "integrity": "sha512-UMz42UD0UY0EApS0ZL9o1XnLhSTtvvvLe5Dc2H2O56fvRZi+KulDyf5ctDhhtYJBGKStV2FL1fy6253cmLgqVQ==", - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/thenify": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "license": "MIT", "dependencies": { "any-promise": "^1.0.0" } @@ -7433,6 +8455,7 @@ "version": "1.6.0", "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "license": "MIT", "dependencies": { "thenify": ">= 3.1.0 < 4" }, @@ -7440,19 +8463,11 @@ "node": ">=0.8" } }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "license": "MIT", "dependencies": { "is-number": "^7.0.0" }, @@ -7463,12 +8478,14 @@ "node_modules/toggle-selection": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/toggle-selection/-/toggle-selection-1.0.6.tgz", - "integrity": "sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==" + "integrity": "sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==", + "license": "MIT" }, "node_modules/trim-lines": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -7478,16 +8495,18 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/trough/-/trough-2.2.0.tgz", "integrity": "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" } }, "node_modules/ts-api-utils": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz", - "integrity": "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==", + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.4.3.tgz", + "integrity": "sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==", "dev": true, + "license": "MIT", "engines": { "node": ">=16" }, @@ -7498,18 +8517,21 @@ "node_modules/ts-interface-checker": { "version": "0.1.13", "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", - "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==" + "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", + "license": "Apache-2.0" }, "node_modules/tslib": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", - "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", "dev": true, + "license": "MIT", "dependencies": { "prelude-ls": "^1.2.1" }, @@ -7522,6 +8544,7 @@ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" }, @@ -7529,10 +8552,88 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/typed-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", + "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", + "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", + "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.15", + "reflect.getprototypeof": "^1.0.9" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz", + "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0", + "reflect.getprototypeof": "^1.0.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/typescript": { - "version": "5.6.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.2.tgz", - "integrity": "sha512-NW8ByodCSNCwZeghjN3o+JX5OFH0Ojg6sadjEKY4huZ52TqbJTJnDo5+Tw98lSy63NZvi4n+ez5m2u5d4PkZyw==", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.2.tgz", + "integrity": "sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==", "devOptional": true, "license": "Apache-2.0", "bin": { @@ -7543,16 +8644,60 @@ "node": ">=14.17" } }, + "node_modules/typescript-eslint": { + "version": "8.18.2", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.18.2.tgz", + "integrity": "sha512-KuXezG6jHkvC3MvizeXgupZzaG5wjhU3yE8E7e6viOvAvD9xAWYp8/vy0WULTGe9DYDWcQu7aW03YIV3mSitrQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/eslint-plugin": "8.18.2", + "@typescript-eslint/parser": "8.18.2", + "@typescript-eslint/utils": "8.18.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.8.0" + } + }, + "node_modules/unbox-primitive": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", + "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-bigints": "^1.0.2", + "has-symbols": "^1.1.0", + "which-boxed-primitive": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/undici-types": { - "version": "5.26.5", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", - "dev": true + "version": "6.20.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", + "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", + "devOptional": true, + "license": "MIT" }, "node_modules/unified": { "version": "11.0.5", "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.5.tgz", "integrity": "sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==", + "license": "MIT", "dependencies": { "@types/unist": "^3.0.0", "bail": "^2.0.0", @@ -7571,6 +8716,7 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "license": "MIT", "dependencies": { "@types/unist": "^3.0.0" }, @@ -7583,6 +8729,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", + "license": "MIT", "dependencies": { "@types/unist": "^3.0.0" }, @@ -7595,6 +8742,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "license": "MIT", "dependencies": { "@types/unist": "^3.0.0" }, @@ -7607,6 +8755,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz", "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==", + "license": "MIT", "dependencies": { "@types/unist": "^3.0.0", "unist-util-is": "^6.0.0", @@ -7621,6 +8770,7 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", + "license": "MIT", "dependencies": { "@types/unist": "^3.0.0", "unist-util-is": "^6.0.0" @@ -7634,7 +8784,6 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz", "integrity": "sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==", - "dev": true, "funding": [ { "type": "opencollective", @@ -7666,14 +8815,16 @@ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "punycode": "^2.1.0" } }, "node_modules/use-callback-ref": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.2.tgz", - "integrity": "sha512-elOQwe6Q8gqZgDA8mrh44qRTQqpIHDcZ3hXTLjBe1i4ph8XpNJnO+aQf3NaG+lriLopI4HMx9VjQLfPQ6vhnoA==", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.3.tgz", + "integrity": "sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==", + "license": "MIT", "dependencies": { "tslib": "^2.0.0" }, @@ -7681,8 +8832,8 @@ "node": ">=10" }, "peerDependencies": { - "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" }, "peerDependenciesMeta": { "@types/react": { @@ -7691,9 +8842,10 @@ } }, "node_modules/use-sidecar": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.2.tgz", - "integrity": "sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.3.tgz", + "integrity": "sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ==", + "license": "MIT", "dependencies": { "detect-node-es": "^1.1.0", "tslib": "^2.0.0" @@ -7702,8 +8854,8 @@ "node": ">=10" }, "peerDependencies": { - "@types/react": "^16.9.0 || ^17.0.0 || ^18.0.0", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" }, "peerDependenciesMeta": { "@types/react": { @@ -7712,25 +8864,27 @@ } }, "node_modules/use-sync-external-store": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz", - "integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.4.0.tgz", + "integrity": "sha512-9WXSPC5fMv61vaupRkCKCxsPxBocVnwakBEkMIHHpkTTg6icbJtg6jzgtLDm4bl3cSHAca52rYWih0k4K3PfHw==", + "license": "MIT", "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "license": "MIT" }, "node_modules/vfile": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", - "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz", + "integrity": "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==", + "license": "MIT", "dependencies": { "@types/unist": "^3.0.0", - "unist-util-stringify-position": "^4.0.0", "vfile-message": "^4.0.0" }, "funding": { @@ -7742,6 +8896,7 @@ "version": "4.0.2", "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "license": "MIT", "dependencies": { "@types/unist": "^3.0.0", "unist-util-stringify-position": "^4.0.0" @@ -7752,21 +8907,20 @@ } }, "node_modules/vite": { - "version": "5.4.8", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.8.tgz", - "integrity": "sha512-FqrItQ4DT1NC4zCUqMB4c4AZORMKIa0m8/URVCZ77OZ/QSNeJ54bU1vrFADbDsuwfIPcgknRkmqakQcgnL4GiQ==", - "dev": true, + "version": "6.0.6", + "resolved": "https://registry.npmjs.org/vite/-/vite-6.0.6.tgz", + "integrity": "sha512-NSjmUuckPmDU18bHz7QZ+bTYhRR0iA72cs2QAxCqDpafJ0S6qetco0LB3WW2OxlMHS0JmAv+yZ/R3uPmMyGTjQ==", "license": "MIT", "dependencies": { - "esbuild": "^0.21.3", - "postcss": "^8.4.43", - "rollup": "^4.20.0" + "esbuild": "^0.24.2", + "postcss": "^8.4.49", + "rollup": "^4.23.0" }, "bin": { "vite": "bin/vite.js" }, "engines": { - "node": "^18.0.0 || >=20.0.0" + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" }, "funding": { "url": "https://github.com/vitejs/vite?sponsor=1" @@ -7775,19 +8929,25 @@ "fsevents": "~2.3.3" }, "peerDependencies": { - "@types/node": "^18.0.0 || >=20.0.0", + "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", + "jiti": ">=1.21.0", "less": "*", "lightningcss": "^1.21.0", "sass": "*", "sass-embedded": "*", "stylus": "*", "sugarss": "*", - "terser": "^5.4.0" + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" }, "peerDependenciesMeta": { "@types/node": { "optional": true }, + "jiti": { + "optional": true + }, "less": { "optional": true }, @@ -7808,18 +8968,30 @@ }, "terser": { "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true } } }, - "node_modules/w3c-keyname": { - "version": "2.2.8", - "resolved": "https://registry.npmjs.org/w3c-keyname/-/w3c-keyname-2.2.8.tgz", - "integrity": "sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==" + "node_modules/vite-plugin-babel": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/vite-plugin-babel/-/vite-plugin-babel-1.3.0.tgz", + "integrity": "sha512-C5WKX0UwvQKH8WD2GiyWUjI62UBfLbfUhiLexnIm4asLdENX5ymrRipFlBnGeVxoOaYgTL5dh5KW6YDGpWsR8A==", + "license": "MIT", + "peerDependencies": { + "@babel/core": "^7.0.0", + "vite": "^2.7.0 || ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0" + } }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "license": "ISC", "dependencies": { "isexe": "^2.0.0" }, @@ -7830,11 +9002,100 @@ "node": ">= 8" } }, + "node_modules/which-boxed-primitive": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", + "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-bigint": "^1.1.0", + "is-boolean-object": "^1.2.1", + "is-number-object": "^1.1.1", + "is-string": "^1.1.1", + "is-symbol": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-builtin-type": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz", + "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "function.prototype.name": "^1.1.6", + "has-tostringtag": "^1.0.2", + "is-async-function": "^2.0.0", + "is-date-object": "^1.1.0", + "is-finalizationregistry": "^1.1.0", + "is-generator-function": "^1.0.10", + "is-regex": "^1.2.1", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.1.0", + "which-collection": "^1.0.2", + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-collection": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", + "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-map": "^2.0.3", + "is-set": "^2.0.3", + "is-weakmap": "^2.0.2", + "is-weakset": "^2.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.18", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.18.tgz", + "integrity": "sha512-qEcY+KJYlWyLH9vNbsr6/5j59AXk5ni5aakf8ldzBvGde6Iz4sxZGkJyWSAueTG7QhOvNRYb1lDdFmL5Td0QKA==", + "dev": true, + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/word-wrap": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -7843,6 +9104,7 @@ "version": "8.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "license": "MIT", "dependencies": { "ansi-styles": "^6.1.0", "string-width": "^5.0.1", @@ -7860,6 +9122,7 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -7872,45 +9135,17 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" }, "node_modules/wrap-ansi-cjs/node_modules/string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -7921,9 +9156,10 @@ } }, "node_modules/wrap-ansi/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "license": "MIT", "engines": { "node": ">=12" }, @@ -7935,6 +9171,7 @@ "version": "6.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "license": "MIT", "engines": { "node": ">=12" }, @@ -7946,6 +9183,7 @@ "version": "7.1.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "license": "MIT", "dependencies": { "ansi-regex": "^6.0.1" }, @@ -7960,19 +9198,20 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/yallist": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true, "license": "ISC" }, "node_modules/yaml": { - "version": "2.4.5", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.4.5.tgz", - "integrity": "sha512-aBx2bnqDzVOyNKfsysjA2ms5ZlnjSAW2eG3/L5G/CSujfjLJTJsEw1bGw8kCf04KodQWk1pxlGnZ56CRxiawmg==", + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.6.1.tgz", + "integrity": "sha512-7r0XPzioN/Q9kXBro/XPnA6kznR73DHq+GXh5ON7ZozRO6aMjbmiBuKste2wslTFkC5d1dw0GooOCepZXJ2SAg==", + "license": "ISC", "bin": { "yaml": "bin.mjs" }, @@ -7980,11 +9219,30 @@ "node": ">= 14" } }, + "node_modules/yjs": { + "version": "13.6.21", + "resolved": "https://registry.npmjs.org/yjs/-/yjs-13.6.21.tgz", + "integrity": "sha512-/fzzyeCAfr3Qwx1D71zvumm64x+Q5MEFel6EhWlA1IBFxWPb7tei4J2a8CJyjpYHfVrRij5q3RJTK9W2Iqjouw==", + "license": "MIT", + "peer": true, + "dependencies": { + "lib0": "^0.2.98" + }, + "engines": { + "node": ">=16.0.0", + "npm": ">=8.0.0" + }, + "funding": { + "type": "GitHub Sponsors ❤", + "url": "https://github.com/sponsors/dmonad" + } + }, "node_modules/yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -7993,27 +9251,40 @@ } }, "node_modules/zod": { - "version": "3.23.8", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.23.8.tgz", - "integrity": "sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==", + "version": "3.24.1", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.24.1.tgz", + "integrity": "sha512-muH7gBL9sI1nciMZV67X5fTKKBLtwpZ5VBp1vsOQzj1MhrBZ4wlVCm3gedKZWLp0Oyel8sIGfeiz54Su+OVT+A==", + "license": "MIT", "funding": { "url": "https://github.com/sponsors/colinhacks" } }, - "node_modules/zustand": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/zustand/-/zustand-4.5.4.tgz", - "integrity": "sha512-/BPMyLKJPtFEvVL0E9E9BTUM63MNyhPGlvxk1XjrfWTUlV+BR8jufjsovHzrtR6YNcBEcL7cMHovL1n9xHawEg==", - "dependencies": { - "use-sync-external-store": "1.2.0" + "node_modules/zod-validation-error": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/zod-validation-error/-/zod-validation-error-3.4.0.tgz", + "integrity": "sha512-ZOPR9SVY6Pb2qqO5XHt+MkkTRxGXb4EVtnjc9JpXUOtUB1T9Ru7mZOT361AN3MsetVe7R0a1KZshJDZdgp9miQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.0.0" }, + "peerDependencies": { + "zod": "^3.18.0" + } + }, + "node_modules/zustand": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/zustand/-/zustand-5.0.2.tgz", + "integrity": "sha512-8qNdnJVJlHlrKXi50LDqqUNmUbuBjoKLrYQBnoChIbVph7vni+sY+YpvdjXG9YLd/Bxr6scMcR+rm5H3aSqPaw==", + "license": "MIT", "engines": { - "node": ">=12.7.0" + "node": ">=12.20.0" }, "peerDependencies": { - "@types/react": ">=16.8", + "@types/react": ">=18.0.0", "immer": ">=9.0.6", - "react": ">=16.8" + "react": ">=18.0.0", + "use-sync-external-store": ">=1.2.0" }, "peerDependenciesMeta": { "@types/react": { @@ -8024,6 +9295,9 @@ }, "react": { "optional": true + }, + "use-sync-external-store": { + "optional": true } } }, @@ -8031,6 +9305,7 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" diff --git a/frontend/package.json b/frontend/package.json index f61adf89..a6c4d8d8 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -5,82 +5,82 @@ "type": "module", "scripts": { "dev": "vite", - "build": "tsc && vite build", + "build": "tsc --noCheck && vite build", "lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0", "preview": "vite preview" }, "dependencies": { - "@codemirror/commands": "^6.6.0", - "@codemirror/lang-markdown": "^6.3.0", - "@codemirror/language-data": "^6.5.1", - "@codemirror/lint": "^6.8.1", - "@codemirror/state": "^6.4.1", - "@codemirror/view": "^6.28.2", - "@hookform/resolvers": "^3.6.0", - "@markdoc/markdoc": "^0.4.0", - "@radix-ui/react-accordion": "^1.2.0", - "@radix-ui/react-dialog": "^1.1.1", - "@radix-ui/react-dropdown-menu": "^2.1.1", - "@radix-ui/react-icons": "^1.3.0", - "@radix-ui/react-label": "^2.1.0", - "@radix-ui/react-popover": "^1.1.1", - "@radix-ui/react-scroll-area": "^1.1.0", - "@radix-ui/react-select": "^2.1.1", - "@radix-ui/react-separator": "^1.1.0", - "@radix-ui/react-slot": "^1.1.0", - "@radix-ui/react-switch": "^1.1.0", - "@radix-ui/react-tabs": "^1.1.0", - "@replit/codemirror-vim": "^6.2.1", - "@tanstack/react-query": "^5.56.2", - "@tanstack/react-query-devtools": "^5.58.0", - "class-variance-authority": "^0.7.0", + "@hookform/resolvers": "^3.9.1", + "@lexical/list": "^0.22.0", + "@lexical/markdown": "^0.22.0", + "@lexical/react": "^0.22.0", + "@lexical/rich-text": "^0.22.0", + "@radix-ui/react-accordion": "^1.2.2", + "@radix-ui/react-avatar": "^1.1.2", + "@radix-ui/react-checkbox": "^1.1.3", + "@radix-ui/react-dialog": "^1.1.4", + "@radix-ui/react-dropdown-menu": "^2.1.4", + "@radix-ui/react-label": "^2.1.1", + "@radix-ui/react-popover": "^1.1.4", + "@radix-ui/react-scroll-area": "^1.2.2", + "@radix-ui/react-separator": "^1.1.1", + "@radix-ui/react-slot": "^1.1.1", + "@radix-ui/react-tooltip": "^1.1.6", + "@tanstack/react-query": "^5.62.10", + "@tanstack/react-query-devtools": "^5.62.10", + "@uidotdev/usehooks": "^2.4.1", + "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", - "cmdk": "^1.0.0", - "codemirror": "^6.0.1", + "cmdk": "^1.0.4", "dayjs": "^1.11.13", - "embla-carousel-react": "^8.3.0", - "lucide-react": "^0.446.0", - "next-themes": "^0.3.0", - "nostr-tools": "^2.7.2", - "react": "^18.2.0", + "lexical": "^0.22.0", + "lucide-react": "^0.469.0", + "next-themes": "^0.4.4", + "nostr-tools": "^2.10.4", + "react": "19.0.0", "react-copy-to-clipboard": "^5.1.0", - "react-dom": "^18.2.0", - "react-hook-form": "^7.53.0", - "react-intersection-observer": "^9.13.1", - "react-resizable-panels": "^2.1.4", + "react-dom": "^19.0.0", + "react-hook-form": "^7.54.2", + "react-intersection-observer": "^9.14.0", + "react-resizable-panels": "^2.1.7", "rehype-external-links": "^3.0.0", "rehype-sanitize": "^6.0.0", "rehype-stringify": "^10.0.1", "remark-html": "^16.0.1", "remark-parse": "^11.0.0", "remark-youtube": "^1.3.2", - "sonner": "^1.5.0", - "tailwind-merge": "^2.5.2", + "sonner": "^1.7.1", + "tailwind-merge": "^2.6.0", "tailwindcss-animate": "^1.0.7", - "zod": "^3.23.8", - "zustand": "^4.5.4" + "vite-plugin-babel": "^1.3.0", + "zod": "^3.24.1", + "zustand": "^5.0.2" }, "devDependencies": { - "@ianvs/prettier-plugin-sort-imports": "^4.3.1", - "@tailwindcss/typography": "^0.5.15", - "@tanstack/eslint-plugin-query": "^5.58.1", - "@types/node": "^20.14.9", - "@types/react": "^18.3.10", - "@types/react-copy-to-clipboard": "^5.0.7", - "@types/react-dom": "^18.2.17", - "@typescript-eslint/eslint-plugin": "^6.14.0", - "@typescript-eslint/parser": "^6.14.0", - "@vitejs/plugin-react": "^4.3.2", - "@wailsio/runtime": "^3.0.0-alpha.27", + "@eslint/js": "^9.17.0", + "@ianvs/prettier-plugin-sort-imports": "^4.4.0", + "@tanstack/eslint-plugin-query": "^5.62.9", + "@types/node": "^22.10.2", + "@types/react": "^19.0.2", + "@types/react-dom": "^19.0.2", + "@typescript-eslint/eslint-plugin": "^8.18.2", + "@typescript-eslint/parser": "^8.18.2", + "@vitejs/plugin-react": "^4.2.1", + "@wailsio/runtime": "latest", "autoprefixer": "^10.4.20", - "eslint": "^8.55.0", - "eslint-plugin-react-hooks": "^4.6.0", - "eslint-plugin-react-refresh": "^0.4.12", - "postcss": "^8.4.47", - "prettier": "^3.3.3", - "prettier-plugin-tailwindcss": "^0.6.8", - "tailwindcss": "^3.4.13", - "typescript": "^5.6.2", - "vite": "^5.4.8" + "babel-plugin-react-compiler": "^19.0.0-beta-201e55d-20241215", + "eslint": "^8.57.0", + "eslint-plugin-prettier": "^5.2.1", + "eslint-plugin-react": "^7.37.3", + "eslint-plugin-react-compiler": "^19.0.0-beta-201e55d-20241215", + "eslint-plugin-react-hooks": "^5.1.0", + "eslint-plugin-react-refresh": "^0.4.5", + "globals": "^15.14.0", + "postcss": "^8.4.49", + "prettier-plugin-tailwindcss": "^0.6.9", + "tailwindcss": "^3.4.17", + "typescript": "^5.2.2", + "typescript-eslint": "^8.18.2", + "vite": "^6.0.6" } } diff --git a/frontend/prettier.config.cjs b/frontend/prettier.config.cjs index 5a148c6e..24f75fbf 100644 --- a/frontend/prettier.config.cjs +++ b/frontend/prettier.config.cjs @@ -9,9 +9,6 @@ module.exports = { "", "", "^[.]", - // "", - // "^(?!.*[.]css$)[./].*$", - // ".css$", ], importOrderParserPlugins: ["typescript", "jsx", "decorators-legacy"], importOrderTypeScriptVersion: "5.0.0", diff --git a/frontend/public/Inter-Medium.ttf b/frontend/public/Inter-Medium.ttf new file mode 100644 index 00000000..a01f3777 Binary files /dev/null and b/frontend/public/Inter-Medium.ttf differ diff --git a/frontend/public/react.svg b/frontend/public/react.svg new file mode 100644 index 00000000..6c87de9b --- /dev/null +++ b/frontend/public/react.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend/public/style.css b/frontend/public/style.css new file mode 100644 index 00000000..a36cce4f --- /dev/null +++ b/frontend/public/style.css @@ -0,0 +1,160 @@ +:root { + font-family: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", + "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", + sans-serif; + font-size: 16px; + line-height: 24px; + font-weight: 400; + color-scheme: light dark; + color: rgba(255, 255, 255, 0.87); + background-color: rgba(27, 38, 54, 1); + font-synthesis: none; + text-rendering: optimizeLegibility; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + -webkit-text-size-adjust: 100%; +} + +* { + user-select: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; +} + +@font-face { + font-family: "Inter"; + font-style: normal; + font-weight: 400; + src: local(""), + url("./Inter-Medium.ttf") format("truetype"); +} + +h3 { + font-size: 3em; + line-height: 1.1; +} + +a { + font-weight: 500; + color: #646cff; + text-decoration: inherit; +} + +a:hover { + color: #535bf2; +} + +button { + width: 60px; + height: 30px; + line-height: 30px; + border-radius: 3px; + border: none; + margin: 0 0 0 20px; + padding: 0 8px; + cursor: pointer; +} + +.result { + height: 20px; + line-height: 20px; +} + +body { + margin: 0; + display: flex; + place-items: center; + place-content: center; + min-width: 320px; + min-height: 100vh; +} + +.container { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; +} + +h1 { + font-size: 3.2em; + line-height: 1.1; +} + +#app { + max-width: 1280px; + margin: 0 auto; + padding: 2rem; + text-align: center; +} + +.logo { + height: 6em; + padding: 1.5em; + will-change: filter; +} + +.logo:hover { + filter: drop-shadow(0 0 2em #e80000aa); +} + +.logo.react:hover { + filter: drop-shadow(0 0 2em #61dafbaa); +} + +.result { + height: 20px; + line-height: 20px; + margin: 1.5rem auto; + text-align: center; +} + +.footer { + margin-top: 1rem; + align-content: center; + text-align: center; +} + +@media (prefers-color-scheme: light) { + :root { + color: #213547; + background-color: #ffffff; + } + + a:hover { + color: #747bff; + } + + button { + background-color: #f9f9f9; + } +} + + +.input-box .btn:hover { + background-image: linear-gradient(to top, #cfd9df 0%, #e2ebf0 100%); + color: #333333; +} + +.input-box .input { + border: none; + border-radius: 3px; + outline: none; + height: 30px; + line-height: 30px; + padding: 0 10px; + color: black; + background-color: rgba(240, 240, 240, 1); + -webkit-font-smoothing: antialiased; +} + +.input-box .input:hover { + border: none; + background-color: rgba(255, 255, 255, 1); +} + +.input-box .input:focus { + border: none; + background-color: rgba(255, 255, 255, 1); +} diff --git a/frontend/public/wails.png b/frontend/public/wails.png new file mode 100644 index 00000000..8bdf4248 Binary files /dev/null and b/frontend/public/wails.png differ diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index 930be090..42e49309 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -3,51 +3,49 @@ import { ResizablePanel, ResizablePanelGroup, } from "~/components/ui/resizable"; +import { EllipsisVerticalIcon } from "lucide-react"; -import { Editor } from "./features/editor"; -import { EditorDropdown } from "./features/editor-dropdown"; -import { Notes } from "./features/notes"; -import { SettingsBtn } from "./features/settings"; +import { Button } from "./components/ui/button"; +import { Editor, PublishDialog } from "./features/editor"; +import { NoteList, NotesHeader, SearchBox } from "./features/notes"; import { Sidebar } from "./features/sidebar"; -import useNoteMenu from "./hooks/useNoteMenu"; -import useNoteTagMenu from "./hooks/useNoteTagMenu"; -import useSettingsRefresh from "./hooks/useSettingsRefresh"; -import useTagMenu from "./hooks/useTagMenu"; -import useTrashNoteMenu from "./hooks/useTrashNoteMenu"; -import { useAppState } from "./store"; +import useNotebookEvents from "./hooks/useNotebookEvents"; +import useNoteEvents from "./hooks/useNoteEvents"; -export default function App() { - useNoteMenu(); - useTagMenu(); - useNoteTagMenu(); - useTrashNoteMenu(); - useSettingsRefresh(); - - const editorFullScreen = useAppState((state) => state.editorFullScreen); +export default function ResizableLayout() { + useNoteEvents(); + useNotebookEvents(); return (
- +
+ + +
+
diff --git a/frontend/src/components/theme/theme-provider.tsx b/frontend/src/components/theme/theme-provider.tsx deleted file mode 100644 index e18440d7..00000000 --- a/frontend/src/components/theme/theme-provider.tsx +++ /dev/null @@ -1,73 +0,0 @@ -import { createContext, useContext, useEffect, useState } from "react"; - -type Theme = "dark" | "light" | "system"; - -type ThemeProviderProps = { - children: React.ReactNode; - defaultTheme?: Theme; - storageKey?: string; -}; - -type ThemeProviderState = { - theme: Theme; - setTheme: (theme: Theme) => void; -}; - -const initialState: ThemeProviderState = { - theme: "system", - setTheme: () => null, -}; - -const ThemeProviderContext = createContext(initialState); - -export function ThemeProvider({ - children, - defaultTheme = "system", - storageKey = "vite-ui-theme", - ...props -}: ThemeProviderProps) { - const [theme, setTheme] = useState( - () => (localStorage.getItem(storageKey) as Theme) || defaultTheme, - ); - - useEffect(() => { - const root = window.document.documentElement; - - root.classList.remove("light", "dark"); - - if (theme === "system") { - const systemTheme = window.matchMedia("(prefers-color-scheme: dark)") - .matches - ? "dark" - : "light"; - - root.classList.add(systemTheme); - return; - } - - root.classList.add(theme); - }, [theme]); - - const value = { - theme, - setTheme: (theme: Theme) => { - localStorage.setItem(storageKey, theme); - setTheme(theme); - }, - }; - - return ( - - {children} - - ); -} - -export const useTheme = () => { - const context = useContext(ThemeProviderContext); - - if (context === undefined) - throw new Error("useTheme must be used within a ThemeProvider"); - - return context; -}; diff --git a/frontend/src/components/ui/accordion.tsx b/frontend/src/components/ui/accordion.tsx index 3e05513e..085bdd32 100644 --- a/frontend/src/components/ui/accordion.tsx +++ b/frontend/src/components/ui/accordion.tsx @@ -1,10 +1,10 @@ -import * as React from "react" -import * as AccordionPrimitive from "@radix-ui/react-accordion" -import { ChevronDownIcon } from "@radix-ui/react-icons" +import * as React from "react"; -import { cn } from "~/lib/utils" +import * as AccordionPrimitive from "@radix-ui/react-accordion"; +import { cn } from "~/lib/utils"; +import { ChevronDown } from "lucide-react"; -const Accordion = AccordionPrimitive.Root +const Accordion = AccordionPrimitive.Root; const AccordionItem = React.forwardRef< React.ElementRef, @@ -15,8 +15,8 @@ const AccordionItem = React.forwardRef< className={cn("border-b", className)} {...props} /> -)) -AccordionItem.displayName = "AccordionItem" +)); +AccordionItem.displayName = "AccordionItem"; const AccordionTrigger = React.forwardRef< React.ElementRef, @@ -26,17 +26,17 @@ const AccordionTrigger = React.forwardRef< svg]:rotate-180", - className + "flex flex-1 items-center justify-between py-4 text-left text-sm font-medium transition-all hover:underline [&:hover>svg]:block [&>svg]:hidden [&[data-state=open]>svg]:rotate-180", + className, )} {...props} > {children} - + -)) -AccordionTrigger.displayName = AccordionPrimitive.Trigger.displayName +)); +AccordionTrigger.displayName = AccordionPrimitive.Trigger.displayName; const AccordionContent = React.forwardRef< React.ElementRef, @@ -49,7 +49,7 @@ const AccordionContent = React.forwardRef< >
{children}
-)) -AccordionContent.displayName = AccordionPrimitive.Content.displayName +)); +AccordionContent.displayName = AccordionPrimitive.Content.displayName; -export { Accordion, AccordionItem, AccordionTrigger, AccordionContent } +export { Accordion, AccordionItem, AccordionTrigger, AccordionContent }; diff --git a/frontend/src/components/ui/avatar.tsx b/frontend/src/components/ui/avatar.tsx new file mode 100644 index 00000000..706f1778 --- /dev/null +++ b/frontend/src/components/ui/avatar.tsx @@ -0,0 +1,48 @@ +import * as React from "react" +import * as AvatarPrimitive from "@radix-ui/react-avatar" + +import { cn } from "~/lib/utils" + +const Avatar = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +Avatar.displayName = AvatarPrimitive.Root.displayName + +const AvatarImage = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +AvatarImage.displayName = AvatarPrimitive.Image.displayName + +const AvatarFallback = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +AvatarFallback.displayName = AvatarPrimitive.Fallback.displayName + +export { Avatar, AvatarImage, AvatarFallback } diff --git a/frontend/src/components/ui/button.tsx b/frontend/src/components/ui/button.tsx index 041f42cf..0b620a96 100644 --- a/frontend/src/components/ui/button.tsx +++ b/frontend/src/components/ui/button.tsx @@ -1,57 +1,60 @@ -import * as React from "react" -import { Slot } from "@radix-ui/react-slot" -import { cva, type VariantProps } from "class-variance-authority" +import * as React from "react"; -import { cn } from "~/lib/utils" +import { Slot } from "@radix-ui/react-slot"; +import { cn } from "~/lib/utils"; +import { cva, type VariantProps } from "class-variance-authority"; const buttonVariants = cva( - "inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-0 focus:ring-0 ring-0 focus-visible:ring-0 disabled:pointer-events-none disabled:opacity-50", + "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-0 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-[1.2rem] [&_svg]:shrink-0", { variants: { variant: { default: - "bg-primary text-primary-foreground shadow hover:bg-primary/90", + "bg-sky-500/90 text-white shadow-sm hover:bg-sky-500/80", destructive: "bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90", outline: "border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground", secondary: "bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80", - ghost: "hover:bg-accent/50", + muted: + "text-secondary-foreground bg-muted shadow-sm hover:bg-muted/80", + ghost: + "hover:bg-accent text-muted-foreground hover:text-accent-foreground/70", link: "text-primary underline-offset-4 hover:underline", }, size: { default: "h-9 px-4 py-2", sm: "h-8 rounded-md px-3 text-xs", lg: "h-10 rounded-md px-8", - icon: "h-7 w-8", + icon: "h-9 w-9", }, }, defaultVariants: { variant: "default", size: "default", }, - } -) + }, +); export interface ButtonProps extends React.ButtonHTMLAttributes, VariantProps { - asChild?: boolean + asChild?: boolean; } const Button = React.forwardRef( ({ className, variant, size, asChild = false, ...props }, ref) => { - const Comp = asChild ? Slot : "button" + const Comp = asChild ? Slot : "button"; return ( - ) - } -) -Button.displayName = "Button" + ); + }, +); +Button.displayName = "Button"; -export { Button, buttonVariants } +export { Button, buttonVariants }; diff --git a/frontend/src/components/ui/card.tsx b/frontend/src/components/ui/card.tsx index e3ef5403..874ce09d 100644 --- a/frontend/src/components/ui/card.tsx +++ b/frontend/src/components/ui/card.tsx @@ -30,10 +30,10 @@ const CardHeader = React.forwardRef< CardHeader.displayName = "CardHeader" const CardTitle = React.forwardRef< - HTMLParagraphElement, - React.HTMLAttributes + HTMLDivElement, + React.HTMLAttributes >(({ className, ...props }, ref) => ( -

+ HTMLDivElement, + React.HTMLAttributes >(({ className, ...props }, ref) => ( -

-type CarouselOptions = UseCarouselParameters[0] -type CarouselPlugin = UseCarouselParameters[1] - -type CarouselProps = { - opts?: CarouselOptions - plugins?: CarouselPlugin - orientation?: "horizontal" | "vertical" - setApi?: (api: CarouselApi) => void -} - -type CarouselContextProps = { - carouselRef: ReturnType[0] - api: ReturnType[1] - scrollPrev: () => void - scrollNext: () => void - canScrollPrev: boolean - canScrollNext: boolean -} & CarouselProps - -const CarouselContext = React.createContext(null) - -function useCarousel() { - const context = React.useContext(CarouselContext) - - if (!context) { - throw new Error("useCarousel must be used within a ") - } - - return context -} - -const Carousel = React.forwardRef< - HTMLDivElement, - React.HTMLAttributes & CarouselProps ->( - ( - { - orientation = "horizontal", - opts, - setApi, - plugins, - className, - children, - ...props - }, - ref - ) => { - const [carouselRef, api] = useEmblaCarousel( - { - ...opts, - axis: orientation === "horizontal" ? "x" : "y", - }, - plugins - ) - const [canScrollPrev, setCanScrollPrev] = React.useState(false) - const [canScrollNext, setCanScrollNext] = React.useState(false) - - const onSelect = React.useCallback((api: CarouselApi) => { - if (!api) { - return - } - - setCanScrollPrev(api.canScrollPrev()) - setCanScrollNext(api.canScrollNext()) - }, []) - - const scrollPrev = React.useCallback(() => { - api?.scrollPrev() - }, [api]) - - const scrollNext = React.useCallback(() => { - api?.scrollNext() - }, [api]) - - const handleKeyDown = React.useCallback( - (event: React.KeyboardEvent) => { - if (event.key === "ArrowLeft") { - event.preventDefault() - scrollPrev() - } else if (event.key === "ArrowRight") { - event.preventDefault() - scrollNext() - } - }, - [scrollPrev, scrollNext] - ) - - React.useEffect(() => { - if (!api || !setApi) { - return - } - - setApi(api) - }, [api, setApi]) - - React.useEffect(() => { - if (!api) { - return - } - - onSelect(api) - api.on("reInit", onSelect) - api.on("select", onSelect) - - return () => { - api?.off("select", onSelect) - } - }, [api, onSelect]) - - return ( - -

- {children} -
- - ) - } -) -Carousel.displayName = "Carousel" - -const CarouselContent = React.forwardRef< - HTMLDivElement, - React.HTMLAttributes ->(({ className, ...props }, ref) => { - const { carouselRef, orientation } = useCarousel() - - return ( -
-
-
- ) -}) -CarouselContent.displayName = "CarouselContent" - -const CarouselItem = React.forwardRef< - HTMLDivElement, - React.HTMLAttributes ->(({ className, ...props }, ref) => { - const { orientation } = useCarousel() - - return ( -
- ) -}) -CarouselItem.displayName = "CarouselItem" - -const CarouselPrevious = React.forwardRef< - HTMLButtonElement, - React.ComponentProps ->(({ className, variant = "outline", size = "icon", ...props }, ref) => { - const { orientation, scrollPrev, canScrollPrev } = useCarousel() - - return ( - - ) -}) -CarouselPrevious.displayName = "CarouselPrevious" - -const CarouselNext = React.forwardRef< - HTMLButtonElement, - React.ComponentProps ->(({ className, variant = "outline", size = "icon", ...props }, ref) => { - const { orientation, scrollNext, canScrollNext } = useCarousel() - - return ( - - ) -}) -CarouselNext.displayName = "CarouselNext" - -export { - type CarouselApi, - Carousel, - CarouselContent, - CarouselItem, - CarouselPrevious, - CarouselNext, -} diff --git a/frontend/src/components/ui/checkbox.tsx b/frontend/src/components/ui/checkbox.tsx new file mode 100644 index 00000000..11829b64 --- /dev/null +++ b/frontend/src/components/ui/checkbox.tsx @@ -0,0 +1,28 @@ +import * as React from "react" +import * as CheckboxPrimitive from "@radix-ui/react-checkbox" +import { Check } from "lucide-react" + +import { cn } from "~/lib/utils" + +const Checkbox = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + + + + + +)) +Checkbox.displayName = CheckboxPrimitive.Root.displayName + +export { Checkbox } diff --git a/frontend/src/components/ui/command.tsx b/frontend/src/components/ui/command.tsx index 75864eae..b44c3adf 100644 --- a/frontend/src/components/ui/command.tsx +++ b/frontend/src/components/ui/command.tsx @@ -1,7 +1,7 @@ import * as React from "react" import { type DialogProps } from "@radix-ui/react-dialog" -import { MagnifyingGlassIcon } from "@radix-ui/react-icons" import { Command as CommandPrimitive } from "cmdk" +import { Search } from "lucide-react" import { cn } from "~/lib/utils" import { Dialog, DialogContent } from "~/components/ui/dialog" @@ -21,9 +21,7 @@ const Command = React.forwardRef< )) Command.displayName = CommandPrimitive.displayName -interface CommandDialogProps extends DialogProps {} - -const CommandDialog = ({ children, ...props }: CommandDialogProps) => { +const CommandDialog = ({ children, ...props }: DialogProps) => { return ( @@ -40,7 +38,7 @@ const CommandInput = React.forwardRef< React.ComponentPropsWithoutRef >(({ className, ...props }, ref) => (
- + {children} - - + + Close diff --git a/frontend/src/components/ui/dropdown-menu.tsx b/frontend/src/components/ui/dropdown-menu.tsx index d2f2d154..7ace60f6 100644 --- a/frontend/src/components/ui/dropdown-menu.tsx +++ b/frontend/src/components/ui/dropdown-menu.tsx @@ -1,10 +1,6 @@ import * as React from "react" import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu" -import { - CheckIcon, - ChevronRightIcon, - DotFilledIcon, -} from "@radix-ui/react-icons" +import { Check, ChevronRight, Circle } from "lucide-react" import { cn } from "~/lib/utils" @@ -29,14 +25,14 @@ const DropdownMenuSubTrigger = React.forwardRef< {children} - + )) DropdownMenuSubTrigger.displayName = @@ -63,13 +59,11 @@ const DropdownMenuContent = React.forwardRef< React.ComponentPropsWithoutRef >(({ className, sideOffset = 4, ...props }, ref) => ( - e.preventDefault()} ref={ref} sideOffset={sideOffset} className={cn( - "z-50 min-w-[8rem] overflow-hidden rounded-md border border-accent bg-popover p-1 text-popover-foreground shadow-md", + "z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md", "data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2", className )} @@ -88,7 +82,7 @@ const DropdownMenuItem = React.forwardRef< svg]:size-4 [&>svg]:shrink-0", inset && "pl-8", className )} @@ -112,7 +106,7 @@ const DropdownMenuCheckboxItem = React.forwardRef< > - + {children} @@ -135,7 +129,7 @@ const DropdownMenuRadioItem = React.forwardRef< > - + {children} diff --git a/frontend/src/components/ui/input.tsx b/frontend/src/components/ui/input.tsx index 8273a010..717e110f 100644 --- a/frontend/src/components/ui/input.tsx +++ b/frontend/src/components/ui/input.tsx @@ -2,16 +2,13 @@ import * as React from "react" import { cn } from "~/lib/utils" -export interface InputProps - extends React.InputHTMLAttributes {} - -const Input = React.forwardRef( +const Input = React.forwardRef>( ({ className, type, ...props }, ref) => { return ( {withHandle && (
- +
)} diff --git a/frontend/src/components/ui/scroll-area.tsx b/frontend/src/components/ui/scroll-area.tsx index 5841adf9..88a5ab13 100644 --- a/frontend/src/components/ui/scroll-area.tsx +++ b/frontend/src/components/ui/scroll-area.tsx @@ -38,7 +38,7 @@ const ScrollBar = React.forwardRef< )} {...props} > - + )) ScrollBar.displayName = ScrollAreaPrimitive.ScrollAreaScrollbar.displayName diff --git a/frontend/src/components/ui/select.tsx b/frontend/src/components/ui/select.tsx deleted file mode 100644 index d5fa9a82..00000000 --- a/frontend/src/components/ui/select.tsx +++ /dev/null @@ -1,161 +0,0 @@ -import * as React from "react" -import { - CheckIcon, - ChevronDownIcon, - ChevronUpIcon, -} from "@radix-ui/react-icons" -import * as SelectPrimitive from "@radix-ui/react-select" - -import { cn } from "~/lib/utils" - -const Select = SelectPrimitive.Root - -const SelectGroup = SelectPrimitive.Group - -const SelectValue = SelectPrimitive.Value - -const SelectTrigger = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, children, ...props }, ref) => ( - span]:line-clamp-1", - className - )} - {...props} - > - {children} - {/* */} - {/* */} - {/* */} - -)) -SelectTrigger.displayName = SelectPrimitive.Trigger.displayName - -const SelectScrollUpButton = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( - - - -)) -SelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName - -const SelectScrollDownButton = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( - - - -)) -SelectScrollDownButton.displayName = - SelectPrimitive.ScrollDownButton.displayName - -const SelectContent = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, children, position = "popper", ...props }, ref) => ( - - - - - {children} - - - - -)) -SelectContent.displayName = SelectPrimitive.Content.displayName - -const SelectLabel = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( - -)) -SelectLabel.displayName = SelectPrimitive.Label.displayName - -const SelectItem = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, children, ...props }, ref) => ( - - - - - - - {children} - -)) -SelectItem.displayName = SelectPrimitive.Item.displayName - -const SelectSeparator = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( - -)) -SelectSeparator.displayName = SelectPrimitive.Separator.displayName - -export { - Select, - SelectGroup, - SelectValue, - SelectTrigger, - SelectContent, - SelectLabel, - SelectItem, - SelectSeparator, - SelectScrollUpButton, - SelectScrollDownButton, -} diff --git a/frontend/src/components/ui/sheet.tsx b/frontend/src/components/ui/sheet.tsx new file mode 100644 index 00000000..14146754 --- /dev/null +++ b/frontend/src/components/ui/sheet.tsx @@ -0,0 +1,140 @@ +"use client" + +import * as React from "react" +import * as SheetPrimitive from "@radix-ui/react-dialog" +import { cva, type VariantProps } from "class-variance-authority" +import { X } from "lucide-react" + +import { cn } from "~/lib/utils" + +const Sheet = SheetPrimitive.Root + +const SheetTrigger = SheetPrimitive.Trigger + +const SheetClose = SheetPrimitive.Close + +const SheetPortal = SheetPrimitive.Portal + +const SheetOverlay = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +SheetOverlay.displayName = SheetPrimitive.Overlay.displayName + +const sheetVariants = cva( + "fixed z-50 gap-4 bg-background p-6 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500 data-[state=open]:animate-in data-[state=closed]:animate-out", + { + variants: { + side: { + top: "inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top", + bottom: + "inset-x-0 bottom-0 border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom", + left: "inset-y-0 left-0 h-full w-3/4 border-r data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm", + right: + "inset-y-0 right-0 h-full w-3/4 border-l data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm", + }, + }, + defaultVariants: { + side: "right", + }, + } +) + +interface SheetContentProps + extends React.ComponentPropsWithoutRef, + VariantProps {} + +const SheetContent = React.forwardRef< + React.ElementRef, + SheetContentProps +>(({ side = "right", className, children, ...props }, ref) => ( + + + + + + Close + + {children} + + +)) +SheetContent.displayName = SheetPrimitive.Content.displayName + +const SheetHeader = ({ + className, + ...props +}: React.HTMLAttributes) => ( +
+) +SheetHeader.displayName = "SheetHeader" + +const SheetFooter = ({ + className, + ...props +}: React.HTMLAttributes) => ( +
+) +SheetFooter.displayName = "SheetFooter" + +const SheetTitle = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +SheetTitle.displayName = SheetPrimitive.Title.displayName + +const SheetDescription = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +SheetDescription.displayName = SheetPrimitive.Description.displayName + +export { + Sheet, + SheetPortal, + SheetOverlay, + SheetTrigger, + SheetClose, + SheetContent, + SheetHeader, + SheetFooter, + SheetTitle, + SheetDescription, +} diff --git a/frontend/src/components/ui/sidebar.tsx b/frontend/src/components/ui/sidebar.tsx new file mode 100644 index 00000000..d8ada44c --- /dev/null +++ b/frontend/src/components/ui/sidebar.tsx @@ -0,0 +1,761 @@ +import * as React from "react" +import { Slot } from "@radix-ui/react-slot" +import { VariantProps, cva } from "class-variance-authority" +import { PanelLeft } from "lucide-react" + +import { useIsMobile } from "~/hooks/use-mobile" +import { cn } from "~/lib/utils" +import { Button } from "~/components/ui/button" +import { Input } from "~/components/ui/input" +import { Separator } from "~/components/ui/separator" +import { Sheet, SheetContent } from "~/components/ui/sheet" +import { Skeleton } from "~/components/ui/skeleton" +import { + Tooltip, + TooltipContent, + TooltipProvider, + TooltipTrigger, +} from "~/components/ui/tooltip" + +const SIDEBAR_COOKIE_NAME = "sidebar:state" +const SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7 +const SIDEBAR_WIDTH = "16rem" +const SIDEBAR_WIDTH_MOBILE = "18rem" +const SIDEBAR_WIDTH_ICON = "3rem" +const SIDEBAR_KEYBOARD_SHORTCUT = "b" + +type SidebarContext = { + state: "expanded" | "collapsed" + open: boolean + setOpen: (open: boolean) => void + openMobile: boolean + setOpenMobile: (open: boolean) => void + isMobile: boolean + toggleSidebar: () => void +} + +const SidebarContext = React.createContext(null) + +function useSidebar() { + const context = React.useContext(SidebarContext) + if (!context) { + throw new Error("useSidebar must be used within a SidebarProvider.") + } + + return context +} + +const SidebarProvider = React.forwardRef< + HTMLDivElement, + React.ComponentProps<"div"> & { + defaultOpen?: boolean + open?: boolean + onOpenChange?: (open: boolean) => void + } +>( + ( + { + defaultOpen = true, + open: openProp, + onOpenChange: setOpenProp, + className, + style, + children, + ...props + }, + ref + ) => { + const isMobile = useIsMobile() + const [openMobile, setOpenMobile] = React.useState(false) + + // This is the internal state of the sidebar. + // We use openProp and setOpenProp for control from outside the component. + const [_open, _setOpen] = React.useState(defaultOpen) + const open = openProp ?? _open + const setOpen = React.useCallback( + (value: boolean | ((value: boolean) => boolean)) => { + const openState = typeof value === "function" ? value(open) : value + if (setOpenProp) { + setOpenProp(openState) + } else { + _setOpen(openState) + } + + // This sets the cookie to keep the sidebar state. + document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}` + }, + [setOpenProp, open] + ) + + // Helper to toggle the sidebar. + const toggleSidebar = React.useCallback(() => { + return isMobile + ? setOpenMobile((open) => !open) + : setOpen((open) => !open) + }, [isMobile, setOpen, setOpenMobile]) + + // Adds a keyboard shortcut to toggle the sidebar. + React.useEffect(() => { + const handleKeyDown = (event: KeyboardEvent) => { + if ( + event.key === SIDEBAR_KEYBOARD_SHORTCUT && + (event.metaKey || event.ctrlKey) + ) { + event.preventDefault() + toggleSidebar() + } + } + + window.addEventListener("keydown", handleKeyDown) + return () => window.removeEventListener("keydown", handleKeyDown) + }, [toggleSidebar]) + + // We add a state so that we can do data-state="expanded" or "collapsed". + // This makes it easier to style the sidebar with Tailwind classes. + const state = open ? "expanded" : "collapsed" + + const contextValue = React.useMemo( + () => ({ + state, + open, + setOpen, + isMobile, + openMobile, + setOpenMobile, + toggleSidebar, + }), + [state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar] + ) + + return ( + + +
+ {children} +
+
+
+ ) + } +) +SidebarProvider.displayName = "SidebarProvider" + +const Sidebar = React.forwardRef< + HTMLDivElement, + React.ComponentProps<"div"> & { + side?: "left" | "right" + variant?: "sidebar" | "floating" | "inset" + collapsible?: "offcanvas" | "icon" | "none" + } +>( + ( + { + side = "left", + variant = "sidebar", + collapsible = "offcanvas", + className, + children, + ...props + }, + ref + ) => { + const { isMobile, state, openMobile, setOpenMobile } = useSidebar() + + if (collapsible === "none") { + return ( +
+ {children} +
+ ) + } + + if (isMobile) { + return ( + + +
{children}
+
+
+ ) + } + + return ( +
+ {/* This is what handles the sidebar gap on desktop */} +
+ +
+ ) + } +) +Sidebar.displayName = "Sidebar" + +const SidebarTrigger = React.forwardRef< + React.ElementRef, + React.ComponentProps +>(({ className, onClick, ...props }, ref) => { + const { toggleSidebar } = useSidebar() + + return ( + + ) +}) +SidebarTrigger.displayName = "SidebarTrigger" + +const SidebarRail = React.forwardRef< + HTMLButtonElement, + React.ComponentProps<"button"> +>(({ className, ...props }, ref) => { + const { toggleSidebar } = useSidebar() + + return ( +