MIRROR: javascript for ๐Ÿœ's, a tiny runtime with big ambitions
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge branch 'master' into feature/generational_gc

+24 -3
+24 -3
src/ant.c
··· 2062 2062 case T_CFUNC: return ANT_COPY(buf, len, "[native code]"); 2063 2063 case T_FFI: return ANT_COPY(buf, len, "[native code (ffi)]"); 2064 2064 2065 + case T_ERR: { 2066 + const char *msg = js->errmsg ? js->errmsg : "Error"; 2067 + size_t mlen = strlen(msg); 2068 + return cpy(buf, len, msg, mlen); 2069 + } 2070 + 2065 2071 case T_SYMBOL: { 2066 2072 const char *desc = js_sym_desc(js, value); 2067 2073 if (desc) return (size_t) snprintf(buf, len, "Symbol(%s)", desc); ··· 20125 20131 return dot && (!slash || dot > slash); 20126 20132 } 20127 20133 20134 + static char *esm_resolve_absolute(const char *specifier) { 20135 + char *result; 20136 + if ((result = esm_try_resolve("", specifier, ""))) return result; 20137 + if (esm_has_extension(specifier)) return NULL; 20138 + if ((result = esm_try_resolve("", specifier, ".js"))) return result; 20139 + if ((result = esm_try_resolve("", specifier, ".ts"))) return result; 20140 + if ((result = esm_try_resolve("", specifier, ".mts"))) return result; 20141 + if ((result = esm_try_resolve("", specifier, ".cts"))) return result; 20142 + if ((result = esm_try_resolve("", specifier, ".json"))) return result; 20143 + return NULL; 20144 + } 20145 + 20128 20146 static char *esm_resolve_path(const char *specifier, const char *base_path) { 20129 - if (!(specifier[0] == '/' || 20130 - (specifier[0] == '.' && specifier[1] == '/') || 20131 - (specifier[0] == '.' && specifier[1] == '.' && specifier[2] == '/'))) { 20147 + if (specifier[0] == '/' && specifier[1] != '.') { 20148 + return esm_resolve_absolute(specifier); 20149 + } 20150 + 20151 + if (!((specifier[0] == '.' && specifier[1] == '/') || 20152 + (specifier[0] == '.' && specifier[1] == '.' && specifier[2] == '/'))) { 20132 20153 return strdup(specifier); 20133 20154 } 20134 20155