├── .gitignore ├── LICENSE.txt ├── README.MD ├── assets └── banner.png ├── crates ├── backend │ ├── Cargo.toml │ ├── build.rs │ ├── icons │ │ ├── 128x128.png │ │ ├── 128x128@2x.png │ │ ├── 32x32.png │ │ ├── Square107x107Logo.png │ │ ├── Square142x142Logo.png │ │ ├── Square150x150Logo.png │ │ ├── Square284x284Logo.png │ │ ├── Square30x30Logo.png │ │ ├── Square310x310Logo.png │ │ ├── Square44x44Logo.png │ │ ├── Square71x71Logo.png │ │ ├── Square89x89Logo.png │ │ ├── StoreLogo.png │ │ ├── icon.icns │ │ ├── icon.ico │ │ ├── icon.png │ │ └── iconold.png │ ├── src │ │ ├── main.rs │ │ └── spotlight.rs │ └── tauri.conf.json └── frontend │ ├── .prettierignore │ ├── .prettierrc │ ├── index.html │ ├── package.json │ ├── postcss.config.cjs │ ├── public │ └── imgs │ │ ├── avatar.png │ │ ├── logo.png │ │ └── logo.svg │ ├── src │ ├── App.svelte │ ├── components │ │ ├── Footer.svelte │ │ ├── Result.svelte │ │ ├── SearchBar.svelte │ │ ├── SearchResults.svelte │ │ └── Tag.svelte │ ├── main.ts │ ├── stores │ │ ├── globalStore.ts │ │ └── stackflowStore.ts │ ├── style.css │ ├── types │ │ ├── globalTypes.ts │ │ └── stackflowTypes.ts │ ├── utils │ │ └── stackflowUtils.ts │ └── vite-env.d.ts │ ├── svelte.config.js │ ├── tailwind.config.cjs │ ├── tsconfig.json │ ├── tsconfig.node.json │ ├── vite.config.ts │ └── yarn.lock └── smake.lua /.gitignore: -------------------------------------------------------------------------------- 1 | ### macOS ### 2 | # General 3 | .DS_Store 4 | .AppleDouble 5 | .LSOverride 6 | 7 | # Icon must end with two \r 8 | Icon 9 | 10 | 11 | # Thumbnails 12 | ._* 13 | 14 | # Files that might appear in the root of a volume 15 | .DocumentRevisions-V100 16 | .fseventsd 17 | .Spotlight-V100 18 | .TemporaryItems 19 | .Trashes 20 | .VolumeIcon.icns 21 | .com.apple.timemachine.donotpresent 22 | 23 | # Directories potentially created on remote AFP share 24 | .AppleDB 25 | .AppleDesktop 26 | Network Trash Folder 27 | Temporary Items 28 | .apdisk 29 | 30 | ### macOS Patch ### 31 | # iCloud generated files 32 | *.icloud 33 | 34 | ### Node ### 35 | # Logs 36 | logs 37 | *.log 38 | npm-debug.log* 39 | yarn-debug.log* 40 | yarn-error.log* 41 | lerna-debug.log* 42 | .pnpm-debug.log* 43 | 44 | # Diagnostic reports (https://nodejs.org/api/report.html) 45 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json 46 | 47 | # Runtime data 48 | pids 49 | *.pid 50 | *.seed 51 | *.pid.lock 52 | 53 | # Directory for instrumented libs generated by jscoverage/JSCover 54 | lib-cov 55 | 56 | # Coverage directory used by tools like istanbul 57 | coverage 58 | *.lcov 59 | 60 | # nyc test coverage 61 | .nyc_output 62 | 63 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) 64 | .grunt 65 | 66 | # Bower dependency directory (https://bower.io/) 67 | bower_components 68 | 69 | # node-waf configuration 70 | .lock-wscript 71 | 72 | # Compiled binary addons (https://nodejs.org/api/addons.html) 73 | build/Release 74 | 75 | # Dependency directories 76 | node_modules/ 77 | jspm_packages/ 78 | 79 | # Snowpack dependency directory (https://snowpack.dev/) 80 | web_modules/ 81 | 82 | # TypeScript cache 83 | *.tsbuildinfo 84 | 85 | # Optional npm cache directory 86 | .npm 87 | 88 | # Optional eslint cache 89 | .eslintcache 90 | 91 | # Optional stylelint cache 92 | .stylelintcache 93 | 94 | # Microbundle cache 95 | .rpt2_cache/ 96 | .rts2_cache_cjs/ 97 | .rts2_cache_es/ 98 | .rts2_cache_umd/ 99 | 100 | # Optional REPL history 101 | .node_repl_history 102 | 103 | # Output of 'npm pack' 104 | *.tgz 105 | 106 | # Yarn Integrity file 107 | .yarn-integrity 108 | 109 | # dotenv environment variable files 110 | .env 111 | .env.development.local 112 | .env.test.local 113 | .env.production.local 114 | .env.local 115 | 116 | # parcel-bundler cache (https://parceljs.org/) 117 | .cache 118 | .parcel-cache 119 | 120 | # Next.js build output 121 | .next 122 | out 123 | 124 | # Nuxt.js build / generate output 125 | .nuxt 126 | dist 127 | 128 | # Gatsby files 129 | .cache/ 130 | # Comment in the public line in if your project uses Gatsby and not Next.js 131 | # https://nextjs.org/blog/next-9-1#public-directory-support 132 | # public 133 | 134 | # vuepress build output 135 | .vuepress/dist 136 | 137 | # vuepress v2.x temp and cache directory 138 | .temp 139 | 140 | # Docusaurus cache and generated files 141 | .docusaurus 142 | 143 | # Serverless directories 144 | .serverless/ 145 | 146 | # FuseBox cache 147 | .fusebox/ 148 | 149 | # DynamoDB Local files 150 | .dynamodb/ 151 | 152 | # TernJS port file 153 | .tern-port 154 | 155 | # Stores VSCode versions used for testing VSCode extensions 156 | .vscode-test 157 | 158 | # yarn v2 159 | .yarn/cache 160 | .yarn/unplugged 161 | .yarn/build-state.yml 162 | .yarn/install-state.gz 163 | .pnp.* 164 | 165 | ### Node Patch ### 166 | # Serverless Webpack directories 167 | .webpack/ 168 | 169 | # Optional stylelint cache 170 | 171 | # SvelteKit build / generate output 172 | .svelte-kit 173 | 174 | ### react ### 175 | .DS_* 176 | **/*.backup.* 177 | **/*.back.* 178 | 179 | node_modules 180 | 181 | *.sublime* 182 | 183 | psd 184 | thumb 185 | sketch 186 | 187 | ### Rust ### 188 | # Generated by Cargo 189 | # will have compiled files and executables 190 | debug/ 191 | target/ 192 | 193 | # Remove Cargo.lock from gitignore if creating an executable, leave it for libraries 194 | # More information here https://doc.rust-lang.org/cargo/guide/cargo-toml-vs-cargo-lock.html 195 | Cargo.lock 196 | 197 | # These are backup files generated by rustfmt 198 | **/*.rs.bk 199 | 200 | # MSVC Windows builds of rustc generate these, which store debugging information 201 | *.pdb 202 | 203 | ### VisualStudioCode ### 204 | .vscode/* 205 | !.vscode/settings.json 206 | !.vscode/tasks.json 207 | !.vscode/launch.json 208 | !.vscode/extensions.json 209 | !.vscode/*.code-snippets 210 | 211 | # Local History for Visual Studio Code 212 | .history/ 213 | 214 | # Built Visual Studio Code Extensions 215 | *.vsix 216 | 217 | ### VisualStudioCode Patch ### 218 | # Ignore all local history of files 219 | .history 220 | .ionide 221 | 222 | # Support for Project snippet scope 223 | .vscode/*.code-snippets 224 | 225 | # Ignore code-workspaces 226 | *.code-workspace 227 | 228 | ### yarn ### 229 | # https://yarnpkg.com/getting-started/qa#which-files-should-be-gitignored 230 | 231 | .yarn/* 232 | !.yarn/releases 233 | !.yarn/patches 234 | !.yarn/plugins 235 | !.yarn/sdks 236 | !.yarn/versions 237 | 238 | # if you are NOT using Zero-installs, then: 239 | # comment the following lines 240 | !.yarn/cache 241 | 242 | # and uncomment the following lines 243 | # .pnp.* 244 | 245 | # End of https://www.toptal.com/developers/gitignore/api/visualstudiocode,macos,node,react,rust,yarn 246 | 247 | # Custom rules (everything added below won't be overriden by 'Generate .gitignore File' if you use 'Update' option) 248 | crates/frontend/src/types/gptTypes.ts 249 | crates/frontend/src/utils/gptUtils.ts -------------------------------------------------------------------------------- /LICENSE.txt: -------------------------------------------------------------------------------- 1 | Copyright 2023 Syntad 2 | 3 | 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: 4 | 5 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 6 | 7 | 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. -------------------------------------------------------------------------------- /README.MD: -------------------------------------------------------------------------------- 1 | ![Syntad App Logo](./assets/banner.png) 2 | 3 | Slight is a lightweight and blazingly fast launcher for developers to quickly search Stack-Overflow questions, and receive additional help from ChatGPT. ⚡ 4 | 5 | 🚧 Slight is in early development stages, bugs are expected. If you are interested in getting involved and making a positive impact on this exciting project, we welcome your participation. 6 | 7 | --- 8 | 9 | ## 📥 Downloading 10 | 11 | To download Slight, visit the [releases section](https://github.com/Syntad/slight/releases) of the project's repository on GitHub. There, you will find the latest version of the app available for download for all major OS versions. Simply click on the download link and follow the prompts to install the app on your computer. 12 | 13 | 📌 It's worth noting that the default shortcut for opening Slight on MAC is `CMD + K` and for Windows it's `CONTROL + SHIFT + K`, and this can be changed from the preferences section within the app. This allows you to customize the app to your specific needs and preferences, making it even more convenient and easy to use. 14 | 15 | ## 🛠 Upcoming Features 16 | 17 | - [ ] ChatGPT support 18 | - [ ] Git tooling 19 | - Notifications 20 | - Contributions 21 | - [ ] Theming 22 | 23 | If you have any suggestions, feel free to conact us. 24 | 25 | ## 🤝 Contributing 26 | 27 | To get Slight set up on your machine, you'll need to have Rust, smake, and yarn (or a package manager of your choice) installed. Then, follow these steps: 28 | 29 | Installs: 30 | 31 | - [Rust](https://www.rust-lang.org/tools/install) 32 | - [Smake](https://github.com/Syntad/smake) 33 | - [Yarn](https://classic.yarnpkg.com/lang/en/docs/install) 34 | 35 | Steps: 36 | 37 | 1. Clone the project using `git clone https://github.com/Syntad/slight.git` 38 | 2. Change into the project directory: `cd slight` 39 | 3. Setup project and install dependencies: `smake -i` 40 | 4. Run the development server: `smake -r` 41 | 42 | If you encounter any issues, try running `smake` after installing dependencies. 43 | 44 | ## 📝 License 45 | 46 | Slight is licensed under the MIT LICENSE. See the [LICENSE file](./LICENSE.txt) for more information. 47 | -------------------------------------------------------------------------------- /assets/banner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Syntad/slight/bcb4a13a60bb2ba6a636d2a9aba859994b5aae44/assets/banner.png -------------------------------------------------------------------------------- /crates/backend/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "devlight" 3 | version = "0.0.0" 4 | description = "A Tauri App" 5 | authors = ["you"] 6 | license = "" 7 | repository = "" 8 | edition = "2021" 9 | 10 | # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html 11 | 12 | [build-dependencies] 13 | tauri-build = { version = "1.2", features = [] } 14 | 15 | [dependencies] 16 | serde_json = "1.0" 17 | serde = { version = "1.0", features = ["derive"] } 18 | tauri = { version = "1.2", features = ["global-shortcut-all", "macos-private-api", "shell-open", "system-tray", "window-hide", "window-set-focus", "window-set-size", "window-set-skip-taskbar", "window-show"] } 19 | objc = "0.2.7" 20 | cocoa = "0.24.1" 21 | window-vibrancy = "0.3.2" 22 | just = "1.13.0" 23 | 24 | [features] 25 | # by default Tauri runs in production mode 26 | # when `tauri dev` runs it is executed with `cargo run --no-default-features` if `devPath` is an URL 27 | default = ["custom-protocol"] 28 | # this feature is used used for production builds where `devPath` points to the filesystem 29 | # DO NOT remove this 30 | custom-protocol = ["tauri/custom-protocol"] 31 | -------------------------------------------------------------------------------- /crates/backend/build.rs: -------------------------------------------------------------------------------- 1 | fn main() { 2 | tauri_build::build() 3 | } 4 | -------------------------------------------------------------------------------- /crates/backend/icons/128x128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Syntad/slight/bcb4a13a60bb2ba6a636d2a9aba859994b5aae44/crates/backend/icons/128x128.png -------------------------------------------------------------------------------- /crates/backend/icons/128x128@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Syntad/slight/bcb4a13a60bb2ba6a636d2a9aba859994b5aae44/crates/backend/icons/128x128@2x.png -------------------------------------------------------------------------------- /crates/backend/icons/32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Syntad/slight/bcb4a13a60bb2ba6a636d2a9aba859994b5aae44/crates/backend/icons/32x32.png -------------------------------------------------------------------------------- /crates/backend/icons/Square107x107Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Syntad/slight/bcb4a13a60bb2ba6a636d2a9aba859994b5aae44/crates/backend/icons/Square107x107Logo.png -------------------------------------------------------------------------------- /crates/backend/icons/Square142x142Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Syntad/slight/bcb4a13a60bb2ba6a636d2a9aba859994b5aae44/crates/backend/icons/Square142x142Logo.png -------------------------------------------------------------------------------- /crates/backend/icons/Square150x150Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Syntad/slight/bcb4a13a60bb2ba6a636d2a9aba859994b5aae44/crates/backend/icons/Square150x150Logo.png -------------------------------------------------------------------------------- /crates/backend/icons/Square284x284Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Syntad/slight/bcb4a13a60bb2ba6a636d2a9aba859994b5aae44/crates/backend/icons/Square284x284Logo.png -------------------------------------------------------------------------------- /crates/backend/icons/Square30x30Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Syntad/slight/bcb4a13a60bb2ba6a636d2a9aba859994b5aae44/crates/backend/icons/Square30x30Logo.png -------------------------------------------------------------------------------- /crates/backend/icons/Square310x310Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Syntad/slight/bcb4a13a60bb2ba6a636d2a9aba859994b5aae44/crates/backend/icons/Square310x310Logo.png -------------------------------------------------------------------------------- /crates/backend/icons/Square44x44Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Syntad/slight/bcb4a13a60bb2ba6a636d2a9aba859994b5aae44/crates/backend/icons/Square44x44Logo.png -------------------------------------------------------------------------------- /crates/backend/icons/Square71x71Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Syntad/slight/bcb4a13a60bb2ba6a636d2a9aba859994b5aae44/crates/backend/icons/Square71x71Logo.png -------------------------------------------------------------------------------- /crates/backend/icons/Square89x89Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Syntad/slight/bcb4a13a60bb2ba6a636d2a9aba859994b5aae44/crates/backend/icons/Square89x89Logo.png -------------------------------------------------------------------------------- /crates/backend/icons/StoreLogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Syntad/slight/bcb4a13a60bb2ba6a636d2a9aba859994b5aae44/crates/backend/icons/StoreLogo.png -------------------------------------------------------------------------------- /crates/backend/icons/icon.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Syntad/slight/bcb4a13a60bb2ba6a636d2a9aba859994b5aae44/crates/backend/icons/icon.icns -------------------------------------------------------------------------------- /crates/backend/icons/icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Syntad/slight/bcb4a13a60bb2ba6a636d2a9aba859994b5aae44/crates/backend/icons/icon.ico -------------------------------------------------------------------------------- /crates/backend/icons/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Syntad/slight/bcb4a13a60bb2ba6a636d2a9aba859994b5aae44/crates/backend/icons/icon.png -------------------------------------------------------------------------------- /crates/backend/icons/iconold.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Syntad/slight/bcb4a13a60bb2ba6a636d2a9aba859994b5aae44/crates/backend/icons/iconold.png -------------------------------------------------------------------------------- /crates/backend/src/main.rs: -------------------------------------------------------------------------------- 1 | #![cfg_attr( 2 | all(not(debug_assertions), target_os = "windows"), 3 | windows_subsystem = "windows" 4 | )] 5 | 6 | use spotlight::init_spotlight_window; 7 | use tauri::{ 8 | CustomMenuItem, Manager, SystemTray, SystemTrayMenu, SystemTrayMenuItem, SystemTrayEvent, Position, 9 | }; 10 | 11 | #[allow(unused_imports)] 12 | use window_vibrancy::{apply_vibrancy, NSVisualEffectMaterial}; 13 | 14 | mod spotlight; 15 | 16 | fn create_system_tray() -> SystemTray { 17 | let quit = CustomMenuItem::new("Quit".to_string(), "Quit"); 18 | let show = CustomMenuItem::new("Show".to_string(), "Show"); 19 | let hide = CustomMenuItem::new("Hide".to_string(), "Hide"); 20 | let preferences = CustomMenuItem::new("Preferences".to_string(), "Preferences"); 21 | let tray_menu = SystemTrayMenu::new() 22 | .add_item(show) 23 | .add_item(hide) 24 | .add_item(preferences) 25 | .add_native_item(SystemTrayMenuItem::Separator) 26 | .add_item(quit); 27 | SystemTray::new().with_menu(tray_menu) 28 | } 29 | 30 | fn main() { 31 | tauri::Builder::default() 32 | .setup(|app| { 33 | app.set_activation_policy(tauri::ActivationPolicy::Accessory); 34 | let window = app.get_window("main").unwrap(); 35 | 36 | #[cfg(target_os = "macos")] 37 | apply_vibrancy(&window, NSVisualEffectMaterial::HudWindow, None, Some(10.0)) 38 | .expect("Unsupported platform! 'apply_vibrancy' is only supported on macOS"); 39 | 40 | init_spotlight_window(window); 41 | Ok(()) 42 | }) 43 | .on_system_tray_event(|app, event| match event { 44 | SystemTrayEvent::MenuItemClick { id, .. } => match id.as_str() { 45 | "Hide" => { 46 | let window = app.get_window("main").unwrap(); 47 | window.hide().unwrap(); 48 | } 49 | "Show" => { 50 | let window = app.get_window("main").unwrap(); 51 | window.show().unwrap(); 52 | } 53 | "Preferences" => { 54 | let window = app.get_window("main").unwrap(); 55 | window.emit("PreferencesClicked", Some("Yes")).unwrap(); 56 | window.show().unwrap(); 57 | } 58 | "Quit" => { 59 | std::process::exit(0); 60 | } 61 | _ => {} 62 | }, 63 | _ => {} 64 | }) 65 | .system_tray(create_system_tray()) 66 | .run(tauri::generate_context!()) 67 | .expect("error while running tauri application"); 68 | } 69 | -------------------------------------------------------------------------------- /crates/backend/src/spotlight.rs: -------------------------------------------------------------------------------- 1 | use std::ffi::{c_char, CStr}; 2 | 3 | use cocoa::{ 4 | appkit::{CGFloat, NSMainMenuWindowLevel, NSWindow, NSWindowCollectionBehavior}, 5 | base::{id, nil, BOOL, NO, YES}, 6 | foundation::{NSPoint, NSRect}, 7 | }; 8 | use objc::{class, msg_send, sel, sel_impl}; 9 | use tauri::{ 10 | GlobalShortcutManager, Manager, PhysicalPosition, PhysicalSize, Window, WindowEvent, Wry, 11 | }; 12 | 13 | pub fn init_spotlight_window(window: Window) { 14 | register_shortcut(&window); 15 | register_spotlight_window_backdrop(&window); 16 | set_spotlight_window_collection_behaviour(&window); 17 | set_window_above_menubar(&window); 18 | // window.set_focus().unwrap(); 19 | position_window_at_the_center_of_the_monitor_with_cursor(&window); 20 | 21 | window.hide().unwrap(); 22 | } 23 | 24 | fn register_shortcut(window: &Window) { 25 | let window = window.to_owned(); 26 | let mut shortcut_manager = window.app_handle().global_shortcut_manager(); 27 | shortcut_manager.register("Cmd+k", move || { 28 | if window.is_visible().unwrap() { 29 | window.hide().unwrap(); 30 | } else { 31 | window.set_focus().unwrap(); 32 | } 33 | }); 34 | } 35 | 36 | fn register_spotlight_window_backdrop(window: &Window) { 37 | let w = window.to_owned(); 38 | window.on_window_event(move |event| { 39 | if let WindowEvent::Focused(false) = event { 40 | w.hide().unwrap(); 41 | } 42 | }); 43 | } 44 | 45 | /// Positions a given window at the center of the monitor with cursor 46 | fn position_window_at_the_center_of_the_monitor_with_cursor(window: &Window) { 47 | if let Some(monitor) = get_monitor_with_cursor() { 48 | let display_size = monitor.size.to_logical::(monitor.scale_factor); 49 | let display_pos = monitor.position.to_logical::(monitor.scale_factor); 50 | 51 | let handle: id = window.ns_window().unwrap() as _; 52 | let win_frame: NSRect = unsafe { handle.frame() }; 53 | let rect = NSRect { 54 | origin: NSPoint { 55 | x: (display_pos.x + (display_size.width / 2.0)) - (win_frame.size.width / 2.0), 56 | y: (display_pos.y + (display_size.height / 1.35)) - (win_frame.size.height / 2.0), 57 | }, 58 | size: win_frame.size, 59 | }; 60 | let _: () = unsafe { msg_send![handle, setFrame: rect display: YES] }; 61 | } 62 | } 63 | 64 | /// Set the behaviours that makes the window appear on all worksapces 65 | fn set_spotlight_window_collection_behaviour(window: &Window) { 66 | let handle: id = window.ns_window().unwrap() as _; 67 | unsafe { 68 | handle.setCollectionBehavior_( 69 | NSWindowCollectionBehavior::NSWindowCollectionBehaviorCanJoinAllSpaces 70 | | NSWindowCollectionBehavior::NSWindowCollectionBehaviorStationary 71 | | NSWindowCollectionBehavior::NSWindowCollectionBehaviorFullScreenPrimary 72 | | NSWindowCollectionBehavior::NSWindowCollectionBehaviorIgnoresCycle, 73 | ); 74 | }; 75 | } 76 | 77 | /// Set the window above menubar level 78 | fn set_window_above_menubar(window: &Window) { 79 | let handle: id = window.ns_window().unwrap() as _; 80 | unsafe { handle.setLevel_((NSMainMenuWindowLevel + 2).into()) }; 81 | } 82 | 83 | struct Monitor { 84 | #[allow(dead_code)] 85 | pub name: Option, 86 | pub size: PhysicalSize, 87 | pub position: PhysicalPosition, 88 | pub scale_factor: f64, 89 | } 90 | 91 | #[link(name = "Foundation", kind = "framework")] 92 | extern "C" { 93 | pub fn NSMouseInRect(aPoint: NSPoint, aRect: NSRect, flipped: BOOL) -> BOOL; 94 | } 95 | 96 | /// Returns the Monitor with cursor 97 | fn get_monitor_with_cursor() -> Option { 98 | objc::rc::autoreleasepool(|| { 99 | let mouse_location: NSPoint = unsafe { msg_send![class!(NSEvent), mouseLocation] }; 100 | let screens: id = unsafe { msg_send![class!(NSScreen), screens] }; 101 | let screens_iter: id = unsafe { msg_send![screens, objectEnumerator] }; 102 | let mut next_screen: id; 103 | 104 | let frame_with_cursor: Option = loop { 105 | next_screen = unsafe { msg_send![screens_iter, nextObject] }; 106 | if next_screen == nil { 107 | break None; 108 | } 109 | 110 | let frame: NSRect = unsafe { msg_send![next_screen, frame] }; 111 | let is_mouse_in_screen_frame: BOOL = 112 | unsafe { NSMouseInRect(mouse_location, frame, NO) }; 113 | if is_mouse_in_screen_frame == YES { 114 | break Some(frame); 115 | } 116 | }; 117 | 118 | if let Some(frame) = frame_with_cursor { 119 | let screen_name = nsstring_to_string(unsafe { msg_send![next_screen, localizedName] }); 120 | let scale_factor: CGFloat = unsafe { msg_send![next_screen, backingScaleFactor] }; 121 | let scale_factor: f64 = scale_factor; 122 | 123 | return Some(Monitor { 124 | name: screen_name, 125 | position: PhysicalPosition { 126 | x: (frame.origin.x * scale_factor) as i32, 127 | y: (frame.origin.y * scale_factor) as i32, 128 | }, 129 | size: PhysicalSize { 130 | width: (frame.size.width * scale_factor) as u32, 131 | height: (frame.size.height * scale_factor) as u32, 132 | }, 133 | scale_factor, 134 | }); 135 | } 136 | 137 | None 138 | }) 139 | } 140 | 141 | /// Converts NSString to Rust String 142 | fn nsstring_to_string(ns_string: id) -> Option { 143 | let utf8: id = unsafe { msg_send![ns_string, UTF8String] }; 144 | if !utf8.is_null() { 145 | Some(unsafe { 146 | { 147 | CStr::from_ptr(utf8 as *const c_char) 148 | .to_string_lossy() 149 | .into_owned() 150 | } 151 | }) 152 | } else { 153 | None 154 | } 155 | } 156 | -------------------------------------------------------------------------------- /crates/backend/tauri.conf.json: -------------------------------------------------------------------------------- 1 | { 2 | "build": { 3 | "beforeDevCommand": "cd frontend && pnpm dev", 4 | "beforeBuildCommand": "cd frontend && pnpm build", 5 | "devPath": "http://localhost:1420", 6 | "distDir": "../frontend/dist", 7 | "withGlobalTauri": false 8 | }, 9 | "package": { 10 | "productName": "slight", 11 | "version": "0.0.0" 12 | }, 13 | "tauri": { 14 | "systemTray": { 15 | "iconPath": "icons/icon.png", 16 | "iconAsTemplate": true 17 | }, 18 | "allowlist": { 19 | "all": false, 20 | "shell": { 21 | "all": false, 22 | "open": true 23 | }, 24 | "window": { 25 | "show": true, 26 | "hide": true, 27 | "setFocus": true, 28 | "setSize": true, 29 | "setSkipTaskbar": true 30 | }, 31 | "globalShortcut": { 32 | "all": true 33 | } 34 | }, 35 | "bundle": { 36 | "active": true, 37 | "category": "DeveloperTool", 38 | "copyright": "", 39 | "deb": { 40 | "depends": [] 41 | }, 42 | "externalBin": [], 43 | "icon": [ 44 | "icons/32x32.png", 45 | "icons/128x128.png", 46 | "icons/128x128@2x.png", 47 | "icons/icon.icns", 48 | "icons/icon.ico" 49 | ], 50 | "identifier": "com.syntad.slight", 51 | "longDescription": "", 52 | "macOS": { 53 | "entitlements": null, 54 | "exceptionDomain": "", 55 | "frameworks": [], 56 | "providerShortName": null, 57 | "signingIdentity": null 58 | }, 59 | "resources": [], 60 | "shortDescription": "", 61 | "targets": "all", 62 | "windows": { 63 | "certificateThumbprint": null, 64 | "digestAlgorithm": "sha256", 65 | "timestampUrl": "" 66 | } 67 | }, 68 | "security": { 69 | "csp": null 70 | }, 71 | "updater": { 72 | "active": false 73 | }, 74 | "windows": [ 75 | { 76 | "fullscreen": false, 77 | "title": "tauri-macos-spotlight-app", 78 | "width": 600, 79 | "height": 100, 80 | "resizable": false, 81 | "decorations": false, 82 | "alwaysOnTop": true, 83 | "visible": false, 84 | "transparent": true 85 | } 86 | ], 87 | "macOSPrivateApi": true 88 | } 89 | } 90 | -------------------------------------------------------------------------------- /crates/frontend/.prettierignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | dist -------------------------------------------------------------------------------- /crates/frontend/.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "trailingComma": "es5", 3 | "tabWidth": 4, 4 | "arrowParens": "always", 5 | "bracketSpacing": true, 6 | "endOfLine": "lf", 7 | "printWidth": 80, 8 | "singleQuote": true, 9 | "semi": true, 10 | "svelteSortOrder": "scripts-markup-styles", 11 | "svelteStrictMode": true, 12 | "svelteBracketNewLine": false, 13 | "svelteAllowShorthand": false 14 | } 15 | -------------------------------------------------------------------------------- /crates/frontend/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Tauri + Svelte + TS 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /crates/frontend/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "slight", 3 | "private": true, 4 | "version": "0.0.0", 5 | "type": "module", 6 | "scripts": { 7 | "dev": "vite", 8 | "build": "vite build", 9 | "preview": "vite preview", 10 | "check": "svelte-check --tsconfig ./tsconfig.json", 11 | "tauri": "tauri" 12 | }, 13 | "dependencies": { 14 | "@tauri-apps/api": "^1.2.0", 15 | "classnames": "^2.3.2", 16 | "lodash": "^4.17.21" 17 | }, 18 | "devDependencies": { 19 | "@sveltejs/vite-plugin-svelte": "^2.0.0", 20 | "@tauri-apps/cli": "^1.2.2", 21 | "@tsconfig/svelte": "^3.0.0", 22 | "@types/node": "^18.7.10", 23 | "autoprefixer": "^10.4.13", 24 | "postcss": "^8.4.21", 25 | "postcss-load-config": "^4.0.1", 26 | "prettier": "^2.8.4", 27 | "prettier-plugin-svelte": "^2.9.0", 28 | "prettier-plugin-tailwindcss": "^0.2.2", 29 | "svelte": "^3.54.0", 30 | "svelte-check": "^3.0.0", 31 | "svelte-preprocess": "^4.10.7", 32 | "tailwindcss": "^3.2.6", 33 | "tslib": "^2.4.1", 34 | "typescript": "^4.6.4", 35 | "vite": "^4.0.0" 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /crates/frontend/postcss.config.cjs: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | tailwindcss: {}, 4 | autoprefixer: {}, 5 | }, 6 | }; 7 | -------------------------------------------------------------------------------- /crates/frontend/public/imgs/avatar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Syntad/slight/bcb4a13a60bb2ba6a636d2a9aba859994b5aae44/crates/frontend/public/imgs/avatar.png -------------------------------------------------------------------------------- /crates/frontend/public/imgs/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Syntad/slight/bcb4a13a60bb2ba6a636d2a9aba859994b5aae44/crates/frontend/public/imgs/logo.png -------------------------------------------------------------------------------- /crates/frontend/public/imgs/logo.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /crates/frontend/src/App.svelte: -------------------------------------------------------------------------------- 1 | 6 | 7 |
8 |
9 | 10 | 11 |
12 | 13 |
14 |
15 | -------------------------------------------------------------------------------- /crates/frontend/src/components/Footer.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 |
7 |
8 | 9 |
10 | 11 | 16 | 17 | STACK 20 | 21 |
22 | -------------------------------------------------------------------------------- /crates/frontend/src/components/Result.svelte: -------------------------------------------------------------------------------- 1 | 25 | 26 |
27 |
29 | 39 | 40 | 47 |
48 | 49 |
51 |
52 |

56 | {unescapeHTML(item.title)} 57 |

58 | 59 |
60 | {#each item.tags as tag} 61 | {tag} 65 | {/each} 66 |
67 |
68 | 69 | {#if item.accepted_answer_id !== undefined} 70 | 79 | 84 | 85 | {/if} 86 |
87 |
88 | -------------------------------------------------------------------------------- /crates/frontend/src/components/SearchBar.svelte: -------------------------------------------------------------------------------- 1 | 64 | 65 |
72 | 80 |
81 | 82 | {#if isLoading} 83 |
84 |
85 | 98 | Loading... 99 |
100 |
101 | {/if} 102 | 103 | {#if !isLoading && !isNullOrWhitespace(query) && query.length > 0 && $results.length <= 0} 104 |

No Results.

105 | {/if} 106 | -------------------------------------------------------------------------------- /crates/frontend/src/components/SearchResults.svelte: -------------------------------------------------------------------------------- 1 | 6 | 7 |
10 | {#each $results as result} 11 | 12 | {/each} 13 |
14 | -------------------------------------------------------------------------------- /crates/frontend/src/components/Tag.svelte: -------------------------------------------------------------------------------- 1 | 7 | 8 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /crates/frontend/src/main.ts: -------------------------------------------------------------------------------- 1 | import './style.css'; 2 | import App from './App.svelte'; 3 | 4 | import { appWindow } from '@tauri-apps/api/window'; 5 | 6 | (async () => { 7 | // get and set values 8 | document.addEventListener('keydown', (event) => { 9 | if (event.key === 'Escape') { 10 | appWindow.hide(); 11 | } 12 | }); 13 | })(); 14 | 15 | const app = new App({ 16 | target: document.getElementById('app'), 17 | }); 18 | 19 | export default app; 20 | -------------------------------------------------------------------------------- /crates/frontend/src/stores/globalStore.ts: -------------------------------------------------------------------------------- 1 | import { MODE } from '@/types/globalTypes'; 2 | import { writable } from 'svelte/store'; 3 | 4 | export const mode = writable(MODE.STACK); 5 | -------------------------------------------------------------------------------- /crates/frontend/src/stores/stackflowStore.ts: -------------------------------------------------------------------------------- 1 | import type { Item } from '../types/stackflowTypes'; 2 | import { writable, type Writable } from 'svelte/store'; 3 | 4 | export const results: Writable = writable([]); 5 | -------------------------------------------------------------------------------- /crates/frontend/src/style.css: -------------------------------------------------------------------------------- 1 | @tailwind base; 2 | @tailwind components; 3 | @tailwind utilities; 4 | 5 | :root { 6 | font-family: Inter, Avenir, Helvetica, Arial, sans-serif; 7 | font-synthesis: none; 8 | text-rendering: optimizeLegibility; 9 | -webkit-font-smoothing: antialiased; 10 | -moz-osx-font-smoothing: grayscale; 11 | -webkit-text-size-adjust: 100%; 12 | 13 | @apply text-gray-200; 14 | } 15 | 16 | *, 17 | *:before, 18 | *:after { 19 | box-sizing: border-box; 20 | } 21 | 22 | html, 23 | body, 24 | #app { 25 | width: 100%; 26 | height: 100%; 27 | overflow: hidden; 28 | } 29 | 30 | body { 31 | padding: 0; 32 | margin: 0; 33 | } 34 | 35 | input:focus { 36 | outline: none; 37 | } 38 | -------------------------------------------------------------------------------- /crates/frontend/src/types/globalTypes.ts: -------------------------------------------------------------------------------- 1 | export enum MODE { 2 | STACK, 3 | GPT, 4 | } 5 | -------------------------------------------------------------------------------- /crates/frontend/src/types/stackflowTypes.ts: -------------------------------------------------------------------------------- 1 | export interface Result { 2 | items: Item[]; 3 | has_more: boolean; 4 | quota_max: number; 5 | quota_remaining: number; 6 | } 7 | 8 | export interface Item { 9 | tags: string[]; 10 | owner: Owner; 11 | is_answered: boolean; 12 | view_count: number; 13 | answer_count: number; 14 | score: number; 15 | last_activity_date: number; 16 | creation_date: number; 17 | question_id: number; 18 | content_license?: 'CC BY-SA 3.0' | 'CC BY-SA 4.0'; 19 | link: string; 20 | title: string; 21 | accepted_answer_id?: number; 22 | last_edit_date?: number; 23 | closed_date?: number; 24 | closed_reason?: string; 25 | } 26 | 27 | export interface Owner { 28 | account_id?: number; 29 | reputation?: number; 30 | user_id?: number; 31 | user_type: 'registered' | 'does_not_exist'; 32 | profile_image?: string; 33 | display_name: string; 34 | link?: string; 35 | accept_rate?: number; 36 | } 37 | -------------------------------------------------------------------------------- /crates/frontend/src/utils/stackflowUtils.ts: -------------------------------------------------------------------------------- 1 | import type { Item, Result } from '@/types/stackflowTypes'; 2 | import unescape from 'lodash/unescape'; 3 | 4 | const URL = 5 | 'https://api.stackexchange.com/2.3/search/advanced?order=desc&site=stackoverflow&sort=relevance&q='; 6 | 7 | export async function search(searchTerm: string): Promise { 8 | if (searchTerm === '') return []; 9 | 10 | try { 11 | return ( 12 | (await (await fetch(URL + encodeURI(searchTerm))).json()) as Result 13 | ).items; 14 | } catch (err) { 15 | return []; 16 | } 17 | } 18 | 19 | export function unescapeHTML(text: string): string { 20 | return unescape(text[0].toUpperCase() + text.slice(1)); 21 | } 22 | -------------------------------------------------------------------------------- /crates/frontend/src/vite-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | -------------------------------------------------------------------------------- /crates/frontend/svelte.config.js: -------------------------------------------------------------------------------- 1 | import preprocess from 'svelte-preprocess'; 2 | 3 | const config = { 4 | preprocess: [ 5 | preprocess({ 6 | postcss: true, 7 | }), 8 | ], 9 | }; 10 | 11 | export default config; 12 | -------------------------------------------------------------------------------- /crates/frontend/tailwind.config.cjs: -------------------------------------------------------------------------------- 1 | const config = { 2 | content: ['./src/**/*.{html,js,svelte,ts}'], 3 | 4 | theme: { 5 | extend: { 6 | colors: { 7 | gray: { 8 | 0: '#fff', 9 | 100: '#fafafa', 10 | 200: '#eaeaea', 11 | 300: '#999999', 12 | 400: '#888888', 13 | 500: '#666666', 14 | 600: '#444444', 15 | 700: '#333333', 16 | 800: '#222222', 17 | 900: '#111111', 18 | }, 19 | }, 20 | }, 21 | }, 22 | 23 | plugins: [], 24 | }; 25 | 26 | module.exports = config; 27 | -------------------------------------------------------------------------------- /crates/frontend/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@tsconfig/svelte/tsconfig.json", 3 | "compilerOptions": { 4 | "target": "ESNext", 5 | "useDefineForClassFields": true, 6 | "module": "ESNext", 7 | "resolveJsonModule": true, 8 | "baseUrl": ".", 9 | "paths": { 10 | "@/*": ["src/*"] 11 | }, 12 | /** 13 | * Typecheck JS in `.svelte` and `.js` files by default. 14 | * Disable checkJs if you'd like to use dynamic types in JS. 15 | * Note that setting allowJs false does not prevent the use 16 | * of JS in `.svelte` files. 17 | */ 18 | "allowJs": true, 19 | "checkJs": true, 20 | "isolatedModules": true 21 | }, 22 | "include": [ 23 | "src/**/*.d.ts", 24 | "src/**/*.ts", 25 | "src/**/*.js", 26 | "src/**/*.svelte" 27 | ], 28 | "references": [{ "path": "./tsconfig.node.json" }] 29 | } 30 | -------------------------------------------------------------------------------- /crates/frontend/tsconfig.node.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "composite": true, 4 | "module": "ESNext", 5 | "moduleResolution": "Node" 6 | }, 7 | "include": ["vite.config.ts"] 8 | } 9 | -------------------------------------------------------------------------------- /crates/frontend/vite.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite'; 2 | import { svelte } from '@sveltejs/vite-plugin-svelte'; 3 | import sveltePreprocess from 'svelte-preprocess'; 4 | import * as path from 'path'; 5 | 6 | // https://vitejs.dev/config/ 7 | export default defineConfig({ 8 | resolve: { 9 | alias: { 10 | '@': path.resolve('src/'), 11 | }, 12 | }, 13 | 14 | plugins: [ 15 | svelte({ 16 | preprocess: [ 17 | sveltePreprocess({ 18 | typescript: true, 19 | }), 20 | ], 21 | }), 22 | ], 23 | 24 | // Vite options tailored for Tauri development and only applied in `tauri dev` or `tauri build` 25 | // prevent vite from obscuring rust errors 26 | clearScreen: false, 27 | // tauri expects a fixed port, fail if that port is not available 28 | server: { 29 | port: 1420, 30 | strictPort: true, 31 | }, 32 | // to make use of `TAURI_DEBUG` and other env variables 33 | // https://tauri.studio/v1/api/config#buildconfig.beforedevcommand 34 | envPrefix: ['VITE_', 'TAURI_'], 35 | build: { 36 | // Tauri supports es2021 37 | target: 38 | process.env.TAURI_PLATFORM == 'windows' ? 'chrome105' : 'safari13', 39 | // don't minify for debug builds 40 | minify: !process.env.TAURI_DEBUG ? 'esbuild' : false, 41 | // produce sourcemaps for debug builds 42 | sourcemap: !!process.env.TAURI_DEBUG, 43 | }, 44 | }); 45 | -------------------------------------------------------------------------------- /crates/frontend/yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@esbuild/android-arm64@0.16.17": 6 | version "0.16.17" 7 | resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.16.17.tgz#cf91e86df127aa3d141744edafcba0abdc577d23" 8 | integrity sha512-MIGl6p5sc3RDTLLkYL1MyL8BMRN4tLMRCn+yRJJmEDvYZ2M7tmAf80hx1kbNEUX2KJ50RRtxZ4JHLvCfuB6kBg== 9 | 10 | "@esbuild/android-arm@0.16.17": 11 | version "0.16.17" 12 | resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.16.17.tgz#025b6246d3f68b7bbaa97069144fb5fb70f2fff2" 13 | integrity sha512-N9x1CMXVhtWEAMS7pNNONyA14f71VPQN9Cnavj1XQh6T7bskqiLLrSca4O0Vr8Wdcga943eThxnVp3JLnBMYtw== 14 | 15 | "@esbuild/android-x64@0.16.17": 16 | version "0.16.17" 17 | resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.16.17.tgz#c820e0fef982f99a85c4b8bfdd582835f04cd96e" 18 | integrity sha512-a3kTv3m0Ghh4z1DaFEuEDfz3OLONKuFvI4Xqczqx4BqLyuFaFkuaG4j2MtA6fuWEFeC5x9IvqnX7drmRq/fyAQ== 19 | 20 | "@esbuild/darwin-arm64@0.16.17": 21 | version "0.16.17" 22 | resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.16.17.tgz#edef4487af6b21afabba7be5132c26d22379b220" 23 | integrity sha512-/2agbUEfmxWHi9ARTX6OQ/KgXnOWfsNlTeLcoV7HSuSTv63E4DqtAc+2XqGw1KHxKMHGZgbVCZge7HXWX9Vn+w== 24 | 25 | "@esbuild/darwin-x64@0.16.17": 26 | version "0.16.17" 27 | resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.16.17.tgz#42829168730071c41ef0d028d8319eea0e2904b4" 28 | integrity sha512-2By45OBHulkd9Svy5IOCZt376Aa2oOkiE9QWUK9fe6Tb+WDr8hXL3dpqi+DeLiMed8tVXspzsTAvd0jUl96wmg== 29 | 30 | "@esbuild/freebsd-arm64@0.16.17": 31 | version "0.16.17" 32 | resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.16.17.tgz#1f4af488bfc7e9ced04207034d398e793b570a27" 33 | integrity sha512-mt+cxZe1tVx489VTb4mBAOo2aKSnJ33L9fr25JXpqQqzbUIw/yzIzi+NHwAXK2qYV1lEFp4OoVeThGjUbmWmdw== 34 | 35 | "@esbuild/freebsd-x64@0.16.17": 36 | version "0.16.17" 37 | resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.16.17.tgz#636306f19e9bc981e06aa1d777302dad8fddaf72" 38 | integrity sha512-8ScTdNJl5idAKjH8zGAsN7RuWcyHG3BAvMNpKOBaqqR7EbUhhVHOqXRdL7oZvz8WNHL2pr5+eIT5c65kA6NHug== 39 | 40 | "@esbuild/linux-arm64@0.16.17": 41 | version "0.16.17" 42 | resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.16.17.tgz#a003f7ff237c501e095d4f3a09e58fc7b25a4aca" 43 | integrity sha512-7S8gJnSlqKGVJunnMCrXHU9Q8Q/tQIxk/xL8BqAP64wchPCTzuM6W3Ra8cIa1HIflAvDnNOt2jaL17vaW+1V0g== 44 | 45 | "@esbuild/linux-arm@0.16.17": 46 | version "0.16.17" 47 | resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.16.17.tgz#b591e6a59d9c4fe0eeadd4874b157ab78cf5f196" 48 | integrity sha512-iihzrWbD4gIT7j3caMzKb/RsFFHCwqqbrbH9SqUSRrdXkXaygSZCZg1FybsZz57Ju7N/SHEgPyaR0LZ8Zbe9gQ== 49 | 50 | "@esbuild/linux-ia32@0.16.17": 51 | version "0.16.17" 52 | resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.16.17.tgz#24333a11027ef46a18f57019450a5188918e2a54" 53 | integrity sha512-kiX69+wcPAdgl3Lonh1VI7MBr16nktEvOfViszBSxygRQqSpzv7BffMKRPMFwzeJGPxcio0pdD3kYQGpqQ2SSg== 54 | 55 | "@esbuild/linux-loong64@0.16.17": 56 | version "0.16.17" 57 | resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.16.17.tgz#d5ad459d41ed42bbd4d005256b31882ec52227d8" 58 | integrity sha512-dTzNnQwembNDhd654cA4QhbS9uDdXC3TKqMJjgOWsC0yNCbpzfWoXdZvp0mY7HU6nzk5E0zpRGGx3qoQg8T2DQ== 59 | 60 | "@esbuild/linux-mips64el@0.16.17": 61 | version "0.16.17" 62 | resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.16.17.tgz#4e5967a665c38360b0a8205594377d4dcf9c3726" 63 | integrity sha512-ezbDkp2nDl0PfIUn0CsQ30kxfcLTlcx4Foz2kYv8qdC6ia2oX5Q3E/8m6lq84Dj/6b0FrkgD582fJMIfHhJfSw== 64 | 65 | "@esbuild/linux-ppc64@0.16.17": 66 | version "0.16.17" 67 | resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.16.17.tgz#206443a02eb568f9fdf0b438fbd47d26e735afc8" 68 | integrity sha512-dzS678gYD1lJsW73zrFhDApLVdM3cUF2MvAa1D8K8KtcSKdLBPP4zZSLy6LFZ0jYqQdQ29bjAHJDgz0rVbLB3g== 69 | 70 | "@esbuild/linux-riscv64@0.16.17": 71 | version "0.16.17" 72 | resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.16.17.tgz#c351e433d009bf256e798ad048152c8d76da2fc9" 73 | integrity sha512-ylNlVsxuFjZK8DQtNUwiMskh6nT0vI7kYl/4fZgV1llP5d6+HIeL/vmmm3jpuoo8+NuXjQVZxmKuhDApK0/cKw== 74 | 75 | "@esbuild/linux-s390x@0.16.17": 76 | version "0.16.17" 77 | resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.16.17.tgz#661f271e5d59615b84b6801d1c2123ad13d9bd87" 78 | integrity sha512-gzy7nUTO4UA4oZ2wAMXPNBGTzZFP7mss3aKR2hH+/4UUkCOyqmjXiKpzGrY2TlEUhbbejzXVKKGazYcQTZWA/w== 79 | 80 | "@esbuild/linux-x64@0.16.17": 81 | version "0.16.17" 82 | resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.16.17.tgz#e4ba18e8b149a89c982351443a377c723762b85f" 83 | integrity sha512-mdPjPxfnmoqhgpiEArqi4egmBAMYvaObgn4poorpUaqmvzzbvqbowRllQ+ZgzGVMGKaPkqUmPDOOFQRUFDmeUw== 84 | 85 | "@esbuild/netbsd-x64@0.16.17": 86 | version "0.16.17" 87 | resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.16.17.tgz#7d4f4041e30c5c07dd24ffa295c73f06038ec775" 88 | integrity sha512-/PzmzD/zyAeTUsduZa32bn0ORug+Jd1EGGAUJvqfeixoEISYpGnAezN6lnJoskauoai0Jrs+XSyvDhppCPoKOA== 89 | 90 | "@esbuild/openbsd-x64@0.16.17": 91 | version "0.16.17" 92 | resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.16.17.tgz#970fa7f8470681f3e6b1db0cc421a4af8060ec35" 93 | integrity sha512-2yaWJhvxGEz2RiftSk0UObqJa/b+rIAjnODJgv2GbGGpRwAfpgzyrg1WLK8rqA24mfZa9GvpjLcBBg8JHkoodg== 94 | 95 | "@esbuild/sunos-x64@0.16.17": 96 | version "0.16.17" 97 | resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.16.17.tgz#abc60e7c4abf8b89fb7a4fe69a1484132238022c" 98 | integrity sha512-xtVUiev38tN0R3g8VhRfN7Zl42YCJvyBhRKw1RJjwE1d2emWTVToPLNEQj/5Qxc6lVFATDiy6LjVHYhIPrLxzw== 99 | 100 | "@esbuild/win32-arm64@0.16.17": 101 | version "0.16.17" 102 | resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.16.17.tgz#7b0ff9e8c3265537a7a7b1fd9a24e7bd39fcd87a" 103 | integrity sha512-ga8+JqBDHY4b6fQAmOgtJJue36scANy4l/rL97W+0wYmijhxKetzZdKOJI7olaBaMhWt8Pac2McJdZLxXWUEQw== 104 | 105 | "@esbuild/win32-ia32@0.16.17": 106 | version "0.16.17" 107 | resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.16.17.tgz#e90fe5267d71a7b7567afdc403dfd198c292eb09" 108 | integrity sha512-WnsKaf46uSSF/sZhwnqE4L/F89AYNMiD4YtEcYekBt9Q7nj0DiId2XH2Ng2PHM54qi5oPrQ8luuzGszqi/veig== 109 | 110 | "@esbuild/win32-x64@0.16.17": 111 | version "0.16.17" 112 | resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.16.17.tgz#c5a1a4bfe1b57f0c3e61b29883525c6da3e5c091" 113 | integrity sha512-y+EHuSchhL7FjHgvQL/0fnnFmO4T1bhvWANX6gcnqTjtnKWbTvUMCpGnv2+t+31d7RzyEAYAd4u2fnIhHL6N/Q== 114 | 115 | "@jridgewell/resolve-uri@3.1.0": 116 | version "3.1.0" 117 | resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78" 118 | integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== 119 | 120 | "@jridgewell/sourcemap-codec@1.4.14", "@jridgewell/sourcemap-codec@^1.4.13", "@jridgewell/sourcemap-codec@^1.4.14": 121 | version "1.4.14" 122 | resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" 123 | integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== 124 | 125 | "@jridgewell/trace-mapping@^0.3.17": 126 | version "0.3.17" 127 | resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz#793041277af9073b0951a7fe0f0d8c4c98c36985" 128 | integrity sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g== 129 | dependencies: 130 | "@jridgewell/resolve-uri" "3.1.0" 131 | "@jridgewell/sourcemap-codec" "1.4.14" 132 | 133 | "@nodelib/fs.scandir@2.1.5": 134 | version "2.1.5" 135 | resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" 136 | integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== 137 | dependencies: 138 | "@nodelib/fs.stat" "2.0.5" 139 | run-parallel "^1.1.9" 140 | 141 | "@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": 142 | version "2.0.5" 143 | resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" 144 | integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== 145 | 146 | "@nodelib/fs.walk@^1.2.3": 147 | version "1.2.8" 148 | resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" 149 | integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== 150 | dependencies: 151 | "@nodelib/fs.scandir" "2.1.5" 152 | fastq "^1.6.0" 153 | 154 | "@sveltejs/vite-plugin-svelte@^2.0.0": 155 | version "2.0.2" 156 | resolved "https://registry.yarnpkg.com/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-2.0.2.tgz#943090239a31b2e0546837ff7649b73aeb46614c" 157 | integrity sha512-xCEan0/NNpQuL0l5aS42FjwQ6wwskdxC3pW1OeFtEKNZwRg7Evro9lac9HesGP6TdFsTv2xMes5ASQVKbCacxg== 158 | dependencies: 159 | debug "^4.3.4" 160 | deepmerge "^4.2.2" 161 | kleur "^4.1.5" 162 | magic-string "^0.27.0" 163 | svelte-hmr "^0.15.1" 164 | vitefu "^0.2.3" 165 | 166 | "@tauri-apps/api@^1.2.0": 167 | version "1.2.0" 168 | resolved "https://registry.yarnpkg.com/@tauri-apps/api/-/api-1.2.0.tgz#1f196b3e012971227f41b98214c846430a4eb477" 169 | integrity sha512-lsI54KI6HGf7VImuf/T9pnoejfgkNoXveP14pVV7XarrQ46rOejIVJLFqHI9sRReJMGdh2YuCoI3cc/yCWCsrw== 170 | 171 | "@tauri-apps/cli-darwin-arm64@1.2.3": 172 | version "1.2.3" 173 | resolved "https://registry.yarnpkg.com/@tauri-apps/cli-darwin-arm64/-/cli-darwin-arm64-1.2.3.tgz#dae9142e683c00199f4d7e088f22b564b08b9cac" 174 | integrity sha512-phJN3fN8FtZZwqXg08bcxfq1+X1JSDglLvRxOxB7VWPq+O5SuB8uLyssjJsu+PIhyZZnIhTGdjhzLSFhSXfLsw== 175 | 176 | "@tauri-apps/cli-darwin-x64@1.2.3": 177 | version "1.2.3" 178 | resolved "https://registry.yarnpkg.com/@tauri-apps/cli-darwin-x64/-/cli-darwin-x64-1.2.3.tgz#c6f84a11a1a7800e3e8e22c8fa5b95d0b3d1f802" 179 | integrity sha512-jFZ/y6z8z6v4yliIbXKBXA7BJgtZVMsITmEXSuD6s5+eCOpDhQxbRkr6CA+FFfr+/r96rWSDSgDenDQuSvPAKw== 180 | 181 | "@tauri-apps/cli-linux-arm-gnueabihf@1.2.3": 182 | version "1.2.3" 183 | resolved "https://registry.yarnpkg.com/@tauri-apps/cli-linux-arm-gnueabihf/-/cli-linux-arm-gnueabihf-1.2.3.tgz#ecccec4c255ab32903fb36e1c746ed7b4eff0d1d" 184 | integrity sha512-C7h5vqAwXzY0kRGSU00Fj8PudiDWFCiQqqUNI1N+fhCILrzWZB9TPBwdx33ZfXKt/U4+emdIoo/N34v3TiAOmQ== 185 | 186 | "@tauri-apps/cli-linux-arm64-gnu@1.2.3": 187 | version "1.2.3" 188 | resolved "https://registry.yarnpkg.com/@tauri-apps/cli-linux-arm64-gnu/-/cli-linux-arm64-gnu-1.2.3.tgz#c3915de83a8fbe6f406eaa0b524a17c091a9a2cd" 189 | integrity sha512-buf1c8sdkuUzVDkGPQpyUdAIIdn5r0UgXU6+H5fGPq/Xzt5K69JzXaeo6fHsZEZghbV0hOK+taKV4J0m30UUMQ== 190 | 191 | "@tauri-apps/cli-linux-arm64-musl@1.2.3": 192 | version "1.2.3" 193 | resolved "https://registry.yarnpkg.com/@tauri-apps/cli-linux-arm64-musl/-/cli-linux-arm64-musl-1.2.3.tgz#40f9f7cf0b4088964661fd412eff7310cb4ac605" 194 | integrity sha512-x88wPS9W5xAyk392vc4uNHcKBBvCp0wf4H9JFMF9OBwB7vfd59LbQCFcPSu8f0BI7bPrOsyHqspWHuFL8ojQEA== 195 | 196 | "@tauri-apps/cli-linux-x64-gnu@1.2.3": 197 | version "1.2.3" 198 | resolved "https://registry.yarnpkg.com/@tauri-apps/cli-linux-x64-gnu/-/cli-linux-x64-gnu-1.2.3.tgz#0b3e4c1fda6205dbe872f4b69506669476f60591" 199 | integrity sha512-ZMz1jxEVe0B4/7NJnlPHmwmSIuwiD6ViXKs8F+OWWz2Y4jn5TGxWKFg7DLx5OwQTRvEIZxxT7lXHi5CuTNAxKg== 200 | 201 | "@tauri-apps/cli-linux-x64-musl@1.2.3": 202 | version "1.2.3" 203 | resolved "https://registry.yarnpkg.com/@tauri-apps/cli-linux-x64-musl/-/cli-linux-x64-musl-1.2.3.tgz#edcf8f53da50337a2e763d4fda750ef56124036c" 204 | integrity sha512-B/az59EjJhdbZDzawEVox0LQu2ZHCZlk8rJf85AMIktIUoAZPFbwyiUv7/zjzA/sY6Nb58OSJgaPL2/IBy7E0A== 205 | 206 | "@tauri-apps/cli-win32-ia32-msvc@1.2.3": 207 | version "1.2.3" 208 | resolved "https://registry.yarnpkg.com/@tauri-apps/cli-win32-ia32-msvc/-/cli-win32-ia32-msvc-1.2.3.tgz#0592d3e4eee4685674579ba897eef1469c6f1cfe" 209 | integrity sha512-ypdO1OdC5ugNJAKO2m3sb1nsd+0TSvMS9Tr5qN/ZSMvtSduaNwrcZ3D7G/iOIanrqu/Nl8t3LYlgPZGBKlw7Ng== 210 | 211 | "@tauri-apps/cli-win32-x64-msvc@1.2.3": 212 | version "1.2.3" 213 | resolved "https://registry.yarnpkg.com/@tauri-apps/cli-win32-x64-msvc/-/cli-win32-x64-msvc-1.2.3.tgz#89f0cc36e11e56564161602cd6add155cc7b0dfb" 214 | integrity sha512-CsbHQ+XhnV/2csOBBDVfH16cdK00gNyNYUW68isedmqcn8j+s0e9cQ1xXIqi+Hue3awp8g3ImYN5KPepf3UExw== 215 | 216 | "@tauri-apps/cli@^1.2.2": 217 | version "1.2.3" 218 | resolved "https://registry.yarnpkg.com/@tauri-apps/cli/-/cli-1.2.3.tgz#957f8a3a370f306e9e1ea5a891cb30aed91af64e" 219 | integrity sha512-erxtXuPhMEGJPBtnhPILD4AjuT81GZsraqpFvXAmEJZ2p8P6t7MVBifCL8LznRknznM3jn90D3M8RNBP3wcXTw== 220 | optionalDependencies: 221 | "@tauri-apps/cli-darwin-arm64" "1.2.3" 222 | "@tauri-apps/cli-darwin-x64" "1.2.3" 223 | "@tauri-apps/cli-linux-arm-gnueabihf" "1.2.3" 224 | "@tauri-apps/cli-linux-arm64-gnu" "1.2.3" 225 | "@tauri-apps/cli-linux-arm64-musl" "1.2.3" 226 | "@tauri-apps/cli-linux-x64-gnu" "1.2.3" 227 | "@tauri-apps/cli-linux-x64-musl" "1.2.3" 228 | "@tauri-apps/cli-win32-ia32-msvc" "1.2.3" 229 | "@tauri-apps/cli-win32-x64-msvc" "1.2.3" 230 | 231 | "@tsconfig/svelte@^3.0.0": 232 | version "3.0.0" 233 | resolved "https://registry.yarnpkg.com/@tsconfig/svelte/-/svelte-3.0.0.tgz#b06e059209f04c414de0069f2f0e2796d979fc6f" 234 | integrity sha512-pYrtLtOwku/7r1i9AMONsJMVYAtk3hzOfiGNekhtq5tYBGA7unMve8RvUclKLMT3PrihvJqUmzsRGh0RP84hKg== 235 | 236 | "@types/node@*", "@types/node@^18.7.10": 237 | version "18.13.0" 238 | resolved "https://registry.yarnpkg.com/@types/node/-/node-18.13.0.tgz#0400d1e6ce87e9d3032c19eb6c58205b0d3f7850" 239 | integrity sha512-gC3TazRzGoOnoKAhUx+Q0t8S9Tzs74z7m0ipwGpSqQrleP14hKxP4/JUeEQcD3W1/aIpnWl8pHowI7WokuZpXg== 240 | 241 | "@types/pug@^2.0.4", "@types/pug@^2.0.6": 242 | version "2.0.6" 243 | resolved "https://registry.yarnpkg.com/@types/pug/-/pug-2.0.6.tgz#f830323c88172e66826d0bde413498b61054b5a6" 244 | integrity sha512-SnHmG9wN1UVmagJOnyo/qkk0Z7gejYxOYYmaAwr5u2yFYfsupN3sg10kyzN8Hep/2zbHxCnsumxOoRIRMBwKCg== 245 | 246 | "@types/sass@^1.16.0", "@types/sass@^1.43.1": 247 | version "1.43.1" 248 | resolved "https://registry.yarnpkg.com/@types/sass/-/sass-1.43.1.tgz#86bb0168e9e881d7dade6eba16c9ed6d25dc2f68" 249 | integrity sha512-BPdoIt1lfJ6B7rw35ncdwBZrAssjcwzI5LByIrYs+tpXlj/CAkuVdRsgZDdP4lq5EjyWzwxZCqAoFyHKFwp32g== 250 | dependencies: 251 | "@types/node" "*" 252 | 253 | acorn-node@^1.8.2: 254 | version "1.8.2" 255 | resolved "https://registry.yarnpkg.com/acorn-node/-/acorn-node-1.8.2.tgz#114c95d64539e53dede23de8b9d96df7c7ae2af8" 256 | integrity sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A== 257 | dependencies: 258 | acorn "^7.0.0" 259 | acorn-walk "^7.0.0" 260 | xtend "^4.0.2" 261 | 262 | acorn-walk@^7.0.0: 263 | version "7.2.0" 264 | resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" 265 | integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== 266 | 267 | acorn@^7.0.0: 268 | version "7.4.1" 269 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" 270 | integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== 271 | 272 | anymatch@~3.1.2: 273 | version "3.1.3" 274 | resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" 275 | integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== 276 | dependencies: 277 | normalize-path "^3.0.0" 278 | picomatch "^2.0.4" 279 | 280 | arg@^5.0.2: 281 | version "5.0.2" 282 | resolved "https://registry.yarnpkg.com/arg/-/arg-5.0.2.tgz#c81433cc427c92c4dcf4865142dbca6f15acd59c" 283 | integrity sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg== 284 | 285 | autoprefixer@^10.4.13: 286 | version "10.4.13" 287 | resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.13.tgz#b5136b59930209a321e9fa3dca2e7c4d223e83a8" 288 | integrity sha512-49vKpMqcZYsJjwotvt4+h/BCjJVnhGwcLpDt5xkcaOG3eLrG/HUYLagrihYsQ+qrIBgIzX1Rw7a6L8I/ZA1Atg== 289 | dependencies: 290 | browserslist "^4.21.4" 291 | caniuse-lite "^1.0.30001426" 292 | fraction.js "^4.2.0" 293 | normalize-range "^0.1.2" 294 | picocolors "^1.0.0" 295 | postcss-value-parser "^4.2.0" 296 | 297 | balanced-match@^1.0.0: 298 | version "1.0.2" 299 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" 300 | integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== 301 | 302 | binary-extensions@^2.0.0: 303 | version "2.2.0" 304 | resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" 305 | integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== 306 | 307 | brace-expansion@^1.1.7: 308 | version "1.1.11" 309 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 310 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 311 | dependencies: 312 | balanced-match "^1.0.0" 313 | concat-map "0.0.1" 314 | 315 | braces@^3.0.2, braces@~3.0.2: 316 | version "3.0.2" 317 | resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" 318 | integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== 319 | dependencies: 320 | fill-range "^7.0.1" 321 | 322 | browserslist@^4.21.4: 323 | version "4.21.5" 324 | resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.5.tgz#75c5dae60063ee641f977e00edd3cfb2fb7af6a7" 325 | integrity sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w== 326 | dependencies: 327 | caniuse-lite "^1.0.30001449" 328 | electron-to-chromium "^1.4.284" 329 | node-releases "^2.0.8" 330 | update-browserslist-db "^1.0.10" 331 | 332 | buffer-crc32@^0.2.5: 333 | version "0.2.13" 334 | resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" 335 | integrity sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ== 336 | 337 | callsites@^3.0.0: 338 | version "3.1.0" 339 | resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" 340 | integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== 341 | 342 | camelcase-css@^2.0.1: 343 | version "2.0.1" 344 | resolved "https://registry.yarnpkg.com/camelcase-css/-/camelcase-css-2.0.1.tgz#ee978f6947914cc30c6b44741b6ed1df7f043fd5" 345 | integrity sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA== 346 | 347 | caniuse-lite@^1.0.30001426, caniuse-lite@^1.0.30001449: 348 | version "1.0.30001451" 349 | resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001451.tgz#2e197c698fc1373d63e1406d6607ea4617c613f1" 350 | integrity sha512-XY7UbUpGRatZzoRft//5xOa69/1iGJRBlrieH6QYrkKLIFn3m7OVEJ81dSrKoy2BnKsdbX5cLrOispZNYo9v2w== 351 | 352 | chokidar@^3.4.1, chokidar@^3.5.3: 353 | version "3.5.3" 354 | resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" 355 | integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== 356 | dependencies: 357 | anymatch "~3.1.2" 358 | braces "~3.0.2" 359 | glob-parent "~5.1.2" 360 | is-binary-path "~2.1.0" 361 | is-glob "~4.0.1" 362 | normalize-path "~3.0.0" 363 | readdirp "~3.6.0" 364 | optionalDependencies: 365 | fsevents "~2.3.2" 366 | 367 | classnames@^2.3.2: 368 | version "2.3.2" 369 | resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.3.2.tgz#351d813bf0137fcc6a76a16b88208d2560a0d924" 370 | integrity sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw== 371 | 372 | color-name@^1.1.4: 373 | version "1.1.4" 374 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" 375 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== 376 | 377 | concat-map@0.0.1: 378 | version "0.0.1" 379 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 380 | integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== 381 | 382 | cssesc@^3.0.0: 383 | version "3.0.0" 384 | resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" 385 | integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== 386 | 387 | debug@^4.3.4: 388 | version "4.3.4" 389 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" 390 | integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== 391 | dependencies: 392 | ms "2.1.2" 393 | 394 | deepmerge@^4.2.2: 395 | version "4.3.0" 396 | resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.0.tgz#65491893ec47756d44719ae520e0e2609233b59b" 397 | integrity sha512-z2wJZXrmeHdvYJp/Ux55wIjqo81G5Bp4c+oELTW+7ar6SogWHajt5a9gO3s3IDaGSAXjDk0vlQKN3rms8ab3og== 398 | 399 | defined@^1.0.0: 400 | version "1.0.1" 401 | resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.1.tgz#c0b9db27bfaffd95d6f61399419b893df0f91ebf" 402 | integrity sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q== 403 | 404 | detect-indent@^6.0.0, detect-indent@^6.1.0: 405 | version "6.1.0" 406 | resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-6.1.0.tgz#592485ebbbf6b3b1ab2be175c8393d04ca0d57e6" 407 | integrity sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA== 408 | 409 | detective@^5.2.1: 410 | version "5.2.1" 411 | resolved "https://registry.yarnpkg.com/detective/-/detective-5.2.1.tgz#6af01eeda11015acb0e73f933242b70f24f91034" 412 | integrity sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw== 413 | dependencies: 414 | acorn-node "^1.8.2" 415 | defined "^1.0.0" 416 | minimist "^1.2.6" 417 | 418 | didyoumean@^1.2.2: 419 | version "1.2.2" 420 | resolved "https://registry.yarnpkg.com/didyoumean/-/didyoumean-1.2.2.tgz#989346ffe9e839b4555ecf5666edea0d3e8ad037" 421 | integrity sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw== 422 | 423 | dlv@^1.1.3: 424 | version "1.1.3" 425 | resolved "https://registry.yarnpkg.com/dlv/-/dlv-1.1.3.tgz#5c198a8a11453596e751494d49874bc7732f2e79" 426 | integrity sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA== 427 | 428 | electron-to-chromium@^1.4.284: 429 | version "1.4.295" 430 | resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.295.tgz#911d5df67542bf7554336142eb302c5ec90bba66" 431 | integrity sha512-lEO94zqf1bDA3aepxwnWoHUjA8sZ+2owgcSZjYQy0+uOSEclJX0VieZC+r+wLpSxUHRd6gG32znTWmr+5iGzFw== 432 | 433 | es6-promise@^3.1.2: 434 | version "3.3.1" 435 | resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-3.3.1.tgz#a08cdde84ccdbf34d027a1451bc91d4bcd28a613" 436 | integrity sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg== 437 | 438 | esbuild@^0.16.14: 439 | version "0.16.17" 440 | resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.16.17.tgz#fc2c3914c57ee750635fee71b89f615f25065259" 441 | integrity sha512-G8LEkV0XzDMNwXKgM0Jwu3nY3lSTwSGY6XbxM9cr9+s0T/qSV1q1JVPBGzm3dcjhCic9+emZDmMffkwgPeOeLg== 442 | optionalDependencies: 443 | "@esbuild/android-arm" "0.16.17" 444 | "@esbuild/android-arm64" "0.16.17" 445 | "@esbuild/android-x64" "0.16.17" 446 | "@esbuild/darwin-arm64" "0.16.17" 447 | "@esbuild/darwin-x64" "0.16.17" 448 | "@esbuild/freebsd-arm64" "0.16.17" 449 | "@esbuild/freebsd-x64" "0.16.17" 450 | "@esbuild/linux-arm" "0.16.17" 451 | "@esbuild/linux-arm64" "0.16.17" 452 | "@esbuild/linux-ia32" "0.16.17" 453 | "@esbuild/linux-loong64" "0.16.17" 454 | "@esbuild/linux-mips64el" "0.16.17" 455 | "@esbuild/linux-ppc64" "0.16.17" 456 | "@esbuild/linux-riscv64" "0.16.17" 457 | "@esbuild/linux-s390x" "0.16.17" 458 | "@esbuild/linux-x64" "0.16.17" 459 | "@esbuild/netbsd-x64" "0.16.17" 460 | "@esbuild/openbsd-x64" "0.16.17" 461 | "@esbuild/sunos-x64" "0.16.17" 462 | "@esbuild/win32-arm64" "0.16.17" 463 | "@esbuild/win32-ia32" "0.16.17" 464 | "@esbuild/win32-x64" "0.16.17" 465 | 466 | escalade@^3.1.1: 467 | version "3.1.1" 468 | resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" 469 | integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== 470 | 471 | fast-glob@^3.2.12, fast-glob@^3.2.7: 472 | version "3.2.12" 473 | resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.12.tgz#7f39ec99c2e6ab030337142da9e0c18f37afae80" 474 | integrity sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w== 475 | dependencies: 476 | "@nodelib/fs.stat" "^2.0.2" 477 | "@nodelib/fs.walk" "^1.2.3" 478 | glob-parent "^5.1.2" 479 | merge2 "^1.3.0" 480 | micromatch "^4.0.4" 481 | 482 | fastq@^1.6.0: 483 | version "1.15.0" 484 | resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.15.0.tgz#d04d07c6a2a68fe4599fea8d2e103a937fae6b3a" 485 | integrity sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw== 486 | dependencies: 487 | reusify "^1.0.4" 488 | 489 | fill-range@^7.0.1: 490 | version "7.0.1" 491 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" 492 | integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== 493 | dependencies: 494 | to-regex-range "^5.0.1" 495 | 496 | fraction.js@^4.2.0: 497 | version "4.2.0" 498 | resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.2.0.tgz#448e5109a313a3527f5a3ab2119ec4cf0e0e2950" 499 | integrity sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA== 500 | 501 | fs.realpath@^1.0.0: 502 | version "1.0.0" 503 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 504 | integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== 505 | 506 | fsevents@~2.3.2: 507 | version "2.3.2" 508 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" 509 | integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== 510 | 511 | function-bind@^1.1.1: 512 | version "1.1.1" 513 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" 514 | integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== 515 | 516 | glob-parent@^5.1.2, glob-parent@~5.1.2: 517 | version "5.1.2" 518 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" 519 | integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== 520 | dependencies: 521 | is-glob "^4.0.1" 522 | 523 | glob-parent@^6.0.2: 524 | version "6.0.2" 525 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" 526 | integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== 527 | dependencies: 528 | is-glob "^4.0.3" 529 | 530 | glob@^7.1.3: 531 | version "7.2.3" 532 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" 533 | integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== 534 | dependencies: 535 | fs.realpath "^1.0.0" 536 | inflight "^1.0.4" 537 | inherits "2" 538 | minimatch "^3.1.1" 539 | once "^1.3.0" 540 | path-is-absolute "^1.0.0" 541 | 542 | graceful-fs@^4.1.3: 543 | version "4.2.10" 544 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" 545 | integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== 546 | 547 | has@^1.0.3: 548 | version "1.0.3" 549 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" 550 | integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== 551 | dependencies: 552 | function-bind "^1.1.1" 553 | 554 | import-fresh@^3.2.1: 555 | version "3.3.0" 556 | resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" 557 | integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== 558 | dependencies: 559 | parent-module "^1.0.0" 560 | resolve-from "^4.0.0" 561 | 562 | inflight@^1.0.4: 563 | version "1.0.6" 564 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 565 | integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== 566 | dependencies: 567 | once "^1.3.0" 568 | wrappy "1" 569 | 570 | inherits@2: 571 | version "2.0.4" 572 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 573 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 574 | 575 | is-binary-path@~2.1.0: 576 | version "2.1.0" 577 | resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" 578 | integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== 579 | dependencies: 580 | binary-extensions "^2.0.0" 581 | 582 | is-core-module@^2.9.0: 583 | version "2.11.0" 584 | resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.11.0.tgz#ad4cb3e3863e814523c96f3f58d26cc570ff0144" 585 | integrity sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw== 586 | dependencies: 587 | has "^1.0.3" 588 | 589 | is-extglob@^2.1.1: 590 | version "2.1.1" 591 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" 592 | integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== 593 | 594 | is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: 595 | version "4.0.3" 596 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" 597 | integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== 598 | dependencies: 599 | is-extglob "^2.1.1" 600 | 601 | is-number@^7.0.0: 602 | version "7.0.0" 603 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" 604 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== 605 | 606 | kleur@^4.1.5: 607 | version "4.1.5" 608 | resolved "https://registry.yarnpkg.com/kleur/-/kleur-4.1.5.tgz#95106101795f7050c6c650f350c683febddb1780" 609 | integrity sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ== 610 | 611 | lilconfig@^2.0.5, lilconfig@^2.0.6: 612 | version "2.0.6" 613 | resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.0.6.tgz#32a384558bd58af3d4c6e077dd1ad1d397bc69d4" 614 | integrity sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg== 615 | 616 | lodash@^4.17.21: 617 | version "4.17.21" 618 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" 619 | integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== 620 | 621 | magic-string@^0.25.7: 622 | version "0.25.9" 623 | resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.9.tgz#de7f9faf91ef8a1c91d02c2e5314c8277dbcdd1c" 624 | integrity sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ== 625 | dependencies: 626 | sourcemap-codec "^1.4.8" 627 | 628 | magic-string@^0.27.0: 629 | version "0.27.0" 630 | resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.27.0.tgz#e4a3413b4bab6d98d2becffd48b4a257effdbbf3" 631 | integrity sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA== 632 | dependencies: 633 | "@jridgewell/sourcemap-codec" "^1.4.13" 634 | 635 | merge2@^1.3.0: 636 | version "1.4.1" 637 | resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" 638 | integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== 639 | 640 | micromatch@^4.0.4, micromatch@^4.0.5: 641 | version "4.0.5" 642 | resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" 643 | integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== 644 | dependencies: 645 | braces "^3.0.2" 646 | picomatch "^2.3.1" 647 | 648 | min-indent@^1.0.0: 649 | version "1.0.1" 650 | resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" 651 | integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== 652 | 653 | minimatch@^3.1.1: 654 | version "3.1.2" 655 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" 656 | integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== 657 | dependencies: 658 | brace-expansion "^1.1.7" 659 | 660 | minimist@^1.2.0, minimist@^1.2.6: 661 | version "1.2.8" 662 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" 663 | integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== 664 | 665 | mkdirp@^0.5.1: 666 | version "0.5.6" 667 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" 668 | integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== 669 | dependencies: 670 | minimist "^1.2.6" 671 | 672 | mri@^1.1.0: 673 | version "1.2.0" 674 | resolved "https://registry.yarnpkg.com/mri/-/mri-1.2.0.tgz#6721480fec2a11a4889861115a48b6cbe7cc8f0b" 675 | integrity sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA== 676 | 677 | ms@2.1.2: 678 | version "2.1.2" 679 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" 680 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== 681 | 682 | nanoid@^3.3.4: 683 | version "3.3.4" 684 | resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.4.tgz#730b67e3cd09e2deacf03c027c81c9d9dbc5e8ab" 685 | integrity sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw== 686 | 687 | node-releases@^2.0.8: 688 | version "2.0.10" 689 | resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.10.tgz#c311ebae3b6a148c89b1813fd7c4d3c024ef537f" 690 | integrity sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w== 691 | 692 | normalize-path@^3.0.0, normalize-path@~3.0.0: 693 | version "3.0.0" 694 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" 695 | integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== 696 | 697 | normalize-range@^0.1.2: 698 | version "0.1.2" 699 | resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" 700 | integrity sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA== 701 | 702 | object-hash@^3.0.0: 703 | version "3.0.0" 704 | resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-3.0.0.tgz#73f97f753e7baffc0e2cc9d6e079079744ac82e9" 705 | integrity sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw== 706 | 707 | once@^1.3.0: 708 | version "1.4.0" 709 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 710 | integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== 711 | dependencies: 712 | wrappy "1" 713 | 714 | parent-module@^1.0.0: 715 | version "1.0.1" 716 | resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" 717 | integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== 718 | dependencies: 719 | callsites "^3.0.0" 720 | 721 | path-is-absolute@^1.0.0: 722 | version "1.0.1" 723 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 724 | integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== 725 | 726 | path-parse@^1.0.7: 727 | version "1.0.7" 728 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" 729 | integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== 730 | 731 | picocolors@^1.0.0: 732 | version "1.0.0" 733 | resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" 734 | integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== 735 | 736 | picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: 737 | version "2.3.1" 738 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" 739 | integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== 740 | 741 | pify@^2.3.0: 742 | version "2.3.0" 743 | resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" 744 | integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== 745 | 746 | postcss-import@^14.1.0: 747 | version "14.1.0" 748 | resolved "https://registry.yarnpkg.com/postcss-import/-/postcss-import-14.1.0.tgz#a7333ffe32f0b8795303ee9e40215dac922781f0" 749 | integrity sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw== 750 | dependencies: 751 | postcss-value-parser "^4.0.0" 752 | read-cache "^1.0.0" 753 | resolve "^1.1.7" 754 | 755 | postcss-js@^4.0.0: 756 | version "4.0.1" 757 | resolved "https://registry.yarnpkg.com/postcss-js/-/postcss-js-4.0.1.tgz#61598186f3703bab052f1c4f7d805f3991bee9d2" 758 | integrity sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw== 759 | dependencies: 760 | camelcase-css "^2.0.1" 761 | 762 | postcss-load-config@^3.1.4: 763 | version "3.1.4" 764 | resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-3.1.4.tgz#1ab2571faf84bb078877e1d07905eabe9ebda855" 765 | integrity sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg== 766 | dependencies: 767 | lilconfig "^2.0.5" 768 | yaml "^1.10.2" 769 | 770 | postcss-load-config@^4.0.1: 771 | version "4.0.1" 772 | resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-4.0.1.tgz#152383f481c2758274404e4962743191d73875bd" 773 | integrity sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA== 774 | dependencies: 775 | lilconfig "^2.0.5" 776 | yaml "^2.1.1" 777 | 778 | postcss-nested@6.0.0: 779 | version "6.0.0" 780 | resolved "https://registry.yarnpkg.com/postcss-nested/-/postcss-nested-6.0.0.tgz#1572f1984736578f360cffc7eb7dca69e30d1735" 781 | integrity sha512-0DkamqrPcmkBDsLn+vQDIrtkSbNkv5AD/M322ySo9kqFkCIYklym2xEmWkwo+Y3/qZo34tzEPNUw4y7yMCdv5w== 782 | dependencies: 783 | postcss-selector-parser "^6.0.10" 784 | 785 | postcss-selector-parser@^6.0.10, postcss-selector-parser@^6.0.11: 786 | version "6.0.11" 787 | resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.11.tgz#2e41dc39b7ad74046e1615185185cd0b17d0c8dc" 788 | integrity sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g== 789 | dependencies: 790 | cssesc "^3.0.0" 791 | util-deprecate "^1.0.2" 792 | 793 | postcss-value-parser@^4.0.0, postcss-value-parser@^4.2.0: 794 | version "4.2.0" 795 | resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" 796 | integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== 797 | 798 | postcss@^8.0.9, postcss@^8.4.21: 799 | version "8.4.21" 800 | resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.21.tgz#c639b719a57efc3187b13a1d765675485f4134f4" 801 | integrity sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg== 802 | dependencies: 803 | nanoid "^3.3.4" 804 | picocolors "^1.0.0" 805 | source-map-js "^1.0.2" 806 | 807 | prettier-plugin-svelte@^2.9.0: 808 | version "2.9.0" 809 | resolved "https://registry.yarnpkg.com/prettier-plugin-svelte/-/prettier-plugin-svelte-2.9.0.tgz#16cc7fa73fa96eaef48b44089753ac9f1f1175e5" 810 | integrity sha512-3doBi5NO4IVgaNPtwewvrgPpqAcvNv0NwJNflr76PIGgi9nf1oguQV1Hpdm9TI2ALIQVn/9iIwLpBO5UcD2Jiw== 811 | 812 | prettier-plugin-tailwindcss@^0.2.2: 813 | version "0.2.2" 814 | resolved "https://registry.yarnpkg.com/prettier-plugin-tailwindcss/-/prettier-plugin-tailwindcss-0.2.2.tgz#61f4437936c79c8cc2915f31b4bd512605177239" 815 | integrity sha512-5RjUbWRe305pUpc48MosoIp6uxZvZxrM6GyOgsbGLTce+ehePKNm7ziW2dLG2air9aXbGuXlHVSQQw4Lbosq3w== 816 | 817 | prettier@^2.8.4: 818 | version "2.8.4" 819 | resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.4.tgz#34dd2595629bfbb79d344ac4a91ff948694463c3" 820 | integrity sha512-vIS4Rlc2FNh0BySk3Wkd6xmwxB0FpOndW5fisM5H8hsZSxU2VWVB5CWIkIjWvrHjIhxk2g3bfMKM87zNTrZddw== 821 | 822 | queue-microtask@^1.2.2: 823 | version "1.2.3" 824 | resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" 825 | integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== 826 | 827 | quick-lru@^5.1.1: 828 | version "5.1.1" 829 | resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932" 830 | integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA== 831 | 832 | read-cache@^1.0.0: 833 | version "1.0.0" 834 | resolved "https://registry.yarnpkg.com/read-cache/-/read-cache-1.0.0.tgz#e664ef31161166c9751cdbe8dbcf86b5fb58f774" 835 | integrity sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA== 836 | dependencies: 837 | pify "^2.3.0" 838 | 839 | readdirp@~3.6.0: 840 | version "3.6.0" 841 | resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" 842 | integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== 843 | dependencies: 844 | picomatch "^2.2.1" 845 | 846 | resolve-from@^4.0.0: 847 | version "4.0.0" 848 | resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" 849 | integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== 850 | 851 | resolve@^1.1.7, resolve@^1.22.1: 852 | version "1.22.1" 853 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177" 854 | integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw== 855 | dependencies: 856 | is-core-module "^2.9.0" 857 | path-parse "^1.0.7" 858 | supports-preserve-symlinks-flag "^1.0.0" 859 | 860 | reusify@^1.0.4: 861 | version "1.0.4" 862 | resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" 863 | integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== 864 | 865 | rimraf@^2.5.2: 866 | version "2.7.1" 867 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" 868 | integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== 869 | dependencies: 870 | glob "^7.1.3" 871 | 872 | rollup@^3.10.0: 873 | version "3.15.0" 874 | resolved "https://registry.yarnpkg.com/rollup/-/rollup-3.15.0.tgz#6f4105e8c4b8145229657b74ad660b02fbfacc05" 875 | integrity sha512-F9hrCAhnp5/zx/7HYmftvsNBkMfLfk/dXUh73hPSM2E3CRgap65orDNJbLetoiUFwSAk6iHPLvBrZ5iHYvzqsg== 876 | optionalDependencies: 877 | fsevents "~2.3.2" 878 | 879 | run-parallel@^1.1.9: 880 | version "1.2.0" 881 | resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" 882 | integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== 883 | dependencies: 884 | queue-microtask "^1.2.2" 885 | 886 | sade@^1.7.4: 887 | version "1.8.1" 888 | resolved "https://registry.yarnpkg.com/sade/-/sade-1.8.1.tgz#0a78e81d658d394887be57d2a409bf703a3b2701" 889 | integrity sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A== 890 | dependencies: 891 | mri "^1.1.0" 892 | 893 | sander@^0.5.0: 894 | version "0.5.1" 895 | resolved "https://registry.yarnpkg.com/sander/-/sander-0.5.1.tgz#741e245e231f07cafb6fdf0f133adfa216a502ad" 896 | integrity sha512-3lVqBir7WuKDHGrKRDn/1Ye3kwpXaDOMsiRP1wd6wpZW56gJhsbp5RqQpA6JG/P+pkXizygnr1dKR8vzWaVsfA== 897 | dependencies: 898 | es6-promise "^3.1.2" 899 | graceful-fs "^4.1.3" 900 | mkdirp "^0.5.1" 901 | rimraf "^2.5.2" 902 | 903 | sorcery@^0.10.0: 904 | version "0.10.0" 905 | resolved "https://registry.yarnpkg.com/sorcery/-/sorcery-0.10.0.tgz#8ae90ad7d7cb05fc59f1ab0c637845d5c15a52b7" 906 | integrity sha512-R5ocFmKZQFfSTstfOtHjJuAwbpGyf9qjQa1egyhvXSbM7emjrtLXtGdZsDJDABC85YBfVvrOiGWKSYXPKdvP1g== 907 | dependencies: 908 | buffer-crc32 "^0.2.5" 909 | minimist "^1.2.0" 910 | sander "^0.5.0" 911 | sourcemap-codec "^1.3.0" 912 | 913 | sorcery@^0.11.0: 914 | version "0.11.0" 915 | resolved "https://registry.yarnpkg.com/sorcery/-/sorcery-0.11.0.tgz#310c80ee993433854bb55bb9aa4003acd147fca8" 916 | integrity sha512-J69LQ22xrQB1cIFJhPfgtLuI6BpWRiWu1Y3vSsIwK/eAScqJxd/+CJlUuHQRdX2C9NGFamq+KqNywGgaThwfHw== 917 | dependencies: 918 | "@jridgewell/sourcemap-codec" "^1.4.14" 919 | buffer-crc32 "^0.2.5" 920 | minimist "^1.2.0" 921 | sander "^0.5.0" 922 | 923 | source-map-js@^1.0.2: 924 | version "1.0.2" 925 | resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" 926 | integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== 927 | 928 | sourcemap-codec@^1.3.0, sourcemap-codec@^1.4.8: 929 | version "1.4.8" 930 | resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" 931 | integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== 932 | 933 | strip-indent@^3.0.0: 934 | version "3.0.0" 935 | resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-3.0.0.tgz#c32e1cee940b6b3432c771bc2c54bcce73cd3001" 936 | integrity sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ== 937 | dependencies: 938 | min-indent "^1.0.0" 939 | 940 | supports-preserve-symlinks-flag@^1.0.0: 941 | version "1.0.0" 942 | resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" 943 | integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== 944 | 945 | svelte-check@^3.0.0: 946 | version "3.0.3" 947 | resolved "https://registry.yarnpkg.com/svelte-check/-/svelte-check-3.0.3.tgz#7e89fe4d2adc43869983707822f7c4d7ede74505" 948 | integrity sha512-ByBFXo3bfHRGIsYEasHkdMhLkNleVfszX/Ns1oip58tPJlKdo5Ssr8kgVIuo5oq00hss8AIcdesuy0Xt0BcTvg== 949 | dependencies: 950 | "@jridgewell/trace-mapping" "^0.3.17" 951 | chokidar "^3.4.1" 952 | fast-glob "^3.2.7" 953 | import-fresh "^3.2.1" 954 | picocolors "^1.0.0" 955 | sade "^1.7.4" 956 | svelte-preprocess "^5.0.0" 957 | typescript "^4.9.4" 958 | 959 | svelte-hmr@^0.15.1: 960 | version "0.15.1" 961 | resolved "https://registry.yarnpkg.com/svelte-hmr/-/svelte-hmr-0.15.1.tgz#d11d878a0bbb12ec1cba030f580cd2049f4ec86b" 962 | integrity sha512-BiKB4RZ8YSwRKCNVdNxK/GfY+r4Kjgp9jCLEy0DuqAKfmQtpL38cQK3afdpjw4sqSs4PLi3jIPJIFp259NkZtA== 963 | 964 | svelte-preprocess@^4.10.7: 965 | version "4.10.7" 966 | resolved "https://registry.yarnpkg.com/svelte-preprocess/-/svelte-preprocess-4.10.7.tgz#3626de472f51ffe20c9bc71eff5a3da66797c362" 967 | integrity sha512-sNPBnqYD6FnmdBrUmBCaqS00RyCsCpj2BG58A1JBswNF7b0OKviwxqVrOL/CKyJrLSClrSeqQv5BXNg2RUbPOw== 968 | dependencies: 969 | "@types/pug" "^2.0.4" 970 | "@types/sass" "^1.16.0" 971 | detect-indent "^6.0.0" 972 | magic-string "^0.25.7" 973 | sorcery "^0.10.0" 974 | strip-indent "^3.0.0" 975 | 976 | svelte-preprocess@^5.0.0: 977 | version "5.0.1" 978 | resolved "https://registry.yarnpkg.com/svelte-preprocess/-/svelte-preprocess-5.0.1.tgz#3dd21a17eb508347d4b26a0d98059d23e2d1b9a0" 979 | integrity sha512-0HXyhCoc9rsW4zGOgtInylC6qj259E1hpFnJMJWTf+aIfeqh4O/QHT31KT2hvPEqQfdjmqBR/kO2JDkkciBLrQ== 980 | dependencies: 981 | "@types/pug" "^2.0.6" 982 | "@types/sass" "^1.43.1" 983 | detect-indent "^6.1.0" 984 | magic-string "^0.27.0" 985 | sorcery "^0.11.0" 986 | strip-indent "^3.0.0" 987 | 988 | svelte@^3.54.0: 989 | version "3.55.1" 990 | resolved "https://registry.yarnpkg.com/svelte/-/svelte-3.55.1.tgz#6f93b153e5248039906ce5fe196efdb9e05dfce8" 991 | integrity sha512-S+87/P0Ve67HxKkEV23iCdAh/SX1xiSfjF1HOglno/YTbSTW7RniICMCofWGdJJbdjw3S+0PfFb1JtGfTXE0oQ== 992 | 993 | tailwindcss@^3.2.6: 994 | version "3.2.6" 995 | resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-3.2.6.tgz#9bedbc744a4a85d6120ce0cc3db024c551a5c733" 996 | integrity sha512-BfgQWZrtqowOQMC2bwaSNe7xcIjdDEgixWGYOd6AL0CbKHJlvhfdbINeAW76l1sO+1ov/MJ93ODJ9yluRituIw== 997 | dependencies: 998 | arg "^5.0.2" 999 | chokidar "^3.5.3" 1000 | color-name "^1.1.4" 1001 | detective "^5.2.1" 1002 | didyoumean "^1.2.2" 1003 | dlv "^1.1.3" 1004 | fast-glob "^3.2.12" 1005 | glob-parent "^6.0.2" 1006 | is-glob "^4.0.3" 1007 | lilconfig "^2.0.6" 1008 | micromatch "^4.0.5" 1009 | normalize-path "^3.0.0" 1010 | object-hash "^3.0.0" 1011 | picocolors "^1.0.0" 1012 | postcss "^8.0.9" 1013 | postcss-import "^14.1.0" 1014 | postcss-js "^4.0.0" 1015 | postcss-load-config "^3.1.4" 1016 | postcss-nested "6.0.0" 1017 | postcss-selector-parser "^6.0.11" 1018 | postcss-value-parser "^4.2.0" 1019 | quick-lru "^5.1.1" 1020 | resolve "^1.22.1" 1021 | 1022 | to-regex-range@^5.0.1: 1023 | version "5.0.1" 1024 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" 1025 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== 1026 | dependencies: 1027 | is-number "^7.0.0" 1028 | 1029 | tslib@^2.4.1: 1030 | version "2.5.0" 1031 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.0.tgz#42bfed86f5787aeb41d031866c8f402429e0fddf" 1032 | integrity sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg== 1033 | 1034 | typescript@^4.6.4, typescript@^4.9.4: 1035 | version "4.9.5" 1036 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a" 1037 | integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== 1038 | 1039 | update-browserslist-db@^1.0.10: 1040 | version "1.0.10" 1041 | resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz#0f54b876545726f17d00cd9a2561e6dade943ff3" 1042 | integrity sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ== 1043 | dependencies: 1044 | escalade "^3.1.1" 1045 | picocolors "^1.0.0" 1046 | 1047 | util-deprecate@^1.0.2: 1048 | version "1.0.2" 1049 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" 1050 | integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== 1051 | 1052 | vite@^4.0.0: 1053 | version "4.1.1" 1054 | resolved "https://registry.yarnpkg.com/vite/-/vite-4.1.1.tgz#3b18b81a4e85ce3df5cbdbf4c687d93ebf402e6b" 1055 | integrity sha512-LM9WWea8vsxhr782r9ntg+bhSFS06FJgCvvB0+8hf8UWtvaiDagKYWXndjfX6kGl74keHJUcpzrQliDXZlF5yg== 1056 | dependencies: 1057 | esbuild "^0.16.14" 1058 | postcss "^8.4.21" 1059 | resolve "^1.22.1" 1060 | rollup "^3.10.0" 1061 | optionalDependencies: 1062 | fsevents "~2.3.2" 1063 | 1064 | vitefu@^0.2.3: 1065 | version "0.2.4" 1066 | resolved "https://registry.yarnpkg.com/vitefu/-/vitefu-0.2.4.tgz#212dc1a9d0254afe65e579351bed4e25d81e0b35" 1067 | integrity sha512-fanAXjSaf9xXtOOeno8wZXIhgia+CZury481LsDaV++lSvcU2R9Ch2bPh3PYFyoHW+w9LqAeYRISVQjUIew14g== 1068 | 1069 | wrappy@1: 1070 | version "1.0.2" 1071 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 1072 | integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== 1073 | 1074 | xtend@^4.0.2: 1075 | version "4.0.2" 1076 | resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" 1077 | integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== 1078 | 1079 | yaml@^1.10.2: 1080 | version "1.10.2" 1081 | resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" 1082 | integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== 1083 | 1084 | yaml@^2.1.1: 1085 | version "2.2.1" 1086 | resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.2.1.tgz#3014bf0482dcd15147aa8e56109ce8632cd60ce4" 1087 | integrity sha512-e0WHiYql7+9wr4cWMx3TVQrNwejKaEe7/rHNmQmqRjazfOP5W8PB6Jpebb5o6fIapbz9o9+2ipcaTM2ZwDI6lw== 1088 | -------------------------------------------------------------------------------- /smake.lua: -------------------------------------------------------------------------------- 1 | function smake.install() 2 | run('npm i -g yarn --silent') 3 | runIn('./crates/frontend', 'yarn') 4 | end 5 | 6 | function smake.run() 7 | runIn('./crates/backend', 'cargo tauri dev') 8 | end 9 | 10 | function smake.build() 11 | runIn('./crates/backend', 'cargo tauri build') 12 | end 13 | 14 | function smake.addPackage(package, flag, mode) 15 | local isBackend = flag == '-b' 16 | runIn('./crates/' .. (isBackend and 'backend' or 'frontend'), (isBackend and 'cargo add ' or 'yarn add ' .. (mode .. ' ' or '')) .. package) 17 | end 18 | 19 | function smake.removePackage(package, flag, mode) 20 | local isBackend = flag == '-b' 21 | runIn('./crates/' .. (isBackend and 'backend' or 'frontend'), (isBackend and 'cargo remove ' or 'yarn remove ') .. package) 22 | end 23 | --------------------------------------------------------------------------------