@scriptc/cli-darwin-arm64 0.2.2 → 0.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/THIRD_PARTY_NOTICES +1 -1
- package/dist/bin/scriptc +0 -0
- package/dist/bin/scriptc.json +1 -1
- package/dist/lib/declarations/scriptc-node-fallback.d.ts +99 -27
- package/dist/lib/llvm/bin/scriptc-llvm-codegen +0 -0
- package/dist/lib/llvm/package.json +1 -1
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/default/scr_array.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/default/scr_assert.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/default/scr_async.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/default/scr_bytes_io.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/default/scr_events.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/default/scr_exception.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/default/scr_file_handle.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/default/scr_json.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/default/scr_lib.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/default/scr_map.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/default/scr_node_builtin.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/default/scr_regex.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/default/scr_symbol.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/default/scr_url.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/default/scr_url_params.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/default/scr_util_compare.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/default/scr_util_style.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/dynamic/scr_array.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/dynamic/scr_assert.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/dynamic/scr_async.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/dynamic/scr_bytes_io.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/dynamic/scr_events.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/dynamic/scr_exception.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/dynamic/scr_file_handle.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/dynamic/scr_island.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/dynamic/scr_json.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/dynamic/scr_lib.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/dynamic/scr_map.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/dynamic/scr_node_builtin.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/dynamic/scr_regex.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/dynamic/scr_symbol.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/dynamic/scr_url.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/dynamic/scr_url_params.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/dynamic/scr_util_compare.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/dynamic/scr_util_style.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/dev/runtime/dynamic/scr_web.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-dev/runtime/default/scr_array.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-dev/runtime/default/scr_assert.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-dev/runtime/default/scr_bytes_io.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-dev/runtime/default/scr_exception.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-dev/runtime/default/scr_json.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-dev/runtime/default/scr_lib.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-dev/runtime/default/scr_map.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-dev/runtime/default/scr_node_builtin.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-dev/runtime/default/scr_regex.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-dev/runtime/default/scr_symbol.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-dev/runtime/default/scr_url.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-dev/runtime/default/scr_url_params.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-release/runtime/default/scr_array.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-release/runtime/default/scr_assert.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-release/runtime/default/scr_bytes_io.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-release/runtime/default/scr_exception.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-release/runtime/default/scr_json.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-release/runtime/default/scr_lib.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-release/runtime/default/scr_map.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-release/runtime/default/scr_node_builtin.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-release/runtime/default/scr_regex.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-release/runtime/default/scr_symbol.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-release/runtime/default/scr_url.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-release/runtime/default/scr_url_params.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-thread-dev/runtime/default/scr_array.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-thread-dev/runtime/default/scr_assert.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-thread-dev/runtime/default/scr_bytes_io.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-thread-dev/runtime/default/scr_exception.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-thread-dev/runtime/default/scr_json.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-thread-dev/runtime/default/scr_lib.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-thread-dev/runtime/default/scr_map.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-thread-dev/runtime/default/scr_node_builtin.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-thread-dev/runtime/default/scr_regex.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-thread-dev/runtime/default/scr_symbol.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-thread-dev/runtime/default/scr_url.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-thread-dev/runtime/default/scr_url_params.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-thread-release/runtime/default/scr_array.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-thread-release/runtime/default/scr_assert.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-thread-release/runtime/default/scr_bytes_io.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-thread-release/runtime/default/scr_exception.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-thread-release/runtime/default/scr_json.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-thread-release/runtime/default/scr_lib.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-thread-release/runtime/default/scr_map.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-thread-release/runtime/default/scr_node_builtin.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-thread-release/runtime/default/scr_regex.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-thread-release/runtime/default/scr_symbol.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-thread-release/runtime/default/scr_url.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/library-thread-release/runtime/default/scr_url_params.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/default/scr_array.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/default/scr_assert.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/default/scr_async.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/default/scr_bytes_io.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/default/scr_events.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/default/scr_exception.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/default/scr_file_handle.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/default/scr_json.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/default/scr_lib.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/default/scr_map.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/default/scr_node_builtin.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/default/scr_regex.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/default/scr_symbol.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/default/scr_url.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/default/scr_url_params.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/default/scr_util_compare.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/default/scr_util_style.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/dynamic/scr_array.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/dynamic/scr_assert.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/dynamic/scr_async.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/dynamic/scr_bytes_io.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/dynamic/scr_events.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/dynamic/scr_exception.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/dynamic/scr_file_handle.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/dynamic/scr_island.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/dynamic/scr_json.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/dynamic/scr_lib.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/dynamic/scr_map.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/dynamic/scr_node_builtin.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/dynamic/scr_regex.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/dynamic/scr_symbol.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/dynamic/scr_url.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/dynamic/scr_url_params.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/dynamic/scr_util_compare.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/dynamic/scr_util_style.o +0 -0
- package/dist/lib/runtime-darwin-arm64/artifacts/release/runtime/dynamic/scr_web.o +0 -0
- package/dist/lib/runtime-darwin-arm64/package.json +1 -1
- package/dist/lib/runtime-darwin-arm64/runtime-pack.json +351 -225
- package/dist/lib/runtime-sources/package.json +1 -1
- package/dist/lib/runtime-sources/src/scr_array.c +5 -0
- package/dist/lib/runtime-sources/src/scr_assert.c +26 -0
- package/dist/lib/runtime-sources/src/scr_async.c +44 -0
- package/dist/lib/runtime-sources/src/scr_bytes_io.c +305 -48
- package/dist/lib/runtime-sources/src/scr_events.c +9 -0
- package/dist/lib/runtime-sources/src/scr_exception.c +1 -0
- package/dist/lib/runtime-sources/src/scr_file_handle.c +11 -0
- package/dist/lib/runtime-sources/src/scr_island.c +1001 -417
- package/dist/lib/runtime-sources/src/scr_island_manifest.h +11 -7
- package/dist/lib/runtime-sources/src/scr_json.c +135 -2
- package/dist/lib/runtime-sources/src/scr_lib.c +379 -12
- package/dist/lib/runtime-sources/src/scr_map.c +8 -0
- package/dist/lib/runtime-sources/src/scr_node_builtin.c +78 -0
- package/dist/lib/runtime-sources/src/scr_regex.c +65 -0
- package/dist/lib/runtime-sources/src/scr_runtime.h +69 -1
- package/dist/lib/runtime-sources/src/scr_symbol.c +5 -0
- package/dist/lib/runtime-sources/src/scr_system_errors.h +573 -0
- package/dist/lib/runtime-sources/src/scr_url.c +515 -59
- package/dist/lib/runtime-sources/src/scr_url_internal.h +6 -0
- package/dist/lib/runtime-sources/src/scr_url_params.c +10 -0
- package/dist/lib/runtime-sources/src/scr_util_compare.c +222 -0
- package/dist/lib/runtime-sources/src/scr_util_style.c +337 -0
- package/dist/lib/runtime-sources/src/scr_web.c +720 -238
- package/package.json +1 -1
|
@@ -50,12 +50,12 @@ static const struct {
|
|
|
50
50
|
{"node:tls",
|
|
51
51
|
"connect,createServer,createSecureContext,TLSSocket,rootCertificates"},
|
|
52
52
|
{"node:diagnostics_channel",
|
|
53
|
-
"channel,subscribe,unsubscribe,hasSubscribers,tracingChannel"},
|
|
53
|
+
"channel,subscribe,unsubscribe,hasSubscribers,tracingChannel,Channel"},
|
|
54
54
|
{"node:module",
|
|
55
55
|
"createRequire,builtinModules,isBuiltin,syncBuiltinESMExports,register,findSourceMap"},
|
|
56
56
|
{"node:url",
|
|
57
|
-
"URL,URLSearchParams,fileURLToPath,pathToFileURL,parse,format,resolve
|
|
58
|
-
"
|
|
57
|
+
"URL,URLSearchParams,fileURLToPath,fileURLToPathBuffer,pathToFileURL,parse,format,resolve"
|
|
58
|
+
",domainToASCII,domainToUnicode,urlToHttpOptions"},
|
|
59
59
|
{"node:buffer",
|
|
60
60
|
"Buffer,SlowBuffer,INSPECT_MAX_BYTES,kMaxLength,kStringMaxLength,constants,isAscii,isUtf8"
|
|
61
61
|
",atob,btoa,Blob,File,transcode,resolveObjectURL"},
|
|
@@ -130,7 +130,10 @@ static const struct {
|
|
|
130
130
|
{"node:stream/consumers",
|
|
131
131
|
"text,buffer,arrayBuffer,json,blob"},
|
|
132
132
|
{"node:stream/web",
|
|
133
|
-
"ReadableStream,TransformStream,TextDecoderStream"
|
|
133
|
+
"ReadableStream,TransformStream,TextDecoderStream,WritableStream,WritableStreamDefaultWri"
|
|
134
|
+
"ter,WritableStreamDefaultController,CountQueuingStrategy,ByteLengthQueuingStrategy,Trans"
|
|
135
|
+
"formStreamDefaultController,TextEncoderStream,ReadableStreamDefaultReader,ReadableStream"
|
|
136
|
+
"DefaultController"},
|
|
134
137
|
{"node:crypto",
|
|
135
138
|
"createHash,createHmac,hash,Hash,Hmac,randomBytes,randomFillSync,randomFill,randomInt,ran"
|
|
136
139
|
"domUUID,getRandomValues,timingSafeEqual,pbkdf2,pbkdf2Sync,getHashes,getCiphers,getCurves"
|
|
@@ -141,9 +144,10 @@ static const struct {
|
|
|
141
144
|
"c,X509Certificate,Certificate,checkPrime,checkPrimeSync,generatePrime,generatePrimeSync,"
|
|
142
145
|
"secureHeapUsed,setEngine,setFips,getFips"},
|
|
143
146
|
{"node:util",
|
|
144
|
-
"
|
|
145
|
-
"
|
|
146
|
-
"
|
|
147
|
+
"getSystemErrorName,getSystemErrorMessage,getSystemErrorMap,parseEnv,format,formatWithOpt"
|
|
148
|
+
"ions,inspect,inherits,promisify,callbackify,deprecate,debuglog,debug,types,isDeepStrictE"
|
|
149
|
+
"qual,stripVTControlCharacters,styleText,parseArgs,toUSVString,_extend,TextEncoder,TextDe"
|
|
150
|
+
"coder,MIMEType,MIMEParams,isArray"},
|
|
147
151
|
{"node:util/types",
|
|
148
152
|
"isAnyArrayBuffer,isArrayBufferView,isArgumentsObject,isArrayBuffer,isAsyncFunction,isBig"
|
|
149
153
|
"Int64Array,isBigUint64Array,isBooleanObject,isBoxedPrimitive,isBigIntObject,isCryptoKey,"
|
|
@@ -57,6 +57,7 @@ static void scr_json_oom(void) {
|
|
|
57
57
|
|
|
58
58
|
static SCR_TL ScrDyn *scr_iterator_symbol;
|
|
59
59
|
static SCR_TL ScrDyn *scr_async_iterator_symbol;
|
|
60
|
+
static SCR_TL ScrDyn *scr_to_primitive_symbol;
|
|
60
61
|
static bool scr_dyn_generator(const ScrDyn *value) {
|
|
61
62
|
return value && value->kind == SCR_DYN_TYPED_REF &&
|
|
62
63
|
(!strncmp(value->v.typed_ref.type_key, "generator<", 10) || !strncmp(value->v.typed_ref.type_key, "async-generator<", 16));
|
|
@@ -104,6 +105,17 @@ static void scr_async_iterator_symbol_cleanup(void) {
|
|
|
104
105
|
scr_async_iterator_symbol = NULL;
|
|
105
106
|
}
|
|
106
107
|
|
|
108
|
+
static void scr_to_primitive_symbol_cleanup(void) {
|
|
109
|
+
scr_dyn_release(scr_to_primitive_symbol);
|
|
110
|
+
scr_to_primitive_symbol = NULL;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
void scr_dyn_install_to_primitive_symbol(ScrDyn *key) {
|
|
114
|
+
if (scr_to_primitive_symbol) return;
|
|
115
|
+
scr_to_primitive_symbol = scr_dyn_retain(key);
|
|
116
|
+
scr_atexit(scr_to_primitive_symbol_cleanup);
|
|
117
|
+
}
|
|
118
|
+
|
|
107
119
|
void scr_dyn_install_async_iterator_symbol(ScrDyn *key) {
|
|
108
120
|
if (scr_async_iterator_symbol) return;
|
|
109
121
|
scr_async_iterator_symbol = scr_dyn_retain(key);
|
|
@@ -1902,6 +1914,56 @@ bool scr_dyn_typed_array_is(const ScrDyn *d, int elem) {
|
|
|
1902
1914
|
return d && d->kind == SCR_DYN_BYTES && !d->v.bytes->is_data_view && d->v.bytes->elem == (ScrBytesElem)elem;
|
|
1903
1915
|
}
|
|
1904
1916
|
|
|
1917
|
+
/* Node util.types reads internal brands, never user properties or prototypes. */
|
|
1918
|
+
bool scr_dyn_util_type_is(const ScrDyn *value, const ScrStr *probe) {
|
|
1919
|
+
if (!value) return false;
|
|
1920
|
+
if (value->kind == SCR_DYN_JSVAL) return scr_dyn_jsval_ops()->type_probe(value->v.jsval.cell, probe);
|
|
1921
|
+
#define PROBE(name) (probe->len == sizeof(name) - 1 && memcmp(probe->data, name, sizeof(name) - 1) == 0)
|
|
1922
|
+
if (PROBE("isAnyArrayBuffer") || PROBE("isArrayBuffer")) return scr_array_buffer_is(value);
|
|
1923
|
+
if (PROBE("isArrayBufferView")) return value->kind == SCR_DYN_BYTES;
|
|
1924
|
+
if (PROBE("isDataView")) return value->kind == SCR_DYN_BYTES && value->v.bytes->is_data_view;
|
|
1925
|
+
if (PROBE("isTypedArray")) return value->kind == SCR_DYN_BYTES && !value->v.bytes->is_data_view;
|
|
1926
|
+
if (PROBE("isUint8Array")) return scr_dyn_typed_array_is(value, SCR_BYTES_U8);
|
|
1927
|
+
if (PROBE("isUint8ClampedArray")) return scr_dyn_typed_array_is(value, SCR_BYTES_U8C);
|
|
1928
|
+
if (PROBE("isUint16Array")) return scr_dyn_typed_array_is(value, SCR_BYTES_U16);
|
|
1929
|
+
if (PROBE("isUint32Array")) return scr_dyn_typed_array_is(value, SCR_BYTES_U32);
|
|
1930
|
+
if (PROBE("isInt8Array")) return scr_dyn_typed_array_is(value, SCR_BYTES_I8);
|
|
1931
|
+
if (PROBE("isInt16Array")) return scr_dyn_typed_array_is(value, SCR_BYTES_I16);
|
|
1932
|
+
if (PROBE("isInt32Array")) return scr_dyn_typed_array_is(value, SCR_BYTES_I32);
|
|
1933
|
+
if (PROBE("isFloat32Array")) return scr_dyn_typed_array_is(value, SCR_BYTES_F32);
|
|
1934
|
+
if (PROBE("isFloat64Array")) return scr_dyn_typed_array_is(value, SCR_BYTES_F64);
|
|
1935
|
+
if (PROBE("isMap")) return value->kind == SCR_DYN_HANDLE && value->v.handle.tag == SCR_DYNH_MAP;
|
|
1936
|
+
if (PROBE("isSet")) return value->kind == SCR_DYN_HANDLE && value->v.handle.tag == SCR_DYNH_SET;
|
|
1937
|
+
if (PROBE("isWeakMap")) return value->kind == SCR_DYN_HANDLE && value->v.handle.tag == SCR_DYNH_WEAK_MAP;
|
|
1938
|
+
if (PROBE("isWeakSet")) return value->kind == SCR_DYN_HANDLE && value->v.handle.tag == SCR_DYNH_WEAK_SET;
|
|
1939
|
+
if (PROBE("isRegExp")) return value->kind == SCR_DYN_HANDLE && value->v.handle.tag == SCR_DYNH_REGEXP;
|
|
1940
|
+
if (PROBE("isPromise")) return value->kind == SCR_DYN_PROMISE;
|
|
1941
|
+
if (PROBE("isProxy")) return value->kind == SCR_DYN_PROXY;
|
|
1942
|
+
if (PROBE("isAsyncFunction")) return value->kind == SCR_DYN_FUNC && (value->v.fn.clo->function_kind & 2) != 0;
|
|
1943
|
+
if (PROBE("isGeneratorFunction")) return value->kind == SCR_DYN_FUNC && (value->v.fn.clo->function_kind & 1) != 0;
|
|
1944
|
+
if (PROBE("isGeneratorObject")) return scr_dyn_generator(value);
|
|
1945
|
+
if (PROBE("isNativeError")) {
|
|
1946
|
+
ScrError *error = scr_errdyn_err_of(value);
|
|
1947
|
+
if (!error) return false;
|
|
1948
|
+
scr_error_release(error);
|
|
1949
|
+
return true;
|
|
1950
|
+
}
|
|
1951
|
+
#undef PROBE
|
|
1952
|
+
return false;
|
|
1953
|
+
}
|
|
1954
|
+
|
|
1955
|
+
/* Node's JavaScript wrappers have names/arity; engine-native probes are
|
|
1956
|
+
* anonymous with length zero. Keep their native closure identity intact. */
|
|
1957
|
+
ScrDyn *scr_dyn_util_type_value(const ScrDyn *value, const ScrStr *probe) {
|
|
1958
|
+
static const char *const named[] = { "isTypedArray", "isUint8Array", "isUint8ClampedArray", "isUint16Array", "isUint32Array",
|
|
1959
|
+
"isInt8Array", "isInt16Array", "isInt32Array", "isFloat32Array", "isFloat64Array" };
|
|
1960
|
+
const char *name = "";
|
|
1961
|
+
if (probe->len == 17 && memcmp(probe->data, "isArrayBufferView", 17) == 0) name = "isView";
|
|
1962
|
+
for (size_t i = 0; i < sizeof named / sizeof named[0]; i++)
|
|
1963
|
+
if (probe->len == strlen(named[i]) && memcmp(probe->data, named[i], probe->len) == 0) name = named[i];
|
|
1964
|
+
return scr_dyn_new_func(scr_closure_retain(value->v.fn.clo), value->v.fn.thunk, *name ? 1 : 0, value->v.fn.sig, name);
|
|
1965
|
+
}
|
|
1966
|
+
|
|
1905
1967
|
bool scr_dyn_bytes_is(const ScrDyn *d, int elem) {
|
|
1906
1968
|
return d && d->kind == SCR_DYN_BYTES && d->v.bytes->elem == (ScrBytesElem)elem;
|
|
1907
1969
|
}
|
|
@@ -2352,7 +2414,9 @@ const char *scr_dyn_specific_type(const ScrDyn *cb, char *detail, size_t cap) {
|
|
|
2352
2414
|
}
|
|
2353
2415
|
case SCR_DYN_NUM: {
|
|
2354
2416
|
char num[32];
|
|
2355
|
-
size_t n
|
|
2417
|
+
size_t n;
|
|
2418
|
+
if (cb->v.num == 0 && signbit(cb->v.num)) { memcpy(num, "-0", 3); n = 2; }
|
|
2419
|
+
else n = scr_f64_to_str(cb->v.num, num);
|
|
2356
2420
|
snprintf(detail, cap, "type number (%.*s)", (int)n, num);
|
|
2357
2421
|
break;
|
|
2358
2422
|
}
|
|
@@ -4550,7 +4614,16 @@ ScrStr *scr_dyn_string_coerce_js(const ScrDyn *d) {
|
|
|
4550
4614
|
for (int i = 0; i < 2; i++) {
|
|
4551
4615
|
const ScrDyn *owner = scr_dyn_property_owner(d, hint[i], strlen(hint[i]));
|
|
4552
4616
|
ScrDyn *m = owner ? scr_dyn_obj_read(d, hint[i], strlen(hint[i])) : NULL;
|
|
4617
|
+
if (scr_exc_pending()) { scr_dyn_release(m); return NULL; }
|
|
4553
4618
|
if (!m && i == 0 && scr_dyn_has_object_prototype(d)) {
|
|
4619
|
+
// Checked Error values retain their Error.prototype formatter even
|
|
4620
|
+
// when their fields are exposed through the cached object view.
|
|
4621
|
+
ScrError *error = scr_errdyn_err_of(d);
|
|
4622
|
+
if (error) {
|
|
4623
|
+
ScrStr *text = scr_error_to_string(error);
|
|
4624
|
+
scr_error_release(error);
|
|
4625
|
+
return text;
|
|
4626
|
+
}
|
|
4554
4627
|
return scr_str_new("[object Object]", 15);
|
|
4555
4628
|
}
|
|
4556
4629
|
if (!m || m->kind != SCR_DYN_FUNC) { scr_dyn_release(m); continue; }
|
|
@@ -4576,6 +4649,65 @@ ScrStr *scr_dyn_string_coerce_js(const ScrDyn *d) {
|
|
|
4576
4649
|
return scr_dyn_string_coerce(d);
|
|
4577
4650
|
}
|
|
4578
4651
|
|
|
4652
|
+
ScrStr *scr_util_to_usv_string(const ScrDyn *input) {
|
|
4653
|
+
const ScrDyn *value = input ? input : scr_dyn_undefined();
|
|
4654
|
+
/* Native string producers already replace unpaired surrogate code units.
|
|
4655
|
+
* Preserve ToString's object protocol before using that storage invariant. */
|
|
4656
|
+
if (scr_to_primitive_symbol && scr_iterator_object(value)) {
|
|
4657
|
+
ScrDyn *method = scr_dyn_reflect_get((ScrDyn *)value, scr_to_primitive_symbol, (ScrDyn *)value);
|
|
4658
|
+
if (!method) return NULL;
|
|
4659
|
+
if (method->kind != SCR_DYN_UNDEF && method->kind != SCR_DYN_NULL) {
|
|
4660
|
+
if (!scr_dyn_is_callable(method)) {
|
|
4661
|
+
ScrJsonBuf buffer;
|
|
4662
|
+
scr_jb_init(&buffer);
|
|
4663
|
+
if (scr_iterator_object(method)) scr_jb_puts(&buffer, "object");
|
|
4664
|
+
else {
|
|
4665
|
+
ScrStr *type = scr_dyn_typeof(method);
|
|
4666
|
+
scr_jb_put_str(&buffer, type);
|
|
4667
|
+
scr_str_release(type);
|
|
4668
|
+
if (method->kind != SCR_DYN_SYMBOL && method->kind != SCR_DYN_BIGINT) scr_jb_puts(&buffer, " ");
|
|
4669
|
+
if (method->kind == SCR_DYN_STR) {
|
|
4670
|
+
scr_jb_puts(&buffer, "\"");
|
|
4671
|
+
scr_jb_put_str(&buffer, method->v.str);
|
|
4672
|
+
scr_jb_puts(&buffer, "\"");
|
|
4673
|
+
}
|
|
4674
|
+
else if (method->kind != SCR_DYN_SYMBOL && method->kind != SCR_DYN_BIGINT) {
|
|
4675
|
+
ScrStr *text = scr_dyn_string_coerce(method);
|
|
4676
|
+
scr_jb_put_str(&buffer, text);
|
|
4677
|
+
scr_str_release(text);
|
|
4678
|
+
}
|
|
4679
|
+
}
|
|
4680
|
+
scr_jb_puts(&buffer, " is not a function");
|
|
4681
|
+
ScrStr *message = scr_jb_finish(&buffer);
|
|
4682
|
+
scr_throw_error_msg(SCR_ERR_TYPE, message->data, message->len);
|
|
4683
|
+
scr_str_release(message);
|
|
4684
|
+
scr_dyn_release(method);
|
|
4685
|
+
return NULL;
|
|
4686
|
+
}
|
|
4687
|
+
ScrStr *hint = scr_str_new("string", 6);
|
|
4688
|
+
ScrDyn *argument = scr_dyn_new_str(hint);
|
|
4689
|
+
scr_str_release(hint);
|
|
4690
|
+
scr_dyn_this_push_dyn(value);
|
|
4691
|
+
ScrDyn *primitive = scr_dyn_call(method, &argument, 1, "Symbol.toPrimitive");
|
|
4692
|
+
scr_dyn_this_pop();
|
|
4693
|
+
scr_dyn_release(argument);
|
|
4694
|
+
scr_dyn_release(method);
|
|
4695
|
+
if (!primitive) return NULL;
|
|
4696
|
+
if (scr_dyn_to_primitive_result_is_object(primitive)) {
|
|
4697
|
+
static const char message[] = "Cannot convert object to primitive value";
|
|
4698
|
+
scr_throw_error_msg(SCR_ERR_TYPE, message, sizeof message - 1);
|
|
4699
|
+
scr_dyn_release(primitive);
|
|
4700
|
+
return NULL;
|
|
4701
|
+
}
|
|
4702
|
+
ScrStr *text = scr_dyn_string_coerce(primitive);
|
|
4703
|
+
scr_dyn_release(primitive);
|
|
4704
|
+
return text;
|
|
4705
|
+
}
|
|
4706
|
+
scr_dyn_release(method);
|
|
4707
|
+
}
|
|
4708
|
+
return scr_dyn_string_coerce_js(value);
|
|
4709
|
+
}
|
|
4710
|
+
|
|
4579
4711
|
/* JS ToNumber over a checked-dynamic value, including OrdinaryToPrimitive's
|
|
4580
4712
|
* NUMBER hint for object snapshots. This is the numeric twin of
|
|
4581
4713
|
* scr_dyn_string_coerce_js above: valueOf precedes toString, inherited
|
|
@@ -9207,7 +9339,8 @@ ScrMap *scr_dyn_native_map_check(const ScrDyn *value, const ScrDynPath *path) {
|
|
|
9207
9339
|
bool scr_dyn_native_collection_is(const ScrDyn *value, int map, const char *type) {
|
|
9208
9340
|
if (!(map ? scr_dyn_native_map_is(value) : scr_dyn_native_set_is(value))) return false;
|
|
9209
9341
|
const ScrMap *storage = value->v.handle.ptr;
|
|
9210
|
-
|
|
9342
|
+
// A generic checked view uses dyn_ops to box/unbox the same live storage.
|
|
9343
|
+
return !type || (storage->dyn_ops && strcmp(storage->dyn_ops->type, type) == 0);
|
|
9211
9344
|
}
|
|
9212
9345
|
|
|
9213
9346
|
ScrMap *scr_dyn_native_collection_check(const ScrDyn *value, int map, const char *type, const ScrDynPath *path) {
|