fix tauri dev server resolution
This commit is contained in:
@@ -2378,6 +2378,72 @@
|
|||||||
"const": "dialog:deny-save",
|
"const": "dialog:deny-save",
|
||||||
"markdownDescription": "Denies the save command without any pre-configured scope."
|
"markdownDescription": "Denies the save command without any pre-configured scope."
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"description": "No features are enabled by default, as we believe\nthe shortcuts can be inherently dangerous and it is\napplication specific if specific shortcuts should be\nregistered or unregistered.\n",
|
||||||
|
"type": "string",
|
||||||
|
"const": "global-shortcut:default",
|
||||||
|
"markdownDescription": "No features are enabled by default, as we believe\nthe shortcuts can be inherently dangerous and it is\napplication specific if specific shortcuts should be\nregistered or unregistered.\n"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "Enables the is_registered command without any pre-configured scope.",
|
||||||
|
"type": "string",
|
||||||
|
"const": "global-shortcut:allow-is-registered",
|
||||||
|
"markdownDescription": "Enables the is_registered command without any pre-configured scope."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "Enables the register command without any pre-configured scope.",
|
||||||
|
"type": "string",
|
||||||
|
"const": "global-shortcut:allow-register",
|
||||||
|
"markdownDescription": "Enables the register command without any pre-configured scope."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "Enables the register_all command without any pre-configured scope.",
|
||||||
|
"type": "string",
|
||||||
|
"const": "global-shortcut:allow-register-all",
|
||||||
|
"markdownDescription": "Enables the register_all command without any pre-configured scope."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "Enables the unregister command without any pre-configured scope.",
|
||||||
|
"type": "string",
|
||||||
|
"const": "global-shortcut:allow-unregister",
|
||||||
|
"markdownDescription": "Enables the unregister command without any pre-configured scope."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "Enables the unregister_all command without any pre-configured scope.",
|
||||||
|
"type": "string",
|
||||||
|
"const": "global-shortcut:allow-unregister-all",
|
||||||
|
"markdownDescription": "Enables the unregister_all command without any pre-configured scope."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "Denies the is_registered command without any pre-configured scope.",
|
||||||
|
"type": "string",
|
||||||
|
"const": "global-shortcut:deny-is-registered",
|
||||||
|
"markdownDescription": "Denies the is_registered command without any pre-configured scope."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "Denies the register command without any pre-configured scope.",
|
||||||
|
"type": "string",
|
||||||
|
"const": "global-shortcut:deny-register",
|
||||||
|
"markdownDescription": "Denies the register command without any pre-configured scope."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "Denies the register_all command without any pre-configured scope.",
|
||||||
|
"type": "string",
|
||||||
|
"const": "global-shortcut:deny-register-all",
|
||||||
|
"markdownDescription": "Denies the register_all command without any pre-configured scope."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "Denies the unregister command without any pre-configured scope.",
|
||||||
|
"type": "string",
|
||||||
|
"const": "global-shortcut:deny-unregister",
|
||||||
|
"markdownDescription": "Denies the unregister command without any pre-configured scope."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "Denies the unregister_all command without any pre-configured scope.",
|
||||||
|
"type": "string",
|
||||||
|
"const": "global-shortcut:deny-unregister-all",
|
||||||
|
"markdownDescription": "Denies the unregister_all command without any pre-configured scope."
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"description": "This permission set configures which\nnotification features are by default exposed.\n\n#### Granted Permissions\n\nIt allows all notification related features.\n\n\n#### This default permission set includes:\n\n- `allow-is-permission-granted`\n- `allow-request-permission`\n- `allow-notify`\n- `allow-register-action-types`\n- `allow-register-listener`\n- `allow-cancel`\n- `allow-get-pending`\n- `allow-remove-active`\n- `allow-get-active`\n- `allow-check-permissions`\n- `allow-show`\n- `allow-batch`\n- `allow-list-channels`\n- `allow-delete-channel`\n- `allow-create-channel`\n- `allow-permission-state`",
|
"description": "This permission set configures which\nnotification features are by default exposed.\n\n#### Granted Permissions\n\nIt allows all notification related features.\n\n\n#### This default permission set includes:\n\n- `allow-is-permission-granted`\n- `allow-request-permission`\n- `allow-notify`\n- `allow-register-action-types`\n- `allow-register-listener`\n- `allow-cancel`\n- `allow-get-pending`\n- `allow-remove-active`\n- `allow-get-active`\n- `allow-check-permissions`\n- `allow-show`\n- `allow-batch`\n- `allow-list-channels`\n- `allow-delete-channel`\n- `allow-create-channel`\n- `allow-permission-state`",
|
||||||
"type": "string",
|
"type": "string",
|
||||||
|
|||||||
@@ -1018,27 +1018,50 @@ impl CliEntry {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn resolve_tsx(_app: &AppHandle) -> Option<String> {
|
fn resolve_tsx(_app: &AppHandle) -> Option<String> {
|
||||||
let candidates = vec![
|
let cwd = std::env::current_dir().ok();
|
||||||
std::env::current_dir()
|
let workspace = workspace_root();
|
||||||
.ok()
|
let mut candidates = vec![
|
||||||
|
cwd.as_ref().map(|p| p.join("node_modules/tsx/dist/cli.mjs")),
|
||||||
|
cwd.as_ref().map(|p| p.join("node_modules/tsx/dist/cli.cjs")),
|
||||||
|
cwd.as_ref().map(|p| p.join("node_modules/tsx/dist/cli.js")),
|
||||||
|
cwd.as_ref().map(|p| p.join("../node_modules/tsx/dist/cli.mjs")),
|
||||||
|
cwd.as_ref().map(|p| p.join("../node_modules/tsx/dist/cli.cjs")),
|
||||||
|
cwd.as_ref().map(|p| p.join("../node_modules/tsx/dist/cli.js")),
|
||||||
|
cwd.as_ref().map(|p| p.join("../../node_modules/tsx/dist/cli.mjs")),
|
||||||
|
cwd.as_ref().map(|p| p.join("../../node_modules/tsx/dist/cli.cjs")),
|
||||||
|
cwd.as_ref().map(|p| p.join("../../node_modules/tsx/dist/cli.js")),
|
||||||
|
workspace
|
||||||
|
.as_ref()
|
||||||
|
.map(|p| p.join("node_modules/tsx/dist/cli.mjs")),
|
||||||
|
workspace
|
||||||
|
.as_ref()
|
||||||
|
.map(|p| p.join("node_modules/tsx/dist/cli.cjs")),
|
||||||
|
workspace
|
||||||
|
.as_ref()
|
||||||
.map(|p| p.join("node_modules/tsx/dist/cli.js")),
|
.map(|p| p.join("node_modules/tsx/dist/cli.js")),
|
||||||
std::env::current_exe().ok().and_then(|ex| {
|
|
||||||
ex.parent()
|
|
||||||
.map(|p| p.join("../node_modules/tsx/dist/cli.js"))
|
|
||||||
}),
|
|
||||||
];
|
];
|
||||||
|
|
||||||
|
if let Ok(exe) = std::env::current_exe() {
|
||||||
|
if let Some(dir) = exe.parent() {
|
||||||
|
candidates.push(Some(dir.join("../node_modules/tsx/dist/cli.mjs")));
|
||||||
|
candidates.push(Some(dir.join("../node_modules/tsx/dist/cli.cjs")));
|
||||||
|
candidates.push(Some(dir.join("../node_modules/tsx/dist/cli.js")));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
first_existing(candidates)
|
first_existing(candidates)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn resolve_dev_entry(_app: &AppHandle) -> Option<String> {
|
fn resolve_dev_entry(_app: &AppHandle) -> Option<String> {
|
||||||
|
let cwd = std::env::current_dir().ok();
|
||||||
|
let workspace = workspace_root();
|
||||||
let candidates = vec![
|
let candidates = vec![
|
||||||
std::env::current_dir()
|
workspace
|
||||||
.ok()
|
.as_ref()
|
||||||
.map(|p| p.join("packages/server/src/index.ts")),
|
.map(|p| p.join("packages/server/src/index.ts")),
|
||||||
std::env::current_dir()
|
cwd.as_ref().map(|p| p.join("packages/server/src/index.ts")),
|
||||||
.ok()
|
cwd.as_ref().map(|p| p.join("../server/src/index.ts")),
|
||||||
.map(|p| p.join("../server/src/index.ts")),
|
cwd.as_ref().map(|p| p.join("../../server/src/index.ts")),
|
||||||
];
|
];
|
||||||
|
|
||||||
first_existing(candidates)
|
first_existing(candidates)
|
||||||
|
|||||||
@@ -129,13 +129,15 @@ fn should_allow_internal(url: &Url) -> bool {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn should_allow_window_origin(app_handle: &AppHandle, window_label: &str, url: &Url) -> bool {
|
fn should_allow_window_origin<R: Runtime>(app_handle: &AppHandle<R>, window_label: &str, url: &Url) -> bool {
|
||||||
if should_allow_internal(url) {
|
if should_allow_internal(url) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
let state = app_handle.state::<AppState>();
|
let state = app_handle.state::<AppState>();
|
||||||
let allowed = state.remote_origins.lock();
|
let Ok(allowed) = state.remote_origins.lock() else {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
if let Some(origin) = allowed.get(window_label) {
|
if let Some(origin) = allowed.get(window_label) {
|
||||||
return origin == &url.origin().ascii_serialization();
|
return origin == &url.origin().ascii_serialization();
|
||||||
}
|
}
|
||||||
@@ -175,6 +177,7 @@ fn open_remote_window(app: AppHandle, payload: RemoteWindowPayload) -> Result<()
|
|||||||
app.state::<AppState>()
|
app.state::<AppState>()
|
||||||
.remote_origins
|
.remote_origins
|
||||||
.lock()
|
.lock()
|
||||||
|
.map_err(|err| err.to_string())?
|
||||||
.insert(label.clone(), parsed.origin().ascii_serialization());
|
.insert(label.clone(), parsed.origin().ascii_serialization());
|
||||||
|
|
||||||
let window = WebviewWindowBuilder::new(&app, label.clone(), WebviewUrl::External(parsed.clone()))
|
let window = WebviewWindowBuilder::new(&app, label.clone(), WebviewUrl::External(parsed.clone()))
|
||||||
@@ -187,11 +190,9 @@ fn open_remote_window(app: AppHandle, payload: RemoteWindowPayload) -> Result<()
|
|||||||
let app_handle = app.clone();
|
let app_handle = app.clone();
|
||||||
window.on_window_event(move |event| {
|
window.on_window_event(move |event| {
|
||||||
if let WindowEvent::Destroyed = event {
|
if let WindowEvent::Destroyed = event {
|
||||||
app_handle
|
if let Ok(mut origins) = app_handle.state::<AppState>().remote_origins.lock() {
|
||||||
.state::<AppState>()
|
origins.remove(&label);
|
||||||
.remote_origins
|
}
|
||||||
.lock()
|
|
||||||
.remove(&label);
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user