fix(js): normalize request policies

Honor only documented request concurrency policies and fall back to default behavior for unknown data-slhx-policy values.

req: convention/006
This commit is contained in:
slhx agent
2026-05-25 22:52:23 +02:00
parent 644d13e629
commit 227337caa4
2 changed files with 9 additions and 1 deletions
+5 -1
View File
@@ -45,8 +45,12 @@
return raw && /^\d+$/.test(raw) ? raw : null;
}
function normalizedPolicy(value) {
return value === "latest" || value === "queue" || value === "drop" || value === "parallel" ? value : null;
}
function requestPolicy(el, eventName) {
const policy = el.getAttribute("data-slhx-policy");
const policy = normalizedPolicy(el.getAttribute("data-slhx-policy"));
if (policy) return policy;
if (el.hasAttribute("data-slhx-debounce") || eventName === "input") return "latest";
if (el.tagName === "FORM") return "drop";
+4
View File
@@ -54,8 +54,12 @@ fn runtime_supports_drag_drop_params_without_user_js() {
#[test]
fn runtime_supports_queued_request_policy() {
// req: convention/006
let source = slhx_js::RUNTIME_JS;
assert!(source.contains("function normalizedPolicy(value)"));
assert!(source.contains("value === \"latest\" || value === \"queue\" || value === \"drop\" || value === \"parallel\""));
assert!(source.contains("const policy = normalizedPolicy(el.getAttribute(\"data-slhx-policy\"))"));
assert!(source.contains("const queues = new WeakMap()"));
assert!(source.contains("policy === \"queue\""));
assert!(source.contains("const base = queues.get(target) || active.done"));