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

Function valueToJSValue

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

Source from the content-addressed store, hash-verified

237 return valueMarshaller->unmarshallProxyObject(proxyObject, referenceInfoBuilder, exceptionTracker);
238 } else {
239 auto object = makeWrappedObject(jsContext, proxyObject, exceptionTracker, true);
240 if (!exceptionTracker) {
241 return jsContext.newUndefined();
242 }
243
244 if (!inflateJSValueFromTypedObject(
245 jsContext, proxyObject->getTypedObject(), referenceInfoBuilder, object.get(), exceptionTracker)) {
246 return jsContext.newUndefined();
247 }
248
249 return object;
250 }
251}
252
253JSValueRef valueToJSValue(IJavaScriptContext& jsContext,
254 const Valdi::Value& value,
255 JSValueForNativeObjectResolver* nativeObjectResolver,
256 const ReferenceInfoBuilder& referenceInfoBuilder,
257 JSExceptionTracker& exceptionTracker) {
258 switch (value.getType()) {
259 case ValueType::InternedString:
260 return jsContext.newStringUTF8(value.toStringBox().toStringView(), exceptionTracker);
261 case ValueType::StaticString:
262 return jsContext.newString(*value.getStaticString(), exceptionTracker);
263 case ValueType::Double:
264 return jsContext.newNumber(value.toDouble());
265 case ValueType::Int:
266 return jsContext.newNumber(value.toInt());
267 case ValueType::Long:
268 return jsContext.newLong(value.toLong(), exceptionTracker);
269 case ValueType::Bool:
270 return jsContext.newBool(value.toBool());
271 case ValueType::Null:
272 return jsContext.newNull();
273 case ValueType::Undefined:
274 return jsContext.newUndefined();
275 case ValueType::TypedObject:
276 return typedObjectToJSValue(jsContext, value.getTypedObjectRef(), referenceInfoBuilder, exceptionTracker);
277 case ValueType::ProxyTypedObject:
278 return proxyObjectToJSValue(
279 jsContext, value.getTypedProxyObjectRef(), referenceInfoBuilder, exceptionTracker);
280 case ValueType::ValdiObject: {
281 auto jsValue =
282 unwrapJSValueIfNeeded(jsContext, value.getValdiObject().get(), nativeObjectResolver, exceptionTracker);
283 if (!exceptionTracker) {
284 return jsContext.newUndefined();
285 }
286
287 if (jsValue) {
288 return JSValueRef::makeRetained(jsContext, jsValue.value());
289 }
290
291 return makeWrappedObject(jsContext, value.getValdiObject(), exceptionTracker, true);
292 }
293 case ValueType::Map: {
294 const auto& map = *value.getMap();
295
296 auto object = jsContext.newObject(exceptionTracker);

Callers 15

doCallMethod · 0.85
doOnCreateMethod · 0.85
doOnViewModelUpdateMethod · 0.85
doOnAttributeChangeMethod · 0.85

Calls 15

staticStringTOJSValueFunction · 0.85
typedObjectToJSValueFunction · 0.85
proxyObjectToJSValueFunction · 0.85
unwrapJSValueIfNeededFunction · 0.85
makeWrappedObjectFunction · 0.85
newNumberMethod · 0.80
toLongMethod · 0.80
newUndefinedMethod · 0.80
getTypedObjectRefMethod · 0.80
withPropertyMethod · 0.80

Tested by

no test coverage detected