Add console logging for client-side routing decisions
tryClientRoute now logs why it falls through: has-data, no content, eval failed, or #main-panel not found. tryEvalContent logs the actual error on catch. Added logWarn platform function (console.warn). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -1926,16 +1926,16 @@ return forEach(function(form) { return (isSxTruthy((isSxTruthy(!isProcessed(form
|
|||||||
// try-client-route
|
// try-client-route
|
||||||
var tryClientRoute = function(pathname) { return (function() {
|
var tryClientRoute = function(pathname) { return (function() {
|
||||||
var match = findMatchingRoute(pathname, _pageRoutes);
|
var match = findMatchingRoute(pathname, _pageRoutes);
|
||||||
return (isSxTruthy(isNil(match)) ? false : (isSxTruthy(get(match, "has-data")) ? false : (function() {
|
return (isSxTruthy(isNil(match)) ? false : (isSxTruthy(get(match, "has-data")) ? (logInfo((String("sx:route server (has data) ") + String(pathname))), false) : (function() {
|
||||||
var contentSrc = get(match, "content");
|
var contentSrc = get(match, "content");
|
||||||
var closure = sxOr(get(match, "closure"), {});
|
var closure = sxOr(get(match, "closure"), {});
|
||||||
var params = get(match, "params");
|
var params = get(match, "params");
|
||||||
return (isSxTruthy(sxOr(isNil(contentSrc), isEmpty(contentSrc))) ? false : (function() {
|
return (isSxTruthy(sxOr(isNil(contentSrc), isEmpty(contentSrc))) ? (logWarn((String("sx:route no content for ") + String(pathname))), false) : (function() {
|
||||||
var env = merge(closure, params);
|
var env = merge(closure, params);
|
||||||
var rendered = tryEvalContent(contentSrc, env);
|
var rendered = tryEvalContent(contentSrc, env);
|
||||||
return (isSxTruthy(isNil(rendered)) ? false : (function() {
|
return (isSxTruthy(isNil(rendered)) ? (logWarn((String("sx:route eval failed for ") + String(pathname))), false) : (function() {
|
||||||
var target = domQueryById("main-panel");
|
var target = domQueryById("main-panel");
|
||||||
return (isSxTruthy(isNil(target)) ? false : (domSetTextContent(target, ""), domAppend(target, rendered), hoistHeadElementsFull(target), processElements(target), sxHydrateElements(target), logInfo((String("sx:route client ") + String(pathname))), true));
|
return (isSxTruthy(isNil(target)) ? (logWarn("sx:route #main-panel not found"), false) : (domSetTextContent(target, ""), domAppend(target, rendered), hoistHeadElementsFull(target), processElements(target), sxHydrateElements(target), logInfo((String("sx:route client ") + String(pathname))), true));
|
||||||
})());
|
})());
|
||||||
})());
|
})());
|
||||||
})()));
|
})()));
|
||||||
@@ -3023,6 +3023,7 @@ callExpr.push(dictGet(kwargs, k)); } }
|
|||||||
}
|
}
|
||||||
return sxRenderWithEnv(source, merged);
|
return sxRenderWithEnv(source, merged);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
|
console.warn("sx:route eval error", e);
|
||||||
return NIL;
|
return NIL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -3370,6 +3371,10 @@ callExpr.push(dictGet(kwargs, k)); } }
|
|||||||
if (typeof console !== "undefined") console.log("[sx-ref] " + msg);
|
if (typeof console !== "undefined") console.log("[sx-ref] " + msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function logWarn(msg) {
|
||||||
|
if (typeof console !== "undefined") console.warn("[sx-ref] " + msg);
|
||||||
|
}
|
||||||
|
|
||||||
function logParseError(label, text, err) {
|
function logParseError(label, text, err) {
|
||||||
if (typeof console === "undefined") return;
|
if (typeof console === "undefined") return;
|
||||||
var msg = err && err.message ? err.message : String(err);
|
var msg = err && err.message ? err.message : String(err);
|
||||||
|
|||||||
@@ -497,6 +497,7 @@ class JSEmitter:
|
|||||||
"store-env-attr": "storeEnvAttr",
|
"store-env-attr": "storeEnvAttr",
|
||||||
"to-kebab": "toKebab",
|
"to-kebab": "toKebab",
|
||||||
"log-info": "logInfo",
|
"log-info": "logInfo",
|
||||||
|
"log-warn": "logWarn",
|
||||||
"log-parse-error": "logParseError",
|
"log-parse-error": "logParseError",
|
||||||
"parse-and-load-style-dict": "parseAndLoadStyleDict",
|
"parse-and-load-style-dict": "parseAndLoadStyleDict",
|
||||||
"_page-routes": "_pageRoutes",
|
"_page-routes": "_pageRoutes",
|
||||||
@@ -2625,6 +2626,7 @@ PLATFORM_ORCHESTRATION_JS = """
|
|||||||
}
|
}
|
||||||
return sxRenderWithEnv(source, merged);
|
return sxRenderWithEnv(source, merged);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
|
console.warn("sx:route eval error", e);
|
||||||
return NIL;
|
return NIL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -2974,6 +2976,10 @@ PLATFORM_BOOT_JS = """
|
|||||||
if (typeof console !== "undefined") console.log("[sx-ref] " + msg);
|
if (typeof console !== "undefined") console.log("[sx-ref] " + msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function logWarn(msg) {
|
||||||
|
if (typeof console !== "undefined") console.warn("[sx-ref] " + msg);
|
||||||
|
}
|
||||||
|
|
||||||
function logParseError(label, text, err) {
|
function logParseError(label, text, err) {
|
||||||
if (typeof console === "undefined") return;
|
if (typeof console === "undefined") return;
|
||||||
var msg = err && err.message ? err.message : String(err);
|
var msg = err && err.message ? err.message : String(err);
|
||||||
|
|||||||
@@ -545,19 +545,19 @@
|
|||||||
(if (nil? match)
|
(if (nil? match)
|
||||||
false
|
false
|
||||||
(if (get match "has-data")
|
(if (get match "has-data")
|
||||||
false
|
(do (log-info (str "sx:route server (has data) " pathname)) false)
|
||||||
(let ((content-src (get match "content"))
|
(let ((content-src (get match "content"))
|
||||||
(closure (or (get match "closure") {}))
|
(closure (or (get match "closure") {}))
|
||||||
(params (get match "params")))
|
(params (get match "params")))
|
||||||
(if (or (nil? content-src) (empty? content-src))
|
(if (or (nil? content-src) (empty? content-src))
|
||||||
false
|
(do (log-warn (str "sx:route no content for " pathname)) false)
|
||||||
(let ((env (merge closure params))
|
(let ((env (merge closure params))
|
||||||
(rendered (try-eval-content content-src env)))
|
(rendered (try-eval-content content-src env)))
|
||||||
(if (nil? rendered)
|
(if (nil? rendered)
|
||||||
false
|
(do (log-warn (str "sx:route eval failed for " pathname)) false)
|
||||||
(let ((target (dom-query-by-id "main-panel")))
|
(let ((target (dom-query-by-id "main-panel")))
|
||||||
(if (nil? target)
|
(if (nil? target)
|
||||||
false
|
(do (log-warn "sx:route #main-panel not found") false)
|
||||||
(do
|
(do
|
||||||
(dom-set-text-content target "")
|
(dom-set-text-content target "")
|
||||||
(dom-append target rendered)
|
(dom-append target rendered)
|
||||||
|
|||||||
Reference in New Issue
Block a user