A lot of changes and make create project actually clone from premade templates
This commit is contained in:
8 files changed
+279
-162
No files matched your search
+3
-3
@@ -22,14 +22,14 @@
|
||||
"@fortawesome/fontawesome-svg-core": "7.0.0",
|
||||
"@fortawesome/free-solid-svg-icons": "7.0.0",
|
||||
"@fortawesome/react-fontawesome": "0.2.3",
|
||||
"@tailwindcss/postcss": "4.1.11",
|
||||
"@tailwindcss/postcss": "4.1.12",
|
||||
"@tauri-apps/cli": "2.7.1",
|
||||
"@types/node": "24.2.1",
|
||||
"@types/node": "24.3.0",
|
||||
"@types/react": "19.1.10",
|
||||
"@types/react-dom": "19.1.7",
|
||||
"eslint": "9.33.0",
|
||||
"eslint-config-next": "15.4.6",
|
||||
"tailwindcss": "4.1.11",
|
||||
"tailwindcss": "4.1.12",
|
||||
"typescript": "5.9.2"
|
||||
}
|
||||
}
|
||||
@@ -17,6 +17,9 @@ serde = { version = "1.0.219", features = ["derive"] }
|
||||
serde_json = "1.0.142"
|
||||
tauri-plugin-dialog = "2.3.2"
|
||||
tokio = "1.47.1"
|
||||
reqwest = { version = "0.12.23", default-features = false, features = ["json", "rustls-tls"] }
|
||||
zip = "4.3.0"
|
||||
anyhow = "1.0.99"
|
||||
|
||||
[target.'cfg(not(any(target_os = "android", target_os = "ios")))'.dependencies]
|
||||
tauri-plugin-single-instance = "2.3.2"
|
||||
|
||||
@@ -3,8 +3,8 @@
|
||||
"identifier": "default",
|
||||
"description": "Capability for the main window",
|
||||
"windows": [
|
||||
"main",
|
||||
"new_project_popup"
|
||||
"projectmanager",
|
||||
"newprojectpopup"
|
||||
],
|
||||
"permissions": [
|
||||
"core:default",
|
||||
|
||||
+99
-28
@@ -1,33 +1,103 @@
|
||||
use tauri::Manager;
|
||||
use serde_json::Value;
|
||||
use std::{io::Cursor, path::Path};
|
||||
use tauri::{AppHandle, Emitter};
|
||||
use tauri_plugin_dialog::{DialogExt, MessageDialogKind};
|
||||
use tokio::fs;
|
||||
use zip::ZipArchive;
|
||||
|
||||
#[tauri::command]
|
||||
async fn create_project(project_type: String, project_folder: String, project_name: String) {
|
||||
let project_root: String = format!("{}/{}", project_folder, project_name);
|
||||
async fn create_project(
|
||||
app: AppHandle,
|
||||
project_type: String,
|
||||
project_folder: String,
|
||||
project_name: String,
|
||||
) {
|
||||
let _ = app.emit("new_project_enable_creation_button", "false");
|
||||
let _ = app.emit("new_project_update_message", "white:Creating project...");
|
||||
|
||||
let folder = Path::new(&project_folder);
|
||||
let name = Path::new(&project_name);
|
||||
let project_root = folder.join(name);
|
||||
let _ = fs::create_dir(&project_root).await;
|
||||
|
||||
let project_type_str: &str = project_type.as_str();
|
||||
match project_type_str {
|
||||
"website" => {
|
||||
let _ = fs::File::create(format!("{}/index.php", project_root)).await;
|
||||
if project_type != "empty" {
|
||||
let _ = app.emit("new_project_update_message", "white:Fetching templates...");
|
||||
let url = format!(
|
||||
"https://codefly-repo.lncvrt.xyz/php-fly/templates/mainfest.php?onlyLatest=true&template={}",
|
||||
project_type
|
||||
);
|
||||
if let Ok(templates_res) = reqwest::get(url).await {
|
||||
if let Ok(json) = templates_res.json::<Value>().await {
|
||||
if let Some(templatedata) = json.get(&project_type) {
|
||||
if let Some(latestdata) = templatedata.get("latest") {
|
||||
if !latestdata.is_null() {
|
||||
if let Some(latestdownloadurl) =
|
||||
latestdata.get("download_url").and_then(|v| v.as_str())
|
||||
{
|
||||
let _ = app.emit(
|
||||
"new_project_update_message",
|
||||
"white:Downloading template...",
|
||||
);
|
||||
if let Ok(download_res) = reqwest::get(latestdownloadurl).await {
|
||||
match download_res.bytes().await {
|
||||
Ok(bytes) => {
|
||||
let _ = app.emit(
|
||||
"new_project_update_message",
|
||||
"white:Unzipping template...",
|
||||
);
|
||||
let result = tokio::task::spawn_blocking(
|
||||
move || -> anyhow::Result<()> {
|
||||
let reader = Cursor::new(bytes);
|
||||
let mut archive = ZipArchive::new(reader)?;
|
||||
|
||||
let _ = fs::write(
|
||||
format!("{}/index.php", project_root),
|
||||
"<h1>this will be updated later</h1>",
|
||||
)
|
||||
.await;
|
||||
for i in 0..archive.len() {
|
||||
let mut file = archive.by_index(i)?;
|
||||
let outpath =
|
||||
&project_root.join(file.name());
|
||||
|
||||
if file.is_dir() {
|
||||
std::fs::create_dir_all(&outpath)?;
|
||||
} else {
|
||||
if let Some(parent) = outpath.parent() {
|
||||
std::fs::create_dir_all(parent)?;
|
||||
}
|
||||
let mut outfile =
|
||||
std::fs::File::create(&outpath)?;
|
||||
std::io::copy(&mut file, &mut outfile)?;
|
||||
}
|
||||
}
|
||||
|
||||
Ok(())
|
||||
},
|
||||
)
|
||||
.await;
|
||||
|
||||
match result {
|
||||
Ok(inner) => {
|
||||
if let Err(e) = inner {
|
||||
eprintln!("unzip failed: {:?}", e);
|
||||
}
|
||||
}
|
||||
Err(e) => {
|
||||
eprintln!("task panicked: {:?}", e);
|
||||
}
|
||||
}
|
||||
}
|
||||
Err(_) => {}
|
||||
}
|
||||
} else {
|
||||
eprintln!("failed to download file");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
"webserver" => {
|
||||
let _ = fs::write(
|
||||
format!("{}/index.php", project_root),
|
||||
"<h1>this will be updated later</h1>",
|
||||
)
|
||||
.await;
|
||||
}
|
||||
|
||||
_ => {}
|
||||
}
|
||||
|
||||
let _ = app.emit("new_project_enable_creation_button", "true");
|
||||
let _ = app.emit("new_project_update_message", "");
|
||||
}
|
||||
|
||||
#[cfg_attr(mobile, tauri::mobile_entry_point)]
|
||||
@@ -35,21 +105,22 @@ pub fn run() {
|
||||
tauri::Builder::default()
|
||||
.plugin(tauri_plugin_dialog::init())
|
||||
.plugin(tauri_plugin_single_instance::init(|app, _args, _cwd| {
|
||||
let _ = app
|
||||
.get_webview_window("main")
|
||||
.expect("no main window")
|
||||
.set_focus();
|
||||
app.dialog()
|
||||
.message("PHP Fly is already open!")
|
||||
.kind(MessageDialogKind::Error)
|
||||
.title("Warning")
|
||||
.blocking_show();
|
||||
}))
|
||||
.invoke_handler(tauri::generate_handler![create_project])
|
||||
.setup(|app| {
|
||||
tauri::webview::WebviewWindowBuilder::new(
|
||||
app,
|
||||
"main",
|
||||
"projectmanager",
|
||||
tauri::WebviewUrl::App("projectmanager/projects".into()),
|
||||
)
|
||||
.resizable(false)
|
||||
.maximizable(false)
|
||||
.title("PHP Fly")
|
||||
.title("PHP Fly: Project Manager")
|
||||
.inner_size(800.0, 500.0)
|
||||
.build()?;
|
||||
Ok(())
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
@import 'tailwindcss';
|
||||
@import "tailwindcss";
|
||||
|
||||
.new-project-btn {
|
||||
@apply w-50 h-15 bg-[rgb(54,54,72)] hover:bg-[rgb(72,72,96)];
|
||||
|
||||
@@ -6,20 +6,48 @@ import './NewProject_page.css'
|
||||
import { documentDir } from '@tauri-apps/api/path'
|
||||
import { open } from '@tauri-apps/plugin-dialog'
|
||||
import { invoke } from '@tauri-apps/api/core'
|
||||
import { listen } from '@tauri-apps/api/event'
|
||||
import { getCurrentWindow } from '@tauri-apps/api/window'
|
||||
|
||||
export default function NewProject_page () {
|
||||
const [projectType, setProjectType] = useState<string>('empty')
|
||||
const [projectFolder, setProjectFolder] = useState<string>('')
|
||||
const [projectName, setProjectName] = useState<string>('')
|
||||
const [loading, setLoading] = useState<boolean>(true)
|
||||
const [creationButtonEnabled, setCreationButtonEnabled] =
|
||||
useState<boolean>(true)
|
||||
const [creationMessage, setCreationMessage] = useState<string>('')
|
||||
|
||||
useEffect(() => {
|
||||
;(async () => {
|
||||
const projPath = await documentDir()
|
||||
setProjectFolder(projPath)
|
||||
setLoading(false)
|
||||
})()
|
||||
}, [])
|
||||
|
||||
return (
|
||||
const updateMessage = listen<string>('new_project_update_message', event =>
|
||||
setCreationMessage(event.payload)
|
||||
)
|
||||
|
||||
const enableCreationButton = listen<string>(
|
||||
'new_project_enable_creation_button',
|
||||
async event => {
|
||||
getCurrentWindow().setClosable(event.payload == 'true')
|
||||
setCreationButtonEnabled(event.payload == 'true')
|
||||
}
|
||||
)
|
||||
|
||||
return () => {
|
||||
updateMessage.then(f => f())
|
||||
enableCreationButton.then(f => f())
|
||||
}
|
||||
}, [setCreationMessage, setCreationButtonEnabled])
|
||||
|
||||
return loading ? (
|
||||
<div className='flex justify-center items-center text-6xl h-screen w-screen'>
|
||||
<p>Loading</p>
|
||||
</div>
|
||||
) : (
|
||||
<>
|
||||
<div className='justify-center mx-auto w-fit'>
|
||||
<div className='text-center mt-2'>
|
||||
@@ -72,9 +100,9 @@ export default function NewProject_page () {
|
||||
</button>,
|
||||
<button
|
||||
key='webserverbutton'
|
||||
onClick={() => setProjectType('webserver')}
|
||||
onClick={() => setProjectType('web-server')}
|
||||
className='projecttypebutton'
|
||||
disabled={projectType == 'webserver'}
|
||||
disabled={projectType == 'web-server'}
|
||||
>
|
||||
Web Server
|
||||
</button>
|
||||
@@ -83,7 +111,29 @@ export default function NewProject_page () {
|
||||
/>
|
||||
|
||||
<div className='absolute left-1/2 transform -translate-x-1/2 bottom-0 mb-5'>
|
||||
<button className='new-project-btn' onClick={async () => await invoke("create_project", { projectType, projectFolder, projectName })}>Create</button>
|
||||
<p
|
||||
className='text-center mb-2'
|
||||
style={{
|
||||
display: creationMessage == '' ? 'none' : 'block',
|
||||
color:
|
||||
creationMessage == '' ? 'white' : creationMessage.split(':')[0]
|
||||
}}
|
||||
>
|
||||
{creationMessage == '' ? '' : creationMessage.split(':')[1]}
|
||||
</p>
|
||||
<button
|
||||
className='new-project-btn'
|
||||
onClick={async () =>
|
||||
await invoke('create_project', {
|
||||
projectType,
|
||||
projectFolder,
|
||||
projectName
|
||||
})
|
||||
}
|
||||
disabled={!creationButtonEnabled}
|
||||
>
|
||||
Create
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</>
|
||||
|
||||
@@ -10,15 +10,15 @@ export default function ProjectManager_Projects () {
|
||||
<button
|
||||
onClick={async () => {
|
||||
const windowExists = await WebviewWindow.getByLabel(
|
||||
'new_project_popup'
|
||||
'newprojectpopup'
|
||||
)
|
||||
if (windowExists) return
|
||||
const mainWindow = await WebviewWindow.getByLabel('main')
|
||||
const mainWindow = await WebviewWindow.getByLabel('projectmanager')
|
||||
if (!mainWindow) return
|
||||
const popup = new WebviewWindow('new_project_popup', {
|
||||
const popup = new WebviewWindow('newprojectpopup', {
|
||||
title: 'PHP Fly: New Project',
|
||||
url: '/newproject',
|
||||
width: 600,
|
||||
width: 400,
|
||||
height: 500,
|
||||
resizable: false,
|
||||
maximizable: false,
|
||||
|
||||
@@ -7,15 +7,7 @@
|
||||
resolved "https://registry.yarnpkg.com/@alloc/quick-lru/-/quick-lru-5.2.0.tgz#7bf68b20c0a350f936915fcae06f58e32007ce30"
|
||||
integrity sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==
|
||||
|
||||
"@ampproject/remapping@^2.3.0":
|
||||
version "2.3.0"
|
||||
resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.3.0.tgz#ed441b6fa600072520ce18b43d2c8cc8caecc7f4"
|
||||
integrity sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==
|
||||
dependencies:
|
||||
"@jridgewell/gen-mapping" "^0.3.5"
|
||||
"@jridgewell/trace-mapping" "^0.3.24"
|
||||
|
||||
"@emnapi/core@^1.4.3":
|
||||
"@emnapi/core@^1.4.3", "@emnapi/core@^1.4.5":
|
||||
version "1.4.5"
|
||||
resolved "https://registry.yarnpkg.com/@emnapi/core/-/core-1.4.5.tgz#bfbb0cbbbb9f96ec4e2c4fd917b7bbe5495ceccb"
|
||||
integrity sha512-XsLw1dEOpkSX/WucdqUhPWP7hDxSvZiY+fsUC14h+FtQ2Ifni4znbBt8punRX+Uj2JG/uDb8nEHVKvrVlvdZ5Q==
|
||||
@@ -23,14 +15,14 @@
|
||||
"@emnapi/wasi-threads" "1.0.4"
|
||||
tslib "^2.4.0"
|
||||
|
||||
"@emnapi/runtime@^1.4.3", "@emnapi/runtime@^1.4.4":
|
||||
"@emnapi/runtime@^1.4.3", "@emnapi/runtime@^1.4.4", "@emnapi/runtime@^1.4.5":
|
||||
version "1.4.5"
|
||||
resolved "https://registry.yarnpkg.com/@emnapi/runtime/-/runtime-1.4.5.tgz#c67710d0661070f38418b6474584f159de38aba9"
|
||||
integrity sha512-++LApOtY0pEEz1zrd9vy1/zXVaVJJ/EbAF3u0fXIzPJEDtnITsBGbbK0EkM72amhl/R5b+5xx0Y/QhcVOpuulg==
|
||||
dependencies:
|
||||
tslib "^2.4.0"
|
||||
|
||||
"@emnapi/wasi-threads@1.0.4", "@emnapi/wasi-threads@^1.0.2":
|
||||
"@emnapi/wasi-threads@1.0.4", "@emnapi/wasi-threads@^1.0.4":
|
||||
version "1.0.4"
|
||||
resolved "https://registry.yarnpkg.com/@emnapi/wasi-threads/-/wasi-threads-1.0.4.tgz#703fc094d969e273b1b71c292523b2f792862bf4"
|
||||
integrity sha512-PJR+bOmMOPH8AtcTGAyYNiuJ3/Fcoj2XN/gBEWzDIKh254XO+mM9XoXHk5GNEhodxeMznbg7BlRojVbKN+gC6g==
|
||||
@@ -302,6 +294,14 @@
|
||||
"@jridgewell/sourcemap-codec" "^1.5.0"
|
||||
"@jridgewell/trace-mapping" "^0.3.24"
|
||||
|
||||
"@jridgewell/remapping@^2.3.4":
|
||||
version "2.3.5"
|
||||
resolved "https://registry.yarnpkg.com/@jridgewell/remapping/-/remapping-2.3.5.tgz#375c476d1972947851ba1e15ae8f123047445aa1"
|
||||
integrity sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==
|
||||
dependencies:
|
||||
"@jridgewell/gen-mapping" "^0.3.5"
|
||||
"@jridgewell/trace-mapping" "^0.3.24"
|
||||
|
||||
"@jridgewell/resolve-uri@^3.1.0":
|
||||
version "3.1.2"
|
||||
resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6"
|
||||
@@ -320,7 +320,7 @@
|
||||
"@jridgewell/resolve-uri" "^3.1.0"
|
||||
"@jridgewell/sourcemap-codec" "^1.4.14"
|
||||
|
||||
"@napi-rs/wasm-runtime@^0.2.11":
|
||||
"@napi-rs/wasm-runtime@^0.2.11", "@napi-rs/wasm-runtime@^0.2.12":
|
||||
version "0.2.12"
|
||||
resolved "https://registry.yarnpkg.com/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.12.tgz#3e78a8b96e6c33a6c517e1894efbd5385a7cb6f2"
|
||||
integrity sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==
|
||||
@@ -424,117 +424,117 @@
|
||||
dependencies:
|
||||
tslib "^2.8.0"
|
||||
|
||||
"@tailwindcss/node@4.1.11":
|
||||
version "4.1.11"
|
||||
resolved "https://registry.yarnpkg.com/@tailwindcss/node/-/node-4.1.11.tgz#d626af65fc9872e5e9d8884791d7e3856e945359"
|
||||
integrity sha512-yzhzuGRmv5QyU9qLNg4GTlYI6STedBWRE7NjxP45CsFYYq9taI0zJXZBMqIC/c8fViNLhmrbpSFS57EoxUmD6Q==
|
||||
"@tailwindcss/node@4.1.12":
|
||||
version "4.1.12"
|
||||
resolved "https://registry.yarnpkg.com/@tailwindcss/node/-/node-4.1.12.tgz#9099c7c9a6b719b2cae265fecbb37e08ed3fd2a2"
|
||||
integrity sha512-3hm9brwvQkZFe++SBt+oLjo4OLDtkvlE8q2WalaD/7QWaeM7KEJbAiY/LJZUaCs7Xa8aUu4xy3uoyX4q54UVdQ==
|
||||
dependencies:
|
||||
"@ampproject/remapping" "^2.3.0"
|
||||
enhanced-resolve "^5.18.1"
|
||||
jiti "^2.4.2"
|
||||
"@jridgewell/remapping" "^2.3.4"
|
||||
enhanced-resolve "^5.18.3"
|
||||
jiti "^2.5.1"
|
||||
lightningcss "1.30.1"
|
||||
magic-string "^0.30.17"
|
||||
source-map-js "^1.2.1"
|
||||
tailwindcss "4.1.11"
|
||||
tailwindcss "4.1.12"
|
||||
|
||||
"@tailwindcss/oxide-android-arm64@4.1.11":
|
||||
version "4.1.11"
|
||||
resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.1.11.tgz#1f387d8302f011b61c226deb0c3a1d2bd79c6915"
|
||||
integrity sha512-3IfFuATVRUMZZprEIx9OGDjG3Ou3jG4xQzNTvjDoKmU9JdmoCohQJ83MYd0GPnQIu89YoJqvMM0G3uqLRFtetg==
|
||||
"@tailwindcss/oxide-android-arm64@4.1.12":
|
||||
version "4.1.12"
|
||||
resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.1.12.tgz#27920fe61fa2743afe8a8ca296fa640b609d17d5"
|
||||
integrity sha512-oNY5pq+1gc4T6QVTsZKwZaGpBb2N1H1fsc1GD4o7yinFySqIuRZ2E4NvGasWc6PhYJwGK2+5YT1f9Tp80zUQZQ==
|
||||
|
||||
"@tailwindcss/oxide-darwin-arm64@4.1.11":
|
||||
version "4.1.11"
|
||||
resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.1.11.tgz#acd35ffb7e4eae83d0a3fe2f8ea36cfcc9b21f7e"
|
||||
integrity sha512-ESgStEOEsyg8J5YcMb1xl8WFOXfeBmrhAwGsFxxB2CxY9evy63+AtpbDLAyRkJnxLy2WsD1qF13E97uQyP1lfQ==
|
||||
"@tailwindcss/oxide-darwin-arm64@4.1.12":
|
||||
version "4.1.12"
|
||||
resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.1.12.tgz#e8bd4798f26ec1d012bf0683aeb77449f71505cd"
|
||||
integrity sha512-cq1qmq2HEtDV9HvZlTtrj671mCdGB93bVY6J29mwCyaMYCP/JaUBXxrQQQm7Qn33AXXASPUb2HFZlWiiHWFytw==
|
||||
|
||||
"@tailwindcss/oxide-darwin-x64@4.1.11":
|
||||
version "4.1.11"
|
||||
resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.1.11.tgz#a0022312993a3893d6ff0312d6e3c83c4636fef4"
|
||||
integrity sha512-EgnK8kRchgmgzG6jE10UQNaH9Mwi2n+yw1jWmof9Vyg2lpKNX2ioe7CJdf9M5f8V9uaQxInenZkOxnTVL3fhAw==
|
||||
"@tailwindcss/oxide-darwin-x64@4.1.12":
|
||||
version "4.1.12"
|
||||
resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.1.12.tgz#8ddb7e5ddfd9b049ec84a2bda99f2b04a86859f5"
|
||||
integrity sha512-6UCsIeFUcBfpangqlXay9Ffty9XhFH1QuUFn0WV83W8lGdX8cD5/+2ONLluALJD5+yJ7k8mVtwy3zMZmzEfbLg==
|
||||
|
||||
"@tailwindcss/oxide-freebsd-x64@4.1.11":
|
||||
version "4.1.11"
|
||||
resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.1.11.tgz#dd8e55eb0b88fe7995b8148c0e0ae5fa27092d22"
|
||||
integrity sha512-xdqKtbpHs7pQhIKmqVpxStnY1skuNh4CtbcyOHeX1YBE0hArj2romsFGb6yUmzkq/6M24nkxDqU8GYrKrz+UcA==
|
||||
"@tailwindcss/oxide-freebsd-x64@4.1.12":
|
||||
version "4.1.12"
|
||||
resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.1.12.tgz#da1c0b16b7a5f95a1e400f299a3ec94fb6fd40ac"
|
||||
integrity sha512-JOH/f7j6+nYXIrHobRYCtoArJdMJh5zy5lr0FV0Qu47MID/vqJAY3r/OElPzx1C/wdT1uS7cPq+xdYYelny1ww==
|
||||
|
||||
"@tailwindcss/oxide-linux-arm-gnueabihf@4.1.11":
|
||||
version "4.1.11"
|
||||
resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.1.11.tgz#02ee99090988847d3f13d277679012cbffcdde37"
|
||||
integrity sha512-ryHQK2eyDYYMwB5wZL46uoxz2zzDZsFBwfjssgB7pzytAeCCa6glsiJGjhTEddq/4OsIjsLNMAiMlHNYnkEEeg==
|
||||
"@tailwindcss/oxide-linux-arm-gnueabihf@4.1.12":
|
||||
version "4.1.12"
|
||||
resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.1.12.tgz#34e558aa6e869c6fe9867cb78ed7ba651b9fcaa4"
|
||||
integrity sha512-v4Ghvi9AU1SYgGr3/j38PD8PEe6bRfTnNSUE3YCMIRrrNigCFtHZ2TCm8142X8fcSqHBZBceDx+JlFJEfNg5zQ==
|
||||
|
||||
"@tailwindcss/oxide-linux-arm64-gnu@4.1.11":
|
||||
version "4.1.11"
|
||||
resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.1.11.tgz#4837559c102bebe65089879f6a0278ed473b4813"
|
||||
integrity sha512-mYwqheq4BXF83j/w75ewkPJmPZIqqP1nhoghS9D57CLjsh3Nfq0m4ftTotRYtGnZd3eCztgbSPJ9QhfC91gDZQ==
|
||||
"@tailwindcss/oxide-linux-arm64-gnu@4.1.12":
|
||||
version "4.1.12"
|
||||
resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.1.12.tgz#0a00a8146ab6215f81b2d385056c991441bf390e"
|
||||
integrity sha512-YP5s1LmetL9UsvVAKusHSyPlzSRqYyRB0f+Kl/xcYQSPLEw/BvGfxzbH+ihUciePDjiXwHh+p+qbSP3SlJw+6g==
|
||||
|
||||
"@tailwindcss/oxide-linux-arm64-musl@4.1.11":
|
||||
version "4.1.11"
|
||||
resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.1.11.tgz#bec465112a13a1383558ff36afdf28b8a8cb9021"
|
||||
integrity sha512-m/NVRFNGlEHJrNVk3O6I9ggVuNjXHIPoD6bqay/pubtYC9QIdAMpS+cswZQPBLvVvEF6GtSNONbDkZrjWZXYNQ==
|
||||
"@tailwindcss/oxide-linux-arm64-musl@4.1.12":
|
||||
version "4.1.12"
|
||||
resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.1.12.tgz#b138f494068884ae0d8c343dc1904b22f5e98dc6"
|
||||
integrity sha512-V8pAM3s8gsrXcCv6kCHSuwyb/gPsd863iT+v1PGXC4fSL/OJqsKhfK//v8P+w9ThKIoqNbEnsZqNy+WDnwQqCA==
|
||||
|
||||
"@tailwindcss/oxide-linux-x64-gnu@4.1.11":
|
||||
version "4.1.11"
|
||||
resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.1.11.tgz#f9e47e6aa67ff77f32f7412bc9698d4278e101bf"
|
||||
integrity sha512-YW6sblI7xukSD2TdbbaeQVDysIm/UPJtObHJHKxDEcW2exAtY47j52f8jZXkqE1krdnkhCMGqP3dbniu1Te2Fg==
|
||||
"@tailwindcss/oxide-linux-x64-gnu@4.1.12":
|
||||
version "4.1.12"
|
||||
resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.1.12.tgz#5b9d5f23b15cdb714639f5b9741c0df5d610f794"
|
||||
integrity sha512-xYfqYLjvm2UQ3TZggTGrwxjYaLB62b1Wiysw/YE3Yqbh86sOMoTn0feF98PonP7LtjsWOWcXEbGqDL7zv0uW8Q==
|
||||
|
||||
"@tailwindcss/oxide-linux-x64-musl@4.1.11":
|
||||
version "4.1.11"
|
||||
resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.1.11.tgz#7d6e8adcfb9bc84d8e2e2e8781d661edb9e41ba8"
|
||||
integrity sha512-e3C/RRhGunWYNC3aSF7exsQkdXzQ/M+aYuZHKnw4U7KQwTJotnWsGOIVih0s2qQzmEzOFIJ3+xt7iq67K/p56Q==
|
||||
"@tailwindcss/oxide-linux-x64-musl@4.1.12":
|
||||
version "4.1.12"
|
||||
resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.1.12.tgz#f68ec530d3ca6875ea9015bcd5dd0762ee5e2f5d"
|
||||
integrity sha512-ha0pHPamN+fWZY7GCzz5rKunlv9L5R8kdh+YNvP5awe3LtuXb5nRi/H27GeL2U+TdhDOptU7T6Is7mdwh5Ar3A==
|
||||
|
||||
"@tailwindcss/oxide-wasm32-wasi@4.1.11":
|
||||
version "4.1.11"
|
||||
resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.1.11.tgz#a1762f4939c6ebaa824696fda2fd7db1b85fbed2"
|
||||
integrity sha512-Xo1+/GU0JEN/C/dvcammKHzeM6NqKovG+6921MR6oadee5XPBaKOumrJCXvopJ/Qb5TH7LX/UAywbqrP4lax0g==
|
||||
"@tailwindcss/oxide-wasm32-wasi@4.1.12":
|
||||
version "4.1.12"
|
||||
resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.1.12.tgz#9fd15a1ebde6076c42c445c5e305c31673ead965"
|
||||
integrity sha512-4tSyu3dW+ktzdEpuk6g49KdEangu3eCYoqPhWNsZgUhyegEda3M9rG0/j1GV/JjVVsj+lG7jWAyrTlLzd/WEBg==
|
||||
dependencies:
|
||||
"@emnapi/core" "^1.4.3"
|
||||
"@emnapi/runtime" "^1.4.3"
|
||||
"@emnapi/wasi-threads" "^1.0.2"
|
||||
"@napi-rs/wasm-runtime" "^0.2.11"
|
||||
"@tybys/wasm-util" "^0.9.0"
|
||||
"@emnapi/core" "^1.4.5"
|
||||
"@emnapi/runtime" "^1.4.5"
|
||||
"@emnapi/wasi-threads" "^1.0.4"
|
||||
"@napi-rs/wasm-runtime" "^0.2.12"
|
||||
"@tybys/wasm-util" "^0.10.0"
|
||||
tslib "^2.8.0"
|
||||
|
||||
"@tailwindcss/oxide-win32-arm64-msvc@4.1.11":
|
||||
version "4.1.11"
|
||||
resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.1.11.tgz#70ba392dca0fa3707ebe27d2bd6ac3e69d35e3b7"
|
||||
integrity sha512-UgKYx5PwEKrac3GPNPf6HVMNhUIGuUh4wlDFR2jYYdkX6pL/rn73zTq/4pzUm8fOjAn5L8zDeHp9iXmUGOXZ+w==
|
||||
"@tailwindcss/oxide-win32-arm64-msvc@4.1.12":
|
||||
version "4.1.12"
|
||||
resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.1.12.tgz#938bcc6a82e1120ea4fe2ce94be0a8cdf3ae92c7"
|
||||
integrity sha512-iGLyD/cVP724+FGtMWslhcFyg4xyYyM+5F4hGvKA7eifPkXHRAUDFaimu53fpNg9X8dfP75pXx/zFt/jlNF+lg==
|
||||
|
||||
"@tailwindcss/oxide-win32-x64-msvc@4.1.11":
|
||||
version "4.1.11"
|
||||
resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.1.11.tgz#cdcb9eea9225a346c0695f67f621990b0534763f"
|
||||
integrity sha512-YfHoggn1j0LK7wR82TOucWc5LDCguHnoS879idHekmmiR7g9HUtMw9MI0NHatS28u/Xlkfi9w5RJWgz2Dl+5Qg==
|
||||
"@tailwindcss/oxide-win32-x64-msvc@4.1.12":
|
||||
version "4.1.12"
|
||||
resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.1.12.tgz#b1ee2ed0ef2c4095ddec3684a1987e2b3613af36"
|
||||
integrity sha512-NKIh5rzw6CpEodv/++r0hGLlfgT/gFN+5WNdZtvh6wpU2BpGNgdjvj6H2oFc8nCM839QM1YOhjpgbAONUb4IxA==
|
||||
|
||||
"@tailwindcss/oxide@4.1.11":
|
||||
version "4.1.11"
|
||||
resolved "https://registry.yarnpkg.com/@tailwindcss/oxide/-/oxide-4.1.11.tgz#569b668c99c337b7b8204bc5b6a833429755a05b"
|
||||
integrity sha512-Q69XzrtAhuyfHo+5/HMgr1lAiPP/G40OMFAnws7xcFEYqcypZmdW8eGXaOUIeOl1dzPJBPENXgbjsOyhg2nkrg==
|
||||
"@tailwindcss/oxide@4.1.12":
|
||||
version "4.1.12"
|
||||
resolved "https://registry.yarnpkg.com/@tailwindcss/oxide/-/oxide-4.1.12.tgz#13a6f806aafa9c83629c9a04acd92031aef83f1c"
|
||||
integrity sha512-gM5EoKHW/ukmlEtphNwaGx45fGoEmP10v51t9unv55voWh6WrOL19hfuIdo2FjxIaZzw776/BUQg7Pck++cIVw==
|
||||
dependencies:
|
||||
detect-libc "^2.0.4"
|
||||
tar "^7.4.3"
|
||||
optionalDependencies:
|
||||
"@tailwindcss/oxide-android-arm64" "4.1.11"
|
||||
"@tailwindcss/oxide-darwin-arm64" "4.1.11"
|
||||
"@tailwindcss/oxide-darwin-x64" "4.1.11"
|
||||
"@tailwindcss/oxide-freebsd-x64" "4.1.11"
|
||||
"@tailwindcss/oxide-linux-arm-gnueabihf" "4.1.11"
|
||||
"@tailwindcss/oxide-linux-arm64-gnu" "4.1.11"
|
||||
"@tailwindcss/oxide-linux-arm64-musl" "4.1.11"
|
||||
"@tailwindcss/oxide-linux-x64-gnu" "4.1.11"
|
||||
"@tailwindcss/oxide-linux-x64-musl" "4.1.11"
|
||||
"@tailwindcss/oxide-wasm32-wasi" "4.1.11"
|
||||
"@tailwindcss/oxide-win32-arm64-msvc" "4.1.11"
|
||||
"@tailwindcss/oxide-win32-x64-msvc" "4.1.11"
|
||||
"@tailwindcss/oxide-android-arm64" "4.1.12"
|
||||
"@tailwindcss/oxide-darwin-arm64" "4.1.12"
|
||||
"@tailwindcss/oxide-darwin-x64" "4.1.12"
|
||||
"@tailwindcss/oxide-freebsd-x64" "4.1.12"
|
||||
"@tailwindcss/oxide-linux-arm-gnueabihf" "4.1.12"
|
||||
"@tailwindcss/oxide-linux-arm64-gnu" "4.1.12"
|
||||
"@tailwindcss/oxide-linux-arm64-musl" "4.1.12"
|
||||
"@tailwindcss/oxide-linux-x64-gnu" "4.1.12"
|
||||
"@tailwindcss/oxide-linux-x64-musl" "4.1.12"
|
||||
"@tailwindcss/oxide-wasm32-wasi" "4.1.12"
|
||||
"@tailwindcss/oxide-win32-arm64-msvc" "4.1.12"
|
||||
"@tailwindcss/oxide-win32-x64-msvc" "4.1.12"
|
||||
|
||||
"@tailwindcss/postcss@4.1.11":
|
||||
version "4.1.11"
|
||||
resolved "https://registry.yarnpkg.com/@tailwindcss/postcss/-/postcss-4.1.11.tgz#4d844f7ff295c731ceab54934531bece7380ce0c"
|
||||
integrity sha512-q/EAIIpF6WpLhKEuQSEVMZNMIY8KhWoAemZ9eylNAih9jxMGAYPPWBn3I9QL/2jZ+e7OEz/tZkX5HwbBR4HohA==
|
||||
"@tailwindcss/postcss@4.1.12":
|
||||
version "4.1.12"
|
||||
resolved "https://registry.yarnpkg.com/@tailwindcss/postcss/-/postcss-4.1.12.tgz#ac2423c3cc69d673e2965c6d1413504a6398e415"
|
||||
integrity sha512-5PpLYhCAwf9SJEeIsSmCDLgyVfdBhdBpzX1OJ87anT9IVR0Z9pjM0FNixCAUAHGnMBGB8K99SwAheXrT0Kh6QQ==
|
||||
dependencies:
|
||||
"@alloc/quick-lru" "^5.2.0"
|
||||
"@tailwindcss/node" "4.1.11"
|
||||
"@tailwindcss/oxide" "4.1.11"
|
||||
"@tailwindcss/node" "4.1.12"
|
||||
"@tailwindcss/oxide" "4.1.12"
|
||||
postcss "^8.4.41"
|
||||
tailwindcss "4.1.11"
|
||||
tailwindcss "4.1.12"
|
||||
|
||||
"@tauri-apps/api@2.7.0", "@tauri-apps/api@^2.6.0":
|
||||
version "2.7.0"
|
||||
@@ -627,13 +627,6 @@
|
||||
dependencies:
|
||||
tslib "^2.4.0"
|
||||
|
||||
"@tybys/wasm-util@^0.9.0":
|
||||
version "0.9.0"
|
||||
resolved "https://registry.yarnpkg.com/@tybys/wasm-util/-/wasm-util-0.9.0.tgz#3e75eb00604c8d6db470bf18c37b7d984a0e3355"
|
||||
integrity sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw==
|
||||
dependencies:
|
||||
tslib "^2.4.0"
|
||||
|
||||
"@types/estree@^1.0.6":
|
||||
version "1.0.8"
|
||||
resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.8.tgz#958b91c991b1867ced318bedea0e215ee050726e"
|
||||
@@ -649,10 +642,10 @@
|
||||
resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee"
|
||||
integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==
|
||||
|
||||
"@types/node@24.2.1":
|
||||
version "24.2.1"
|
||||
resolved "https://registry.yarnpkg.com/@types/node/-/node-24.2.1.tgz#83e41543f0a518e006594bb394e2cd961de56727"
|
||||
integrity sha512-DRh5K+ka5eJic8CjH7td8QpYEV6Zo10gfRkjHCO3weqZHWDtAaSTFtl4+VMqOJ4N5jcuhZ9/l+yy8rVgw7BQeQ==
|
||||
"@types/node@24.3.0":
|
||||
version "24.3.0"
|
||||
resolved "https://registry.yarnpkg.com/@types/node/-/node-24.3.0.tgz#89b09f45cb9a8ee69466f18ee5864e4c3eb84dec"
|
||||
integrity sha512-aPTXCrfwnDLj4VvXrm+UUCQjNEvJgNA8s5F1cvwQU+3KNltTOkBm1j30uNLyqqPNe7gE3KFzImYoZEfLhp4Yow==
|
||||
dependencies:
|
||||
undici-types "~7.10.0"
|
||||
|
||||
@@ -1077,9 +1070,9 @@ callsites@^3.0.0:
|
||||
integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==
|
||||
|
||||
caniuse-lite@^1.0.30001579:
|
||||
version "1.0.30001734"
|
||||
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001734.tgz#f97e08599e2d75664543ae4b6ef25dc2183c5cc6"
|
||||
integrity sha512-uhE1Ye5vgqju6OI71HTQqcBCZrvHugk0MjLak7Q+HfoBgoq5Bi+5YnwjP4fjDgrtYr/l8MVRBvzz9dPD4KyK0A==
|
||||
version "1.0.30001735"
|
||||
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001735.tgz#ba658fd3fd24a4106fd68d5ce472a2c251494dbe"
|
||||
integrity sha512-EV/laoX7Wq2J9TQlyIXRxTJqIw4sxfXS4OYgudGxBYRuTv0q7AM6yMEpU/Vo1I94thg9U6EZ2NfZx9GJq83u7w==
|
||||
|
||||
chalk@^4.0.0:
|
||||
version "4.1.2"
|
||||
@@ -1241,7 +1234,7 @@ emoji-regex@^9.2.2:
|
||||
resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72"
|
||||
integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==
|
||||
|
||||
enhanced-resolve@^5.18.1:
|
||||
enhanced-resolve@^5.18.3:
|
||||
version "5.18.3"
|
||||
resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.18.3.tgz#9b5f4c5c076b8787c78fe540392ce76a88855b44"
|
||||
integrity sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww==
|
||||
@@ -1636,9 +1629,9 @@ fastq@^1.6.0:
|
||||
reusify "^1.0.4"
|
||||
|
||||
fdir@^6.4.4:
|
||||
version "6.4.6"
|
||||
resolved "https://registry.yarnpkg.com/fdir/-/fdir-6.4.6.tgz#2b268c0232697063111bbf3f64810a2a741ba281"
|
||||
integrity sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w==
|
||||
version "6.5.0"
|
||||
resolved "https://registry.yarnpkg.com/fdir/-/fdir-6.5.0.tgz#ed2ab967a331ade62f18d077dae192684d50d350"
|
||||
integrity sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==
|
||||
|
||||
file-entry-cache@^8.0.0:
|
||||
version "8.0.0"
|
||||
@@ -2077,7 +2070,7 @@ iterator.prototype@^1.1.4:
|
||||
has-symbols "^1.1.0"
|
||||
set-function-name "^2.0.2"
|
||||
|
||||
jiti@^2.4.2:
|
||||
jiti@^2.5.1:
|
||||
version "2.5.1"
|
||||
resolved "https://registry.yarnpkg.com/jiti/-/jiti-2.5.1.tgz#bd099c1c2be1c59bbea4e5adcd127363446759d0"
|
||||
integrity sha512-twQoecYPiVA5K/h6SxtORw/Bs3ar+mLUtoPSc7iMXzQzK8d7eJ/R09wmTwAjiamETn1cXYPGfNnu7DMoHgu12w==
|
||||
@@ -2890,10 +2883,10 @@ supports-preserve-symlinks-flag@^1.0.0:
|
||||
resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09"
|
||||
integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==
|
||||
|
||||
tailwindcss@4.1.11:
|
||||
version "4.1.11"
|
||||
resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-4.1.11.tgz#799af3e98c19c5baaefafc6e0c16304a0e684854"
|
||||
integrity sha512-2E9TBm6MDD/xKYe+dvJZAmg3yxIEDNRc0jwlNyDg/4Fil2QcSLjFKGVff0lAf1jjeaArlG/M75Ey/EYr/OJtBA==
|
||||
tailwindcss@4.1.12:
|
||||
version "4.1.12"
|
||||
resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-4.1.12.tgz#7baeed5b5ac77370571c2baa72ee06e0050fc0a8"
|
||||
integrity sha512-DzFtxOi+7NsFf7DBtI3BJsynR+0Yp6etH+nRPTbpWnS2pZBaSksv/JGctNwSWzbFjp0vxSqknaUylseZqMDGrA==
|
||||
|
||||
tapable@^2.2.0:
|
||||
version "2.2.2"
|
||||
|
||||
Reference in new issue
Block a user