@setoelkahfi / svara / commits / 091e2f2

feat: added basic logging

mellbacon committed Sep 25, 2023 at 21:11 UTC 091e2f298506b894c43b096504a2ffab12bc8a10
9 files changed +531 -76
package.json
+1
@@ -20,6 +20,7 @@
20 "sortablejs": "^1.15.0",
21 "svelte-splitpanes": "^0.7.13",
22 "tauri-plugin-fs-watch-api": "https://github.com/tauri-apps/tauri-plugin-fs-watch",
23 + "tauri-plugin-log-api": "https://github.com/tauri-apps/tauri-plugin-log#v1",
24 "tauri-plugin-store-api": "https://github.com/tauri-apps/tauri-plugin-store#v1"
25 },
26 "devDependencies": {
src-tauri/Cargo.lock
+75 -12
@@ -183,6 +183,16 @@ version = "3.13.0"
183 source = "registry+https://github.com/rust-lang/crates.io-index"
184 checksum = "a3e2c3daef883ecc1b5d58c15adae93470a91d425f3532ba1695849656af3fc1"
185
186 +[[package]]
187 +name = "byte-unit"
188 +version = "4.0.19"
189 +source = "registry+https://github.com/rust-lang/crates.io-index"
190 +checksum = "da78b32057b8fdfc352504708feeba7216dcd65a2c9ab02978cbd288d1279b6c"
191 +dependencies = [
192 + "serde",
193 + "utf8-width",
194 +]
195 +
196 [[package]]
197 name = "bytemuck"
198 version = "1.13.1"
@@ -661,6 +671,15 @@ dependencies = [
671 "simd-adler32",
672 ]
673
674 +[[package]]
675 +name = "fern"
676 +version = "0.6.2"
677 +source = "registry+https://github.com/rust-lang/crates.io-index"
678 +checksum = "d9f0c14694cbd524c8720dd69b0e3179344f04ebb5f90f2e4a440c6ea3b2f1ee"
679 +dependencies = [
680 + "log",
681 +]
682 +
683 [[package]]
684 name = "field-offset"
685 version = "0.3.6"
@@ -1470,6 +1489,9 @@ name = "log"
1489 version = "0.4.20"
1490 source = "registry+https://github.com/rust-lang/crates.io-index"
1491 checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f"
1492 +dependencies = [
1493 + "value-bag",
1494 +]
1495
1496 [[package]]
1497 name = "loom"
@@ -1609,9 +1631,9 @@ checksum = "72ef4a56884ca558e5ddb05a1d1e7e1bfd9a68d9ed024c21704cc98872dae1bb"
1631
1632 [[package]]
1633 name = "notify"
1612 -version = "6.1.0"
1634 +version = "6.1.1"
1635 source = "registry+https://github.com/rust-lang/crates.io-index"
1614 -checksum = "3dbf4f3b058c29e9642cf53217e0531cbfc78bc24e0a212a9837b7415b9d9007"
1636 +checksum = "6205bd8bb1e454ad2e27422015fb5e4f2bcc7e08fa8f27058670d208324a4d2d"
1637 dependencies = [
1638 "bitflags 2.4.0",
1639 "crossbeam-channel",
@@ -1653,12 +1675,15 @@ name = "nucleus"
1675 version = "0.3.0"
1676 dependencies = [
1677 "encoding_rs",
1678 + "log",
1679 "serde",
1680 "serde_json",
1681 "tauri",
1682 "tauri-build",
1683 "tauri-plugin-fs-watch",
1684 + "tauri-plugin-log",
1685 "tauri-plugin-store",
1686 + "time",
1687 "trash",
1688 "windows 0.32.0",
1689 ]
@@ -1724,6 +1749,15 @@ dependencies = [
1749 "syn 1.0.109",
1750 ]
1751
1752 +[[package]]
1753 +name = "num_threads"
1754 +version = "0.1.6"
1755 +source = "registry+https://github.com/rust-lang/crates.io-index"
1756 +checksum = "2819ce041d2ee131036f4fc9d6ae7ae125a3a40e97ba64d04fe799ad9dabbb44"
1757 +dependencies = [
1758 + "libc",
1759 +]
1760 +
1761 [[package]]
1762 name = "objc"
1763 version = "0.2.7"
@@ -2358,18 +2392,18 @@ dependencies = [
2392
2393 [[package]]
2394 name = "serde"
2361 -version = "1.0.171"
2395 +version = "1.0.188"
2396 source = "registry+https://github.com/rust-lang/crates.io-index"
2363 -checksum = "30e27d1e4fd7659406c492fd6cfaf2066ba8773de45ca75e855590f856dc34a9"
2397 +checksum = "cf9e0fcba69a370eed61bcf2b728575f726b50b55cba78064753d708ddc7549e"
2398 dependencies = [
2399 "serde_derive",
2400 ]
2401
2402 [[package]]
2403 name = "serde_derive"
2370 -version = "1.0.171"
2404 +version = "1.0.188"
2405 source = "registry+https://github.com/rust-lang/crates.io-index"
2372 -checksum = "389894603bd18c46fa56231694f8d827779c0951a667087194cf9de94ed24682"
2406 +checksum = "4eca7ac642d82aa35b60049a6eccb4be6be75e599bd2e9adb5f875a737654af2"
2407 dependencies = [
2408 "proc-macro2",
2409 "quote",
@@ -2821,7 +2855,7 @@ dependencies = [
2855 [[package]]
2856 name = "tauri-plugin-fs-watch"
2857 version = "0.0.0"
2824 -source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v1#6647e6ea90bb66c0280f43905f545d2995ded3bc"
2858 +source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v1#5b814f56e6368fdec46c4ddb04a07e0923ff995a"
2859 dependencies = [
2860 "log",
2861 "notify",
@@ -2832,10 +2866,25 @@ dependencies = [
2866 "thiserror",
2867 ]
2868
2869 +[[package]]
2870 +name = "tauri-plugin-log"
2871 +version = "0.0.0"
2872 +source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v1#5b814f56e6368fdec46c4ddb04a07e0923ff995a"
2873 +dependencies = [
2874 + "byte-unit",
2875 + "fern",
2876 + "log",
2877 + "serde",
2878 + "serde_json",
2879 + "serde_repr",
2880 + "tauri",
2881 + "time",
2882 +]
2883 +
2884 [[package]]
2885 name = "tauri-plugin-store"
2886 version = "0.0.0"
2838 -source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v1#6647e6ea90bb66c0280f43905f545d2995ded3bc"
2887 +source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v1#5b814f56e6368fdec46c4ddb04a07e0923ff995a"
2888 dependencies = [
2889 "log",
2890 "serde",
@@ -2986,12 +3035,14 @@ dependencies = [
3035
3036 [[package]]
3037 name = "time"
2989 -version = "0.3.26"
3038 +version = "0.3.28"
3039 source = "registry+https://github.com/rust-lang/crates.io-index"
2991 -checksum = "a79d09ac6b08c1ab3906a2f7cc2e81a0e27c7ae89c63812df75e52bef0751e07"
3040 +checksum = "17f6bb557fd245c28e6411aa56b6403c689ad95061f50e4be16c274e70a17e48"
3041 dependencies = [
3042 "deranged",
3043 "itoa 1.0.9",
3044 + "libc",
3045 + "num_threads",
3046 "serde",
3047 "time-core",
3048 "time-macros",
@@ -3005,9 +3056,9 @@ checksum = "7300fbefb4dadc1af235a9cef3737cea692a9d97e1b9cbcd4ebdae6f8868e6fb"
3056
3057 [[package]]
3058 name = "time-macros"
3008 -version = "0.2.12"
3059 +version = "0.2.14"
3060 source = "registry+https://github.com/rust-lang/crates.io-index"
3010 -checksum = "75c65469ed6b3a4809d987a41eb1dc918e9bc1d92211cbad7ae82931846f7451"
3061 +checksum = "1a942f44339478ef67935ab2bbaec2fb0322496cf3cbe84b261e06ac3814c572"
3062 dependencies = [
3063 "time-core",
3064 ]
@@ -3220,6 +3271,12 @@ version = "0.7.6"
3271 source = "registry+https://github.com/rust-lang/crates.io-index"
3272 checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9"
3273
3274 +[[package]]
3275 +name = "utf8-width"
3276 +version = "0.1.6"
3277 +source = "registry+https://github.com/rust-lang/crates.io-index"
3278 +checksum = "5190c9442dcdaf0ddd50f37420417d219ae5261bbf5db120d0f9bab996c9cba1"
3279 +
3280 [[package]]
3281 name = "uuid"
3282 version = "1.4.1"
@@ -3235,6 +3292,12 @@ version = "0.1.0"
3292 source = "registry+https://github.com/rust-lang/crates.io-index"
3293 checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d"
3294
3295 +[[package]]
3296 +name = "value-bag"
3297 +version = "1.4.1"
3298 +source = "registry+https://github.com/rust-lang/crates.io-index"
3299 +checksum = "d92ccd67fb88503048c01b59152a04effd0782d035a83a6d256ce6085f08f4a3"
3300 +
3301 [[package]]
3302 name = "version-compare"
3303 version = "0.0.11"
src-tauri/Cargo.toml
+6
@@ -20,10 +20,16 @@ tauri-plugin-fs-watch = { git = "https://github.com/tauri-apps/plugins-workspace
20 trash = "3.0.2"
21 tauri-plugin-store = { git = "https://github.com/tauri-apps/plugins-workspace", branch = "v1" }
22 encoding_rs = "0.8.32"
23 +tauri-plugin-log = { git = "https://github.com/tauri-apps/plugins-workspace", branch = "v1" }
24 +time = "0.3.28"
25 +log = "^0.4"
26
27 [dev-dependencies]
28 windows = "0.32.0"
29
30 +[profile.dev.build-override]
31 +opt-level = 2
32 +
33 [features]
34 # by default Tauri runs in production mode
35 # when `tauri dev` runs it is executed with `cargo run --no-default-features` if `devPath` is an URL
src-tauri/src/main.rs
+90 -1
@@ -3,6 +3,13 @@
3 windows_subsystem = "windows"
4 )]
5
6 +#[cfg(debug_assertions)]
7 +const LOG_TARGETS: [LogTarget; 3] = [LogTarget::Stdout, LogTarget::Webview, LogTarget::LogDir];
8 +
9 +#[cfg(not(debug_assertions))]
10 +const LOG_TARGETS: [LogTarget; 2] = [LogTarget::Stdout, LogTarget::LogDir];
11 +
12 +use std::collections::HashMap;
13 use std::ffi::OsStr;
14 use std::fs::File;
15 use std::io::Write;
@@ -10,10 +17,13 @@ use std::path::Path;
17 use std::{env, fs};
18 use std::process::Command;
19
13 -use tauri::Manager;
20 +use tauri::{Manager, Wry, App};
21
22 mod encoding;
23 use encoding::BOM;
24 +use tauri::plugin::TauriPlugin;
25 +use tauri_plugin_log::{LogTarget, RotationStrategy};
26 +use log::info;
27
28 use crate::encoding::convert_to_u16;
29
@@ -111,11 +121,90 @@ fn write_file(path: &str, content: &str, enc: &str, has_bom: bool) {
121 file.write_all(&output).unwrap();
122 }
123
124 +fn configure_log() -> TauriPlugin<Wry> {
125 + tauri_plugin_log::Builder::default()
126 + .format(move |out, message, record| {
127 + let format = time::format_description::parse(
128 + "[[[year]-[month]-[day]][[[hour]:[minute]:[second]]",
129 + )
130 + .unwrap();
131 + out.finish(format_args!(
132 + "{}[{}] {}",
133 + time::OffsetDateTime::now_local().unwrap().format(&format).unwrap(),
134 + record.level(),
135 + message
136 + ))
137 + })
138 + .targets(LOG_TARGETS)
139 + .rotation_strategy(RotationStrategy::KeepAll)
140 + .build()
141 +}
142 +
143 +fn configure_log_path(app: &mut App) {
144 + let app_log_dir = tauri::api::path::app_log_dir(&app.config()).unwrap();
145 + let format = time::format_description::parse(
146 + "[year]-[month]-[day]-[hour][minute]",
147 + )
148 + .unwrap();
149 + let time = time::OffsetDateTime::now_local().unwrap().format(&format).unwrap();
150 + let log_name = format!("nucleus_log-{}.log", time);
151 +
152 + // changing the default log name to something more meaningful
153 + let old_log_path = app_log_dir.join("nucleus.log");
154 + let new_log_path = app_log_dir.join(log_name);
155 + fs::rename(old_log_path, new_log_path).unwrap();
156 +}
157 +
158 +fn load_settings(app: &mut App) {
159 +
160 + info!("Loading default settings:");
161 +
162 + let default_settings = serde_json::json!(
163 + {
164 + "nucleus.theme": "Dark",
165 + "editor.fontSize": 14,
166 + "editor.fontFamily": "monospace",
167 + "editor.autosave": false,
168 + "nucleus.showKeybinds": false,
169 + "nucleus.useExternalTerminal": true,
170 + "terminal.external": {
171 + "profile": "powershell"
172 + },
173 + "terminal.internal": {
174 + "profile": "powershell"
175 + }
176 + }
177 + );
178 + let appdata_local = tauri::api::path::app_local_data_dir(&app.config()).unwrap();
179 + let settings_path = appdata_local.join("default_settings.json");
180 +
181 + if !settings_path.try_exists().unwrap() {
182 + fs::write(&settings_path, default_settings.to_string()).unwrap();
183 + info!("Default settings file not found. Created a new default settings file. Path: {:?}", &settings_path);
184 + }
185 +
186 + let mut defaults = HashMap::new();
187 + for settings in default_settings.as_object().unwrap() {
188 + defaults.entry(settings.0.clone()).or_insert_with(|| settings.1.clone());
189 + }
190 +
191 + let mut settings_store = tauri_plugin_store::StoreBuilder::new(app.handle(), settings_path).defaults(defaults).build();
192 +
193 + settings_store.load().unwrap();
194 +
195 +}
196 +
197 fn main() {
198 tauri::Builder::default()
199 .invoke_handler(tauri::generate_handler![open_in_explorer, delete_file, attempt_file_access, is_file, is_folder, read_file, write_file])
200 .plugin(tauri_plugin_fs_watch::init())
201 .plugin(tauri_plugin_store::Builder::default().build())
202 + .plugin(configure_log())
203 + .setup(|app| {
204 + configure_log_path(app);
205 + load_settings(app);
206 + Ok(())
207 + })
208 .run(tauri::generate_context!())
209 .expect("error while running tauri application");
210 }
src/config/commands.ts
+12 -10
@@ -1,9 +1,9 @@
1 import { fs } from "@tauri-apps/api";
2 import { openRenameModal } from "../App.svelte";
3 -import { append, copy, cut, deleteChars, redoChange, undoChange } from "../lib/Editor.svelte";
3 import { addEditorTab, closeAllTabs } from "../lib/EditorTabList.svelte";
4 import { saveFile, openFile, openFolder, openInExplorer, renameFile } from "../lib/File";
5 import { appWindow } from "@tauri-apps/api/window";
6 +import { info, warn } from "tauri-plugin-log-api";
7
8 export const commands = {
9 "addEditorTab": {
@@ -40,36 +40,35 @@ export const commands = {
40 "keybind": "Control+Z",
41 "disabled": "true",
42 "command": async () => {
43 - await undoChange();
43 + //
44 }
45 },
46 "redo": {
47 "keybind": "Control+Shift+Z",
48 "disabled": "true",
49 "command": async () => {
50 - await redoChange();
50 + //
51 }
52 },
53 "cut": {
54 "keybind": "Control+X",
55 "disabled": "true",
56 "command": async () => {
57 - await cut();
57 + //
58 }
59 },
60 "copy": {
61 "keybind": "Control+C",
62 "disabled": "true",
63 "command": async () => {
64 - await copy();
64 + //
65 }
66 },
67 "paste": {
68 "keybind": "Control+V",
69 "disabled": "true",
70 "command": async () => {
71 - const content = await navigator.clipboard.readText();
72 - append(content);
71 + //
72 }
73 },
74 "pasteFromHistory": {
@@ -82,7 +81,7 @@ export const commands = {
81 "keybind": "Delete",
82 "disabled": "true",
83 "command": async () => {
85 - await deleteChars();
84 + return;
85 }
86 },
87 "find": {
@@ -190,7 +189,10 @@ export const commands = {
189 "renameFile": {
190 "keybind": "F2",
191 "command": async (filename, oldpath) => {
193 - if (!await fs.exists(oldpath)) return;
192 + if (!await fs.exists(oldpath)) {
193 + warn(`${oldpath} does not exist!`);
194 + return;
195 + }
196 openRenameModal(`Rename ${filename}`,
197 `Give a new name to ${filename}`, [
198 {name: "Rename", action: async (name) => {await renameFile(name, oldpath)}},
@@ -209,7 +211,7 @@ export const commands = {
211
212 export function registerCommand(name: string, keybind: string, command: () => void) {
213 if (commands[name]) {
212 - console.warn(`Command "${name}" already exists, skipping.`);
214 + info(`Command "${name}" already exists, skipping.`)
215 return;
216 }
217 commands[name] = { "keybind": keybind, "command": command }
src/config/config.ts
+17 -34
@@ -1,11 +1,12 @@
1 import { writable } from "svelte/store";
2 import Mousetrap from "mousetrap";
3 import { getKeybinds } from "./commands";
4 -import { fs, path } from "@tauri-apps/api";
4 +import { path } from "@tauri-apps/api";
5 import { loadTheme } from "./themehandler";
6 import { Store } from "tauri-plugin-store-api";
7 import { setEditorFontFamily, setEditorFontSize } from "../lib/Editor.svelte";
8 import { watch } from "tauri-plugin-fs-watch-api";
9 +import { info } from "tauri-plugin-log-api";
10
11 export const systemfonts = writable([]);
12 export const editorfont = writable("");
@@ -46,6 +47,7 @@ function parseKeybind(keybind: string) {
47 }
48
49 export async function getShortcuts() {
50 + info("Intializing shortcut bindings...")
51 const shortcuts = getKeybinds();
52 for (const shortcut of shortcuts) {
53 // skip binding shorcuts that are disabled
@@ -58,6 +60,7 @@ export async function getShortcuts() {
60 await fireAction(shortcut.command);
61 });
62 }
63 + info("Shortcuts loaded successfully.");
64 }
65
66 async function fireAction(callback: () => Promise<void>, args = []) {
@@ -66,50 +69,30 @@ async function fireAction(callback: () => Promise<void>, args = []) {
69 }
70
71 export let appSettings: Store;
69 -export async function getSettings() {
70 - const settings = JSON.stringify({
71 - "nucleus.theme": "Dark",
72 - "editor.fontSize": 14,
73 - "editor.fontFamily": "monospace",
74 - "editor.autosave": false,
75 - "nucleus.showKeybinds": false,
76 - "nucleus.useExternalTerminal": true,
77 - "terminal.external": {
78 - "profile": "powershell"
79 - },
80 - "terminal.internal": {
81 - "profile": "powershell"
82 - },
83 - }, null, 4);
84 - const appdataLocal = await path.appLocalDataDir();
85 - const settingsPath = `${appdataLocal}settings.json`;
72
87 - if (!await fs.exists(settingsPath)) {
88 - await fs.writeFile(settingsPath, settings);
89 - }
90 - appSettings = new Store(settingsPath);
73 +export async function loadDefaultSettings() {
74 + const appdataLocal = await path.appLocalDataDir();
75 + appSettings = new Store(`${appdataLocal}default_settings.json`);
76
77 await watch(
93 - settingsPath,
94 - async () => {
95 - await appSettings.load();
78 + `${appdataLocal}default_settings.json`,
79 + () => {
80 + appSettings.load();
81 }
82 )
98 -}
83
100 -export async function loadDefaultSettings() {
101 - await getSettings();
102 - const settingsPath = await fs.readTextFile("settings.json", {dir: fs.BaseDirectory.AppLocalData});
103 - const settings = JSON.parse(settingsPath);
104 - await loadTheme(settings["nucleus.theme"]);
105 - await getShortcuts();
84 + loadTheme(await appSettings.get("nucleus.theme"));
85 + getShortcuts();
86 +
87 appSettings.onKeyChange("editor.fontSize", (value: number) => {
88 setEditorFontSize(value);
89 })
90 appSettings.onKeyChange("editor.fontFamily", (value: string) => {
91 setEditorFontFamily(value);
92 })
112 - appSettings.onKeyChange("nucleus.theme", async (value: string) => {
113 - await loadTheme(value);
93 + appSettings.onKeyChange("nucleus.theme", (value: string) => {
94 + loadTheme(value);
95 })
96 +
97 + info(`Settings initialized.`);
98 }
\ No newline at end of file
src/lib/File.ts
+9 -11
@@ -4,6 +4,7 @@ import { tabs, addEditorTab, renameTab, closeTab, refreshTabs } from "./EditorTa
4 import { filetree } from "./FileTree.svelte";
5 import { watchImmediate } from "tauri-plugin-fs-watch-api";
6 import { openFileTree } from "./Sidebar.svelte";
7 +import { trace, error, warn } from "tauri-plugin-log-api";
8
9 export async function openFile() {
10 let newPath = await dialog.open() as string;
@@ -62,18 +63,18 @@ async function updateTree(directory, updateType = "") {
63 try {
64 tree = await fs.readDir(directory, {recursive: true});
65 } catch (error) {
65 - console.error(error);
66 + error(error);
67 }
68 if (!tree || tree === undefined) {
68 - console.error("Cannot load directory");
69 + error("Cannot load directory");
70
71 cancelDirectoryLoad("Cannot load directory");
72 return null;
73 }
74
75 if (loadTime > 100) {
75 - console.error(`Directory load time was too long. Aborting...`);
76 - console.warn(`Cancelled load after ${loadTime} seconds`);
76 + error(`Directory load time was too long. Aborting...`);
77 + trace(`Cancelled load after ${loadTime} seconds`);
78
79 cancelDirectoryLoad("Error: Directory load timeout.");
80 return null;
@@ -87,10 +88,7 @@ async function updateTree(directory, updateType = "") {
88 //TODO: move this to a log file
89 if (updateType !== "modify") {
90 if (loadTime < 45) {
90 - console.log(`Directory load time: ${loadTime < 1 ? "less than 1" : loadTime}s`);
91 - }
92 - else {
93 - console.warn(`Directory load time: ${loadTime < 1 ? "less than 1" : loadTime}s`);
91 + trace(`Directory load time: ${loadTime < 1 ? "less than 1" : loadTime}s`);
92 }
93 }
94 id = 0;
@@ -225,11 +223,11 @@ export async function createFile(p) {
223
224 export async function renameFile(filename: string, oldpath: string) {
225 if (filename.length === 0) {
228 - console.warn("filename length 0")
226 + warn("filename length 0");
227 return false;
228 }
229 if (await invoke("is_file", {path: oldpath}) && filename.includes(path.sep)) {
232 - console.warn("invalid filename")
230 + warn("invalid filename");
231 return false;
232 }
233 let newpath = oldpath.replace(oldpath.split(path.sep).pop(), filename);
@@ -237,7 +235,7 @@ export async function renameFile(filename: string, oldpath: string) {
235 try {
236 await fs.renameFile(oldpath, newpath);
237 } catch (error) {
240 - console.error(error);
238 + error(error);
239 return false;
240 }
241 let tab = get(tabs).find(t => t.active && t.isfile);
src/main.ts
+3
@@ -1,6 +1,9 @@
1 import "./theme.scss";
2 import "./global.css";
3 import App from './App.svelte';
4 +import { attachConsole } from "tauri-plugin-log-api";
5 +
6 +attachConsole();
7
8 const app = new App({
9 target: document.body
yarn.lock
+318 -8
@@ -567,6 +567,117 @@
567 "@nodelib/fs.scandir" "2.1.5"
568 fastq "^1.6.0"
569
570 +"@sentry-internal/tracing@7.69.0":
571 + version "7.69.0"
572 + resolved "https://registry.yarnpkg.com/@sentry-internal/tracing/-/tracing-7.69.0.tgz#8d8eb740b72967b6ba3fdc0a5173aa55331b7d35"
573 + integrity sha512-4BgeWZUj9MO6IgfO93C9ocP3+AdngqujF/+zB2rFdUe+y9S6koDyUC7jr9Knds/0Ta72N/0D6PwhgSCpHK8s0Q==
574 + dependencies:
575 + "@sentry/core" "7.69.0"
576 + "@sentry/types" "7.69.0"
577 + "@sentry/utils" "7.69.0"
578 + tslib "^2.4.1 || ^1.9.3"
579 +
580 +"@sentry/browser@7.69.0":
581 + version "7.69.0"
582 + resolved "https://registry.yarnpkg.com/@sentry/browser/-/browser-7.69.0.tgz#65427c90fb71c1775e2c1e38431efb7f4aec1e34"
583 + integrity sha512-5ls+zu2PrMhHCIIhclKQsWX5u6WH0Ez5/GgrCMZTtZ1d70ukGSRUvpZG9qGf5Cw1ezS1LY+1HCc3whf8x8lyPw==
584 + dependencies:
585 + "@sentry-internal/tracing" "7.69.0"
586 + "@sentry/core" "7.69.0"
587 + "@sentry/replay" "7.69.0"
588 + "@sentry/types" "7.69.0"
589 + "@sentry/utils" "7.69.0"
590 + tslib "^2.4.1 || ^1.9.3"
591 +
592 +"@sentry/bundler-plugin-core@2.7.1":
593 + version "2.7.1"
594 + resolved "https://registry.yarnpkg.com/@sentry/bundler-plugin-core/-/bundler-plugin-core-2.7.1.tgz#60ca41f79393263911ae6bc5530f387cb1e48e47"
595 + integrity sha512-ZC/B/7FzzgGpux2t54B2ioXudlq60MHMVPaUeuFzWwxmxiArrV4uBXcp18RMW5ns4biik5WBAD72vbsoloBfIQ==
596 + dependencies:
597 + "@sentry/cli" "^2.20.1"
598 + "@sentry/node" "^7.60.0"
599 + "@sentry/utils" "^7.60.0"
600 + dotenv "^16.3.1"
601 + find-up "5.0.0"
602 + glob "9.3.2"
603 + magic-string "0.27.0"
604 + unplugin "1.0.1"
605 +
606 +"@sentry/cli@^2.20.1":
607 + version "2.20.7"
608 + resolved "https://registry.yarnpkg.com/@sentry/cli/-/cli-2.20.7.tgz#8f7f3f632c330cac6bd2278d820948163f3128a6"
609 + integrity sha512-YaHKEUdsFt59nD8yLvuEGCOZ3/ArirL8GZ/66RkZ8wcD2wbpzOFbzo08Kz4te/Eo3OD5/RdW+1dPaOBgGbrXlA==
610 + dependencies:
611 + https-proxy-agent "^5.0.0"
612 + node-fetch "^2.6.7"
613 + progress "^2.0.3"
614 + proxy-from-env "^1.1.0"
615 + which "^2.0.2"
616 +
617 +"@sentry/core@7.69.0":
618 + version "7.69.0"
619 + resolved "https://registry.yarnpkg.com/@sentry/core/-/core-7.69.0.tgz#ebbe01df573f438f8613107020a4e18eb9adca4d"
620 + integrity sha512-V6jvK2lS8bhqZDMFUtvwe2XvNstFQf5A+2LMKCNBOV/NN6eSAAd6THwEpginabjet9dHsNRmMk7WNKvrUfQhZw==
621 + dependencies:
622 + "@sentry/types" "7.69.0"
623 + "@sentry/utils" "7.69.0"
624 + tslib "^2.4.1 || ^1.9.3"
625 +
626 +"@sentry/node@^7.60.0":
627 + version "7.69.0"
628 + resolved "https://registry.yarnpkg.com/@sentry/node/-/node-7.69.0.tgz#938200095a17f41a2445fec168df293db7c24836"
629 + integrity sha512-T0NgPcmDQvEuz5hy6aEhXghTHHTWsiP3IWoeEAakDBHAXmtpT6lYFQZgb5AiEOt9F5KO/G/1yH3YYdpDAnKhPw==
630 + dependencies:
631 + "@sentry-internal/tracing" "7.69.0"
632 + "@sentry/core" "7.69.0"
633 + "@sentry/types" "7.69.0"
634 + "@sentry/utils" "7.69.0"
635 + cookie "^0.4.1"
636 + https-proxy-agent "^5.0.0"
637 + lru_map "^0.3.3"
638 + tslib "^2.4.1 || ^1.9.3"
639 +
640 +"@sentry/replay@7.69.0":
641 + version "7.69.0"
642 + resolved "https://registry.yarnpkg.com/@sentry/replay/-/replay-7.69.0.tgz#d727f96292d2b7c25df022fa53764fd39910fcda"
643 + integrity sha512-oUqWyBPFUgShdVvgJtV65EQH9pVDmoYVQMOu59JI6FHVeL3ald7R5Mvz6GaNLXsirvvhp0yAkcAd2hc5Xi6hDw==
644 + dependencies:
645 + "@sentry/core" "7.69.0"
646 + "@sentry/types" "7.69.0"
647 + "@sentry/utils" "7.69.0"
648 +
649 +"@sentry/svelte@^7.69.0":
650 + version "7.69.0"
651 + resolved "https://registry.yarnpkg.com/@sentry/svelte/-/svelte-7.69.0.tgz#41312a2daf169601e1321c22c5d1e9576fefbcb4"
652 + integrity sha512-86dQMJ+iYMZHEv3m3OGK6M6+Pq2C0/udeWIw5HLUil8SvJ0mKqAw8lzHcH9P7Vuhcdqn7N2fZfoUCyDIm7wRqA==
653 + dependencies:
654 + "@sentry/browser" "7.69.0"
655 + "@sentry/types" "7.69.0"
656 + "@sentry/utils" "7.69.0"
657 + magic-string "^0.30.0"
658 + tslib "^2.4.1 || ^1.9.3"
659 +
660 +"@sentry/types@7.69.0":
661 + version "7.69.0"
662 + resolved "https://registry.yarnpkg.com/@sentry/types/-/types-7.69.0.tgz#012b8d90d270a473cc2a5cf58a56870542739292"
663 + integrity sha512-zPyCox0mzitzU6SIa1KIbNoJAInYDdUpdiA+PoUmMn2hFMH1llGU/cS7f4w/mAsssTlbtlBi72RMnWUCy578bw==
664 +
665 +"@sentry/utils@7.69.0", "@sentry/utils@^7.60.0":
666 + version "7.69.0"
667 + resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-7.69.0.tgz#b7594e4eb2a88b9b25298770b841dd3f81bd2aa4"
668 + integrity sha512-4eBixe5Y+0EGVU95R4NxH3jkkjtkE4/CmSZD4In8SCkWGSauogePtq6hyiLsZuP1QHdpPb9Kt0+zYiBb2LouBA==
669 + dependencies:
670 + "@sentry/types" "7.69.0"
671 + tslib "^2.4.1 || ^1.9.3"
672 +
673 +"@sentry/vite-plugin@^2.7.1":
674 + version "2.7.1"
675 + resolved "https://registry.yarnpkg.com/@sentry/vite-plugin/-/vite-plugin-2.7.1.tgz#23fa4c95079c3f2ba10b851dce7452c16adc82c8"
676 + integrity sha512-bZrM06Z+QP/TvPyTYFxpQVugT5rzaFW1jzTnHzUHICz5tgyarY8bhhmYXnI37f6mngkVwDZNAftczbVF2IuFWQ==
677 + dependencies:
678 + "@sentry/bundler-plugin-core" "2.7.1"
679 + unplugin "1.0.1"
680 +
681 "@sveltejs/vite-plugin-svelte@^2.0.4":
682 version "2.0.4"
683 resolved "https://registry.yarnpkg.com/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-2.0.4.tgz#607b6abe15e02e540249e3f47d47fb9f15952e80"
@@ -579,16 +690,16 @@
690 svelte-hmr "^0.15.1"
691 vitefu "^0.2.4"
692
693 +"@tauri-apps/api@1.4.0", "@tauri-apps/api@^1.4.0":
694 + version "1.4.0"
695 + resolved "https://registry.yarnpkg.com/@tauri-apps/api/-/api-1.4.0.tgz#b4013ca3d17b853f7df29fe14079ebb4d52dbffa"
696 + integrity sha512-Jd6HPoTM1PZSFIzq7FB8VmMu3qSSyo/3lSwLpoapW+lQ41CL5Dow2KryLg+gyazA/58DRWI9vu/XpEeHK4uMdw==
697 +
698 "@tauri-apps/api@^1.2.0":
699 version "1.2.0"
700 resolved "https://registry.yarnpkg.com/@tauri-apps/api/-/api-1.2.0.tgz#1f196b3e012971227f41b98214c846430a4eb477"
701 integrity sha512-lsI54KI6HGf7VImuf/T9pnoejfgkNoXveP14pVV7XarrQ46rOejIVJLFqHI9sRReJMGdh2YuCoI3cc/yCWCsrw==
702
587 -"@tauri-apps/api@^1.4.0":
588 - version "1.4.0"
589 - resolved "https://registry.yarnpkg.com/@tauri-apps/api/-/api-1.4.0.tgz#b4013ca3d17b853f7df29fe14079ebb4d52dbffa"
590 - integrity sha512-Jd6HPoTM1PZSFIzq7FB8VmMu3qSSyo/3lSwLpoapW+lQ41CL5Dow2KryLg+gyazA/58DRWI9vu/XpEeHK4uMdw==
591 -
703 "@tauri-apps/cli-darwin-arm64@1.4.0":
704 version "1.4.0"
705 resolved "https://registry.yarnpkg.com/@tauri-apps/cli-darwin-arm64/-/cli-darwin-arm64-1.4.0.tgz#e76bb8515ae31f03f2cbd440c1a09b237a79b3ac"
@@ -670,6 +781,18 @@
781 resolved "https://registry.yarnpkg.com/@types/pug/-/pug-2.0.6.tgz#f830323c88172e66826d0bde413498b61054b5a6"
782 integrity sha512-SnHmG9wN1UVmagJOnyo/qkk0Z7gejYxOYYmaAwr5u2yFYfsupN3sg10kyzN8Hep/2zbHxCnsumxOoRIRMBwKCg==
783
784 +acorn@^8.8.1:
785 + version "8.10.0"
786 + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.10.0.tgz#8be5b3907a67221a81ab23c7889c4c5526b62ec5"
787 + integrity sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==
788 +
789 +agent-base@6:
790 + version "6.0.2"
791 + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77"
792 + integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==
793 + dependencies:
794 + debug "4"
795 +
796 anymatch@~3.1.2:
797 version "3.1.3"
798 resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e"
@@ -696,6 +819,13 @@ brace-expansion@^1.1.7:
819 balanced-match "^1.0.0"
820 concat-map "0.0.1"
821
822 +brace-expansion@^2.0.1:
823 + version "2.0.1"
824 + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae"
825 + integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==
826 + dependencies:
827 + balanced-match "^1.0.0"
828 +
829 braces@^3.0.2, braces@~3.0.2:
830 version "3.0.2"
831 resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107"
@@ -718,7 +848,7 @@ carbon-icons-svelte@^11.4.0:
848 resolved "https://registry.yarnpkg.com/carbon-icons-svelte/-/carbon-icons-svelte-11.4.0.tgz#1bab38ac0c8f778e0431f8df54324829c81cfd30"
849 integrity sha512-p/llZde2kP2BI9SOqM+QFKGfQnYrW+4dVxF1rAYriEADXDsjt9EYlh+KpQ5qf4JpXAq+e2+TB/r/lIG1xdUbAQ==
850
721 -"chokidar@>=3.0.0 <4.0.0", chokidar@^3.4.1:
851 +"chokidar@>=3.0.0 <4.0.0", chokidar@^3.4.1, chokidar@^3.5.3:
852 version "3.5.3"
853 resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd"
854 integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==
@@ -751,12 +881,17 @@ concat-map@0.0.1:
881 resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
882 integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==
883
884 +cookie@^0.4.1:
885 + version "0.4.2"
886 + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.2.tgz#0e41f24de5ecf317947c82fc789e06a884824432"
887 + integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==
888 +
889 crelt@^1.0.5:
890 version "1.0.5"
891 resolved "https://registry.yarnpkg.com/crelt/-/crelt-1.0.5.tgz#57c0d52af8c859e354bace1883eb2e1eb182bb94"
892 integrity sha512-+BO9wPPi+DWTDcNYhr/W90myha8ptzftZT+LwcmUbbok0rcP/fequmFYCw8NMoH7pkAZQzU78b3kYrlua5a9eA==
893
759 -debug@^4.3.4:
894 +debug@4, debug@^4.3.4:
895 version "4.3.4"
896 resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865"
897 integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==
@@ -773,6 +908,11 @@ detect-indent@^6.1.0:
908 resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-6.1.0.tgz#592485ebbbf6b3b1ab2be175c8393d04ca0d57e6"
909 integrity sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==
910
911 +dotenv@^16.3.1:
912 + version "16.3.1"
913 + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.3.1.tgz#369034de7d7e5b120972693352a3bf112172cc3e"
914 + integrity sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==
915 +
916 es6-promise@^3.1.2:
917 version "3.3.1"
918 resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-3.3.1.tgz#a08cdde84ccdbf34d027a1451bc91d4bcd28a613"
@@ -843,6 +983,14 @@ fill-range@^7.0.1:
983 dependencies:
984 to-regex-range "^5.0.1"
985
986 +find-up@5.0.0:
987 + version "5.0.0"
988 + resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc"
989 + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==
990 + dependencies:
991 + locate-path "^6.0.0"
992 + path-exists "^4.0.0"
993 +
994 fs.realpath@^1.0.0:
995 version "1.0.0"
996 resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
@@ -865,6 +1013,16 @@ glob-parent@^5.1.2, glob-parent@~5.1.2:
1013 dependencies:
1014 is-glob "^4.0.1"
1015
1016 +glob@9.3.2:
1017 + version "9.3.2"
1018 + resolved "https://registry.yarnpkg.com/glob/-/glob-9.3.2.tgz#8528522e003819e63d11c979b30896e0eaf52eda"
1019 + integrity sha512-BTv/JhKXFEHsErMte/AnfiSv8yYOLLiyH2lTg8vn02O21zWFgHPTfxtgn1QRe7NRgggUhC8hacR2Re94svHqeA==
1020 + dependencies:
1021 + fs.realpath "^1.0.0"
1022 + minimatch "^7.4.1"
1023 + minipass "^4.2.4"
1024 + path-scurry "^1.6.1"
1025 +
1026 glob@^7.1.3:
1027 version "7.2.3"
1028 resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b"
@@ -889,6 +1047,14 @@ has@^1.0.3:
1047 dependencies:
1048 function-bind "^1.1.1"
1049
1050 +https-proxy-agent@^5.0.0:
1051 + version "5.0.1"
1052 + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6"
1053 + integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==
1054 + dependencies:
1055 + agent-base "6"
1056 + debug "4"
1057 +
1058 immutable@^4.0.0:
1059 version "4.1.0"
1060 resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.1.0.tgz#f795787f0db780183307b9eb2091fcac1f6fafef"
@@ -946,12 +1112,34 @@ is-number@^7.0.0:
1112 resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
1113 integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
1114
1115 +isexe@^2.0.0:
1116 + version "2.0.0"
1117 + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
1118 + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==
1119 +
1120 kleur@^4.1.5:
1121 version "4.1.5"
1122 resolved "https://registry.yarnpkg.com/kleur/-/kleur-4.1.5.tgz#95106101795f7050c6c650f350c683febddb1780"
1123 integrity sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==
1124
954 -magic-string@^0.27.0:
1125 +locate-path@^6.0.0:
1126 + version "6.0.0"
1127 + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286"
1128 + integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==
1129 + dependencies:
1130 + p-locate "^5.0.0"
1131 +
1132 +"lru-cache@^9.1.1 || ^10.0.0":
1133 + version "10.0.1"
1134 + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.0.1.tgz#0a3be479df549cca0e5d693ac402ff19537a6b7a"
1135 + integrity sha512-IJ4uwUTi2qCccrioU6g9g/5rvvVl13bsdczUUcqbciD9iLr095yj8DQKdObriEvuNSx325N1rV1O0sJFszx75g==
1136 +
1137 +lru_map@^0.3.3:
1138 + version "0.3.3"
1139 + resolved "https://registry.yarnpkg.com/lru_map/-/lru_map-0.3.3.tgz#b5c8351b9464cbd750335a79650a0ec0e56118dd"
1140 + integrity sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ==
1141 +
1142 +magic-string@0.27.0, magic-string@^0.27.0:
1143 version "0.27.0"
1144 resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.27.0.tgz#e4a3413b4bab6d98d2becffd48b4a257effdbbf3"
1145 integrity sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==
@@ -990,11 +1178,28 @@ minimatch@^3.1.1:
1178 dependencies:
1179 brace-expansion "^1.1.7"
1180
1181 +minimatch@^7.4.1:
1182 + version "7.4.6"
1183 + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-7.4.6.tgz#845d6f254d8f4a5e4fd6baf44d5f10c8448365fb"
1184 + integrity sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==
1185 + dependencies:
1186 + brace-expansion "^2.0.1"
1187 +
1188 minimist@^1.2.0, minimist@^1.2.6:
1189 version "1.2.7"
1190 resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.7.tgz#daa1c4d91f507390437c6a8bc01078e7000c4d18"
1191 integrity sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==
1192
1193 +minipass@^4.2.4:
1194 + version "4.2.8"
1195 + resolved "https://registry.yarnpkg.com/minipass/-/minipass-4.2.8.tgz#f0010f64393ecfc1d1ccb5f582bcaf45f48e1a3a"
1196 + integrity sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==
1197 +
1198 +"minipass@^5.0.0 || ^6.0.2 || ^7.0.0":
1199 + version "7.0.3"
1200 + resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.0.3.tgz#05ea638da44e475037ed94d1c7efcc76a25e1974"
1201 + integrity sha512-LhbbwCfz3vsb12j/WkWQPZfKTsgqIe1Nf/ti1pKjYESGLHIVjWU96G9/ljLH4F9mWNVhlQOm0VySdAWzf05dpg==
1202 +
1203 mkdirp@^0.5.1:
1204 version "0.5.6"
1205 resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6"
@@ -1022,6 +1227,13 @@ nanoid@^3.3.6:
1227 resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.6.tgz#443380c856d6e9f9824267d960b4236ad583ea4c"
1228 integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==
1229
1230 +node-fetch@^2.6.7:
1231 + version "2.7.0"
1232 + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d"
1233 + integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==
1234 + dependencies:
1235 + whatwg-url "^5.0.0"
1236 +
1237 normalize-path@^3.0.0, normalize-path@~3.0.0:
1238 version "3.0.0"
1239 resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
@@ -1034,6 +1246,20 @@ once@^1.3.0:
1246 dependencies:
1247 wrappy "1"
1248
1249 +p-limit@^3.0.2:
1250 + version "3.1.0"
1251 + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b"
1252 + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==
1253 + dependencies:
1254 + yocto-queue "^0.1.0"
1255 +
1256 +p-locate@^5.0.0:
1257 + version "5.0.0"
1258 + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834"
1259 + integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==
1260 + dependencies:
1261 + p-limit "^3.0.2"
1262 +
1263 parent-module@^1.0.0:
1264 version "1.0.1"
1265 resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2"
@@ -1041,6 +1267,11 @@ parent-module@^1.0.0:
1267 dependencies:
1268 callsites "^3.0.0"
1269
1270 +path-exists@^4.0.0:
1271 + version "4.0.0"
1272 + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3"
1273 + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==
1274 +
1275 path-is-absolute@^1.0.0:
1276 version "1.0.1"
1277 resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
@@ -1051,6 +1282,14 @@ path-parse@^1.0.7:
1282 resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735"
1283 integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==
1284
1285 +path-scurry@^1.6.1:
1286 + version "1.10.1"
1287 + resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.10.1.tgz#9ba6bf5aa8500fe9fd67df4f0d9483b2b0bfc698"
1288 + integrity sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==
1289 + dependencies:
1290 + lru-cache "^9.1.1 || ^10.0.0"
1291 + minipass "^5.0.0 || ^6.0.2 || ^7.0.0"
1292 +
1293 picocolors@^1.0.0:
1294 version "1.0.0"
1295 resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c"
@@ -1075,6 +1314,16 @@ prettier@^2.8.7:
1314 resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.7.tgz#bb79fc8729308549d28fe3a98fce73d2c0656450"
1315 integrity sha512-yPngTo3aXUUmyuTjeTUT75txrf+aMh9FiD7q9ZE/i6r0bPb22g4FsE6Y338PQX1bmfy08i9QQCB7/rcUAVntfw==
1316
1317 +progress@^2.0.3:
1318 + version "2.0.3"
1319 + resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8"
1320 + integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==
1321 +
1322 +proxy-from-env@^1.1.0:
1323 + version "1.1.0"
1324 + resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2"
1325 + integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==
1326 +
1327 queue-microtask@^1.2.2:
1328 version "1.2.3"
1329 resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243"
@@ -1238,6 +1487,12 @@ svelte@^3.58.0:
1487 dependencies:
1488 "@tauri-apps/api" "^1.2.0"
1489
1490 +"tauri-plugin-log-api@https://github.com/tauri-apps/tauri-plugin-log#v1":
1491 + version "0.0.0"
1492 + resolved "https://github.com/tauri-apps/tauri-plugin-log#9075595196d5a66f8f3265d2aaf7e2ffeb4cb2ab"
1493 + dependencies:
1494 + "@tauri-apps/api" "1.4.0"
1495 +
1496 "tauri-plugin-store-api@https://github.com/tauri-apps/tauri-plugin-store#v1":
1497 version "0.0.0"
1498 resolved "https://github.com/tauri-apps/tauri-plugin-store#96e2eb3971c981ece96f0a9e47dad14a2d1d2539"
@@ -1251,6 +1506,16 @@ to-regex-range@^5.0.1:
1506 dependencies:
1507 is-number "^7.0.0"
1508
1509 +tr46@~0.0.3:
1510 + version "0.0.3"
1511 + resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a"
1512 + integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==
1513 +
1514 +"tslib@^2.4.1 || ^1.9.3":
1515 + version "2.6.2"
1516 + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae"
1517 + integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==
1518 +
1519 tslib@^2.5.0:
1520 version "2.5.0"
1521 resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.0.tgz#42bfed86f5787aeb41d031866c8f402429e0fddf"
@@ -1261,6 +1526,16 @@ typescript@^5.0.3, typescript@^5.0.4:
1526 resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.0.4.tgz#b217fd20119bd61a94d4011274e0ab369058da3b"
1527 integrity sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==
1528
1529 +unplugin@1.0.1:
1530 + version "1.0.1"
1531 + resolved "https://registry.yarnpkg.com/unplugin/-/unplugin-1.0.1.tgz#83b528b981cdcea1cad422a12cd02e695195ef3f"
1532 + integrity sha512-aqrHaVBWW1JVKBHmGo33T5TxeL0qWzfvjWokObHA9bYmN7eNDkwOxmLjhioHl9878qDFMAaT51XNroRyuz7WxA==
1533 + dependencies:
1534 + acorn "^8.8.1"
1535 + chokidar "^3.5.3"
1536 + webpack-sources "^3.2.3"
1537 + webpack-virtual-modules "^0.5.0"
1538 +
1539 vite@^4.2.3:
1540 version "4.2.3"
1541 resolved "https://registry.yarnpkg.com/vite/-/vite-4.2.3.tgz#067ada47ebd52e078d014bf1f92badda9d10564d"
@@ -1283,7 +1558,42 @@ w3c-keyname@^2.2.4:
1558 resolved "https://registry.yarnpkg.com/w3c-keyname/-/w3c-keyname-2.2.6.tgz#8412046116bc16c5d73d4e612053ea10a189c85f"
1559 integrity sha512-f+fciywl1SJEniZHD6H+kUO8gOnwIr7f4ijKA6+ZvJFjeGi1r4PDLl53Ayud9O/rk64RqgoQine0feoeOU0kXg==
1560
1561 +webidl-conversions@^3.0.0:
1562 + version "3.0.1"
1563 + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871"
1564 + integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==
1565 +
1566 +webpack-sources@^3.2.3:
1567 + version "3.2.3"
1568 + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde"
1569 + integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==
1570 +
1571 +webpack-virtual-modules@^0.5.0:
1572 + version "0.5.0"
1573 + resolved "https://registry.yarnpkg.com/webpack-virtual-modules/-/webpack-virtual-modules-0.5.0.tgz#362f14738a56dae107937ab98ea7062e8bdd3b6c"
1574 + integrity sha512-kyDivFZ7ZM0BVOUteVbDFhlRt7Ah/CSPwJdi8hBpkK7QLumUqdLtVfm/PX/hkcnrvr0i77fO5+TjZ94Pe+C9iw==
1575 +
1576 +whatwg-url@^5.0.0:
1577 + version "5.0.0"
1578 + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d"
1579 + integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==
1580 + dependencies:
1581 + tr46 "~0.0.3"
1582 + webidl-conversions "^3.0.0"
1583 +
1584 +which@^2.0.2:
1585 + version "2.0.2"
1586 + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1"
1587 + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==
1588 + dependencies:
1589 + isexe "^2.0.0"
1590 +
1591 wrappy@1:
1592 version "1.0.2"
1593 resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
1594 integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==
1595 +
1596 +yocto-queue@^0.1.0:
1597 + version "0.1.0"
1598 + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b"
1599 + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==