MCPcopy Create free account
hub / github.com/Snapchat/Valdi / jsValueToValue

Function jsValueToValue

valdi/src/valdi/runtime/JavaScript/JavaScriptUtils.cpp:722–768  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

720}
721
722Value jsValueToValue(IJavaScriptContext& jsContext,
723 const JSValue& jsValue,
724 const ReferenceInfoBuilder& referenceInfoBuilder,
725 JSExceptionTracker& exceptionTracker) {
726 Valdi::JavaScriptRef<JSValue> ref;
727
728 if (!checkRefNotCircular(jsValue, exceptionTracker.getCircularRefChecker(), ref)) {
729 static auto kCircular = STRING_LITERAL("<circular>");
730 return Valdi::Value(kCircular);
731 }
732
733 switch (jsContext.getValueType(jsValue)) {
734 case Valdi::ValueType::Null:
735 return Valdi::Value();
736 case Valdi::ValueType::Undefined:
737 return Valdi::Value::undefined();
738 case Valdi::ValueType::InternedString:
739 case Valdi::ValueType::StaticString:
740 // We always use the interned string API when going from an untyped JSValue to a Value
741 return Value(jsContext.valueToString(jsValue, exceptionTracker));
742 case Valdi::ValueType::Int:
743 return Value(jsContext.valueToInt(jsValue, exceptionTracker));
744 case Valdi::ValueType::Double:
745 return Value(jsContext.valueToDouble(jsValue, exceptionTracker));
746 case Valdi::ValueType::Long:
747 return Value(jsContext.valueToLong(jsValue, exceptionTracker).toInt64());
748 case Valdi::ValueType::Bool:
749 return Value(jsContext.valueToBool(jsValue, exceptionTracker));
750 case Valdi::ValueType::Map:
751 return jsObjectToValue(jsContext, jsValue, referenceInfoBuilder, exceptionTracker);
752 case Valdi::ValueType::Array:
753 return jsArrayToValue(jsContext, jsValue, referenceInfoBuilder, exceptionTracker);
754 case Valdi::ValueType::TypedArray:
755 return jsTypedArrayToValue(jsContext, jsValue, referenceInfoBuilder, exceptionTracker);
756 case Valdi::ValueType::Function:
757 return Value(jsFunctionToFunction(
758 jsContext, jsValue, referenceInfoBuilder, exceptionTracker, defaultJSValueFunctionFactory()));
759 case Valdi::ValueType::TypedObject:
760 std::abort();
761 case Valdi::ValueType::ProxyTypedObject:
762 std::abort();
763 case Valdi::ValueType::ValdiObject:
764 return jsWrappedObjectToValue(jsContext, jsValue, exceptionTracker);
765 case Valdi::ValueType::Error:
766 return jsErrorToValue(jsContext, jsValue, exceptionTracker);
767 }
768}
769
770std::string formatJsModule(const std::string_view& jsModule) {
771 std::string_view modulePrefix = "(function(require, module, exports) { ";

Callers 15

TEST_PFunction · 0.85
withContextRetMethod · 0.85
dumpMemoryStatisticsMethod · 0.85
pushToMarshallerMethod · 0.85
doCallMethod · 0.85
getParameterAsValueMethod · 0.85
visitPropertyNameMethod · 0.85
jsArrayToValueFunction · 0.85
isJsModuleLoadedMethod · 0.85
onModulesUnloadedMethod · 0.85

Calls 15

checkRefNotCircularFunction · 0.85
jsObjectToValueFunction · 0.85
jsArrayToValueFunction · 0.85
jsTypedArrayToValueFunction · 0.85
jsFunctionToFunctionFunction · 0.85
jsWrappedObjectToValueFunction · 0.85
jsErrorToValueFunction · 0.85
toInt64Method · 0.80
valueToStringMethod · 0.65
ValueClass · 0.50
getValueTypeMethod · 0.45

Tested by 3

TEST_PFunction · 0.68
withContextRetMethod · 0.68