cdom 0.0.4 → 0.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/index.js +19 -5
  2. package/package.json +1 -1
package/index.js CHANGED
@@ -609,8 +609,12 @@
609
609
  args[i] = argVal;
610
610
  }
611
611
  }
612
- const result = fn(...args);
613
- return result;
612
+ try {
613
+ return fn(...args);
614
+ } catch (e) {
615
+ console.error(`[cDOM] Helper error in "${funcName}":`, e, { expression, contextNode: ctx });
616
+ return `_(${expression})`;
617
+ }
614
618
  };
615
619
  }
616
620
 
@@ -618,7 +622,12 @@
618
622
  if (/[+\-*%^<>=!&|?:]/.test(expr)) {
619
623
  return (ctx, ev) => {
620
624
  if (!mathParser && typeof globalThis.exprEval !== 'undefined') {
621
- mathParser = new globalThis.exprEval.Parser();
625
+ try {
626
+ mathParser = new globalThis.exprEval.Parser();
627
+ } catch (e) {
628
+ console.error("[cDOM] Failed to initialize expr-eval parser:", e);
629
+ return `_(${expression})`;
630
+ }
622
631
  }
623
632
  if (!mathParser) return expr;
624
633
  try {
@@ -632,7 +641,10 @@
632
641
  return id;
633
642
  });
634
643
  return mathParser.evaluate(processedExpr, scope);
635
- } catch (e) { return `[Math Error]`; }
644
+ } catch (e) {
645
+ console.error(`[cDOM] Math Error in "${expression}":`, e, { contextNode: ctx });
646
+ return `_(${expression})`;
647
+ }
636
648
  };
637
649
  }
638
650
 
@@ -774,6 +786,7 @@
774
786
 
775
787
  return { type: 'value', value: elements.map(el => el.textContent || '').join(', ') };
776
788
  } catch (e) {
789
+ console.error(`[cDOM] CSS Error: "${selector}"`, e, { contextNode });
777
790
  return { type: 'value', value: `[CSS Error: ${selector}]` };
778
791
  }
779
792
  }
@@ -809,6 +822,7 @@
809
822
  default: return { type: 'value', value: '' };
810
823
  }
811
824
  } catch (e) {
825
+ console.error(`[cDOM] XPath Error: "${expression}"`, e, { contextNode });
812
826
  return { type: 'value', value: `[XPath Error: ${expression}]` };
813
827
  }
814
828
  }
@@ -945,7 +959,7 @@
945
959
  continue;
946
960
  } else if (key.startsWith('on')) {
947
961
  if (typeof val === "string") {
948
- if (val.startsWith('_(') && val.endsWith(')')) {
962
+ if ((val.startsWith('_(') || val.startsWith('=(')) && val.endsWith(')')) {
949
963
  const expr = val.substring(2, val.length - 1);
950
964
  el[key] = (event) => evaluateStateExpression(expr, el, event);
951
965
  } else if (!wasString || unsafe) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cdom",
3
- "version": "0.0.4",
3
+ "version": "0.0.6",
4
4
  "description": "Safe, reactive UIs based on JSON Pointer, XPath, JSON Schema",
5
5
  "keywords": [
6
6
  "JPRX",