diff --git a/lib/js/transpile.sx b/lib/js/transpile.sx index 106d109a..33c6d037 100644 --- a/lib/js/transpile.sx +++ b/lib/js/transpile.sx @@ -1593,6 +1593,36 @@ param-syms (list (js-sym "js-async-wrap") (list (js-sym "fn") (list) body-tr)))))) +(define + js-internal-key? + (fn + (k) + (and + (string? k) + (>= (len k) 4) + (= (substring k 0 2) "__") + (= (substring k (- (len k) 2) (len k)) "__")))) + +(define + js-display + (fn + (val) + (cond + ((dict? val) + (let + ((cleaned (dict))) + (begin + (for-each + (fn + (k) + (when + (not (js-internal-key? k)) + (dict-set! cleaned k (js-display (get val k))))) + (keys val)) + cleaned))) + ((list? val) (map js-display val)) + (else val)))) + (define js-eval (fn @@ -1600,6 +1630,6 @@ (let ((result (eval-expr (list (quote let) (list (list (js-sym "this") (list (js-sym "js-this")))) (js-transpile (js-parse (js-tokenize src))))))) (js-drain-microtasks!) - result))) + (js-display result)))) (define js-compile-expr (fn (src) (js-transpile (js-parse-expr src))))