encodeSync<T> static method

List<int> encodeSync<T>(
  1. T value, {
  2. Encodable<T>? using,
})

Implementation

static List<int> encodeSync<T>(T value, {Encodable<T>? using}) {
  late List<int> out;

  final sink = ByteConversionSink.withCallback((result) {
    out = result;
  });
  final values = _SyncEncodingValues(sink);

  final encoder = ProgressiveJsonEncoder._(values);
  if (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 {
    sink.add(bytes + [0x0A]); // Add newline at the end
  }

  values.done();
  sink.close();

  return out;
}