toJson method

Map<String, Object> toJson()

Validates and serializes telemetry options for the native bridge.

Implementation

Map<String, Object> toJson() {
  final parent = traceparent;
  if (parent != null &&
      !RegExp(
        r'^(?!ff)[0-9a-f]{2}-(?!0{32})[0-9a-f]{32}-(?!0{16})[0-9a-f]{16}-[0-9a-f]{2}$',
      )
          .hasMatch(parent)) {
    throw ArgumentError.value(
      parent,
      'traceparent',
      'must be a valid W3C trace parent',
    );
  }
  final state = tracestate;
  if (state != null &&
      (state.length > 512 || state.contains('\r') || state.contains('\n'))) {
    throw ArgumentError.value(
      state,
      'tracestate',
      'must be at most 512 characters without newlines',
    );
  }
  return {
    if (!enabled) 'enabled': false,
    'traceparent': ?parent,
    'tracestate': ?state,
  };
}