dartify static method

Object? dartify(
  1. JSAny? jsObject, {
  2. bool deep = true,
})

Implementation

static Object? dartify(JSAny? jsObject, {bool deep = true}) {
  if (jsObject == null) return null;

  try {
    if (jsObject is JSBigInt) return jsObject.toDart;
    if (jsObject is JSArray) return jsObject.toDartDynamicList;
    if (jsObject is JSObject) return deep ? jsObject.toMap() : jsObject;
    return jsObject.dartify();
  } catch (e) {
    // WASM fallback - if dartify fails, handle different types safely
    try {
      if (jsObject is JSBigInt) return jsObject.toDart;
      if (jsObject is JSString) return jsObject.toDart;
      if (jsObject is JSNumber) return jsObject.toDartDouble;
      if (jsObject is JSBoolean) return jsObject.toDart;
      if (jsObject is JSArray) {
        try {
          return jsObject.toDartDynamicList;
        } catch (_) {
          // If array conversion fails, return as-is
          return jsObject;
        }
      }
      if (jsObject is JSObject) {
        try {
          return deep ? jsObject.toMap() : jsObject;
        } catch (_) {
          // If object conversion fails, return as-is
          return jsObject;
        }
      }
      // For any other type, return as-is to avoid casting errors
      return jsObject;
    } catch (_) {
      // Ultimate fallback - return null to prevent crashes
      return null;
    }
  }
}