jsify static method

JSAny? jsify(
  1. dynamic dartObject
)

Implementation

static JSAny? jsify(dynamic dartObject) {
  // We do exhaustive types check here
  // because `dartObject.jsify()` throws a "NoSuchMethodError: 'jsify'"
  // without explicit cast.
  if (dartObject == null) return null;

  try {
    if (dartObject is BigInt) return dartObject.toJS;
    if (dartObject is Iterable) return dartObject.toJSArray;
    if (dartObject is String) return dartObject.toJS;
    if (dartObject is int) return dartObject.toJS;
    if (dartObject is bool) return dartObject.toJS;
    if (dartObject is double) return dartObject.toJS;
    if (dartObject is num) return dartObject.toJS;
    if (dartObject is Int8List) return dartObject.toJS;
    if (dartObject is Uint8List) return dartObject.toJS;
    if (dartObject is Int16List) return dartObject.toJS;
    if (dartObject is Uint16List) return dartObject.toJS;
    if (dartObject is Int32List) return dartObject.toJS;
    if (dartObject is Uint32List) return dartObject.toJS;
    if (dartObject is Float32List) return dartObject.toJS;
    if (dartObject is Float64List) return dartObject.toJS;
    if (dartObject is List) return dartObject.toJSArray;
    if (dartObject is Map) {
      // Handle any type of Map, not just Map<String, dynamic>
      final jsObject = JSObject();
      dartObject.forEach((key, value) {
        if (key is String) {
          jsObject[key] = UtilsJS.jsify(value);
        }
      });
      return jsObject;
    }
    return dartObject.jsify();
  } catch (e) {
    // WASM fallback - if jsify fails, return null to prevent crashes
    return null;
  }
}