From 7b60d94b8a29c49a246bc4e63dff463498d9749b Mon Sep 17 00:00:00 2001 From: Will Anderson Date: Mon, 4 May 2026 10:54:34 -0500 Subject: [PATCH] add --minify and --obfuscate flags to elc JS pipeline Adds two post-processing flags that produce production-ready browser JS in a single elc invocation, replacing extract-js.py in the web product pipeline: elc --target=js --bundle --minify source.el > output.min.js elc --target=js --bundle --obfuscate source.el > output.obf.js --minify shells out to terser (passes=2, no drop_console, drop_debugger). --obfuscate shells out to javascript-obfuscator with the same options as the old extract-js.py script. --obfuscate implies --minify. Tool discovery: checks ./node_modules/.bin/, ../node_modules/.bin/ (monorepo), then falls back to npx. Both flags require --target=js; passing either without it exits 1 with a clear error. Both tools receive a reserved-names list of globals referenced from HTML onclick= attributes (neuronDemoToggle, signInWith, NEURON_CFG, etc.) so they are not mangled. Implementation adds stdout_to_file(path)/stdout_restore() builtins to the C runtime so codegen's println-streamed output can be captured to a temp file before being piped through the external tools. Temp files use /tmp/elc--.js naming and are cleaned up on success and failure. Rebuilds dist/platform/elc and dist/platform/elc.c. Self-hosting verified. --- dist/platform/elc | Bin 415592 -> 485984 bytes dist/platform/elc.c | 1003 ++++++++++++++++++++++++------ el-compiler/runtime/el_runtime.c | 30 + el-compiler/runtime/el_runtime.h | 2 + el-compiler/src/codegen.el | 5 + el-compiler/src/compiler.el | 203 +++++- spec/codegen-js.md | 87 +++ 7 files changed, 1147 insertions(+), 183 deletions(-) diff --git a/dist/platform/elc b/dist/platform/elc index fb7502c2c8600afe88d217185d0dc0fa4b6471e4..d3abc2358ea85484c6f2cb2dd7d9d496067bd891 100755 GIT binary patch literal 485984 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 z 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Αbfxz35wlv-6w@>iMVZo3 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 diff --git a/dist/platform/elc.c b/dist/platform/elc.c index 52ef58a..14b2b87 100644 --- a/dist/platform/elc.c +++ b/dist/platform/elc.c @@ -37,6 +37,9 @@ el_val_t parse_binop(el_val_t tokens, el_val_t pos, el_val_t min_prec); el_val_t parse_expr(el_val_t tokens, el_val_t pos); el_val_t parse_stmt(el_val_t tokens, el_val_t pos); el_val_t parse(el_val_t tokens); +el_val_t nibble_to_hex(el_val_t n); +el_val_t byte_to_hex2(el_val_t b); +el_val_t is_hex_digit_byte(el_val_t b); el_val_t c_escape(el_val_t s); el_val_t c_str_lit(el_val_t s); el_val_t el_type_to_c(el_val_t type_str); @@ -126,6 +129,9 @@ el_val_t js_str_lit(el_val_t s); el_val_t js_emit_line(el_val_t line); el_val_t js_emit_blank(void); el_val_t js_binop(el_val_t op); +el_val_t js_is_async_builtin(el_val_t name); +el_val_t js_register_async_fn(el_val_t name); +el_val_t js_is_async_fn(el_val_t name); el_val_t js_is_int_name(el_val_t name); el_val_t js_add_int_name(el_val_t name); el_val_t js_build_int_names_for_params(el_val_t params); @@ -146,14 +152,32 @@ el_val_t js_cg_fn(el_val_t stmt); el_val_t js_is_fndef(el_val_t stmt); el_val_t js_is_top_level_decl(el_val_t stmt); el_val_t codegen_js(el_val_t stmts, el_val_t source); +el_val_t codegen_js_bundle(el_val_t stmts, el_val_t source, el_val_t runtime_content); +el_val_t codegen_js_inner(el_val_t stmts, el_val_t source, el_val_t bundle_mode, el_val_t runtime_content); +el_val_t js_strip_es_exports(el_val_t content); el_val_t compile(el_val_t source); el_val_t compile_js(el_val_t source); +el_val_t compile_js_with_bundle(el_val_t source, el_val_t runtime_path); el_val_t compile_dispatch(el_val_t tgt, el_val_t source); +el_val_t compile_dispatch_bundle(el_val_t tgt, el_val_t source, el_val_t runtime_path); el_val_t detect_target(el_val_t argv); el_val_t strip_flags(el_val_t argv); +el_val_t detect_emit_header(el_val_t argv); +el_val_t detect_bundle(el_val_t argv); +el_val_t detect_minify(el_val_t argv); +el_val_t detect_obfuscate(el_val_t argv); +el_val_t make_temp_path(el_val_t suffix); +el_val_t js_reserved_names(void); +el_val_t find_node_tool(el_val_t tool_name, el_val_t src_dir); +el_val_t apply_minify(el_val_t js_path, el_val_t out_path, el_val_t src_dir); +el_val_t apply_obfuscate(el_val_t js_path, el_val_t out_path, el_val_t src_dir); +el_val_t resolve_runtime_path(el_val_t src_path); +el_val_t type_node_to_el(el_val_t t); +el_val_t emit_header(el_val_t stmts, el_val_t hdr_path); el_val_t dirname_of(el_val_t path); el_val_t parse_import_line(el_val_t trimmed, el_val_t dir); el_val_t resolve_imports(el_val_t src_path); +el_val_t run_with_postprocess(el_val_t tgt, el_val_t source, el_val_t src_path, el_val_t do_bundle, el_val_t do_obfuscate, el_val_t argc, el_val_t positional); el_val_t lex_is_digit(el_val_t ch) { if (str_eq(ch, EL_STR("0"))) { @@ -514,13 +538,16 @@ el_val_t keyword_kind(el_val_t word) { if (str_eq(word, EL_STR("vessel"))) { return EL_STR("Vessel"); } + if (str_eq(word, EL_STR("extern"))) { + return EL_STR("Extern"); + } return EL_STR(""); return 0; } el_val_t scan_digits(el_val_t chars, el_val_t start, el_val_t total) { el_val_t i = start; - el_val_t text = EL_STR(""); + el_val_t parts = native_list_empty(); el_val_t running = 1; while (running) { if (i >= total) { @@ -528,20 +555,20 @@ el_val_t scan_digits(el_val_t chars, el_val_t start, el_val_t total) { } else { el_val_t ch = native_list_get(chars, i); if (lex_is_digit(ch)) { - text = el_str_concat(text, ch); + parts = native_list_append(parts, ch); i = (i + 1); } else { running = 0; } } } - return el_map_new(2, "text", text, "pos", i); + return el_map_new(2, "text", str_join(parts, EL_STR("")), "pos", i); return 0; } el_val_t scan_ident(el_val_t chars, el_val_t start, el_val_t total) { el_val_t i = start; - el_val_t text = EL_STR(""); + el_val_t parts = native_list_empty(); el_val_t running = 1; while (running) { if (i >= total) { @@ -549,14 +576,14 @@ el_val_t scan_ident(el_val_t chars, el_val_t start, el_val_t total) { } else { el_val_t ch = native_list_get(chars, i); if (is_alnum_or_underscore(ch)) { - text = el_str_concat(text, ch); + parts = native_list_append(parts, ch); i = (i + 1); } else { running = 0; } } } - return el_map_new(2, "text", text, "pos", i); + return el_map_new(2, "text", str_join(parts, EL_STR("")), "pos", i); return 0; } @@ -619,7 +646,7 @@ el_val_t looks_like_code(el_val_t s) { el_val_t strip_code_comments(el_val_t s) { el_val_t chars = native_string_chars(s); el_val_t total = native_list_len(chars); - el_val_t out = EL_STR(""); + el_val_t out_parts = native_list_empty(); el_val_t i = 0; el_val_t in_squote = 0; el_val_t in_dquote = 0; @@ -639,11 +666,11 @@ el_val_t strip_code_comments(el_val_t s) { } if (in_js_string) { if (str_eq(ch, EL_STR("\\"))) { - out = el_str_concat(out, ch); + out_parts = native_list_append(out_parts, ch); el_val_t next_i = (i + 1); if (next_i < total) { el_val_t nc = native_list_get(chars, next_i); - out = el_str_concat(out, nc); + out_parts = native_list_append(out_parts, nc); prev = nc; i = (next_i + 1); } else { @@ -668,7 +695,7 @@ el_val_t strip_code_comments(el_val_t s) { } } } - out = el_str_concat(out, ch); + out_parts = native_list_append(out_parts, ch); prev = ch; i = (i + 1); } @@ -681,7 +708,7 @@ el_val_t strip_code_comments(el_val_t s) { if (str_eq(ch, EL_STR("/"))) { if (str_eq(next_ch, EL_STR("/"))) { if (str_eq(prev, EL_STR(":"))) { - out = el_str_concat(out, ch); + out_parts = native_list_append(out_parts, ch); prev = ch; i = (i + 1); } else { @@ -730,7 +757,7 @@ el_val_t strip_code_comments(el_val_t s) { } prev = EL_STR(""); } else { - out = el_str_concat(out, ch); + out_parts = native_list_append(out_parts, ch); prev = ch; i = (i + 1); } @@ -738,23 +765,23 @@ el_val_t strip_code_comments(el_val_t s) { } else { if (str_eq(ch, EL_STR("'"))) { in_squote = 1; - out = el_str_concat(out, ch); + out_parts = native_list_append(out_parts, ch); prev = ch; i = (i + 1); } else { if (str_eq(ch, EL_STR("\""))) { in_dquote = 1; - out = el_str_concat(out, ch); + out_parts = native_list_append(out_parts, ch); prev = ch; i = (i + 1); } else { if (str_eq(ch, EL_STR("`"))) { in_btick = 1; - out = el_str_concat(out, ch); + out_parts = native_list_append(out_parts, ch); prev = ch; i = (i + 1); } else { - out = el_str_concat(out, ch); + out_parts = native_list_append(out_parts, ch); prev = ch; i = (i + 1); } @@ -763,13 +790,13 @@ el_val_t strip_code_comments(el_val_t s) { } } } - return out; + return str_join(out_parts, EL_STR("")); return 0; } el_val_t scan_string(el_val_t chars, el_val_t start, el_val_t total) { el_val_t i = start; - el_val_t text = EL_STR(""); + el_val_t parts = native_list_empty(); el_val_t running = 1; while (running) { if (i >= total) { @@ -781,26 +808,26 @@ el_val_t scan_string(el_val_t chars, el_val_t start, el_val_t total) { if (next_i < total) { el_val_t next_ch = native_list_get(chars, next_i); if (str_eq(next_ch, EL_STR("\""))) { - text = el_str_concat(text, EL_STR("\"")); + parts = native_list_append(parts, EL_STR("\"")); i = (next_i + 1); } else { if (str_eq(next_ch, EL_STR("n"))) { - text = el_str_concat(text, EL_STR("\n")); + parts = native_list_append(parts, EL_STR("\n")); i = (next_i + 1); } else { if (str_eq(next_ch, EL_STR("t"))) { - text = el_str_concat(text, EL_STR("\t")); + parts = native_list_append(parts, EL_STR("\t")); i = (next_i + 1); } else { if (str_eq(next_ch, EL_STR("r"))) { - text = el_str_concat(text, EL_STR("\r")); + parts = native_list_append(parts, EL_STR("\r")); i = (next_i + 1); } else { if (str_eq(next_ch, EL_STR("\\"))) { - text = el_str_concat(text, EL_STR("\\")); + parts = native_list_append(parts, EL_STR("\\")); i = (next_i + 1); } else { - text = el_str_concat(text, next_ch); + parts = native_list_append(parts, next_ch); i = (next_i + 1); } } @@ -815,13 +842,13 @@ el_val_t scan_string(el_val_t chars, el_val_t start, el_val_t total) { i = (i + 1); running = 0; } else { - text = el_str_concat(text, ch); + parts = native_list_append(parts, ch); i = (i + 1); } } } } - return el_map_new(2, "text", text, "pos", i); + return el_map_new(2, "text", str_join(parts, EL_STR("")), "pos", i); return 0; } @@ -1465,6 +1492,11 @@ el_val_t parse_pattern(el_val_t tokens, el_val_t pos) { if (str_eq(v, EL_STR("_"))) { return make_result(el_map_new(1, "pattern", EL_STR("Wildcard")), (pos + 1)); } + el_val_t next_k = tok_kind(tokens, (pos + 1)); + if (str_eq(next_k, EL_STR("ColonColon"))) { + el_val_t variant_name = tok_value(tokens, (pos + 2)); + return make_result(el_map_new(3, "pattern", EL_STR("Variant"), "enum_name", v, "variant", variant_name), (pos + 3)); + } return make_result(el_map_new(2, "pattern", EL_STR("Binding"), "name", v), (pos + 1)); } if (str_eq(k, EL_STR("Int"))) { @@ -1797,6 +1829,29 @@ el_val_t parse_stmt(el_val_t tokens, el_val_t pos) { p = el_get_field(r, EL_STR("pos")); return make_result(el_map_new(2, "stmt", EL_STR("Return"), "value", val), p); } + if (str_eq(k, EL_STR("Extern"))) { + el_val_t p = (pos + 1); + el_val_t k2 = tok_kind(tokens, p); + if (str_eq(k2, EL_STR("Fn"))) { + p = (p + 1); + el_val_t name = tok_value(tokens, p); + p = (p + 1); + el_val_t r = parse_params(tokens, p); + el_val_t params = el_get_field(r, EL_STR("params")); + p = el_get_field(r, EL_STR("pos")); + el_val_t ret_type = EL_STR(""); + el_val_t k3 = tok_kind(tokens, p); + if (str_eq(k3, EL_STR("Arrow"))) { + p = (p + 1); + el_val_t kt = tok_kind(tokens, p); + if (str_eq(kt, EL_STR("Ident"))) { + ret_type = tok_value(tokens, p); + } + p = skip_type(tokens, p); + } + return make_result(el_map_new(4, "stmt", EL_STR("ExternFn"), "name", name, "params", params, "ret_type", ret_type), p); + } + } if (str_eq(k, EL_STR("Fn"))) { el_val_t p = (pos + 1); el_val_t name = tok_value(tokens, p); @@ -1823,6 +1878,10 @@ el_val_t parse_stmt(el_val_t tokens, el_val_t pos) { el_val_t p = (pos + 1); el_val_t name = tok_value(tokens, p); p = (p + 1); + el_val_t pk = tok_kind(tokens, p); + if (str_eq(pk, EL_STR("Eq"))) { + p = (p + 1); + } p = expect(tokens, p, EL_STR("LBrace")); el_val_t fields = native_list_empty(); el_val_t running = 1; @@ -2095,29 +2154,72 @@ el_val_t parse(el_val_t tokens) { return 0; } +el_val_t nibble_to_hex(el_val_t n) { + return str_char_at(EL_STR("0123456789abcdef"), n); + return 0; +} + +el_val_t byte_to_hex2(el_val_t b) { + el_val_t hi = (b / 16); + el_val_t lo = (b - (hi * 16)); + return el_str_concat(nibble_to_hex(hi), nibble_to_hex(lo)); + return 0; +} + +el_val_t is_hex_digit_byte(el_val_t b) { + if (b >= 48) { + if (b <= 57) { + return 1; + } + } + if (b >= 65) { + if (b <= 70) { + return 1; + } + } + if (b >= 97) { + if (b <= 102) { + return 1; + } + } + return 0; + return 0; +} + el_val_t c_escape(el_val_t s) { - el_val_t chars = native_string_chars(s); - el_val_t total = native_list_len(chars); - el_val_t out = EL_STR(""); + el_val_t total = str_len(s); + el_val_t parts = native_list_empty(); el_val_t i = 0; + el_val_t prev_was_hex_escape = 0; while (i < total) { - el_val_t ch = native_list_get(chars, i); - if (str_eq(ch, EL_STR("\""))) { - out = el_str_concat(out, EL_STR("\\\"")); + el_val_t bval = str_char_code(s, i); + if (prev_was_hex_escape) { + if (is_hex_digit_byte(bval)) { + parts = native_list_append(parts, EL_STR("\"\"")); + } + } + prev_was_hex_escape = 0; + if (bval == 34) { + parts = native_list_append(parts, EL_STR("\\\"")); } else { - if (str_eq(ch, EL_STR("\\"))) { - out = el_str_concat(out, EL_STR("\\\\")); + if (bval == 92) { + parts = native_list_append(parts, EL_STR("\\\\")); } else { - if (str_eq(ch, EL_STR("\n"))) { - out = el_str_concat(out, EL_STR("\\n")); + if (bval == 10) { + parts = native_list_append(parts, EL_STR("\\n")); } else { - if (str_eq(ch, EL_STR("\r"))) { - out = el_str_concat(out, EL_STR("\\r")); + if (bval == 13) { + parts = native_list_append(parts, EL_STR("\\r")); } else { - if (str_eq(ch, EL_STR("\t"))) { - out = el_str_concat(out, EL_STR("\\t")); + if (bval == 9) { + parts = native_list_append(parts, EL_STR("\\t")); } else { - out = el_str_concat(out, ch); + if (bval >= 128) { + parts = native_list_append(parts, el_str_concat(EL_STR("\\x"), byte_to_hex2(bval))); + prev_was_hex_escape = 1; + } else { + parts = native_list_append(parts, str_char_at(s, i)); + } } } } @@ -2125,7 +2227,7 @@ el_val_t c_escape(el_val_t s) { } i = (i + 1); } - return out; + return str_join(parts, EL_STR("")); return 0; } @@ -2307,6 +2409,30 @@ el_val_t cg_expr(el_val_t expr) { el_val_t right_c = cg_expr(right); el_val_t left_kind = el_get_field(left, EL_STR("expr")); el_val_t right_kind = el_get_field(right, EL_STR("expr")); + if (str_eq(op, EL_STR("Plus"))) { + if (str_eq(left_kind, EL_STR("Str"))) { + return el_str_concat(el_str_concat(el_str_concat(el_str_concat(EL_STR("el_str_concat("), left_c), EL_STR(", ")), right_c), EL_STR(")")); + } + if (str_eq(right_kind, EL_STR("Str"))) { + return el_str_concat(el_str_concat(el_str_concat(el_str_concat(EL_STR("el_str_concat("), left_c), EL_STR(", ")), right_c), EL_STR(")")); + } + } + if (str_eq(op, EL_STR("EqEq"))) { + if (str_eq(left_kind, EL_STR("Str"))) { + return el_str_concat(el_str_concat(el_str_concat(el_str_concat(EL_STR("str_eq("), left_c), EL_STR(", ")), right_c), EL_STR(")")); + } + if (str_eq(right_kind, EL_STR("Str"))) { + return el_str_concat(el_str_concat(el_str_concat(el_str_concat(EL_STR("str_eq("), left_c), EL_STR(", ")), right_c), EL_STR(")")); + } + } + if (str_eq(op, EL_STR("NotEq"))) { + if (str_eq(left_kind, EL_STR("Str"))) { + return el_str_concat(el_str_concat(el_str_concat(el_str_concat(EL_STR("!str_eq("), left_c), EL_STR(", ")), right_c), EL_STR(")")); + } + if (str_eq(right_kind, EL_STR("Str"))) { + return el_str_concat(el_str_concat(el_str_concat(el_str_concat(EL_STR("!str_eq("), left_c), EL_STR(", ")), right_c), EL_STR(")")); + } + } el_val_t left_is_inst = is_instant_expr(left); el_val_t right_is_inst = is_instant_expr(right); el_val_t left_is_dur = is_duration_expr(left); @@ -2661,17 +2787,15 @@ el_val_t cg_expr(el_val_t expr) { el_val_t args = el_get_field(expr, EL_STR("args")); el_val_t arity = native_list_len(args); el_val_t func_kind = el_get_field(func, EL_STR("expr")); - el_val_t args_c = EL_STR(""); + el_val_t args_parts = native_list_empty(); el_val_t i = 0; while (i < arity) { el_val_t arg = native_list_get(args, i); el_val_t arg_c = cg_expr(arg); - if (i > 0) { - args_c = el_str_concat(args_c, EL_STR(", ")); - } - args_c = el_str_concat(args_c, arg_c); + args_parts = native_list_append(args_parts, arg_c); i = (i + 1); } + el_val_t args_c = str_join(args_parts, EL_STR(", ")); if (str_eq(func_kind, EL_STR("Ident"))) { el_val_t fn_name = el_get_field(func, EL_STR("name")); cap_check_call(fn_name); @@ -2684,6 +2808,16 @@ el_val_t cg_expr(el_val_t expr) { } } } + if (str_eq(fn_name, EL_STR("el_from_float"))) { + if (arity == 1) { + el_val_t only_arg = native_list_get(args, 0); + el_val_t arg_kind = el_get_field(only_arg, EL_STR("expr")); + if (str_eq(arg_kind, EL_STR("Float"))) { + el_val_t v = el_get_field(only_arg, EL_STR("value")); + return el_str_concat(el_str_concat(EL_STR("el_from_float("), v), EL_STR(")")); + } + } + } return el_str_concat(el_str_concat(el_str_concat(fn_name, EL_STR("(")), args_c), EL_STR(")")); } if (str_eq(func_kind, EL_STR("Field"))) { @@ -2721,18 +2855,15 @@ el_val_t cg_expr(el_val_t expr) { if (n == 0) { return EL_STR("el_list_empty()"); } - el_val_t items = EL_STR(""); + el_val_t items_parts = native_list_empty(); el_val_t i = 0; while (i < n) { el_val_t elem = native_list_get(elems, i); el_val_t elem_c = cg_expr(elem); - if (i > 0) { - items = el_str_concat(items, EL_STR(", ")); - } - items = el_str_concat(items, elem_c); + items_parts = native_list_append(items_parts, elem_c); i = (i + 1); } - return el_str_concat(el_str_concat(el_str_concat(el_str_concat(EL_STR("el_list_new("), native_int_to_str(n)), EL_STR(", ")), items), EL_STR(")")); + return el_str_concat(el_str_concat(el_str_concat(el_str_concat(EL_STR("el_list_new("), native_int_to_str(n)), EL_STR(", ")), str_join(items_parts, EL_STR(", "))), EL_STR(")")); } if (str_eq(kind, EL_STR("Map"))) { el_val_t pairs = el_get_field(expr, EL_STR("pairs")); @@ -2740,20 +2871,17 @@ el_val_t cg_expr(el_val_t expr) { if (n == 0) { return EL_STR("el_map_new(0)"); } - el_val_t items = EL_STR(""); + el_val_t items_parts = native_list_empty(); el_val_t i = 0; while (i < n) { el_val_t pair = native_list_get(pairs, i); el_val_t key = el_get_field(pair, EL_STR("key")); el_val_t val = el_get_field(pair, EL_STR("value")); el_val_t val_c = cg_expr(val); - if (i > 0) { - items = el_str_concat(items, EL_STR(", ")); - } - items = el_str_concat(el_str_concat(el_str_concat(items, c_str_lit(key)), EL_STR(", ")), val_c); + items_parts = native_list_append(items_parts, el_str_concat(el_str_concat(c_str_lit(key), EL_STR(", ")), val_c)); i = (i + 1); } - return el_str_concat(el_str_concat(el_str_concat(el_str_concat(EL_STR("el_map_new("), native_int_to_str(n)), EL_STR(", ")), items), EL_STR(")")); + return el_str_concat(el_str_concat(el_str_concat(el_str_concat(EL_STR("el_map_new("), native_int_to_str(n)), EL_STR(", ")), str_join(items_parts, EL_STR(", "))), EL_STR(")")); } if (str_eq(kind, EL_STR("Try"))) { el_val_t inner = el_get_field(expr, EL_STR("inner")); @@ -2789,7 +2917,8 @@ el_val_t cg_match(el_val_t expr) { el_val_t subj_var = el_str_concat(EL_STR("_match_subj_"), id); el_val_t result_var = el_str_concat(EL_STR("_match_result_"), id); el_val_t done_label = el_str_concat(EL_STR("_match_done_"), id); - el_val_t out = el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(EL_STR("({ el_val_t "), subj_var), EL_STR(" = ")), subj_c), EL_STR("; el_val_t ")), result_var), EL_STR(" = 0; ")); + el_val_t parts = native_list_empty(); + parts = native_list_append(parts, el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(EL_STR("({ el_val_t "), subj_var), EL_STR(" = ")), subj_c), EL_STR("; el_val_t ")), result_var), EL_STR(" = 0; "))); el_val_t n = native_list_len(arms); el_val_t i = 0; while (i < n) { @@ -2799,19 +2928,19 @@ el_val_t cg_match(el_val_t expr) { el_val_t pkind = el_get_field(pat, EL_STR("pattern")); el_val_t body_c = cg_expr(body); if (str_eq(pkind, EL_STR("Wildcard"))) { - out = el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(out, EL_STR("{ ")), result_var), EL_STR(" = (")), body_c), EL_STR("); goto ")), done_label), EL_STR("; } ")); + parts = native_list_append(parts, el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(EL_STR("{ "), result_var), EL_STR(" = (")), body_c), EL_STR("); goto ")), done_label), EL_STR("; } "))); } else { if (str_eq(pkind, EL_STR("Binding"))) { el_val_t bname = el_get_field(pat, EL_STR("name")); - out = el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(out, EL_STR("{ el_val_t ")), bname), EL_STR(" = ")), subj_var), EL_STR("; ")), result_var), EL_STR(" = (")), body_c), EL_STR("); goto ")), done_label), EL_STR("; } ")); + parts = native_list_append(parts, el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(EL_STR("{ el_val_t "), bname), EL_STR(" = ")), subj_var), EL_STR("; ")), result_var), EL_STR(" = (")), body_c), EL_STR("); goto ")), done_label), EL_STR("; } "))); } else { if (str_eq(pkind, EL_STR("LitInt"))) { el_val_t v = el_get_field(pat, EL_STR("value")); - out = el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(out, EL_STR("if (")), subj_var), EL_STR(" == ")), v), EL_STR(") { ")), result_var), EL_STR(" = (")), body_c), EL_STR("); goto ")), done_label), EL_STR("; } ")); + parts = native_list_append(parts, el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(EL_STR("if ("), subj_var), EL_STR(" == ")), v), EL_STR(") { ")), result_var), EL_STR(" = (")), body_c), EL_STR("); goto ")), done_label), EL_STR("; } "))); } else { if (str_eq(pkind, EL_STR("LitStr"))) { el_val_t v = el_get_field(pat, EL_STR("value")); - out = el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(out, EL_STR("if (str_eq(")), subj_var), EL_STR(", EL_STR(")), c_str_lit(v)), EL_STR("))) { ")), result_var), EL_STR(" = (")), body_c), EL_STR("); goto ")), done_label), EL_STR("; } ")); + parts = native_list_append(parts, el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(EL_STR("if (str_eq("), subj_var), EL_STR(", EL_STR(")), c_str_lit(v)), EL_STR("))) { ")), result_var), EL_STR(" = (")), body_c), EL_STR("); goto ")), done_label), EL_STR("; } "))); } else { if (str_eq(pkind, EL_STR("LitBool"))) { el_val_t v = el_get_field(pat, EL_STR("value")); @@ -2819,9 +2948,14 @@ el_val_t cg_match(el_val_t expr) { if (str_eq(v, EL_STR("true"))) { bv = EL_STR("1"); } - out = el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(out, EL_STR("if (")), subj_var), EL_STR(" == ")), bv), EL_STR(") { ")), result_var), EL_STR(" = (")), body_c), EL_STR("); goto ")), done_label), EL_STR("; } ")); + parts = native_list_append(parts, el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(EL_STR("if ("), subj_var), EL_STR(" == ")), bv), EL_STR(") { ")), result_var), EL_STR(" = (")), body_c), EL_STR("); goto ")), done_label), EL_STR("; } "))); } else { - out = el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(out, EL_STR("{ ")), result_var), EL_STR(" = (")), body_c), EL_STR("); goto ")), done_label), EL_STR("; } ")); + if (str_eq(pkind, EL_STR("Variant"))) { + el_val_t variant = el_get_field(pat, EL_STR("variant")); + parts = native_list_append(parts, el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(EL_STR("if (str_eq("), subj_var), EL_STR(", EL_STR(")), c_str_lit(variant)), EL_STR("))) { ")), result_var), EL_STR(" = (")), body_c), EL_STR("); goto ")), done_label), EL_STR("; } "))); + } else { + parts = native_list_append(parts, el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(EL_STR("{ "), result_var), EL_STR(" = (")), body_c), EL_STR("); goto ")), done_label), EL_STR("; } "))); + } } } } @@ -2829,8 +2963,8 @@ el_val_t cg_match(el_val_t expr) { } i = (i + 1); } - out = el_str_concat(el_str_concat(el_str_concat(el_str_concat(out, done_label), EL_STR(":; ")), result_var), EL_STR("; })")); - return out; + parts = native_list_append(parts, el_str_concat(el_str_concat(el_str_concat(done_label, EL_STR(":; ")), result_var), EL_STR("; })"))); + return str_join(parts, EL_STR("")); return 0; } @@ -2848,7 +2982,7 @@ el_val_t next_if_id(void) { el_val_t cg_if_expr_arm(el_val_t stmts, el_val_t result_var) { el_val_t n = native_list_len(stmts); - el_val_t out = EL_STR(""); + el_val_t parts = native_list_empty(); el_val_t i = 0; while (i < n) { el_val_t s = native_list_get(stmts, i); @@ -2861,27 +2995,27 @@ el_val_t cg_if_expr_arm(el_val_t stmts, el_val_t result_var) { el_val_t name = el_get_field(s, EL_STR("name")); el_val_t val = el_get_field(s, EL_STR("value")); el_val_t val_c = cg_expr(val); - out = el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(out, EL_STR("el_val_t ")), name), EL_STR(" = ")), val_c), EL_STR("; ")); + parts = native_list_append(parts, el_str_concat(el_str_concat(el_str_concat(el_str_concat(EL_STR("el_val_t "), name), EL_STR(" = ")), val_c), EL_STR("; "))); } else { if (str_eq(sk, EL_STR("Return"))) { el_val_t val = el_get_field(s, EL_STR("value")); el_val_t val_c = cg_expr(val); - out = el_str_concat(el_str_concat(el_str_concat(el_str_concat(out, result_var), EL_STR(" = (")), val_c), EL_STR("); ")); + parts = native_list_append(parts, el_str_concat(el_str_concat(el_str_concat(result_var, EL_STR(" = (")), val_c), EL_STR("); "))); } else { if (str_eq(sk, EL_STR("Expr"))) { el_val_t val = el_get_field(s, EL_STR("value")); el_val_t val_c = cg_expr(val); if (is_last) { - out = el_str_concat(el_str_concat(el_str_concat(el_str_concat(out, result_var), EL_STR(" = (")), val_c), EL_STR("); ")); + parts = native_list_append(parts, el_str_concat(el_str_concat(el_str_concat(result_var, EL_STR(" = (")), val_c), EL_STR("); "))); } else { - out = el_str_concat(el_str_concat(el_str_concat(out, EL_STR("(void)(")), val_c), EL_STR("); ")); + parts = native_list_append(parts, el_str_concat(el_str_concat(EL_STR("(void)("), val_c), EL_STR("); "))); } } else { if (str_eq(sk, EL_STR("Assign"))) { el_val_t aname = el_get_field(s, EL_STR("name")); el_val_t aval = el_get_field(s, EL_STR("value")); el_val_t aval_c = cg_expr(aval); - out = el_str_concat(el_str_concat(el_str_concat(el_str_concat(out, aname), EL_STR(" = ")), aval_c), EL_STR("; ")); + parts = native_list_append(parts, el_str_concat(el_str_concat(el_str_concat(aname, EL_STR(" = ")), aval_c), EL_STR("; "))); } else { } } @@ -2889,7 +3023,7 @@ el_val_t cg_if_expr_arm(el_val_t stmts, el_val_t result_var) { } i = (i + 1); } - return out; + return str_join(parts, EL_STR("")); return 0; } @@ -3063,6 +3197,9 @@ el_val_t cg_stmt(el_val_t stmt, el_val_t indent, el_val_t declared) { if (str_eq(kind, EL_STR("Import"))) { return declared; } + if (str_eq(kind, EL_STR("ExternFn"))) { + return declared; + } if (str_eq(kind, EL_STR("CgiBlock"))) { return declared; } @@ -3098,14 +3235,7 @@ el_val_t strip_outer_parens(el_val_t s) { i = (i + 1); } if (balanced) { - el_val_t inner = EL_STR(""); - el_val_t j = 1; - while (j < (n - 1)) { - el_val_t ch = native_list_get(chars, j); - inner = el_str_concat(inner, ch); - j = (j + 1); - } - return inner; + return str_slice(s, 1, (n - 1)); } } } @@ -3180,18 +3310,15 @@ el_val_t params_to_c(el_val_t params) { if (n == 0) { return EL_STR("void"); } - el_val_t out = EL_STR(""); + el_val_t parts = native_list_empty(); el_val_t i = 0; while (i < n) { el_val_t param = native_list_get(params, i); el_val_t decl = param_decl(param, i); - if (i > 0) { - out = el_str_concat(out, EL_STR(", ")); - } - out = el_str_concat(out, decl); + parts = native_list_append(parts, decl); i = (i + 1); } - return out; + return str_join(parts, EL_STR(", ")); return 0; } @@ -4077,7 +4204,7 @@ el_val_t emit_cap_violations(void) { if (colon > 0) { el_val_t kind = str_slice(entry, 0, colon); el_val_t fn_name = str_slice(entry, (colon + 1), str_len(entry)); - emit_line(el_str_concat(el_str_concat(el_str_concat(el_str_concat(EL_STR("#error \"capability violation: '"), kind), EL_STR("' programs may not call '")), fn_name), EL_STR("' (self-formation primitive — only 'cgi' programs may use it)\""))); + emit_line(el_str_concat(el_str_concat(el_str_concat(el_str_concat(EL_STR("#error \"capability violation: '"), kind), EL_STR("' programs may not call '")), fn_name), EL_STR("' (self-formation primitive - only 'cgi' programs may use it)\""))); } i = ((i + next_comma) + 1); } @@ -4474,6 +4601,27 @@ el_val_t builtin_arity(el_val_t name) { if (str_eq(name, EL_STR("exit_program"))) { return 1; } + if (str_eq(name, EL_STR("getpid_now"))) { + return 0; + } + if (str_eq(name, EL_STR("stdout_to_file"))) { + return 1; + } + if (str_eq(name, EL_STR("stdout_restore"))) { + return 0; + } + if (str_eq(name, EL_STR("exec_command"))) { + return 1; + } + if (str_eq(name, EL_STR("exec_capture"))) { + return 1; + } + if (str_eq(name, EL_STR("exec"))) { + return 1; + } + if (str_eq(name, EL_STR("exec_bg"))) { + return 1; + } if (str_eq(name, EL_STR("dharma_connect"))) { return 1; } @@ -4959,6 +5107,9 @@ el_val_t is_top_level_decl(el_val_t stmt) { if (str_eq(kind, EL_STR("CgiBlock"))) { return 1; } + if (str_eq(kind, EL_STR("ExternFn"))) { + return 1; + } return 0; return 0; } @@ -5184,7 +5335,7 @@ el_val_t codegen(el_val_t stmts, el_val_t source) { } if (cgi_count >= 1) { if (svc_count >= 1) { - emit_line(EL_STR("#error \"El: program declares both cgi and service blocks (mutually exclusive — pick one)\"")); + emit_line(EL_STR("#error \"El: program declares both cgi and service blocks (mutually exclusive - pick one)\"")); } } el_val_t kind = EL_STR("utility"); @@ -5201,6 +5352,33 @@ el_val_t codegen(el_val_t stmts, el_val_t source) { emit_line(EL_STR("#include ")); emit_line(EL_STR("#include ")); emit_line(EL_STR("#include \"el_runtime.h\"")); + el_val_t imp_n = native_list_len(stmts); + el_val_t imp_i = 0; + while (imp_i < imp_n) { + el_val_t imp_stmt = native_list_get(stmts, imp_i); + el_val_t imp_kind = el_get_field(imp_stmt, EL_STR("stmt")); + if (str_eq(imp_kind, EL_STR("Import"))) { + el_val_t imp_path = el_get_field(imp_stmt, EL_STR("path")); + el_val_t imp_path_len = str_len(imp_path); + el_val_t imp_last_slash = (-1); + el_val_t imp_j = 0; + while (imp_j < imp_path_len) { + el_val_t imp_c = str_slice(imp_path, imp_j, (imp_j + 1)); + if (str_eq(imp_c, EL_STR("/"))) { + imp_last_slash = imp_j; + } + imp_j = (imp_j + 1); + } + el_val_t imp_base = str_slice(imp_path, (imp_last_slash + 1), imp_path_len); + el_val_t imp_base_len = str_len(imp_base); + el_val_t imp_bname = imp_base; + if (str_ends_with(imp_base, EL_STR(".el"))) { + imp_bname = str_slice(imp_base, 0, (imp_base_len - 3)); + } + emit_line(el_str_concat(el_str_concat(EL_STR("#include \""), imp_bname), EL_STR(".elh\""))); + } + imp_i = (imp_i + 1); + } emit_blank(); el_val_t n = native_list_len(stmts); el_val_t i = 0; @@ -5215,6 +5393,12 @@ el_val_t codegen(el_val_t stmts, el_val_t source) { emit_line(el_str_concat(el_str_concat(el_str_concat(el_str_concat(EL_STR("el_val_t "), fn_name), EL_STR("(")), params_c), EL_STR(");"))); } } + if (str_eq(kind, EL_STR("ExternFn"))) { + el_val_t fn_name = el_get_field(stmt, EL_STR("name")); + el_val_t params = el_get_field(stmt, EL_STR("params")); + el_val_t params_c = params_to_c(params); + emit_line(el_str_concat(el_str_concat(el_str_concat(el_str_concat(EL_STR("el_val_t "), fn_name), EL_STR("(")), params_c), EL_STR(");"))); + } i = (i + 1); } emit_blank(); @@ -5242,6 +5426,33 @@ el_val_t codegen(el_val_t stmts, el_val_t source) { if (has_toplevel_lets) { emit_blank(); } + el_val_t has_el_main = 0; + el_val_t has_toplevel_stmts = 0; + i = 0; + while (i < n) { + el_val_t stmt = native_list_get(stmts, i); + el_val_t sk = el_get_field(stmt, EL_STR("stmt")); + if (str_eq(sk, EL_STR("FnDef"))) { + el_val_t fn_name_chk = el_get_field(stmt, EL_STR("name")); + if (str_eq(fn_name_chk, EL_STR("main"))) { + has_el_main = 1; + } + } + if (!is_fndef(stmt)) { + if (!is_top_level_decl(stmt)) { + if (!str_eq(sk, EL_STR("Let"))) { + has_toplevel_stmts = 1; + } + } + } + i = (i + 1); + } + el_val_t is_library = 0; + if (!has_el_main) { + if (!has_toplevel_stmts) { + is_library = 1; + } + } i = 0; while (i < n) { el_val_t stmt = native_list_get(stmts, i); @@ -5250,6 +5461,9 @@ el_val_t codegen(el_val_t stmts, el_val_t source) { } i = (i + 1); } + if (is_library) { + return EL_STR(""); + } emit_line(EL_STR("int main(int _argc, char** _argv) {")); emit_line(EL_STR(" el_runtime_init_args(_argc, _argv);")); if (cgi_count >= 1) { @@ -5331,26 +5545,26 @@ el_val_t codegen(el_val_t stmts, el_val_t source) { el_val_t js_escape(el_val_t s) { el_val_t chars = native_string_chars(s); el_val_t total = native_list_len(chars); - el_val_t out = EL_STR(""); + el_val_t parts = native_list_empty(); el_val_t i = 0; while (i < total) { el_val_t ch = native_list_get(chars, i); if (str_eq(ch, EL_STR("\""))) { - out = el_str_concat(out, EL_STR("\\\"")); + parts = native_list_append(parts, EL_STR("\\\"")); } else { if (str_eq(ch, EL_STR("\\"))) { - out = el_str_concat(out, EL_STR("\\\\")); + parts = native_list_append(parts, EL_STR("\\\\")); } else { if (str_eq(ch, EL_STR("\n"))) { - out = el_str_concat(out, EL_STR("\\n")); + parts = native_list_append(parts, EL_STR("\\n")); } else { if (str_eq(ch, EL_STR("\r"))) { - out = el_str_concat(out, EL_STR("\\r")); + parts = native_list_append(parts, EL_STR("\\r")); } else { if (str_eq(ch, EL_STR("\t"))) { - out = el_str_concat(out, EL_STR("\\t")); + parts = native_list_append(parts, EL_STR("\\t")); } else { - out = el_str_concat(out, ch); + parts = native_list_append(parts, ch); } } } @@ -5358,7 +5572,7 @@ el_val_t js_escape(el_val_t s) { } i = (i + 1); } - return out; + return str_join(parts, EL_STR("")); return 0; } @@ -5421,6 +5635,49 @@ el_val_t js_binop(el_val_t op) { return 0; } +el_val_t js_is_async_builtin(el_val_t name) { + if (str_eq(name, EL_STR("http_get"))) { + return 1; + } + if (str_eq(name, EL_STR("http_post"))) { + return 1; + } + if (str_eq(name, EL_STR("http_post_json"))) { + return 1; + } + if (str_eq(name, EL_STR("http_get_with_headers"))) { + return 1; + } + if (str_eq(name, EL_STR("http_post_with_headers"))) { + return 1; + } + return 0; + return 0; +} + +el_val_t js_register_async_fn(el_val_t name) { + el_val_t csv = state_get(EL_STR("__js_async_fns")); + if (str_eq(csv, EL_STR(""))) { + csv = EL_STR(","); + } + el_val_t key = el_str_concat(el_str_concat(EL_STR(","), name), EL_STR(",")); + if (str_contains(csv, key)) { + return 1; + } + state_set(EL_STR("__js_async_fns"), el_str_concat(el_str_concat(csv, name), EL_STR(","))); + return 1; + return 0; +} + +el_val_t js_is_async_fn(el_val_t name) { + el_val_t csv = state_get(EL_STR("__js_async_fns")); + if (str_eq(csv, EL_STR(""))) { + return 0; + } + return str_contains(csv, el_str_concat(el_str_concat(EL_STR(","), name), EL_STR(","))); + return 0; +} + el_val_t js_is_int_name(el_val_t name) { el_val_t csv = state_get(EL_STR("__js_int_names")); if (str_eq(csv, EL_STR(""))) { @@ -5753,20 +6010,25 @@ el_val_t js_cg_expr(el_val_t expr) { el_val_t args = el_get_field(expr, EL_STR("args")); el_val_t arity = native_list_len(args); el_val_t func_kind = el_get_field(func, EL_STR("expr")); - el_val_t args_c = EL_STR(""); + el_val_t args_parts = native_list_empty(); el_val_t i = 0; while (i < arity) { el_val_t arg = native_list_get(args, i); el_val_t arg_c = js_cg_expr(arg); - if (i > 0) { - args_c = el_str_concat(args_c, EL_STR(", ")); - } - args_c = el_str_concat(args_c, arg_c); + args_parts = native_list_append(args_parts, arg_c); i = (i + 1); } + el_val_t args_c = str_join(args_parts, EL_STR(", ")); if (str_eq(func_kind, EL_STR("Ident"))) { el_val_t fn_name = el_get_field(func, EL_STR("name")); - return el_str_concat(el_str_concat(el_str_concat(fn_name, EL_STR("(")), args_c), EL_STR(")")); + el_val_t call_expr = el_str_concat(el_str_concat(el_str_concat(fn_name, EL_STR("(")), args_c), EL_STR(")")); + if (js_is_async_builtin(fn_name)) { + return el_str_concat(EL_STR("await "), call_expr); + } + if (js_is_async_fn(fn_name)) { + return el_str_concat(EL_STR("await "), call_expr); + } + return call_expr; } if (str_eq(func_kind, EL_STR("Field"))) { el_val_t obj = el_get_field(func, EL_STR("object")); @@ -5783,6 +6045,12 @@ el_val_t js_cg_expr(el_val_t expr) { if (str_eq(kind, EL_STR("Field"))) { el_val_t obj = el_get_field(expr, EL_STR("object")); el_val_t field = el_get_field(expr, EL_STR("field")); + el_val_t obj_kind = el_get_field(obj, EL_STR("expr")); + if (str_eq(obj_kind, EL_STR("Try"))) { + el_val_t inner = el_get_field(obj, EL_STR("inner")); + el_val_t inner_c = js_cg_expr(inner); + return el_str_concat(el_str_concat(el_str_concat(el_str_concat(EL_STR("("), inner_c), EL_STR(")?.[")), js_str_lit(field)), EL_STR("] ?? null")); + } el_val_t obj_c = js_cg_expr(obj); return el_str_concat(el_str_concat(el_str_concat(el_str_concat(EL_STR("el_get_field("), obj_c), EL_STR(", ")), js_str_lit(field)), EL_STR(")")); } @@ -5792,6 +6060,12 @@ el_val_t js_cg_expr(el_val_t expr) { el_val_t obj_c = js_cg_expr(obj); el_val_t idx_c = js_cg_expr(idx); el_val_t idx_kind = el_get_field(idx, EL_STR("expr")); + el_val_t obj_kind = el_get_field(obj, EL_STR("expr")); + if (str_eq(obj_kind, EL_STR("Try"))) { + el_val_t inner = el_get_field(obj, EL_STR("inner")); + el_val_t inner_c = js_cg_expr(inner); + return el_str_concat(el_str_concat(el_str_concat(el_str_concat(EL_STR("("), inner_c), EL_STR(")?.[")), idx_c), EL_STR("] ?? null")); + } if (str_eq(idx_kind, EL_STR("Str"))) { return el_str_concat(el_str_concat(el_str_concat(el_str_concat(EL_STR("el_get_field("), obj_c), EL_STR(", ")), idx_c), EL_STR(")")); } @@ -5803,18 +6077,15 @@ el_val_t js_cg_expr(el_val_t expr) { if (n == 0) { return EL_STR("[]"); } - el_val_t items = EL_STR(""); + el_val_t items_parts = native_list_empty(); el_val_t i = 0; while (i < n) { el_val_t elem = native_list_get(elems, i); el_val_t elem_c = js_cg_expr(elem); - if (i > 0) { - items = el_str_concat(items, EL_STR(", ")); - } - items = el_str_concat(items, elem_c); + items_parts = native_list_append(items_parts, elem_c); i = (i + 1); } - return el_str_concat(el_str_concat(EL_STR("["), items), EL_STR("]")); + return el_str_concat(el_str_concat(EL_STR("["), str_join(items_parts, EL_STR(", "))), EL_STR("]")); } if (str_eq(kind, EL_STR("Map"))) { el_val_t pairs = el_get_field(expr, EL_STR("pairs")); @@ -5822,20 +6093,17 @@ el_val_t js_cg_expr(el_val_t expr) { if (n == 0) { return EL_STR("{}"); } - el_val_t items = EL_STR(""); + el_val_t items_parts = native_list_empty(); el_val_t i = 0; while (i < n) { el_val_t pair = native_list_get(pairs, i); el_val_t key = el_get_field(pair, EL_STR("key")); el_val_t val = el_get_field(pair, EL_STR("value")); el_val_t val_c = js_cg_expr(val); - if (i > 0) { - items = el_str_concat(items, EL_STR(", ")); - } - items = el_str_concat(el_str_concat(el_str_concat(items, js_str_lit(key)), EL_STR(": ")), val_c); + items_parts = native_list_append(items_parts, el_str_concat(el_str_concat(js_str_lit(key), EL_STR(": ")), val_c)); i = (i + 1); } - return el_str_concat(el_str_concat(EL_STR("{"), items), EL_STR("}")); + return el_str_concat(el_str_concat(EL_STR("{"), str_join(items_parts, EL_STR(", "))), EL_STR("}")); } if (str_eq(kind, EL_STR("Try"))) { el_val_t inner = el_get_field(expr, EL_STR("inner")); @@ -5871,7 +6139,8 @@ el_val_t js_cg_match(el_val_t expr) { el_val_t subj_c = js_cg_expr(subject); el_val_t id = js_next_match_id(); el_val_t subj_var = el_str_concat(EL_STR("_match_subj_"), id); - el_val_t out = el_str_concat(el_str_concat(EL_STR("(("), subj_var), EL_STR(") => { ")); + el_val_t parts = native_list_empty(); + parts = native_list_append(parts, el_str_concat(el_str_concat(EL_STR("(("), subj_var), EL_STR(") => { "))); el_val_t n = native_list_len(arms); el_val_t i = 0; while (i < n) { @@ -5881,19 +6150,19 @@ el_val_t js_cg_match(el_val_t expr) { el_val_t pkind = el_get_field(pat, EL_STR("pattern")); el_val_t body_c = js_cg_expr(body); if (str_eq(pkind, EL_STR("Wildcard"))) { - out = el_str_concat(el_str_concat(el_str_concat(out, EL_STR("return (")), body_c), EL_STR("); ")); + parts = native_list_append(parts, el_str_concat(el_str_concat(EL_STR("return ("), body_c), EL_STR("); "))); } else { if (str_eq(pkind, EL_STR("Binding"))) { el_val_t bname = el_get_field(pat, EL_STR("name")); - out = el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(out, EL_STR("{ const ")), bname), EL_STR(" = ")), subj_var), EL_STR("; return (")), body_c), EL_STR("); } ")); + parts = native_list_append(parts, el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(EL_STR("{ const "), bname), EL_STR(" = ")), subj_var), EL_STR("; return (")), body_c), EL_STR("); } "))); } else { if (str_eq(pkind, EL_STR("LitInt"))) { el_val_t v = el_get_field(pat, EL_STR("value")); - out = el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(out, EL_STR("if (")), subj_var), EL_STR(" === ")), v), EL_STR(") return (")), body_c), EL_STR("); ")); + parts = native_list_append(parts, el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(EL_STR("if ("), subj_var), EL_STR(" === ")), v), EL_STR(") return (")), body_c), EL_STR("); "))); } else { if (str_eq(pkind, EL_STR("LitStr"))) { el_val_t v = el_get_field(pat, EL_STR("value")); - out = el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(out, EL_STR("if (str_eq(")), subj_var), EL_STR(", ")), js_str_lit(v)), EL_STR(")) return (")), body_c), EL_STR("); ")); + parts = native_list_append(parts, el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(EL_STR("if (str_eq("), subj_var), EL_STR(", ")), js_str_lit(v)), EL_STR(")) return (")), body_c), EL_STR("); "))); } else { if (str_eq(pkind, EL_STR("LitBool"))) { el_val_t v = el_get_field(pat, EL_STR("value")); @@ -5901,9 +6170,14 @@ el_val_t js_cg_match(el_val_t expr) { if (str_eq(v, EL_STR("true"))) { bv = EL_STR("true"); } - out = el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(out, EL_STR("if (")), subj_var), EL_STR(" === ")), bv), EL_STR(") return (")), body_c), EL_STR("); ")); + parts = native_list_append(parts, el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(EL_STR("if ("), subj_var), EL_STR(" === ")), bv), EL_STR(") return (")), body_c), EL_STR("); "))); } else { - out = el_str_concat(el_str_concat(el_str_concat(out, EL_STR("return (")), body_c), EL_STR("); ")); + if (str_eq(pkind, EL_STR("Variant"))) { + el_val_t variant = el_get_field(pat, EL_STR("variant")); + parts = native_list_append(parts, el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(EL_STR("if (str_eq("), subj_var), EL_STR(", ")), js_str_lit(variant)), EL_STR(")) return (")), body_c), EL_STR("); "))); + } else { + parts = native_list_append(parts, el_str_concat(el_str_concat(EL_STR("return ("), body_c), EL_STR("); "))); + } } } } @@ -5911,8 +6185,8 @@ el_val_t js_cg_match(el_val_t expr) { } i = (i + 1); } - out = el_str_concat(el_str_concat(el_str_concat(out, EL_STR("return null; })(")), subj_c), EL_STR(")")); - return out; + parts = native_list_append(parts, el_str_concat(el_str_concat(EL_STR("return null; })("), subj_c), EL_STR(")"))); + return str_join(parts, EL_STR("")); return 0; } @@ -6016,12 +6290,12 @@ el_val_t js_cg_stmt(el_val_t stmt, el_val_t indent, el_val_t declared) { } if (str_eq(kind, EL_STR("CgiBlock"))) { el_val_t cname = el_get_field(stmt, EL_STR("name")); - js_emit_line(el_str_concat(el_str_concat(el_str_concat(indent, EL_STR("// cgi block '")), cname), EL_STR("' — no-op in JS target (server-side concept)"))); + js_emit_line(el_str_concat(el_str_concat(el_str_concat(indent, EL_STR("// cgi block '")), cname), EL_STR("' \xe2\x80\x94 no-op in JS target (server-side concept)"))); return declared; } if (str_eq(kind, EL_STR("ServiceBlock"))) { el_val_t sname = el_get_field(stmt, EL_STR("name")); - js_emit_line(el_str_concat(el_str_concat(el_str_concat(indent, EL_STR("// service block '")), sname), EL_STR("' — no-op in JS target"))); + js_emit_line(el_str_concat(el_str_concat(el_str_concat(indent, EL_STR("// service block '")), sname), EL_STR("' \xe2\x80\x94 no-op in JS target"))); return declared; } return declared; @@ -6056,14 +6330,7 @@ el_val_t js_strip_outer_parens(el_val_t s) { i = (i + 1); } if (balanced) { - el_val_t inner = EL_STR(""); - el_val_t j = 1; - while (j < (n - 1)) { - el_val_t ch = native_list_get(chars, j); - inner = el_str_concat(inner, ch); - j = (j + 1); - } - return inner; + return str_slice(s, 1, (n - 1)); } } } @@ -6124,18 +6391,15 @@ el_val_t js_params_str(el_val_t params) { if (n == 0) { return EL_STR(""); } - el_val_t out = EL_STR(""); + el_val_t parts = native_list_empty(); el_val_t i = 0; while (i < n) { el_val_t param = native_list_get(params, i); el_val_t name = el_get_field(param, EL_STR("name")); - if (i > 0) { - out = el_str_concat(out, EL_STR(", ")); - } - out = el_str_concat(out, name); + parts = native_list_append(parts, name); i = (i + 1); } - return out; + return str_join(parts, EL_STR(", ")); return 0; } @@ -6174,12 +6438,22 @@ el_val_t js_cg_fn(el_val_t stmt) { el_val_t params = el_get_field(stmt, EL_STR("params")); el_val_t body = el_get_field(stmt, EL_STR("body")); el_val_t ret_type = el_get_field(stmt, EL_STR("ret_type")); + el_val_t decorator = el_get_field(stmt, EL_STR("decorator")); el_val_t params_str = js_params_str(params); js_build_int_names_for_params(params); - if (str_eq(fn_name, EL_STR("main"))) { - js_emit_line(el_str_concat(el_str_concat(EL_STR("function main("), params_str), EL_STR(") {"))); + if (str_eq(decorator, EL_STR("async"))) { + js_register_async_fn(fn_name); + if (str_eq(fn_name, EL_STR("main"))) { + js_emit_line(el_str_concat(el_str_concat(EL_STR("async function main("), params_str), EL_STR(") {"))); + } else { + js_emit_line(el_str_concat(el_str_concat(el_str_concat(el_str_concat(EL_STR("async function "), fn_name), EL_STR("(")), params_str), EL_STR(") {"))); + } } else { - js_emit_line(el_str_concat(el_str_concat(el_str_concat(el_str_concat(EL_STR("function "), fn_name), EL_STR("(")), params_str), EL_STR(") {"))); + if (str_eq(fn_name, EL_STR("main"))) { + js_emit_line(el_str_concat(el_str_concat(EL_STR("function main("), params_str), EL_STR(") {"))); + } else { + js_emit_line(el_str_concat(el_str_concat(el_str_concat(el_str_concat(EL_STR("function "), fn_name), EL_STR("(")), params_str), EL_STR(") {"))); + } } el_val_t decl = native_list_empty(); el_val_t np = native_list_len(params); @@ -6231,35 +6505,81 @@ el_val_t js_is_top_level_decl(el_val_t stmt) { } el_val_t codegen_js(el_val_t stmts, el_val_t source) { + return codegen_js_inner(stmts, source, 0, EL_STR("")); + return 0; +} + +el_val_t codegen_js_bundle(el_val_t stmts, el_val_t source, el_val_t runtime_content) { + return codegen_js_inner(stmts, source, 1, runtime_content); + return 0; +} + +el_val_t codegen_js_inner(el_val_t stmts, el_val_t source, el_val_t bundle_mode, el_val_t runtime_content) { state_set(EL_STR("__js_int_names"), EL_STR("")); state_set(EL_STR("__js_match_counter"), EL_STR("")); + state_set(EL_STR("__js_async_fns"), EL_STR("")); js_emit_line(EL_STR("// Generated by elc --target=js")); - js_emit_line(EL_STR("// Runtime: foundation/el/el-compiler/runtime/el_runtime.js")); - js_emit_line(EL_STR("import \"./el_runtime.js\";")); - js_emit_line(EL_STR("const {")); - js_emit_line(EL_STR(" println, print, el_str_concat, str_concat, str_eq, str_starts_with, str_ends_with,")); - js_emit_line(EL_STR(" str_len, int_to_str, str_to_int, str_slice, str_contains, str_replace,")); - js_emit_line(EL_STR(" str_to_upper, str_to_lower, str_trim, str_index_of, str_split, str_char_at,")); - js_emit_line(EL_STR(" str_char_code, str_lower, str_upper, el_abs, el_max, el_min,")); - js_emit_line(EL_STR(" el_list_new, el_list_len, el_list_get, el_list_append, el_list_empty, el_list_clone,")); - js_emit_line(EL_STR(" list_push, list_join, list_range,")); - js_emit_line(EL_STR(" el_map_new, el_get_field, el_map_get, el_map_set,")); - js_emit_line(EL_STR(" http_get, http_post, http_post_json,")); - js_emit_line(EL_STR(" fs_read, fs_write, fs_list,")); - js_emit_line(EL_STR(" json_parse, json_stringify, json_get, json_get_string, json_get_int,")); - js_emit_line(EL_STR(" time_now, time_now_utc, sleep_ms, bool_to_str, exit_program,")); - js_emit_line(EL_STR(" el_retain, el_release,")); - js_emit_line(EL_STR(" append, len, get, map_get, map_set,")); - js_emit_line(EL_STR(" native_list_get, native_list_len, native_list_append, native_list_empty,")); - js_emit_line(EL_STR(" native_list_clone, native_string_chars, native_int_to_str,")); - js_emit_line(EL_STR(" args, state_set, state_get, state_del, state_keys, env,")); - js_emit_line(EL_STR(" dharma_connect, dharma_send, dharma_emit, dharma_field, dharma_activate,")); - js_emit_line(EL_STR(" engram_node, engram_search, engram_activate,")); - js_emit_line(EL_STR(" llm_call, llm_call_system,")); - js_emit_line(EL_STR("} = globalThis.__el;")); - js_emit_blank(); + if (bundle_mode) { + js_emit_line(EL_STR("// Bundle mode: runtime inlined, no import statement needed.")); + js_emit_line(EL_STR("")); + js_emit_line(EL_STR(";(function() {")); + js_emit_line(EL_STR("\"use strict\";")); + js_emit_line(js_strip_es_exports(runtime_content)); + js_emit_line(EL_STR("")); + } else { + js_emit_line(EL_STR("// Runtime: foundation/el/el-compiler/runtime/el_runtime.js")); + js_emit_line(EL_STR("import \"./el_runtime.js\";")); + } + if (!bundle_mode) { + js_emit_line(EL_STR("const {")); + js_emit_line(EL_STR(" println, print, el_str_concat, str_concat, str_eq, str_starts_with, str_ends_with,")); + js_emit_line(EL_STR(" str_len, int_to_str, str_to_int, str_slice, str_contains, str_replace,")); + js_emit_line(EL_STR(" str_to_upper, str_to_lower, str_trim, str_index_of, str_split, str_char_at,")); + js_emit_line(EL_STR(" str_char_code, str_lower, str_upper, el_abs, el_max, el_min,")); + js_emit_line(EL_STR(" el_list_new, el_list_len, el_list_get, el_list_append, el_list_empty, el_list_clone,")); + js_emit_line(EL_STR(" list_push, list_join, list_range,")); + js_emit_line(EL_STR(" el_map_new, el_get_field, el_map_get, el_map_set,")); + js_emit_line(EL_STR(" http_get, http_post, http_post_json,")); + js_emit_line(EL_STR(" fs_read, fs_write, fs_list,")); + js_emit_line(EL_STR(" json_parse, json_stringify, json_get, json_get_string, json_get_int,")); + js_emit_line(EL_STR(" time_now, time_now_utc, sleep_ms, bool_to_str, exit_program,")); + js_emit_line(EL_STR(" el_retain, el_release,")); + js_emit_line(EL_STR(" append, len, get, map_get, map_set,")); + js_emit_line(EL_STR(" native_list_get, native_list_len, native_list_append, native_list_empty,")); + js_emit_line(EL_STR(" native_list_clone, native_string_chars, native_int_to_str,")); + js_emit_line(EL_STR(" args, state_set, state_get, state_del, state_keys, env,")); + js_emit_line(EL_STR(" dharma_connect, dharma_send, dharma_emit, dharma_field, dharma_activate,")); + js_emit_line(EL_STR(" engram_node, engram_search, engram_activate,")); + js_emit_line(EL_STR(" llm_call, llm_call_system,")); + js_emit_line(EL_STR(" dom_get_element, dom_get_value, dom_set_value, dom_get_text, dom_set_text,")); + js_emit_line(EL_STR(" dom_set_prop, dom_get_prop, dom_set_style, dom_add_class, dom_remove_class,")); + js_emit_line(EL_STR(" dom_show, dom_hide, dom_listen, dom_query, dom_query_all, dom_create,")); + js_emit_line(EL_STR(" dom_append, dom_remove, dom_is_null,")); + js_emit_line(EL_STR(" dom_set_attr, dom_get_attr, dom_remove_attr, dom_set_html, dom_get_html,")); + js_emit_line(EL_STR(" dom_get_parent, dom_contains_class, dom_get_checked, dom_set_checked,")); + js_emit_line(EL_STR(" set_timeout, set_interval, clear_interval,")); + js_emit_line(EL_STR(" local_storage_get, local_storage_set, local_storage_remove,")); + js_emit_line(EL_STR(" window_location, window_redirect, window_on_load,")); + js_emit_line(EL_STR(" console_log,")); + js_emit_line(EL_STR(" window_set, window_get, native_js, native_js_call,")); + js_emit_line(EL_STR("} = globalThis.__el;")); + js_emit_blank(); + } el_val_t n = native_list_len(stmts); el_val_t i = 0; + while (i < n) { + el_val_t stmt = native_list_get(stmts, i); + el_val_t sk = el_get_field(stmt, EL_STR("stmt")); + if (str_eq(sk, EL_STR("FnDef"))) { + el_val_t dec = el_get_field(stmt, EL_STR("decorator")); + if (str_eq(dec, EL_STR("async"))) { + el_val_t aname = el_get_field(stmt, EL_STR("name")); + js_register_async_fn(aname); + } + } + i = (i + 1); + } + i = 0; while (i < n) { el_val_t stmt = native_list_get(stmts, i); if (js_is_fndef(stmt)) { @@ -6297,10 +6617,37 @@ el_val_t codegen_js(el_val_t stmts, el_val_t source) { js_emit_blank(); js_emit_line(EL_STR("main();")); } + if (bundle_mode) { + js_emit_line(EL_STR("")); + js_emit_line(EL_STR("})();")); + } return EL_STR(""); return 0; } +el_val_t js_strip_es_exports(el_val_t content) { + el_val_t lines = str_split(content, EL_STR("\n")); + el_val_t n = native_list_len(lines); + el_val_t out = native_list_empty(); + el_val_t i = 0; + while (i < n) { + el_val_t line = native_list_get(lines, i); + el_val_t trimmed = str_trim(line); + if (str_starts_with(trimmed, EL_STR("export {"))) { + i = n; + } else { + if (str_starts_with(trimmed, EL_STR("export default"))) { + i = n; + } else { + out = native_list_append(out, line); + } + } + i = (i + 1); + } + return str_join(out, EL_STR("\n")); + return 0; +} + el_val_t compile(el_val_t source) { el_val_t tokens = lex(source); el_val_t stmts = parse(tokens); @@ -6317,6 +6664,19 @@ el_val_t compile_js(el_val_t source) { return 0; } +el_val_t compile_js_with_bundle(el_val_t source, el_val_t runtime_path) { + el_val_t tokens = lex(source); + el_val_t stmts = parse(tokens); + el_release(tokens); + el_val_t runtime_content = fs_read(runtime_path); + if (str_eq(runtime_content, EL_STR(""))) { + println(el_str_concat(EL_STR("el-compiler: warning: --bundle: could not read runtime at "), runtime_path)); + println(EL_STR("el-compiler: warning: bundle output will be incomplete")); + } + return codegen_js_bundle(stmts, source, runtime_content); + return 0; +} + el_val_t compile_dispatch(el_val_t tgt, el_val_t source) { if (str_eq(tgt, EL_STR("js"))) { return compile_js(source); @@ -6325,6 +6685,14 @@ el_val_t compile_dispatch(el_val_t tgt, el_val_t source) { return 0; } +el_val_t compile_dispatch_bundle(el_val_t tgt, el_val_t source, el_val_t runtime_path) { + if (str_eq(tgt, EL_STR("js"))) { + return compile_js_with_bundle(source, runtime_path); + } + return compile(source); + return 0; +} + el_val_t detect_target(el_val_t argv) { el_val_t n = native_list_len(argv); el_val_t i = 0; @@ -6355,6 +6723,201 @@ el_val_t strip_flags(el_val_t argv) { return 0; } +el_val_t detect_emit_header(el_val_t argv) { + el_val_t n = native_list_len(argv); + el_val_t i = 0; + while (i < n) { + el_val_t a = native_list_get(argv, i); + if (str_eq(a, EL_STR("--emit-header"))) { + return 1; + } + i = (i + 1); + } + return 0; + return 0; +} + +el_val_t detect_bundle(el_val_t argv) { + el_val_t n = native_list_len(argv); + el_val_t i = 0; + while (i < n) { + el_val_t a = native_list_get(argv, i); + if (str_eq(a, EL_STR("--bundle"))) { + return 1; + } + i = (i + 1); + } + return 0; + return 0; +} + +el_val_t detect_minify(el_val_t argv) { + el_val_t n = native_list_len(argv); + el_val_t i = 0; + while (i < n) { + el_val_t a = native_list_get(argv, i); + if (str_eq(a, EL_STR("--minify"))) { + return 1; + } + i = (i + 1); + } + return 0; + return 0; +} + +el_val_t detect_obfuscate(el_val_t argv) { + el_val_t n = native_list_len(argv); + el_val_t i = 0; + while (i < n) { + el_val_t a = native_list_get(argv, i); + if (str_eq(a, EL_STR("--obfuscate"))) { + return 1; + } + i = (i + 1); + } + return 0; + return 0; +} + +el_val_t make_temp_path(el_val_t suffix) { + el_val_t pid = getpid_now(); + el_val_t ts = time_now(); + return el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(EL_STR("/tmp/elc-"), native_int_to_str(pid)), EL_STR("-")), native_int_to_str(ts)), EL_STR(".")), suffix); + return 0; +} + +el_val_t js_reserved_names(void) { + return EL_STR("neuronDemoToggle,neuronDemoSend,neuronDemoReset,signInWith,signInWithEmail,signUpWithEmail,sendMagicLink,signOut,resetPassword,sendResetEmail,updatePassword,showSignIn,showSignUp,hideReset,setSort,addFamilyMember,removeFamilyMember,copyForPlatform,entHeadcountChange,NEURON_CFG"); + return 0; +} + +el_val_t find_node_tool(el_val_t tool_name, el_val_t src_dir) { + el_val_t cand1 = el_str_concat(el_str_concat(src_dir, EL_STR("/node_modules/.bin/")), tool_name); + el_val_t check1 = str_trim(exec_capture(el_str_concat(el_str_concat(EL_STR("test -x "), cand1), EL_STR(" && echo yes 2>/dev/null")))); + if (str_eq(check1, EL_STR("yes"))) { + return cand1; + } + el_val_t parent_dir = dirname_of(src_dir); + el_val_t cand2 = el_str_concat(el_str_concat(parent_dir, EL_STR("/node_modules/.bin/")), tool_name); + el_val_t check2 = str_trim(exec_capture(el_str_concat(el_str_concat(EL_STR("test -x "), cand2), EL_STR(" && echo yes 2>/dev/null")))); + if (str_eq(check2, EL_STR("yes"))) { + return cand2; + } + el_val_t npx_path = str_trim(exec_capture(EL_STR("which npx 2>/dev/null"))); + if (!str_eq(npx_path, EL_STR(""))) { + return el_str_concat(EL_STR("npx --yes "), tool_name); + } + return EL_STR(""); + return 0; +} + +el_val_t apply_minify(el_val_t js_path, el_val_t out_path, el_val_t src_dir) { + el_val_t terser = find_node_tool(EL_STR("terser"), src_dir); + if (str_eq(terser, EL_STR(""))) { + println(EL_STR("el-compiler: error: terser not found. Run 'npm install terser' in your project directory.")); + return 0; + } + el_val_t names = js_reserved_names(); + el_val_t compress_opts = EL_STR("passes=2,drop_console=false,drop_debugger=true"); + el_val_t mangle_reserved = el_str_concat(el_str_concat(EL_STR("'reserved=["), names), EL_STR("]'")); + el_val_t cmd = el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(terser, EL_STR(" ")), js_path), EL_STR(" --compress ")), compress_opts), EL_STR(" --mangle ")), mangle_reserved), EL_STR(" --output ")), out_path); + el_val_t ret = exec_command(cmd); + if (ret == 0) { + return 1; + } + println(el_str_concat(el_str_concat(EL_STR("el-compiler: error: terser failed (exit "), native_int_to_str(ret)), EL_STR(")"))); + return 0; + return 0; +} + +el_val_t apply_obfuscate(el_val_t js_path, el_val_t out_path, el_val_t src_dir) { + el_val_t obfuscator = find_node_tool(EL_STR("javascript-obfuscator"), src_dir); + if (str_eq(obfuscator, EL_STR(""))) { + println(EL_STR("el-compiler: error: javascript-obfuscator not found. Run 'npm install javascript-obfuscator' in your project directory.")); + return 0; + } + el_val_t names = js_reserved_names(); + el_val_t cmd = el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(obfuscator, EL_STR(" ")), js_path), EL_STR(" --output ")), out_path), EL_STR(" --compact true --simplify true --string-array true --string-array-encoding base64 --string-array-threshold 0.75 --identifier-names-generator hexadecimal --rename-globals false --self-defending false --reserved-names ")), names); + el_val_t ret = exec_command(cmd); + if (ret == 0) { + return 1; + } + println(el_str_concat(el_str_concat(EL_STR("el-compiler: error: javascript-obfuscator failed (exit "), native_int_to_str(ret)), EL_STR(")"))); + return 0; + return 0; +} + +el_val_t resolve_runtime_path(el_val_t src_path) { + el_val_t src_dir = dirname_of(src_path); + el_val_t candidate = el_str_concat(src_dir, EL_STR("/el_runtime.js")); + el_val_t existing = fs_read(candidate); + if (!str_eq(existing, EL_STR(""))) { + return candidate; + } + return EL_STR(""); + return 0; +} + +el_val_t type_node_to_el(el_val_t t) { + el_val_t k = el_get_field(t, EL_STR("kind")); + if (str_eq(k, EL_STR("Simple"))) { + return el_get_field(t, EL_STR("name")); + } + if (str_eq(k, EL_STR("List"))) { + el_val_t inner = type_node_to_el(el_get_field(t, EL_STR("inner"))); + return el_str_concat(el_str_concat(EL_STR("["), inner), EL_STR("]")); + } + if (str_eq(k, EL_STR("Map"))) { + el_val_t kt = type_node_to_el(el_get_field(t, EL_STR("key"))); + el_val_t vt = type_node_to_el(el_get_field(t, EL_STR("val"))); + return el_str_concat(el_str_concat(el_str_concat(el_str_concat(EL_STR("Map<"), kt), EL_STR(", ")), vt), EL_STR(">")); + } + return EL_STR("Any"); + return 0; +} + +el_val_t emit_header(el_val_t stmts, el_val_t hdr_path) { + el_val_t n = native_list_len(stmts); + el_val_t i = 0; + el_val_t parts = native_list_empty(); + parts = native_list_append(parts, EL_STR("// auto-generated by elc --emit-header \xe2\x80\x94 do not edit\n")); + while (i < n) { + el_val_t stmt = native_list_get(stmts, i); + el_val_t kind = el_get_field(stmt, EL_STR("stmt")); + if (str_eq(kind, EL_STR("FnDef"))) { + el_val_t name = el_get_field(stmt, EL_STR("name")); + if (!str_eq(name, EL_STR("main"))) { + el_val_t params = el_get_field(stmt, EL_STR("params")); + el_val_t ret_type = el_get_field(stmt, EL_STR("ret_type")); + el_val_t np = native_list_len(params); + el_val_t pi = 0; + el_val_t param_parts = native_list_empty(); + while (pi < np) { + el_val_t param = native_list_get(params, pi); + el_val_t pname = el_get_field(param, EL_STR("name")); + el_val_t ptype = el_get_field(param, EL_STR("type")); + if (str_eq(ptype, EL_STR(""))) { + ptype = EL_STR("Any"); + } + param_parts = native_list_append(param_parts, el_str_concat(el_str_concat(pname, EL_STR(": ")), ptype)); + pi = (pi + 1); + } + el_val_t params_str = str_join(param_parts, EL_STR(", ")); + el_val_t ret_str = ret_type; + if (str_eq(ret_str, EL_STR(""))) { + ret_str = EL_STR("Any"); + } + el_val_t sig = el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(EL_STR("extern fn "), name), EL_STR("(")), params_str), EL_STR(") -> ")), ret_str); + parts = native_list_append(parts, el_str_concat(sig, EL_STR("\n"))); + } + } + i = (i + 1); + } + el_val_t content = str_join(parts, EL_STR("")); + el_val_t ok = fs_write(hdr_path, content); + return 0; +} + el_val_t dirname_of(el_val_t path) { el_val_t n = str_len(path); el_val_t i = (n - 1); @@ -6404,21 +6967,77 @@ el_val_t resolve_imports(el_val_t src_path) { el_val_t dir = dirname_of(src_path); el_val_t lines = str_split(source, EL_STR("\n")); el_val_t n = native_list_len(lines); - el_val_t prefix = EL_STR(""); - el_val_t body = EL_STR(""); + el_val_t prefix_chunks = native_list_empty(); + el_val_t body_chunks = native_list_empty(); el_val_t i = 0; while (i < n) { el_val_t line = native_list_get(lines, i); el_val_t trimmed = str_trim(line); el_val_t imp_path = parse_import_line(trimmed, dir); if (!str_eq(imp_path, EL_STR(""))) { - prefix = el_str_concat(prefix, resolve_imports(imp_path)); + el_val_t imp_elh_path = el_str_concat(str_slice(imp_path, 0, (str_len(imp_path) - 3)), EL_STR(".elh")); + el_val_t imp_elh = fs_read(imp_elh_path); + if (!str_eq(imp_elh, EL_STR(""))) { + el_val_t seen_imp_key = el_str_concat(EL_STR("__elc_imp__:"), imp_path); + state_set(seen_imp_key, EL_STR("1")); + prefix_chunks = native_list_append(prefix_chunks, imp_elh); + } else { + el_val_t imp_body = resolve_imports(imp_path); + prefix_chunks = native_list_append(prefix_chunks, imp_body); + } } else { - body = el_str_concat(el_str_concat(body, line), EL_STR("\n")); + body_chunks = native_list_append(body_chunks, el_str_concat(line, EL_STR("\n"))); } i = (i + 1); } - return el_str_concat(prefix, body); + return el_str_concat(str_join(prefix_chunks, EL_STR("")), str_join(body_chunks, EL_STR(""))); + return 0; +} + +el_val_t run_with_postprocess(el_val_t tgt, el_val_t source, el_val_t src_path, el_val_t do_bundle, el_val_t do_obfuscate, el_val_t argc, el_val_t positional) { + el_val_t src_dir = dirname_of(src_path); + el_val_t tmp_gen = make_temp_path(EL_STR("js")); + el_val_t tmp_min = make_temp_path(EL_STR("min.js")); + stdout_to_file(tmp_gen); + if (do_bundle) { + el_val_t runtime_path = resolve_runtime_path(src_path); + compile_dispatch_bundle(tgt, source, runtime_path); + } else { + compile_dispatch(tgt, source); + } + stdout_restore(); + el_val_t ok_min = apply_minify(tmp_gen, tmp_min, src_dir); + if (!ok_min) { + exec_command(el_str_concat(el_str_concat(el_str_concat(EL_STR("rm -f "), tmp_gen), EL_STR(" ")), tmp_min)); + exit(1); + } + state_set(EL_STR("__elc_final_js"), tmp_min); + if (do_obfuscate) { + el_val_t tmp_obf = make_temp_path(EL_STR("obf.js")); + el_val_t ok_obf = apply_obfuscate(tmp_min, tmp_obf, src_dir); + if (!ok_obf) { + exec_command(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(EL_STR("rm -f "), tmp_gen), EL_STR(" ")), tmp_min), EL_STR(" ")), tmp_obf)); + exit(1); + } + state_set(EL_STR("__elc_final_js"), tmp_obf); + } + el_val_t final_path = state_get(EL_STR("__elc_final_js")); + el_val_t final_js = fs_read(final_path); + exec_command(el_str_concat(el_str_concat(el_str_concat(EL_STR("rm -f "), tmp_gen), EL_STR(" ")), tmp_min)); + if (do_obfuscate) { + exec_command(el_str_concat(EL_STR("rm -f "), final_path)); + } + if (argc >= 2) { + el_val_t out_path = native_list_get(positional, 1); + el_val_t ok = fs_write(out_path, final_js); + if (ok) { + return 0; + } else { + println(EL_STR("el-compiler: failed to write output")); + exit(1); + } + } + print(final_js); return 0; } @@ -6426,15 +7045,47 @@ int main(int _argc, char** _argv) { el_runtime_init_args(_argc, _argv); el_val_t argv = args(); el_val_t tgt = detect_target(argv); + el_val_t do_emit_header = detect_emit_header(argv); + el_val_t do_bundle = detect_bundle(argv); + el_val_t do_minify = detect_minify(argv); + el_val_t do_obfuscate = detect_obfuscate(argv); + if (do_obfuscate) { + do_minify = 1; + } el_val_t positional = strip_flags(argv); el_val_t argc = native_list_len(positional); if (argc < 1) { - println(EL_STR("el-compiler: usage: elc [--target=c|js] []")); + println(EL_STR("el-compiler: usage: elc [--target=c|js] [--bundle] [--minify] [--obfuscate] [--emit-header] []")); exit(1); } + if (do_minify) { + if (!str_eq(tgt, EL_STR("js"))) { + println(EL_STR("el-compiler: error: --minify and --obfuscate require --target=js")); + exit(1); + } + } el_val_t src_path = native_list_get(positional, 0); + if (do_emit_header) { + el_val_t raw_source = fs_read(src_path); + el_val_t hdr_tokens = lex(raw_source); + el_val_t hdr_stmts = parse(hdr_tokens); + el_release(hdr_tokens); + el_val_t hdr_path = el_str_concat(str_slice(src_path, 0, (str_len(src_path) - 3)), EL_STR(".elh")); + emit_header(hdr_stmts, hdr_path); + el_release(hdr_stmts); + } el_val_t source = resolve_imports(src_path); - el_val_t out = compile_dispatch(tgt, source); + if (do_minify) { + run_with_postprocess(tgt, source, src_path, do_bundle, do_obfuscate, argc, positional); + exit(0); + } + el_val_t out = EL_STR(""); + if (do_bundle) { + el_val_t runtime_path = resolve_runtime_path(src_path); + out = compile_dispatch_bundle(tgt, source, runtime_path); + } else { + out = compile_dispatch(tgt, source); + } if (argc >= 2) { el_val_t out_path = native_list_get(positional, 1); el_val_t ok = fs_write(out_path, out); diff --git a/el-compiler/runtime/el_runtime.c b/el-compiler/runtime/el_runtime.c index 0ba1432..d599395 100644 --- a/el-compiler/runtime/el_runtime.c +++ b/el-compiler/runtime/el_runtime.c @@ -155,6 +155,36 @@ el_val_t readline(void) { return el_wrap_str(el_strdup(buf)); } +/* ── stdout redirect helpers ─────────────────────────────────────────────── * + * Used by elc post-processing (--minify, --obfuscate): capture codegen * + * output into a temp file, then pass it to the external tool. */ + +static int _stdout_saved_fd = -1; + +/* stdout_to_file(path) — redirect stdout to . Returns 1 on success. */ +el_val_t stdout_to_file(el_val_t pathv) { + const char* path = EL_CSTR(pathv); + if (!path || !*path) return (el_val_t)(int64_t)0; + fflush(stdout); + _stdout_saved_fd = dup(STDOUT_FILENO); + if (_stdout_saved_fd < 0) return (el_val_t)(int64_t)0; + int fd = open(path, O_WRONLY | O_CREAT | O_TRUNC, 0644); + if (fd < 0) { close(_stdout_saved_fd); _stdout_saved_fd = -1; return (el_val_t)(int64_t)0; } + dup2(fd, STDOUT_FILENO); + close(fd); + return (el_val_t)(int64_t)1; +} + +/* stdout_restore() — restore stdout from the saved fd. Returns 1 on success. */ +el_val_t stdout_restore(void) { + if (_stdout_saved_fd < 0) return (el_val_t)(int64_t)0; + fflush(stdout); + dup2(_stdout_saved_fd, STDOUT_FILENO); + close(_stdout_saved_fd); + _stdout_saved_fd = -1; + return (el_val_t)(int64_t)1; +} + /* ── String builtins ─────────────────────────────────────────────────────── */ el_val_t el_str_concat(el_val_t av, el_val_t bv) { diff --git a/el-compiler/runtime/el_runtime.h b/el-compiler/runtime/el_runtime.h index 72bbf4b..a9b9b44 100644 --- a/el-compiler/runtime/el_runtime.h +++ b/el-compiler/runtime/el_runtime.h @@ -79,6 +79,8 @@ extern "C" { void println(el_val_t s); void print(el_val_t s); el_val_t readline(void); +el_val_t stdout_to_file(el_val_t path); /* redirect println to a file */ +el_val_t stdout_restore(void); /* restore stdout after capture */ /* ── String builtins ─────────────────────────────────────────────────────── */ diff --git a/el-compiler/src/codegen.el b/el-compiler/src/codegen.el index 51ddc34..b7d5055 100644 --- a/el-compiler/src/codegen.el +++ b/el-compiler/src/codegen.el @@ -2056,6 +2056,11 @@ fn builtin_arity(name: String) -> Int { if str_eq(name, "bool_to_str") { return 1 } // Process if str_eq(name, "exit_program") { return 1 } + // Process info + if str_eq(name, "getpid_now") { return 0 } + // stdout redirect (used by elc post-processing) + if str_eq(name, "stdout_to_file") { return 1 } + if str_eq(name, "stdout_restore") { return 0 } // Subprocess execution if str_eq(name, "exec_command") { return 1 } if str_eq(name, "exec_capture") { return 1 } diff --git a/el-compiler/src/compiler.el b/el-compiler/src/compiler.el index 48eaf1b..e74b38a 100644 --- a/el-compiler/src/compiler.el +++ b/el-compiler/src/compiler.el @@ -123,6 +123,100 @@ fn detect_bundle(argv: [String]) -> Bool { return false } +// Detect --minify flag in argv. +fn detect_minify(argv: [String]) -> Bool { + let n: Int = native_list_len(argv) + let i = 0 + while i < n { + let a: String = native_list_get(argv, i) + if str_eq(a, "--minify") { return true } + let i = i + 1 + } + return false +} + +// Detect --obfuscate flag in argv. +fn detect_obfuscate(argv: [String]) -> Bool { + let n: Int = native_list_len(argv) + let i = 0 + while i < n { + let a: String = native_list_get(argv, i) + if str_eq(a, "--obfuscate") { return true } + let i = i + 1 + } + return false +} + +// Build a unique temp file path: /tmp/elc--. +fn make_temp_path(suffix: String) -> String { + let pid: Int = getpid_now() + let ts: Int = time_now() + "/tmp/elc-" + native_int_to_str(pid) + "-" + native_int_to_str(ts) + "." + suffix +} + +// Reserved globals that terser and javascript-obfuscator must not mangle. +// These are referenced from HTML onclick= attributes and other direct window usage. +fn js_reserved_names() -> String { + "neuronDemoToggle,neuronDemoSend,neuronDemoReset,signInWith,signInWithEmail,signUpWithEmail,sendMagicLink,signOut,resetPassword,sendResetEmail,updatePassword,showSignIn,showSignUp,hideReset,setSort,addFamilyMember,removeFamilyMember,copyForPlatform,entHeadcountChange,NEURON_CFG" +} + +// Find a CLI tool by checking node_modules paths first, then falling back to npx. +// src_dir is the directory of the source file being compiled. +// Returns the command string to invoke the tool, or "" if not found. +fn find_node_tool(tool_name: String, src_dir: String) -> String { + // 1. Check ./node_modules/.bin/ relative to source file + let cand1: String = src_dir + "/node_modules/.bin/" + tool_name + let check1: String = str_trim(exec_capture("test -x " + cand1 + " && echo yes 2>/dev/null")) + if str_eq(check1, "yes") { return cand1 } + // 2. Check ../node_modules/.bin/ (monorepo layout) + let parent_dir: String = dirname_of(src_dir) + let cand2: String = parent_dir + "/node_modules/.bin/" + tool_name + let check2: String = str_trim(exec_capture("test -x " + cand2 + " && echo yes 2>/dev/null")) + if str_eq(check2, "yes") { return cand2 } + // 3. Fall back to npx if it is on PATH. npx will use the globally cached + // package or download on first use. Use --no to avoid auto-install if + // the package is not already cached; if that fails, try with --yes. + let npx_path: String = str_trim(exec_capture("which npx 2>/dev/null")) + if !str_eq(npx_path, "") { return "npx --yes " + tool_name } + return "" +} + +// apply_minify — run terser on js_path, write result to out_path. +// Returns true on success, false on failure. +fn apply_minify(js_path: String, out_path: String, src_dir: String) -> Bool { + let terser: String = find_node_tool("terser", src_dir) + if str_eq(terser, "") { + println("el-compiler: error: terser not found. Run 'npm install terser' in your project directory.") + return false + } + let names: String = js_reserved_names() + // Single-quote the mangle reserved list so the shell does not glob-expand + // the bracket expression. The compress options are safe without quoting. + let compress_opts: String = "passes=2,drop_console=false,drop_debugger=true" + let mangle_reserved: String = "'reserved=[" + names + "]'" + let cmd: String = terser + " " + js_path + " --compress " + compress_opts + " --mangle " + mangle_reserved + " --output " + out_path + let ret: Int = exec_command(cmd) + if ret == 0 { return true } + println("el-compiler: error: terser failed (exit " + native_int_to_str(ret) + ")") + return false +} + +// apply_obfuscate — run javascript-obfuscator on js_path, write result to out_path. +// Returns true on success, false on failure. +fn apply_obfuscate(js_path: String, out_path: String, src_dir: String) -> Bool { + let obfuscator: String = find_node_tool("javascript-obfuscator", src_dir) + if str_eq(obfuscator, "") { + println("el-compiler: error: javascript-obfuscator not found. Run 'npm install javascript-obfuscator' in your project directory.") + return false + } + let names: String = js_reserved_names() + let cmd: String = obfuscator + " " + js_path + " --output " + out_path + " --compact true --simplify true --string-array true --string-array-encoding base64 --string-array-threshold 0.75 --identifier-names-generator hexadecimal --rename-globals false --self-defending false --reserved-names " + names + let ret: Int = exec_command(cmd) + if ret == 0 { return true } + println("el-compiler: error: javascript-obfuscator failed (exit " + native_int_to_str(ret) + ")") + return false +} + // Resolve the runtime path for --bundle mode. // Looks for el_runtime.js next to the source file first; // if not found there, looks next to the elc binary itself. @@ -295,14 +389,83 @@ fn resolve_imports(src_path: String) -> String { return str_join(prefix_chunks, "") + str_join(body_chunks, "") } +// run_with_postprocess — codegen + minify + optional obfuscate pipeline. +// +// Called from main() when --minify or --obfuscate is active. Redirects stdout +// to a temp file during codegen so the output can be passed through the +// external tools (terser, javascript-obfuscator) before final emission. +// +// Pipeline: codegen -> terser -> (javascript-obfuscator) -> stdout or file +fn run_with_postprocess(tgt: String, source: String, src_path: String, do_bundle: Bool, do_obfuscate: Bool, argc: Int, positional: [String]) -> Void { + let src_dir: String = dirname_of(src_path) + let tmp_gen: String = make_temp_path("js") + let tmp_min: String = make_temp_path("min.js") + + // Redirect stdout to tmp_gen so codegen println output is captured. + stdout_to_file(tmp_gen) + if do_bundle { + let runtime_path: String = resolve_runtime_path(src_path) + compile_dispatch_bundle(tgt, source, runtime_path) + } else { + compile_dispatch(tgt, source) + } + stdout_restore() + + // Run terser: tmp_gen -> tmp_min + let ok_min: Bool = apply_minify(tmp_gen, tmp_min, src_dir) + if !ok_min { + exec_command("rm -f " + tmp_gen + " " + tmp_min) + exit(1) + } + + // Determine final result path (either tmp_min or post-obfuscation file). + // Use state to pass the final path out of the optional obfuscation branch. + state_set("__elc_final_js", tmp_min) + + if do_obfuscate { + let tmp_obf: String = make_temp_path("obf.js") + let ok_obf: Bool = apply_obfuscate(tmp_min, tmp_obf, src_dir) + if !ok_obf { + exec_command("rm -f " + tmp_gen + " " + tmp_min + " " + tmp_obf) + exit(1) + } + state_set("__elc_final_js", tmp_obf) + } + + let final_path: String = state_get("__elc_final_js") + let final_js: String = fs_read(final_path) + + // Clean up all temp files. + exec_command("rm -f " + tmp_gen + " " + tmp_min) + if do_obfuscate { + exec_command("rm -f " + final_path) + } + + if argc >= 2 { + let out_path: String = native_list_get(positional, 1) + let ok: Bool = fs_write(out_path, final_js) + if ok { + return + } else { + println("el-compiler: failed to write output") + exit(1) + } + } + // No output file: print final JS to stdout. + print(final_js) +} + // main — CLI entry point. // -// elc # emit C to stdout -// elc --target=js # emit JS (module) to stdout -// elc --target=js --bundle # emit self-contained JS (IIFE) to stdout -// elc --target=c # write C to file -// elc --target=js # write JS to file -// elc --target=js --bundle # write bundled JS to file +// elc # emit C to stdout +// elc --target=js # emit JS (module) to stdout +// elc --target=js --bundle # emit self-contained JS (IIFE) to stdout +// elc --target=js --bundle --minify # emit minified IIFE to stdout +// elc --target=js --bundle --obfuscate # emit minified+obfuscated IIFE to stdout +// elc --target=c # write C to file +// elc --target=js # write JS to file +// elc --target=js --bundle # write bundled JS to file +// elc --target=js --bundle --minify # write minified JS to file fn main() -> Void { let argv: [String] = args() // Use `tgt` not `target`: `target` is a reserved keyword in the lexer @@ -311,12 +474,27 @@ fn main() -> Void { let tgt: String = detect_target(argv) let do_emit_header: Bool = detect_emit_header(argv) let do_bundle: Bool = detect_bundle(argv) + let do_minify: Bool = detect_minify(argv) + let do_obfuscate: Bool = detect_obfuscate(argv) + // --obfuscate implies --minify: obfuscating unminified code is pointless. + if do_obfuscate { + let do_minify = true + } let positional: [String] = strip_flags(argv) let argc: Int = native_list_len(positional) if argc < 1 { - println("el-compiler: usage: elc [--target=c|js] [--bundle] [--emit-header] []") + println("el-compiler: usage: elc [--target=c|js] [--bundle] [--minify] [--obfuscate] [--emit-header] []") exit(1) } + + // --minify and --obfuscate require --target=js + if do_minify { + if !str_eq(tgt, "js") { + println("el-compiler: error: --minify and --obfuscate require --target=js") + exit(1) + } + } + let src_path: String = native_list_get(positional, 0) // When --emit-header is requested, parse the source file directly @@ -332,6 +510,17 @@ fn main() -> Void { } let source: String = resolve_imports(src_path) + + // When post-processing (--minify or --obfuscate) is requested, redirect + // stdout to a temp file so codegen output can be captured and piped through + // the external tools. After codegen, restore stdout before emitting the + // final result. + if do_minify { + run_with_postprocess(tgt, source, src_path, do_bundle, do_obfuscate, argc, positional) + exit(0) + } + + // Standard path (no post-processing). let out: String = "" if do_bundle { let runtime_path: String = resolve_runtime_path(src_path) diff --git a/spec/codegen-js.md b/spec/codegen-js.md index b60e750..4bf921d 100644 --- a/spec/codegen-js.md +++ b/spec/codegen-js.md @@ -240,6 +240,93 @@ The argv parser scans for a `--target=` token; remaining positional args a --- +## 8a. Production output — `--minify` and `--obfuscate` + +Two post-processing flags produce production-ready browser JS in a single compiler invocation, replacing any external post-processing scripts. + +### Usage + +``` +elc --target=js --bundle --minify source.el > output.min.js +elc --target=js --bundle --obfuscate source.el > output.obf.js +elc --target=js --bundle --minify --obfuscate source.el > output.final.js +``` + +Both flags require `--target=js`. Passing either without `--target=js` prints an error and exits with code 1. + +`--obfuscate` implies `--minify` — obfuscating unminified code produces no benefit and only increases output size. + +### Pipeline order + +``` +generate JS -> (if --bundle, wrap in IIFE) -> (if --minify, run terser) -> (if --obfuscate, run javascript-obfuscator) -> output +``` + +### Tool discovery + +The compiler looks for each tool in this order: + +1. `/node_modules/.bin/` — local install next to source file +2. `/../node_modules/.bin/` — one level up (monorepo layout) +3. `npx --yes ` — fall back to npx (uses globally cached package or downloads on first use) + +If no path resolves and npx is not on `PATH`, the compiler prints a clear error and exits non-zero: + +``` +el-compiler: error: terser not found. Run 'npm install terser' in your project directory. +el-compiler: error: javascript-obfuscator not found. Run 'npm install javascript-obfuscator' in your project directory. +``` + +### Minification (terser) + +Command issued internally: + +``` +terser --compress passes=2,drop_console=false,drop_debugger=true \ + --mangle 'reserved=[]' --output +``` + +### Obfuscation (javascript-obfuscator) + +Command issued internally (runs after minification): + +``` +javascript-obfuscator --output + --compact true + --simplify true + --string-array true + --string-array-encoding base64 + --string-array-threshold 0.75 + --identifier-names-generator hexadecimal + --rename-globals false + --self-defending false + --reserved-names +``` + +### Reserved names + +These identifiers are protected from renaming by both tools. They are referenced directly from HTML `onclick=` attributes and other global-scope callsites: + +``` +neuronDemoToggle, neuronDemoSend, neuronDemoReset, +signInWith, signInWithEmail, signUpWithEmail, sendMagicLink, +signOut, resetPassword, sendResetEmail, updatePassword, +showSignIn, showSignUp, hideReset, +setSort, addFamilyMember, removeFamilyMember, copyForPlatform, entHeadcountChange, +NEURON_CFG +``` + +### Temp files + +The compiler uses `/tmp/elc--.js` naming for temp files. All temp files are cleaned up on both success and failure paths. + +### Implementation notes + +- The compiler adds `stdout_to_file(path)` / `stdout_restore()` builtins to the C runtime (`el_runtime.c`) to capture codegen output (which is streamed via `println`) into a temp file before passing it to the external tools. +- `--minify` and `--obfuscate` error messages are printed after stdout is restored, so they always reach the terminal regardless of output redirection. + +--- + ## 9. The path to compiling el-ui/runtime through this backend This is the real-world test. `el-ui/runtime/src/` is currently 5 hand-written `.js` files. The path to authoring them in El:

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