encode<T> static method
Implementation
static Stream<List<int>> encode<T>(T value, {Encodable<T>? using}) {
final group = StreamGroup<List<int>>();
final values = _AsyncEncodingValues(group);
final encoder = ProgressiveJsonEncoder._(values);
if (value is Future || value is Stream || value is Reference) {
encoder.encodeObject<T>(value, using: using);
} else {
encoder.encodeObject<Reference<T>>(Reference(value, using: using));
}
var bytes = encoder.toBytes();
if (bytes case [tokenDollarSign, 0x30 /* '0' */]) {
// Skip if the data is just a marker with no value
} else {
group.add(Stream.value(bytes + [0x0A])); // Add newline at the end
}
if (group.isIdle) {
group.close();
} else {
group.onIdle.listen((_) {
group.close();
});
}
return group.stream;
}