Extract the row array from a MUDAB response. The API returns a single-key object
wrapping the array. The key is not reliably the path name (e.g. /STATION_SMALL ->
key V_STATION_SMALL), but it is fixed per resource: for a path in
WRAPPER_KEYS only that key is accepted, for any other path any one key. A
bare array is taken as is. Every row must be a JSON object, and no field a number
beyond the range of a double (JSON.parse makes it Infinity, printed as null).
Anything else — an error envelope ({"errors":[…]}) or error object sent with status
200, another table's rows, a second key, null, a string, a row that is not an
object — throws a MudabParseError naming what came back, so a server-side failure
never reads as data or as an empty result. (The client's list methods report an error
envelope as a MudabApiError with its messages before this runs.)
Extract the row array from a MUDAB response. The API returns a single-key object wrapping the array. The key is not reliably the path name (e.g.
/STATION_SMALL-> keyV_STATION_SMALL), but it is fixed per resource: for a path in WRAPPER_KEYS only that key is accepted, for any other path any one key. A bare array is taken as is. Every row must be a JSON object, and no field a number beyond the range of a double (JSON.parse makes it Infinity, printed asnull).Anything else — an error envelope (
{"errors":[…]}) or error object sent with status 200, another table's rows, a second key,null, a string, a row that is not an object — throws aMudabParseErrornaming what came back, so a server-side failure never reads as data or as an empty result. (The client's list methods report an error envelope as aMudabApiErrorwith its messages before this runs.)