From 053a9e29fc6743ff7b104290dd4d6d92836d73ac Mon Sep 17 00:00:00 2001 From: theMackabu Date: Wed, 28 Jan 2026 21:47:31 -0800 Subject: [PATCH] migrate to js_true/js_false --- examples/embed/embed.c | 9 +- include/ant.h | 8 +- include/internal.h | 3 - src/ant.c | 157 ++++++++++++++++----------------- src/core/ant.ts | 2 + src/modules/atomics.c | 6 +- src/modules/buffer.c | 21 ++--- src/modules/child_process.c | 18 ++-- src/modules/events.c | 14 +-- src/modules/fetch.c | 2 +- src/modules/ffi.c | 2 +- src/modules/fs.c | 18 ++-- src/modules/json.c | 2 +- src/modules/observable.c | 4 +- src/modules/os.c | 4 +- src/modules/path.c | 10 +-- src/modules/process.c | 34 +++---- src/modules/readline.c | 28 +++--- src/modules/reflect.c | 70 +++++++-------- src/modules/symbol.c | 8 +- src/modules/textcodec.c | 8 +- src/modules/url.c | 10 +-- src/snapshot.c | 2 +- src/types/ant.d.ts | 1 + src/types/index.d.ts | 4 +- src/types/modules/console.d.ts | 3 + 26 files changed, 226 insertions(+), 222 deletions(-) create mode 100644 src/types/modules/console.d.ts diff --git a/examples/embed/embed.c b/examples/embed/embed.c index 6d17532..609a740 100644 --- a/examples/embed/embed.c +++ b/examples/embed/embed.c @@ -137,7 +137,7 @@ static void example_objects_arrays(void) { jsval_t global = js_glob(js); jsval_t config = js_mkobj(js); - js_set(js, config, "debug", js_mktrue()); + js_set(js, config, "debug", js_true); js_set(js, config, "version", js_mknum(1.0)); js_set(js, config, "name", js_mkstr(js, "MyApp", 5)); js_set(js, global, "config", config); @@ -153,7 +153,10 @@ static void example_objects_arrays(void) { printf(" Result: %s\n", js_str(js, result)); jsval_t name_val = js_get(js, config, "name"); - printf(" config.name from C: %s\n", js_str(js, name_val)); + printf(" config.name: %s\n", js_str(js, name_val)); + + jsval_t debug_val = js_get(js, config, "debug"); + printf(" config.debug: %s\n", js_str(js, debug_val)); js_destroy(js); } @@ -421,7 +424,7 @@ static void example_global_this(void) { jsval_t global = js_glob(js); js_set(js, global, "myNumber", js_mknum(42)); js_set(js, global, "myString", js_mkstr(js, "hello from C", 12)); - js_set(js, global, "myBool", js_mktrue()); + js_set(js, global, "myBool", js_true); jsval_t myObj = js_mkobj(js); js_set(js, myObj, "a", js_mknum(1)); diff --git a/include/ant.h b/include/ant.h index 5c84373..96b8b8d 100644 --- a/include/ant.h +++ b/include/ant.h @@ -17,6 +17,8 @@ #define STR_PROTO "__proto__" #define STR_PROTO_LEN 9 +#define ANT_LIMIT_SIZE_CACHE 16384 + #define ANT_STRING(s) js_mkstr(js, s, sizeof(s) - 1) #define ANT_PTR(ptr) js_mknum((double)(uintptr_t)(ptr)) #define ANT_COPY(buf, len, s) cpy(buf, len, s, sizeof(s) - 1) @@ -27,7 +29,9 @@ #define JS_INF ((double)INFINITY) #define JS_NEG_INF ((double)(-INFINITY)) -#define ANT_LIMIT_SIZE_CACHE 16384 +#define js_true (NANBOX_PREFIX | ((jsval_t)T_BOOL << NANBOX_TYPE_SHIFT) | 1) +#define js_false (NANBOX_PREFIX | ((jsval_t)T_BOOL << NANBOX_TYPE_SHIFT)) +#define js_bool(x) (js_false | (jsval_t)!!(x)) #define JS_DESC_W (1 << 0) #define JS_DESC_E (1 << 1) @@ -63,8 +67,6 @@ void js_root_update(ant_t *, jshdl_t, jsval_t); jsval_t js_mkundef(void); jsval_t js_mknull(void); -jsval_t js_mktrue(void); -jsval_t js_mkfalse(void); jsval_t js_mknum(double); jsval_t js_getthis(ant_t *); diff --git a/include/internal.h b/include/internal.h index 51e1548..e6ad0f3 100644 --- a/include/internal.h +++ b/include/internal.h @@ -139,7 +139,4 @@ static inline bool is_undefined(jsval_t v) { return vtype(v) == T_UNDEF; } -#define js_true (NANBOX_PREFIX | ((jsval_t)T_BOOL << NANBOX_TYPE_SHIFT) | 1) -#define js_false (NANBOX_PREFIX | ((jsval_t)T_BOOL << NANBOX_TYPE_SHIFT)) - #endif diff --git a/src/ant.c b/src/ant.c index 912e8c3..fc409ef 100644 --- a/src/ant.c +++ b/src/ant.c @@ -2792,10 +2792,9 @@ static void set_func_code_ptr(struct js *js, jsval_t func_obj, const char *code, static void set_func_code(struct js *js, jsval_t func_obj, const char *code, size_t len) { const char *arena_code = code_arena_alloc(code, len); if (!arena_code) return; - set_func_code_ptr(js, func_obj, arena_code, len); - if (!code_has_function_decl(code, len)) set_slot(js, func_obj, SLOT_NO_FUNC_DECLS, js_mktrue()); + if (!code_has_function_decl(code, len)) set_slot(js, func_obj, SLOT_NO_FUNC_DECLS, js_true); if (!memmem(code, len, "var", 3)) return; size_t vars_buf_len; @@ -6372,7 +6371,7 @@ static jsval_t do_call_op(struct js *js, jsval_t func, jsval_t args) { jsval_t closure_scope = get_slot(js, func_obj, SLOT_SCOPE); jsval_t async_slot = get_slot(js, func_obj, SLOT_ASYNC); - bool is_async = vtype(async_slot) == T_BOOL && vdata(async_slot) == 1; + bool is_async = (async_slot == js_true); jsval_t captured_this = js_mkundef(); bool is_arrow = false; @@ -7858,7 +7857,7 @@ static jsval_t js_func_literal(struct js *js, bool is_async) { js_set_descriptor(js, func_obj, "length", 6, JS_DESC_C); if (is_async) { - set_slot(js, func_obj, SLOT_ASYNC, js_mktrue()); + set_slot(js, func_obj, SLOT_ASYNC, js_true); jsval_t async_proto = get_slot(js, js_glob(js), SLOT_ASYNC_PROTO); if (vtype(async_proto) == T_FUNC) set_proto(js, func_obj, async_proto); } else { @@ -7880,7 +7879,7 @@ static jsval_t js_func_literal(struct js *js, bool is_async) { jsval_t closure_scope = for_let_capture_scope(js); if (is_err(closure_scope)) return closure_scope; set_slot(js, func_obj, SLOT_SCOPE, closure_scope); - if (flags & F_STRICT) set_slot(js, func_obj, SLOT_STRICT, js_mktrue()); + if (flags & F_STRICT) set_slot(js, func_obj, SLOT_STRICT, js_true); } jsval_t func = mkval(T_FUNC, (unsigned long) vdata(func_obj)); @@ -8009,8 +8008,8 @@ static jsval_t js_literal(struct js *js) { if (is_err(func_obj)) { free(fn_str); return func_obj; } set_func_code(js, func_obj, fn_str, fn_pos); free(fn_str); - set_slot(js, func_obj, SLOT_ASYNC, js_mktrue()); - set_slot(js, func_obj, SLOT_ARROW, tov(1)); + set_slot(js, func_obj, SLOT_ASYNC, js_true); + set_slot(js, func_obj, SLOT_ARROW, js_true); jsval_t async_proto = get_slot(js, js_glob(js), SLOT_ASYNC_PROTO); if (vtype(async_proto) == T_FUNC) set_proto(js, func_obj, async_proto); if (!(flags & F_NOEXEC)) { @@ -8079,10 +8078,11 @@ static jsval_t js_literal(struct js *js) { return super_ctor; } + case TOK_TRUE: return js_true; + case TOK_FALSE: return js_false; + case TOK_NULL: return js_mknull(); case TOK_UNDEF: return js_mkundef(); - case TOK_TRUE: return js_mktrue(); - case TOK_FALSE: return js_mkfalse(); case TOK_THIS: return js->this_val; default: @@ -8161,7 +8161,7 @@ static jsval_t js_arrow_func(struct js *js, jsoff_t params_start, jsoff_t params free(fn_str); if (is_async) { - set_slot(js, func_obj, SLOT_ASYNC, js_mktrue()); + set_slot(js, func_obj, SLOT_ASYNC, js_true); jsval_t async_proto = get_slot(js, js_glob(js), SLOT_ASYNC_PROTO); if (vtype(async_proto) == T_FUNC) set_proto(js, func_obj, async_proto); } else { @@ -8176,7 +8176,7 @@ static jsval_t js_arrow_func(struct js *js, jsoff_t params_start, jsoff_t params set_slot(js, func_obj, SLOT_THIS, js->this_val); } - set_slot(js, func_obj, SLOT_ARROW, tov(1)); + set_slot(js, func_obj, SLOT_ARROW, js_true); return mkval(T_FUNC, (unsigned long) vdata(func_obj)); } @@ -8473,11 +8473,11 @@ static void unlink_prop(struct js *js, jsoff_t obj_off, jsoff_t prop_off, jsoff_ static jsval_t check_frozen_sealed(struct js *js, jsval_t obj, const char *action) { if (js_truthy(js, get_slot(js, obj, SLOT_FROZEN))) { if (js->flags & F_STRICT) return js_mkerr(js, "cannot %s property of frozen object", action); - return js_mkfalse(); + return js_false; } if (js_truthy(js, get_slot(js, obj, SLOT_SEALED))) { if (js->flags & F_STRICT) return js_mkerr(js, "cannot %s property of sealed object", action); - return js_mkfalse(); + return js_false; } return js_mkundef(); } @@ -8633,9 +8633,9 @@ static jsval_t js_unary(struct js *js) { js->flags = (saved_flags & ~F_THROW) | F_NOEXEC; js_postfix(js); js->flags = saved_flags; - return js_mktrue(); + return js_true; } - if (js->flags & F_NOEXEC) return js_mktrue(); + if (js->flags & F_NOEXEC) return js_true; if (vtype(operand) == T_PROPREF) { jsoff_t obj_off = propref_obj(operand); @@ -8647,48 +8647,48 @@ static jsval_t js_unary(struct js *js) { if (is_proxy(js, obj)) { jsval_t result = proxy_delete(js, obj, key_str, len); - return is_err(result) ? result : (js_truthy(js, result) ? js_mktrue() : js_mkfalse()); + return is_err(result) ? result : js_bool(js_truthy(js, result)); } jsval_t err = check_frozen_sealed(js, obj, "delete"); if (vtype(err) != T_UNDEF) return err; jsoff_t prop_off = lkp(js, obj, key_str, len); - if (prop_off == 0) return js_mktrue(); + if (prop_off == 0) return js_true; if (is_nonconfig_prop(js, prop_off)) { if (js->flags & F_STRICT) return js_mkerr_typed(js, JS_ERR_TYPE, "cannot delete non-configurable property"); - return js_mkfalse(); + return js_false; } descriptor_entry_t *desc = lookup_descriptor(obj_off, key_str, len); if (desc && !desc->configurable) { if (js->flags & F_STRICT) return js_mkerr_typed(js, JS_ERR_TYPE, "cannot delete non-configurable property"); - return js_mkfalse(); + return js_false; } jsoff_t first_prop = loadoff(js, obj_off) & ~(3U | FLAGMASK); if (first_prop == prop_off) { unlink_prop(js, obj_off, prop_off, 0); - return js_mktrue(); + return js_true; } for (jsoff_t prev = first_prop; prev != 0; ) { jsoff_t next_prop = loadoff(js, prev) & ~(3U | FLAGMASK); if (next_prop == prop_off) { unlink_prop(js, obj_off, prop_off, prev); - return js_mktrue(); + return js_true; } prev = next_prop; } - return js_mktrue(); + return js_true; } - if (vtype(operand) != T_PROP) return js_mktrue(); + if (vtype(operand) != T_PROP) return js_true; jsoff_t prop_off = (jsoff_t)vdata(operand); if (is_nonconfig_prop(js, prop_off)) { if (js->flags & F_STRICT) return js_mkerr(js, "cannot delete non-configurable property"); - return js_mkfalse(); + return js_false; } jsoff_t owner_obj_off = 0, prev_prop_off = 0; @@ -8721,11 +8721,11 @@ static jsval_t js_unary(struct js *js) { descriptor_entry_t *desc = lookup_descriptor(owner_obj_off, key_str, key_len); if (desc && !desc->configurable) { if (js->flags & F_STRICT) return js_mkerr_typed(js, JS_ERR_TYPE, "cannot delete non-configurable property"); - return js_mkfalse(); + return js_false; } unlink_prop(js, owner_obj_off, prop_off, is_first_prop ? 0 : prev_prop_off); } - return js_mktrue(); + return js_true; } do_await: { @@ -9617,7 +9617,7 @@ static jsval_t js_func_decl(struct js *js) { if (is_err(closure_scope)) return closure_scope; set_slot(js, func_obj, SLOT_SCOPE, closure_scope); if (flags & F_STRICT) { - set_slot(js, func_obj, SLOT_STRICT, js_mktrue()); + set_slot(js, func_obj, SLOT_STRICT, js_true); } } @@ -9665,7 +9665,7 @@ static jsval_t js_func_decl_async(struct js *js) { jsval_t func_obj = mkobj(js, 0); if (is_err(func_obj)) return func_obj; set_func_code(js, func_obj, &js->code[pos], js->pos - pos); - set_slot(js, func_obj, SLOT_ASYNC, js_mktrue()); + set_slot(js, func_obj, SLOT_ASYNC, js_true); jsval_t async_proto = get_slot(js, js_glob(js), SLOT_ASYNC_PROTO); if (vtype(async_proto) == T_FUNC) set_proto(js, func_obj, async_proto); jsval_t len_key = js_mkstr(js, "length", 6); @@ -9684,7 +9684,7 @@ static jsval_t js_func_decl_async(struct js *js) { jsval_t closure_scope = for_let_capture_scope(js); if (is_err(closure_scope)) return closure_scope; set_slot(js, func_obj, SLOT_SCOPE, closure_scope); - if (flags & F_STRICT) set_slot(js, func_obj, SLOT_STRICT, js_mktrue()); + if (flags & F_STRICT) set_slot(js, func_obj, SLOT_STRICT, js_true); } jsval_t func = mkval(T_FUNC, (unsigned long) vdata(func_obj)); @@ -11497,7 +11497,7 @@ static jsval_t js_class_expr(struct js *js, bool is_expression) { set_slot(js, method_obj, SLOT_SCOPE, func_scope); if (m->is_async) { - set_slot(js, method_obj, SLOT_ASYNC, js_mktrue()); + set_slot(js, method_obj, SLOT_ASYNC, js_true); jsval_t async_proto = get_slot(js, js_glob(js), SLOT_ASYNC_PROTO); if (vtype(async_proto) == T_FUNC) set_proto(js, method_obj, async_proto); } else { @@ -11531,7 +11531,7 @@ static jsval_t js_class_expr(struct js *js, bool is_expression) { set_func_code(js, func_obj, &js->code[constructor_params_start], code_len); } else { set_func_code_ptr(js, func_obj, "(){}", 4); - if (super_len > 0) set_slot(js, func_obj, SLOT_DEFAULT_CTOR, js_mktrue()); + if (super_len > 0) set_slot(js, func_obj, SLOT_DEFAULT_CTOR, js_true); } int instance_field_count = 0; @@ -12196,7 +12196,7 @@ static jsval_t builtin_AsyncFunction(struct js *js, jsval_t *args, int nargs) { set_func_code_ptr(js, func_obj, "(){}", 4); set_slot(js, func_obj, SLOT_SCOPE, js_glob(js)); - set_slot(js, func_obj, SLOT_ASYNC, js_mktrue()); + set_slot(js, func_obj, SLOT_ASYNC, js_true); jsval_t async_proto = get_slot(js, js_glob(js), SLOT_ASYNC_PROTO); if (vtype(async_proto) == T_FUNC) set_proto(js, func_obj, async_proto); @@ -12259,7 +12259,7 @@ static jsval_t builtin_AsyncFunction(struct js *js, jsval_t *args, int nargs) { set_func_code(js, func_obj, code_buf, pos); free(code_buf); set_slot(js, func_obj, SLOT_SCOPE, js_glob(js)); - set_slot(js, func_obj, SLOT_ASYNC, js_mktrue()); + set_slot(js, func_obj, SLOT_ASYNC, js_true); jsval_t async_proto = get_slot(js, js_glob(js), SLOT_ASYNC_PROTO); if (vtype(async_proto) == T_FUNC) set_proto(js, func_obj, async_proto); @@ -12346,9 +12346,10 @@ static jsval_t builtin_function_toString(struct js *js, jsval_t *args, int nargs if (code && code_len > 0) { jsval_t async_slot = get_slot(js, func_obj, SLOT_ASYNC); + jsval_t arrow_slot = get_slot(js, func_obj, SLOT_ARROW); bool is_async = (async_slot == js_true); - bool is_arrow = vtype(get_slot(js, func_obj, SLOT_ARROW)) != T_UNDEF; + bool is_arrow = (arrow_slot == js_true); if (is_arrow) { const char *brace = memchr(code, '{', code_len); @@ -12522,7 +12523,7 @@ static jsval_t builtin_function_bind(struct js *js, jsval_t *args, int nargs) { jsval_t async_slot = get_slot(js, func_obj, SLOT_ASYNC); if (vtype(async_slot) == T_BOOL && vdata(async_slot) == 1) { - set_slot(js, bound_func, SLOT_ASYNC, js_mktrue()); + set_slot(js, bound_func, SLOT_ASYNC, js_true); jsval_t async_proto = get_slot(js, js_glob(js), SLOT_ASYNC_PROTO); if (vtype(async_proto) == T_FUNC) set_proto(js, bound_func, async_proto); } else { @@ -14242,7 +14243,7 @@ static jsval_t builtin_object_defineProperty(struct js *js, jsval_t *args, int n return js_mkerr(js, "Cannot define property %.*s, object is not extensible", (int)prop_len, prop_str); if (js_truthy(js, get_slot(js, as_obj, SLOT_SEALED))) return js_mkerr(js, "Cannot define property %.*s, object is not extensible", (int)prop_len, prop_str); - if (get_slot(js, as_obj, SLOT_EXTENSIBLE) == js_mkfalse()) + if (get_slot(js, as_obj, SLOT_EXTENSIBLE) == js_false) return js_mkerr(js, "Cannot define property %.*s, object is not extensible", (int)prop_len, prop_str); } @@ -14447,20 +14448,20 @@ static jsval_t builtin_object_freeze(struct js *js, jsval_t *args, int nargs) { js_set_descriptor(js, as_obj, key, klen, JS_DESC_E); } - set_slot(js, as_obj, SLOT_FROZEN, js_mktrue()); + set_slot(js, as_obj, SLOT_FROZEN, js_true); return obj; } static jsval_t builtin_object_isFrozen(struct js *js, jsval_t *args, int nargs) { - if (nargs == 0) return js_mktrue(); + if (nargs == 0) return js_true; jsval_t obj = args[0]; uint8_t t = vtype(obj); - if (t != T_OBJ && t != T_ARR && t != T_FUNC) return js_mktrue(); + if (t != T_OBJ && t != T_ARR && t != T_FUNC) return js_true; jsval_t as_obj = (t == T_OBJ) ? obj : mkval(T_OBJ, vdata(obj)); - return js_truthy(js, get_slot(js, as_obj, SLOT_FROZEN)) ? js_mktrue() : js_mkfalse(); + return js_bool(js_truthy(js, get_slot(js, as_obj, SLOT_FROZEN))); } static jsval_t builtin_object_seal(struct js *js, jsval_t *args, int nargs) { @@ -14472,7 +14473,7 @@ static jsval_t builtin_object_seal(struct js *js, jsval_t *args, int nargs) { if (t != T_OBJ && t != T_ARR && t != T_FUNC) return obj; jsval_t as_obj = (t == T_OBJ) ? obj : mkval(T_OBJ, vdata(obj)); - set_slot(js, as_obj, SLOT_SEALED, js_mktrue()); + set_slot(js, as_obj, SLOT_SEALED, js_true); jsoff_t next = loadoff(js, (jsoff_t) vdata(as_obj)) & ~(3U | FLAGMASK); while (next < js->brk && next != 0) { @@ -14504,18 +14505,18 @@ static jsval_t builtin_object_seal(struct js *js, jsval_t *args, int nargs) { } static jsval_t builtin_object_isSealed(struct js *js, jsval_t *args, int nargs) { - if (nargs == 0) return js_mktrue(); + if (nargs == 0) return js_true; jsval_t obj = args[0]; uint8_t t = vtype(obj); - if (t != T_OBJ && t != T_ARR && t != T_FUNC) return js_mktrue(); + if (t != T_OBJ && t != T_ARR && t != T_FUNC) return js_true; jsval_t as_obj = (t == T_OBJ) ? obj : mkval(T_OBJ, vdata(obj)); - if (js_truthy(js, get_slot(js, as_obj, SLOT_SEALED))) return js_mktrue(); - if (js_truthy(js, get_slot(js, as_obj, SLOT_FROZEN))) return js_mktrue(); + if (js_truthy(js, get_slot(js, as_obj, SLOT_SEALED))) return js_true; + if (js_truthy(js, get_slot(js, as_obj, SLOT_FROZEN))) return js_true; - return js_mkfalse(); + return js_false; } static jsval_t builtin_object_fromEntries(struct js *js, jsval_t *args, int nargs) { @@ -14601,16 +14602,16 @@ static jsval_t builtin_object_getOwnPropertyDescriptor(struct js *js, jsval_t *a if (desc->has_setter) { setprop(js, result, js_mkstr(js, "set", 3), desc->setter); } - setprop(js, result, js_mkstr(js, "enumerable", 10), desc->enumerable ? js_mktrue() : js_mkfalse()); - setprop(js, result, js_mkstr(js, "configurable", 12), desc->configurable ? js_mktrue() : js_mkfalse()); + setprop(js, result, js_mkstr(js, "enumerable", 10), js_bool(desc->enumerable)); + setprop(js, result, js_mkstr(js, "configurable", 12), js_bool(desc->configurable)); } else { if (prop_off != 0) { jsval_t prop_val = resolveprop(js, mkval(T_PROP, prop_off)); setprop(js, result, js_mkstr(js, "value", 5), prop_val); } - setprop(js, result, js_mkstr(js, "writable", 8), desc ? (desc->writable ? js_mktrue() : js_mkfalse()) : js_mktrue()); - setprop(js, result, js_mkstr(js, "enumerable", 10), desc ? (desc->enumerable ? js_mktrue() : js_mkfalse()) : js_mktrue()); - setprop(js, result, js_mkstr(js, "configurable", 12), desc ? (desc->configurable ? js_mktrue() : js_mkfalse()) : js_mktrue()); + setprop(js, result, js_mkstr(js, "writable", 8), desc ? (js_bool(desc->writable)) : js_true); + setprop(js, result, js_mkstr(js, "enumerable", 10), desc ? (js_bool(desc->enumerable)) : js_true); + setprop(js, result, js_mkstr(js, "configurable", 12), desc ? (js_bool(desc->configurable)) : js_true); } return result; @@ -14676,23 +14677,21 @@ static jsval_t builtin_object_getOwnPropertyNames(struct js *js, jsval_t *args, } static jsval_t builtin_object_isExtensible(struct js *js, jsval_t *args, int nargs) { - if (nargs == 0) return js_mktrue(); + if (nargs == 0) return js_true; jsval_t obj = args[0]; uint8_t t = vtype(obj); - if (t != T_OBJ && t != T_ARR && t != T_FUNC) return js_mktrue(); + if (t != T_OBJ && t != T_ARR && t != T_FUNC) return js_true; jsval_t as_obj = (t == T_OBJ) ? obj : mkval(T_OBJ, vdata(obj)); - if (js_truthy(js, get_slot(js, as_obj, SLOT_FROZEN))) return js_mkfalse(); - if (js_truthy(js, get_slot(js, as_obj, SLOT_SEALED))) return js_mkfalse(); + if (js_truthy(js, get_slot(js, as_obj, SLOT_FROZEN))) return js_false; + if (js_truthy(js, get_slot(js, as_obj, SLOT_SEALED))) return js_false; jsval_t ext_slot = get_slot(js, as_obj, SLOT_EXTENSIBLE); - if (vtype(ext_slot) != T_UNDEF) { - return js_truthy(js, ext_slot) ? js_mktrue() : js_mkfalse(); - } + if (vtype(ext_slot) != T_UNDEF) return js_bool(js_truthy(js, ext_slot)); - return js_mktrue(); + return js_true; } static jsval_t builtin_object_preventExtensions(struct js *js, jsval_t *args, int nargs) { @@ -14704,7 +14703,7 @@ static jsval_t builtin_object_preventExtensions(struct js *js, jsval_t *args, in if (t != T_OBJ && t != T_ARR && t != T_FUNC) return obj; jsval_t as_obj = (t == T_OBJ) ? obj : mkval(T_OBJ, vdata(obj)); - set_slot(js, as_obj, SLOT_EXTENSIBLE, js_mkfalse()); + set_slot(js, as_obj, SLOT_EXTENSIBLE, js_false); return obj; } @@ -19286,7 +19285,7 @@ static jsval_t mk_aggregate_error(struct js *js, jsval_t errors) { static bool promise_any_try_resolve(struct js *js, jsval_t tracker, jsval_t value) { if (js_truthy(js, js_get(js, tracker, "resolved"))) return false; - js_set(js, tracker, "resolved", js_mktrue()); + js_set(js, tracker, "resolved", js_true); resolve_promise(js, get_slot(js, tracker, SLOT_DATA), value); return true; } @@ -19340,7 +19339,7 @@ static jsval_t builtin_Promise_any(struct js *js, jsval_t *args, int nargs) { setprop(js, tracker, js_mkstr(js, "remaining", 9), tov((double)len)); setprop(js, tracker, js_mkstr(js, "errors", 6), errors); - setprop(js, tracker, js_mkstr(js, "resolved", 8), js_mkfalse()); + setprop(js, tracker, js_mkstr(js, "resolved", 8), js_false); setprop(js, errors, js_mkstr(js, "length", 6), tov((double)len)); for (int i = 0; i < len; i++) { @@ -19470,7 +19469,7 @@ static jsval_t do_in(struct js *js, jsval_t l, jsval_t r) { if (is_proxy(js, r)) { jsval_t result = proxy_has(js, r, prop_name, prop_len); if (is_err(result)) return result; - return js_truthy(js, result) ? js_mktrue() : js_mkfalse(); + return js_bool(js_truthy(js, result)); } jsoff_t found = lkp_proto(js, r, prop_name, prop_len); @@ -20036,7 +20035,7 @@ void js_setup_import_meta(struct js *js, const char *filename) { } } - setprop(js, import_meta, js_mkstr(js, "main", 4), js_mktrue()); + setprop(js, import_meta, js_mkstr(js, "main", 4), js_true); jsval_t resolve_fn = js_mkfun(builtin_import_meta_resolve); setprop(js, import_meta, js_mkstr(js, "resolve", 7), resolve_fn); @@ -20689,7 +20688,7 @@ static jsval_t map_iter_next(struct js *js, jsval_t *args, int nargs) { jsval_t result = js_mkobj(js); if (idx >= len) { - js_set(js, result, "done", js_mktrue()); + js_set(js, result, "done", js_true); js_set(js, result, "value", js_mkundef()); } else { char idxstr[16]; @@ -20700,7 +20699,7 @@ static jsval_t map_iter_next(struct js *js, jsval_t *args, int nargs) { js_arr_push(js, entry, k); js_arr_push(js, entry, v); js_set(js, result, "value", entry); - js_set(js, result, "done", js_mkfalse()); + js_set(js, result, "done", js_false); js_set(js, this_val, "__idx", js_mknum(idx + 1)); } return result; @@ -20745,14 +20744,14 @@ static jsval_t set_iter_next(struct js *js, jsval_t *args, int nargs) { jsval_t result = js_mkobj(js); if (idx >= len) { - js_set(js, result, "done", js_mktrue()); + js_set(js, result, "done", js_true); js_set(js, result, "value", js_mkundef()); } else { char idxstr[16]; uint_to_str(idxstr, sizeof(idxstr), (unsigned)idx); jsval_t v = js_get(js, vals, idxstr); js_set(js, result, "value", v); - js_set(js, result, "done", js_mkfalse()); + js_set(js, result, "done", js_false); js_set(js, this_val, "__idx", js_mknum(idx + 1)); } return result; @@ -21029,7 +21028,7 @@ static jsval_t finreg_register(struct js *js, jsval_t *args, int nargs) { static jsval_t finreg_unregister(struct js *js, jsval_t *args, int nargs) { jsval_t this_val = js->this_val; - if (vtype(this_val) != T_OBJ) return js_mkfalse(); + if (vtype(this_val) != T_OBJ) return js_false; if (nargs < 1 || vtype(args[0]) != T_OBJ) { return js_mkerr(js, "FinalizationRegistry.unregister token must be an object"); @@ -21037,7 +21036,7 @@ static jsval_t finreg_unregister(struct js *js, jsval_t *args, int nargs) { jsval_t token = args[0]; jsval_t registrations = get_slot(js, this_val, SLOT_MAP); - if (vtype(registrations) != T_ARR) return js_mkfalse(); + if (vtype(registrations) != T_ARR) return js_false; jsoff_t len = js_arr_len(js, registrations); bool removed = false; @@ -21053,7 +21052,7 @@ static jsval_t finreg_unregister(struct js *js, jsval_t *args, int nargs) { } } - return removed ? js_mktrue() : js_mkfalse(); + return js_bool(removed); } static proxy_data_t *get_proxy_data(jsval_t obj) { @@ -21124,18 +21123,18 @@ static jsval_t proxy_set(struct js *js, jsval_t proxy, const char *key, size_t k jsval_t args[4] = { target, key_val, value, proxy }; jsval_t result = js_call(js, set_trap, args, 4); if (is_err(result)) return result; - return js_mktrue(); + return js_true; } } jsval_t key_str = js_mkstr(js, key, key_len); setprop(js, target, key_str, value); - return js_mktrue(); + return js_true; } static jsval_t proxy_has(struct js *js, jsval_t proxy, const char *key, size_t key_len) { proxy_data_t *data = get_proxy_data(proxy); - if (!data) return js_mkfalse(); + if (!data) return js_false; if (data->revoked) return throw_proxy_error(js, "Cannot perform 'has' on a proxy that has been revoked"); jsval_t target = data->target; @@ -21157,12 +21156,12 @@ static jsval_t proxy_has(struct js *js, jsval_t proxy, const char *key, size_t k key_buf[len] = '\0'; jsoff_t off = lkp_proto(js, target, key_buf, len); - return off != 0 ? js_mktrue() : js_mkfalse(); + return js_bool(off != 0); } static jsval_t proxy_delete(struct js *js, jsval_t proxy, const char *key, size_t key_len) { proxy_data_t *data = get_proxy_data(proxy); - if (!data) return js_mktrue(); + if (!data) return js_true; if (data->revoked) return throw_proxy_error(js, "Cannot perform 'deleteProperty' on a proxy that has been revoked"); jsval_t target = data->target; @@ -21180,7 +21179,7 @@ static jsval_t proxy_delete(struct js *js, jsval_t proxy, const char *key, size_ jsval_t key_str = js_mkstr(js, key, key_len); setprop(js, target, key_str, js_mkundef()); - return js_mktrue(); + return js_true; } static jsval_t mkproxy(struct js *js, jsval_t target, jsval_t handler) { @@ -21762,7 +21761,7 @@ ant_t *js_create(void *buf, size_t len) { jsval_t async_func_proto_obj = js_mkobj(js); set_proto(js, async_func_proto_obj, function_proto); - set_slot(js, async_func_proto_obj, SLOT_ASYNC, js_mktrue()); + set_slot(js, async_func_proto_obj, SLOT_ASYNC, js_true); jsval_t async_func_proto = mkval(T_FUNC, vdata(async_func_proto_obj)); set_slot(js, glob, SLOT_ASYNC_PROTO, async_func_proto); @@ -22079,8 +22078,6 @@ inline void js_setstacklimit(struct js *js, size_t max) { js->stack_limit = max; inline void js_setstackbase(struct js *js, void *base) { js->cstk = base; } inline void js_set_filename(struct js *js, const char *filename) { js->filename = filename; } -inline jsval_t js_mktrue(void) { return mkval(T_BOOL, 1); } -inline jsval_t js_mkfalse(void) { return mkval(T_BOOL, 0); } inline jsval_t js_mkundef(void) { return mkval(T_UNDEF, 0); } inline jsval_t js_mknull(void) { return mkval(T_NULL, 0); } inline jsval_t js_mknum(double value) { return tov(value); } diff --git a/src/core/ant.ts b/src/core/ant.ts index c35871c..6967de3 100644 --- a/src/core/ant.ts +++ b/src/core/ant.ts @@ -32,3 +32,5 @@ Ant.typeof = function (t) { const names = Object.values(types); return value < names.length ? names[value] : '??'; }; + +Ant.inspect = (...args) => console.inspect(...args); diff --git a/src/modules/atomics.c b/src/modules/atomics.c index 5940c74..a8562f2 100644 --- a/src/modules/atomics.c +++ b/src/modules/atomics.c @@ -360,7 +360,7 @@ static jsval_t js_atomics_isLockFree(struct js *js, jsval_t *args, int nargs) { is_lock_free = false; } - return is_lock_free ? js_mktrue() : js_mkfalse(); + return js_bool(is_lock_free); } // Atomics.load(typedArray, index) @@ -785,13 +785,13 @@ static jsval_t js_atomics_waitAsync(struct js *js, jsval_t *args, int nargs) { jsval_t result_obj = js_mkobj(js); if (current_value != expected_value) { - js_set(js, result_obj, "async", js_mkfalse()); + js_set(js, result_obj, "async", js_false); js_set(js, result_obj, "value", js_mkstr(js, "not-equal", 9)); return result_obj; } jsval_t promise = js_mkpromise(js); - js_set(js, result_obj, "async", js_mktrue()); + js_set(js, result_obj, "async", js_true); js_set(js, result_obj, "value", promise); js_resolve_promise(js, promise, js_mkstr(js, "ok", 2)); diff --git a/src/modules/buffer.c b/src/modules/buffer.c index 0b2e2d1..e41979a 100644 --- a/src/modules/buffer.c +++ b/src/modules/buffer.c @@ -340,15 +340,12 @@ static jsval_t js_arraybuffer_transferToFixedLength(struct js *js, jsval_t *args static jsval_t js_arraybuffer_detached_getter(struct js *js, jsval_t *args, int nargs) { jsval_t this_val = js_getthis(js); jsval_t data_val = js_get_slot(js, this_val, SLOT_BUFFER); - - if (vtype(data_val) != T_NUM) { - return js_mkfalse(); - } + if (vtype(data_val) != T_NUM) return js_false; ArrayBufferData *data = (ArrayBufferData *)(uintptr_t)js_getnum(data_val); - if (!data) return js_mktrue(); + if (!data) return js_true; - return data->is_detached ? js_mktrue() : js_mkfalse(); + return js_bool(data->is_detached); } static jsval_t typedarray_index_getter(struct js *js, jsval_t obj, const char *key, size_t key_len) { @@ -1503,18 +1500,18 @@ static jsval_t js_buffer_write(struct js *js, jsval_t *args, int nargs) { // Buffer.isBuffer(obj) static jsval_t js_buffer_isBuffer(struct js *js, jsval_t *args, int nargs) { - if (nargs < 1) return js_mkfalse(); - if (!is_special_object(args[0])) return js_mkfalse(); + if (nargs < 1) return js_false; + if (!is_special_object(args[0])) return js_false; jsval_t proto = js_get_proto(js, args[0]); jsval_t buffer_proto = js_get_ctor_proto(js, "Buffer", 6); - return (proto == buffer_proto) ? js_mktrue() : js_mkfalse(); + return js_bool(proto == buffer_proto); } // Buffer.isEncoding(encoding) static jsval_t js_buffer_isEncoding(struct js *js, jsval_t *args, int nargs) { - if (nargs < 1 || vtype(args[0]) != T_STR) return js_mkfalse(); + if (nargs < 1 || vtype(args[0]) != T_STR) return js_false; size_t len; char *enc = js_getstr(js, args[0], &len); @@ -1530,10 +1527,10 @@ static jsval_t js_buffer_isEncoding(struct js *js, jsval_t *args, int nargs) { (len == 5 && strncasecmp(enc, "ucs-2", 5) == 0) || (len == 7 && strncasecmp(enc, "utf16le", 7) == 0) || (len == 8 && strncasecmp(enc, "utf-16le", 8) == 0)) { - return js_mktrue(); + return js_true; } - return js_mkfalse(); + return js_false; } // Buffer.byteLength(string, encoding) diff --git a/src/modules/child_process.c b/src/modules/child_process.c index 3059c0e..b86e966 100644 --- a/src/modules/child_process.c +++ b/src/modules/child_process.c @@ -209,7 +209,7 @@ static void on_process_exit(uv_process_t *proc, int64_t exit_status, int term_si js_set(cp->js, cp->child_obj, "exitCode", js_mknum((double)exit_status)); if (term_signal) { js_set(cp->js, cp->child_obj, "signalCode", js_mknum((double)term_signal)); - js_set(cp->js, cp->child_obj, "killed", js_mktrue()); + js_set(cp->js, cp->child_obj, "killed", js_true); } jsval_t exit_args[2] = { js_mknum((double)exit_status), term_signal ? js_mknum((double)term_signal) : js_mknull() }; @@ -377,10 +377,10 @@ static jsval_t child_kill(struct js *js, jsval_t *args, int nargs) { jsval_t this_obj = js_getthis(js); jsval_t cp_ptr = js_get_slot(js, this_obj, SLOT_DATA); - if (vtype(cp_ptr) == T_UNDEF) return js_mkfalse(); + if (vtype(cp_ptr) == T_UNDEF) return js_false; child_process_t *cp = (child_process_t *)(uintptr_t)js_getnum(cp_ptr); - if (cp->exited) return js_mkfalse(); + if (cp->exited) return js_false; int sig = SIGTERM; if (nargs > 0) { @@ -398,7 +398,7 @@ static jsval_t child_kill(struct js *js, jsval_t *args, int nargs) { } int result = uv_process_kill(&cp->process, sig); - return result == 0 ? js_mktrue() : js_mkfalse(); + return js_bool(result == 0); } static jsval_t child_write(struct js *js, jsval_t *args, int nargs) { @@ -409,7 +409,7 @@ static jsval_t child_write(struct js *js, jsval_t *args, int nargs) { if (vtype(cp_ptr) == T_UNDEF) return js_mkerr(js, "Invalid child process object"); child_process_t *cp = (child_process_t *)(uintptr_t)js_getnum(cp_ptr); - if (cp->stdin_closed) return js_mkfalse(); + if (cp->stdin_closed) return js_false; size_t data_len; char *data = js_getstr(js, args[0], &data_len); @@ -426,10 +426,10 @@ static jsval_t child_write(struct js *js, jsval_t *args, int nargs) { if (result < 0) { free(buf_data); free(write_req); - return js_mkfalse(); + return js_false; } - return js_mktrue(); + return js_true; } static jsval_t child_end(struct js *js, jsval_t *args, int nargs) { @@ -455,8 +455,8 @@ static jsval_t create_child_object(struct js *js, child_process_t *cp) { js_set(js, obj, "pid", js_mknum((double)cp->process.pid)); js_set(js, obj, "exitCode", js_mknull()); js_set(js, obj, "signalCode", js_mknull()); - js_set(js, obj, "killed", js_mkfalse()); - js_set(js, obj, "connected", js_mktrue()); + js_set(js, obj, "killed", js_false); + js_set(js, obj, "connected", js_true); js_set(js, obj, "on", js_mkfun(child_on)); js_set(js, obj, "once", js_mkfun(child_once)); diff --git a/src/modules/events.c b/src/modules/events.c index 9dbf8a9..30e8c96 100644 --- a/src/modules/events.c +++ b/src/modules/events.c @@ -228,7 +228,7 @@ static jsval_t js_dispatch_event_method(struct js *js, jsval_t *args, int nargs) if (event_type == NULL) return js_mkerr(js, "eventType must be a string"); EventType *evt = find_emitter_event_type(js, this_obj, event_type); - if (evt == NULL || evt->listener_count == 0) return js_mktrue(); + if (evt == NULL || evt->listener_count == 0) return js_true; jsval_t event_obj = js_mkobj(js); js_set(js, event_obj, "type", args[0]); @@ -254,7 +254,7 @@ static jsval_t js_dispatch_event_method(struct js *js, jsval_t *args, int nargs) } else i++; } - return js_mktrue(); + return js_true; } // dispatchEvent(eventType, eventData) @@ -268,7 +268,7 @@ static jsval_t js_dispatch_event(struct js *js, jsval_t *args, int nargs) { EventType *evt = find_global_event_type(event_type); if (evt == NULL || evt->listener_count == 0) { - return js_mktrue(); + return js_true; } jsval_t event_obj = js_mkobj(js); @@ -294,7 +294,7 @@ static jsval_t js_dispatch_event(struct js *js, jsval_t *args, int nargs) { } else i++; } - return js_mktrue(); + return js_true; } static jsval_t js_get_event_listeners(struct js *js, jsval_t *args, int nargs) { @@ -312,7 +312,7 @@ static jsval_t js_get_event_listeners(struct js *js, jsval_t *args, int nargs) { jsval_t listener_info = js_mkobj(js); js_set(js, listener_info, "listener", evt->listeners[j].listener); - js_set(js, listener_info, "once", evt->listeners[j].once ? js_mktrue() : js_mkfalse()); + js_set(js, listener_info, "once", js_bool(evt->listeners[j].once)); js_set(js, listeners_array, key, listener_info); } @@ -432,7 +432,7 @@ static jsval_t js_eventemitter_emit(struct js *js, jsval_t *args, int nargs) { EventType *evt = find_emitter_event_type(js, this_obj, event_type); if (evt == NULL || evt->listener_count == 0) { - return js_mkfalse(); + return js_false; } int listener_nargs = nargs - 1; @@ -452,7 +452,7 @@ static jsval_t js_eventemitter_emit(struct js *js, jsval_t *args, int nargs) { } else i++; } - return js_mktrue(); + return js_true; } // EventEmitter.prototype.removeAllListeners(event) diff --git a/src/modules/fetch.c b/src/modules/fetch.c index d348800..614b363 100644 --- a/src/modules/fetch.c +++ b/src/modules/fetch.c @@ -101,7 +101,7 @@ static jsval_t create_response(struct js *js, int status, const char *body, size jsval_t response_obj = js_mkobj(js); jsval_t body_str = js_mkstr(js, body, body_len); - js_set(js, response_obj, "ok", status >= 200 && status < 300 ? js_mktrue() : js_mkfalse()); + js_set(js, response_obj, "ok", js_bool(status >= 200 && status < 300)); js_set(js, response_obj, "status", js_mknum(status)); js_set_slot(js, response_obj, SLOT_DATA, body_str); diff --git a/src/modules/ffi.c b/src/modules/ffi.c index 765015b..c35bc71 100644 --- a/src/modules/ffi.c +++ b/src/modules/ffi.c @@ -571,7 +571,7 @@ static jsval_t ffi_get_pointer(struct js *js, jsval_t *args, int nargs) { bool exists = ffi_ptr != NULL; pthread_mutex_unlock(&ffi_pointers_mutex); - return exists ? js_mktrue() : js_mkfalse(); + return js_bool(exists); } static jsval_t ffi_read_ptr(struct js *js, jsval_t *args, int nargs) { diff --git a/src/modules/fs.c b/src/modules/fs.c index 6a1a37e..344f76b 100644 --- a/src/modules/fs.c +++ b/src/modules/fs.c @@ -292,7 +292,7 @@ static void on_stat_complete(uv_fs_t *uv_req) { static void on_exists_complete(uv_fs_t *uv_req) { fs_request_t *req = (fs_request_t *)uv_req->data; - jsval_t result = (uv_req->result >= 0) ? js_mktrue() : js_mkfalse(); + jsval_t result = js_bool(uv_req->result >= 0); req->completed = 1; js_resolve_promise(req->js, req->promise, result); @@ -938,30 +938,30 @@ static jsval_t stat_isFile(struct js *js, jsval_t *args, int nargs) { jsval_t this = js_getthis(js); jsval_t mode_val = js_get_slot(js, this, SLOT_DATA); - if (vtype(mode_val) != T_NUM) return js_mkfalse(); + if (vtype(mode_val) != T_NUM) return js_false; mode_t mode = (mode_t)js_getnum(mode_val); - return S_ISREG(mode) ? js_mktrue() : js_mkfalse(); + return js_bool(S_ISREG(mode)); } static jsval_t stat_isDirectory(struct js *js, jsval_t *args, int nargs) { jsval_t this = js_getthis(js); jsval_t mode_val = js_get_slot(js, this, SLOT_DATA); - if (vtype(mode_val) != T_NUM) return js_mkfalse(); + if (vtype(mode_val) != T_NUM) return js_false; mode_t mode = (mode_t)js_getnum(mode_val); - return S_ISDIR(mode) ? js_mktrue() : js_mkfalse(); + return js_bool(S_ISDIR(mode)); } static jsval_t stat_isSymbolicLink(struct js *js, jsval_t *args, int nargs) { jsval_t this = js_getthis(js); jsval_t mode_val = js_get_slot(js, this, SLOT_DATA); - if (vtype(mode_val) != T_NUM) return js_mkfalse(); + if (vtype(mode_val) != T_NUM) return js_false; mode_t mode = (mode_t)js_getnum(mode_val); - return S_ISLNK(mode) ? js_mktrue() : js_mkfalse(); + return js_bool(S_ISLNK(mode)); } static jsval_t create_stats_object(struct js *js, struct stat *st) { @@ -1073,7 +1073,7 @@ static jsval_t builtin_fs_existsSync(struct js *js, jsval_t *args, int nargs) { int result = stat(path_cstr, &st); free(path_cstr); - return (result == 0) ? js_mktrue() : js_mkfalse(); + return js_bool(result == 0); } static jsval_t builtin_fs_exists(struct js *js, jsval_t *args, int nargs) { @@ -1101,7 +1101,7 @@ static jsval_t builtin_fs_exists(struct js *js, jsval_t *args, int nargs) { if (result < 0) { req->completed = 1; - js_resolve_promise(req->js, req->promise, js_mkfalse()); + js_resolve_promise(req->js, req->promise, js_false); remove_pending_request(req); free_fs_request(req); } diff --git a/src/modules/json.c b/src/modules/json.c index d575c30..5e404f3 100644 --- a/src/modules/json.c +++ b/src/modules/json.c @@ -24,7 +24,7 @@ static jsval_t yyjson_to_jsval(struct js *js, yyjson_val *val) { switch (yyjson_get_type(val)) { case YYJSON_TYPE_NULL: return js_mknull(); - case YYJSON_TYPE_BOOL: return yyjson_get_bool(val) ? js_mktrue() : js_mkfalse(); + case YYJSON_TYPE_BOOL: return js_bool(yyjson_get_bool(val)); case YYJSON_TYPE_STR: return js_mkstr(js, yyjson_get_str(val), yyjson_get_len(val)); case YYJSON_TYPE_NUM: { diff --git a/src/modules/observable.c b/src/modules/observable.c index 46187ba..d6baeec 100644 --- a/src/modules/observable.c +++ b/src/modules/observable.c @@ -45,7 +45,7 @@ static jsval_t js_subscription_get_closed(struct js *js, jsval_t *args, int narg if (!is_special_object(subscription)) { return js_mkerr_typed(js, JS_ERR_TYPE, "Subscription.closed getter called on non-object"); } - return subscription_closed(js, subscription) ? js_mktrue() : js_mkfalse(); + return js_bool(subscription_closed(js, subscription)); } static jsval_t js_subscription_unsubscribe(struct js *js, jsval_t *args, int nargs) { @@ -83,7 +83,7 @@ static jsval_t js_subobs_get_closed(struct js *js, jsval_t *args, int nargs) { return js_mkerr_typed(js, JS_ERR_TYPE, "Invalid SubscriptionObserver"); } - return subscription_closed(js, subscription) ? js_mktrue() : js_mkfalse(); + return js_bool(subscription_closed(js, subscription)); } static jsval_t js_subobs_next(struct js *js, jsval_t *args, int nargs) { diff --git a/src/modules/os.c b/src/modules/os.c index fd10fd3..09d3edd 100644 --- a/src/modules/os.c +++ b/src/modules/os.c @@ -541,7 +541,7 @@ static jsval_t os_networkInterfaces(struct js *js, jsval_t *args, int nargs) { for (pUnicast = pCurrAddresses->FirstUnicastAddress; pUnicast; pUnicast = pUnicast->Next) { jsval_t entry = js_mkobj(js); js_set(js, entry, "mac", js_mkstr(js, mac_str, strlen(mac_str))); - js_set(js, entry, "internal", internal ? js_mktrue() : js_mkfalse()); + js_set(js, entry, "internal", js_bool(internal)); char addr_str[INET6_ADDRSTRLEN] = ""; struct sockaddr *sa = pUnicast->Address.lpSockaddr; @@ -641,7 +641,7 @@ static void add_iface_entry(struct js *js, jsval_t iface_arr, struct ifaddrs *if jsval_t entry = js_mkobj(js); js_set(js, entry, "mac", js_mkstr(js, "00:00:00:00:00:00", 17)); - js_set(js, entry, "internal", internal ? js_mktrue() : js_mkfalse()); + js_set(js, entry, "internal", js_bool(internal)); if (family == AF_INET) { struct sockaddr_in *sa = (struct sockaddr_in *)ifa->ifa_addr; diff --git a/src/modules/path.c b/src/modules/path.c index 23503ba..4972bf1 100644 --- a/src/modules/path.c +++ b/src/modules/path.c @@ -343,14 +343,14 @@ static jsval_t builtin_path_isAbsolute(struct js *js, jsval_t *args, int nargs) size_t path_len; char *path = js_getstr(js, args[0], &path_len); - if (!path || path_len == 0) return js_mkfalse(); + if (!path || path_len == 0) return js_false; #ifdef _WIN32 - if (path_len >= 2 && path[1] == ':') return js_mktrue(); - if (path_len >= 2 && path[0] == '\\' && path[1] == '\\') return js_mktrue(); - return js_mkfalse(); + if (path_len >= 2 && path[1] == ':') return js_true; + if (path_len >= 2 && path[0] == '\\' && path[1] == '\\') return js_true; + return js_false; #else - return path[0] == '/' ? js_mktrue() : js_mkfalse(); + return js_bool(path[0] == '/'); #endif } diff --git a/src/modules/process.c b/src/modules/process.c index d3265d0..eb39039 100644 --- a/src/modules/process.c +++ b/src/modules/process.c @@ -425,9 +425,9 @@ static void emit_keypress_event( js_set(js, key_obj, "name", js_mkundef()); } - js_set(js, key_obj, "ctrl", ctrl ? js_mktrue() : js_mkfalse()); - js_set(js, key_obj, "meta", meta ? js_mktrue() : js_mkfalse()); - js_set(js, key_obj, "shift", shift ? js_mktrue() : js_mkfalse()); + js_set(js, key_obj, "ctrl", js_bool(ctrl)); + js_set(js, key_obj, "meta", js_bool(meta)); + js_set(js, key_obj, "shift", js_bool(shift)); if (sequence) { js_set(js, key_obj, "sequence", js_mkstr(js, sequence, sequence_len)); @@ -665,7 +665,7 @@ static void start_sigwinch_handler(void) { static jsval_t js_stdin_set_raw_mode(ant_t *js, jsval_t *args, int nargs) { bool enable = nargs > 0 ? js_truthy(js, args[0]) : true; - return stdin_set_raw_mode(enable) ? js_mktrue() : js_mkfalse(); + return js_bool(stdin_set_raw_mode(enable)); } static jsval_t js_stdin_resume(ant_t *js, jsval_t *args, int nargs) { @@ -736,13 +736,13 @@ static jsval_t js_stdin_remove_listener(ant_t *js, jsval_t *args, int nargs) { } static jsval_t js_stdout_write(ant_t *js, jsval_t *args, int nargs) { - if (nargs < 1) return js_mkfalse(); + if (nargs < 1) return js_false; size_t len = 0; char *data = js_getstr(js, args[0], &len); - if (!data) return js_mkfalse(); + if (!data) return js_false; fwrite(data, 1, len, stdout); fflush(stdout); - return js_mktrue(); + return js_true; } static jsval_t js_stdout_on(ant_t *js, jsval_t *args, int nargs) { @@ -854,13 +854,13 @@ static ProcessEventType *find_or_create_stderr_event(const char *event_type) { } static jsval_t js_stderr_write(ant_t *js, jsval_t *args, int nargs) { - if (nargs < 1) return js_mkfalse(); + if (nargs < 1) return js_false; size_t len = 0; char *data = js_getstr(js, args[0], &len); - if (!data) return js_mkfalse(); + if (!data) return js_false; fwrite(data, 1, len, stderr); fflush(stderr); - return js_mktrue(); + return js_true; } static jsval_t js_stderr_on(ant_t *js, jsval_t *args, int nargs) { @@ -1055,7 +1055,7 @@ static jsval_t process_kill(ant_t *js, jsval_t *args, int nargs) { int result = uv_kill(pid, sig); if (result != 0) return js_mkerr(js, "Failed to send signal"); - return js_mktrue(); + return js_true; } static jsval_t process_abort(ant_t *js, jsval_t *args, int nargs) { @@ -1478,13 +1478,13 @@ static jsval_t process_remove_all_listeners(ant_t *js, jsval_t *args, int nargs) } static jsval_t process_emit(ant_t *js, jsval_t *args, int nargs) { - if (nargs < 1) return js_mkfalse(); + if (nargs < 1) return js_false; char *event = js_getstr(js, args[0], NULL); - if (!event) return js_mkfalse(); + if (!event) return js_false; emit_process_event(event, nargs > 1 ? &args[1] : NULL, nargs - 1); - return js_mktrue(); + return js_true; } static jsval_t process_listener_count(ant_t *js, jsval_t *args, int nargs) { @@ -1639,7 +1639,7 @@ void init_process_module() { jsval_t stdin_obj = js_mkobj(js); js_set_proto(js, stdin_obj, stdin_proto); - js_set(js, stdin_obj, "isTTY", stdin_is_tty() ? js_mktrue() : js_mkfalse()); + js_set(js, stdin_obj, "isTTY", js_bool(stdin_is_tty())); js_set(js, process_obj, "stdin", stdin_obj); jsval_t stdout_proto = js_mkobj(js); @@ -1654,7 +1654,7 @@ void init_process_module() { jsval_t stdout_obj = js_mkobj(js); js_set_proto(js, stdout_obj, stdout_proto); - js_set(js, stdout_obj, "isTTY", stdout_is_tty() ? js_mktrue() : js_mkfalse()); + js_set(js, stdout_obj, "isTTY", js_bool(stdout_is_tty())); js_set_getter_desc(js, stdout_obj, "rows", 4, js_mkfun(js_stdout_rows_getter), JS_DESC_E | JS_DESC_C); js_set_getter_desc(js, stdout_obj, "columns", 7, js_mkfun(js_stdout_columns_getter), JS_DESC_E | JS_DESC_C); js_set(js, process_obj, "stdout", stdout_obj); @@ -1670,7 +1670,7 @@ void init_process_module() { jsval_t stderr_obj = js_mkobj(js); js_set_proto(js, stderr_obj, stderr_proto); - js_set(js, stderr_obj, "isTTY", stderr_is_tty() ? js_mktrue() : js_mkfalse()); + js_set(js, stderr_obj, "isTTY", js_bool(stderr_is_tty())); js_set(js, process_obj, "stderr", stderr_obj); js_set(js, global, "process", process_obj); diff --git a/src/modules/readline.c b/src/modules/readline.c index 391b934..28d0e40 100644 --- a/src/modules/readline.c +++ b/src/modules/readline.c @@ -699,13 +699,13 @@ static jsval_t rl_interface_emit(struct js *js, jsval_t *args, int nargs) { rl_interface_t *iface = get_interface(js, this_obj); if (!iface) return js_mkerr(js, "Invalid Interface"); - if (nargs < 1) return js_mkfalse(); + if (nargs < 1) return js_false; char *event = js_getstr(js, args[0], NULL); - if (!event) return js_mkfalse(); + if (!event) return js_false; emit_event(js, iface, event, nargs > 1 ? &args[1] : NULL, nargs - 1); - return js_mktrue(); + return js_true; } static jsval_t rl_interface_close(struct js *js, jsval_t *args, int nargs) { @@ -1028,8 +1028,8 @@ static jsval_t rl_interface_closed_getter(struct js *js, jsval_t *args, int narg jsval_t this_obj = js_getthis(js); rl_interface_t *iface = get_interface(js, this_obj); - if (!iface) return js_mktrue(); - return iface->closed ? js_mktrue() : js_mkfalse(); + if (!iface) return js_true; + return js_bool(iface->closed); } static jsval_t rl_interface_async_iterator(struct js *js, jsval_t *args, int nargs) { @@ -1042,7 +1042,7 @@ static jsval_t rl_interface_async_iterator(struct js *js, jsval_t *args, int nar jsval_t iterator = js_mkobj(js); js_set(js, iterator, "_rl_id", js_mknum((double)iface->id)); js_set(js, iterator, "_lines", js_mkarr(js)); - js_set(js, iterator, "_done", js_mkfalse()); + js_set(js, iterator, "_done", js_false); return iterator; } @@ -1174,7 +1174,7 @@ static jsval_t rl_create_interface(struct js *js, jsval_t *args, int nargs) { js_set_getter_desc(js, obj, "cursor", 6, js_mkfun(rl_interface_cursor_getter), JS_DESC_E | JS_DESC_C); js_set_getter_desc(js, obj, "closed", 6, js_mkfun(rl_interface_closed_getter), JS_DESC_E | JS_DESC_C); - js_set(js, obj, "terminal", iface->terminal ? js_mktrue() : js_mkfalse()); + js_set(js, obj, "terminal", js_bool(iface->terminal)); js_set(js, obj, get_asyncIterator_sym_key(), js_mkfun(rl_interface_async_iterator)); js_set(js, obj, get_toStringTag_sym_key(), js_mkstr(js, "Interface", 9)); @@ -1190,7 +1190,7 @@ static jsval_t rl_create_interface_promises(struct js *js, jsval_t *args, int na } static jsval_t rl_clear_line(struct js *js, jsval_t *args, int nargs) { - if (nargs < 2) return js_mkfalse(); + if (nargs < 2) return js_false; int dir = (int)js_getnum(args[1]); const char *seq; @@ -1204,7 +1204,7 @@ static jsval_t rl_clear_line(struct js *js, jsval_t *args, int nargs) { printf("%s", seq); fflush(stdout); - return js_mktrue(); + return js_true; } static jsval_t rl_clear_screen_down(struct js *js, jsval_t *args, int nargs) { @@ -1213,11 +1213,11 @@ static jsval_t rl_clear_screen_down(struct js *js, jsval_t *args, int nargs) { printf("\033[J"); fflush(stdout); - return js_mktrue(); + return js_true; } static jsval_t rl_cursor_to(struct js *js, jsval_t *args, int nargs) { - if (nargs < 2) return js_mkfalse(); + if (nargs < 2) return js_false; int x = (int)js_getnum(args[1]); if (nargs >= 3 && vtype(args[2]) == T_NUM) { @@ -1228,11 +1228,11 @@ static jsval_t rl_cursor_to(struct js *js, jsval_t *args, int nargs) { } fflush(stdout); - return js_mktrue(); + return js_true; } static jsval_t rl_move_cursor(struct js *js, jsval_t *args, int nargs) { - if (nargs < 3) return js_mkfalse(); + if (nargs < 3) return js_false; int dx = (int)js_getnum(args[1]); int dy = (int)js_getnum(args[2]); @@ -1244,7 +1244,7 @@ static jsval_t rl_move_cursor(struct js *js, jsval_t *args, int nargs) { else if (dy < 0) printf("\033[%dA", -dy); fflush(stdout); - return js_mktrue(); + return js_true; } static jsval_t rl_emit_keypress_events(struct js *js, jsval_t *args, int nargs) { diff --git a/src/modules/reflect.c b/src/modules/reflect.c index 036607f..454db6b 100644 --- a/src/modules/reflect.c +++ b/src/modules/reflect.c @@ -27,59 +27,59 @@ static jsval_t reflect_get(struct js *js, jsval_t *args, int nargs) { } static jsval_t reflect_set(struct js *js, jsval_t *args, int nargs) { - if (nargs < 3) return js_mkfalse(); + if (nargs < 3) return js_false; jsval_t target = args[0]; jsval_t key = args[1]; jsval_t value = args[2]; int t = vtype(target); - if (t != T_OBJ && t != T_FUNC) return js_mkfalse(); + if (t != T_OBJ && t != T_FUNC) return js_false; - if (vtype(key) != T_STR) return js_mkfalse(); + if (vtype(key) != T_STR) return js_false; char *key_str = js_getstr(js, key, NULL); - if (!key_str) return js_mkfalse(); + if (!key_str) return js_false; js_set(js, target, key_str, value); - return js_mktrue(); + return js_true; } static jsval_t reflect_has(struct js *js, jsval_t *args, int nargs) { - if (nargs < 2) return js_mkfalse(); + if (nargs < 2) return js_false; jsval_t target = args[0]; jsval_t key = args[1]; int t = vtype(target); - if (t != T_OBJ && t != T_FUNC) return js_mkfalse(); + if (t != T_OBJ && t != T_FUNC) return js_false; - if (vtype(key) != T_STR) return js_mkfalse(); + if (vtype(key) != T_STR) return js_false; size_t key_len; char *key_str = js_getstr(js, key, &key_len); - if (!key_str) return js_mkfalse(); + if (!key_str) return js_false; jsoff_t off = lkp_proto(js, target, key_str, key_len); - return off > 0 ? js_mktrue() : js_mkfalse(); + return js_bool(off > 0); } static jsval_t reflect_delete_property(struct js *js, jsval_t *args, int nargs) { - if (nargs < 2) return js_mkfalse(); + if (nargs < 2) return js_false; jsval_t target = args[0]; jsval_t key = args[1]; int t = vtype(target); - if (t != T_OBJ && t != T_FUNC) return js_mkfalse(); + if (t != T_OBJ && t != T_FUNC) return js_false; - if (vtype(key) != T_STR) return js_mkfalse(); + if (vtype(key) != T_STR) return js_false; char *key_str = js_getstr(js, key, NULL); - if (!key_str) return js_mkfalse(); + if (!key_str) return js_false; bool deleted = js_del(js, target, key_str); - return deleted ? js_mktrue() : js_mkfalse(); + return js_bool(deleted); } static jsval_t reflect_own_keys(struct js *js, jsval_t *args, int nargs) { @@ -206,33 +206,33 @@ static jsval_t reflect_get_own_property_descriptor(struct js *js, jsval_t *args, jsval_t value = js_get(js, target, key_str); jsval_t desc = js_mkobj(js); js_set(js, desc, "value", value); - js_set(js, desc, "writable", js_mktrue()); - js_set(js, desc, "enumerable", js_mktrue()); - js_set(js, desc, "configurable", js_mktrue()); + js_set(js, desc, "writable", js_true); + js_set(js, desc, "enumerable", js_true); + js_set(js, desc, "configurable", js_true); return desc; } static jsval_t reflect_define_property(struct js *js, jsval_t *args, int nargs) { - if (nargs < 3) return js_mkfalse(); + if (nargs < 3) return js_false; jsval_t target = args[0]; jsval_t key = args[1]; jsval_t descriptor = args[2]; int t = vtype(target); - if (t != T_OBJ && t != T_FUNC) return js_mkfalse(); + if (t != T_OBJ && t != T_FUNC) return js_false; - if (vtype(key) != T_STR) return js_mkfalse(); - if (!is_special_object(descriptor)) return js_mkfalse(); + if (vtype(key) != T_STR) return js_false; + if (!is_special_object(descriptor)) return js_false; char *key_str = js_getstr(js, key, NULL); - if (!key_str) return js_mkfalse(); + if (!key_str) return js_false; jsval_t value = js_get(js, descriptor, "value"); js_set(js, target, key_str, value); - return js_mktrue(); + return js_true; } static jsval_t reflect_get_prototype_of(struct js *js, jsval_t *args, int nargs) { @@ -250,46 +250,46 @@ static jsval_t reflect_get_prototype_of(struct js *js, jsval_t *args, int nargs) } static jsval_t reflect_set_prototype_of(struct js *js, jsval_t *args, int nargs) { - if (nargs < 2) return js_mkfalse(); + if (nargs < 2) return js_false; jsval_t target = args[0]; jsval_t proto = args[1]; int t = vtype(target); - if (t != T_OBJ && t != T_FUNC) return js_mkfalse(); + if (t != T_OBJ && t != T_FUNC) return js_false; int pt = vtype(proto); - if (pt != T_OBJ && pt != T_FUNC && pt != T_NULL) return js_mkfalse(); + if (pt != T_OBJ && pt != T_FUNC && pt != T_NULL) return js_false; js_set_proto(js, target, proto); - return js_mktrue(); + return js_true; } static jsval_t reflect_is_extensible(struct js *js, jsval_t *args, int nargs) { - if (nargs < 1) return js_mkfalse(); + if (nargs < 1) return js_false; jsval_t target = args[0]; int t = vtype(target); - if (t != T_OBJ && t != T_FUNC) return js_mkfalse(); + if (t != T_OBJ && t != T_FUNC) return js_false; if (js_get_slot(js, target, SLOT_EXTENSIBLE) == js_false) return js_false; if (js_get_slot(js, target, SLOT_FROZEN) == js_true) return js_false; if (js_get_slot(js, target, SLOT_SEALED) == js_true) return js_false; - return js_mktrue(); + return js_true; } static jsval_t reflect_prevent_extensions(struct js *js, jsval_t *args, int nargs) { - if (nargs < 1) return js_mkfalse(); + if (nargs < 1) return js_false; jsval_t target = args[0]; int t = vtype(target); - if (t != T_OBJ && t != T_FUNC) return js_mkfalse(); + if (t != T_OBJ && t != T_FUNC) return js_false; - js_set_slot(js, target, SLOT_EXTENSIBLE, js_mkfalse()); - return js_mktrue(); + js_set_slot(js, target, SLOT_EXTENSIBLE, js_false); + return js_true; } void init_reflect_module(void) { diff --git a/src/modules/symbol.c b/src/modules/symbol.c index b60442d..6456e74 100644 --- a/src/modules/symbol.c +++ b/src/modules/symbol.c @@ -72,14 +72,14 @@ static jsval_t iterator_next(struct js *js, jsval_t *args, int nargs) { jsval_t result = js_mkobj(js); if (idx >= len) { - js_set(js, result, "done", js_mktrue()); + js_set(js, result, "done", js_true); js_set(js, result, "value", js_mkundef()); } else { char idxstr[16]; snprintf(idxstr, sizeof(idxstr), "%d", idx); jsval_t value = js_get(js, arr, idxstr); js_set(js, result, "value", value); - js_set(js, result, "done", js_mkfalse()); + js_set(js, result, "done", js_false); js_set(js, this_val, "__idx", js_mknum(idx + 1)); } @@ -116,13 +116,13 @@ static jsval_t string_iterator_next(struct js *js, jsval_t *args, int nargs) { jsval_t result = js_mkobj(js); if (idx >= len) { - js_set(js, result, "done", js_mktrue()); + js_set(js, result, "done", js_true); js_set(js, result, "value", js_mkundef()); } else { char *s = js_getstr(js, str, NULL); char ch[2] = {s[idx], 0}; js_set(js, result, "value", js_mkstr(js, ch, 1)); - js_set(js, result, "done", js_mkfalse()); + js_set(js, result, "done", js_false); js_set(js, this_val, "__idx", js_mknum(idx + 1)); } diff --git a/src/modules/textcodec.c b/src/modules/textcodec.c index a791282..69e9b30 100644 --- a/src/modules/textcodec.c +++ b/src/modules/textcodec.c @@ -127,8 +127,8 @@ static jsval_t js_textdecoder_constructor(struct js *js, jsval_t *args, int narg jsval_t obj = js_mkobj(js); js_set(js, obj, "encoding", js_mkstr(js, encoding, encoding_len)); - js_set(js, obj, "fatal", js_mkfalse()); - js_set(js, obj, "ignoreBOM", js_mkfalse()); + js_set(js, obj, "fatal", js_false); + js_set(js, obj, "ignoreBOM", js_false); js_set(js, obj, "decode", js_mkfun(js_textdecoder_decode)); js_set(js, obj, get_toStringTag_sym_key(), js_mkstr(js, "TextDecoder", 11)); @@ -153,8 +153,8 @@ void init_textcodec_module(void) { js_set(js, textdecoder_proto, "decode", js_mkfun(js_textdecoder_decode)); js_set(js, textdecoder_proto, "encoding", js_mkstr(js, "utf-8", 5)); - js_set(js, textdecoder_proto, "fatal", js_mkfalse()); - js_set(js, textdecoder_proto, "ignoreBOM", js_mkfalse()); + js_set(js, textdecoder_proto, "fatal", js_false); + js_set(js, textdecoder_proto, "ignoreBOM", js_false); js_set(js, textdecoder_constructor, "prototype", textdecoder_proto); js_set(js, glob, "TextDecoder", textdecoder_constructor); } diff --git a/src/modules/url.c b/src/modules/url.c index b9460f5..3801989 100644 --- a/src/modules/url.c +++ b/src/modules/url.c @@ -399,13 +399,13 @@ static jsval_t usp_getAll(struct js *js, jsval_t *args, int nargs) { } static jsval_t usp_has(struct js *js, jsval_t *args, int nargs) { - if (nargs < 1) return js_mkfalse(); + if (nargs < 1) return js_false; jsval_t this_val = js_getthis(js); char *key = js_getstr(js, args[0], NULL); - if (!key) return js_mkfalse(); + if (!key) return js_false; jsval_t entries = js_get(js, this_val, "_entries"); - if (!is_special_object(entries)) return js_mkfalse(); + if (!is_special_object(entries)) return js_false; jsval_t len_val = js_get(js, entries, "length"); int len = (vtype(len_val) == T_NUM) ? (int)js_getnum(len_val) : 0; @@ -416,9 +416,9 @@ static jsval_t usp_has(struct js *js, jsval_t *args, int nargs) { jsval_t entry = js_get(js, entries, idx); jsval_t k = js_get(js, entry, "0"); char *ks = js_getstr(js, k, NULL); - if (ks && strcmp(ks, key) == 0) return js_mktrue(); + if (ks && strcmp(ks, key) == 0) return js_true; } - return js_mkfalse(); + return js_false; } static void usp_sync_url(struct js *js, jsval_t this_val) { diff --git a/src/snapshot.c b/src/snapshot.c index 512f592..3d41940 100644 --- a/src/snapshot.c +++ b/src/snapshot.c @@ -10,7 +10,7 @@ jsval_t ant_load_snapshot(ant_t *js) { jsval_t result = js_eval(js, (const char *)ant_snapshot_source, ant_snapshot_source_len); if (vtype(result) == T_ERR) return result; - return js_mktrue(); + return js_true; } const uint8_t *ant_get_snapshot_source(size_t *len) { diff --git a/src/types/ant.d.ts b/src/types/ant.d.ts index 8109668..9aab94d 100644 --- a/src/types/ant.d.ts +++ b/src/types/ant.d.ts @@ -93,6 +93,7 @@ interface AntStatic { buildDate: string; host: AntHost; + inspect(...args: unknown[]): void; typeof(t: unknown): AntType | '??'; raw: AntRaw; diff --git a/src/types/index.d.ts b/src/types/index.d.ts index 3b1778a..d7140ef 100644 --- a/src/types/index.d.ts +++ b/src/types/index.d.ts @@ -2,13 +2,15 @@ /// /// /// -/// +/// +/// /// /// /// /// /// +/// /// /// /// diff --git a/src/types/modules/console.d.ts b/src/types/modules/console.d.ts new file mode 100644 index 0000000..1a4c8f1 --- /dev/null +++ b/src/types/modules/console.d.ts @@ -0,0 +1,3 @@ +interface Console { + inspect(...data: unknown[]): void; +} -- 2.51.2