blob: 7539a9b3bdf0bf80cd00dbf848ae5748782afdd0 [file] [log] [blame]
// Copyright (c) 2025, the Dart project authors. All rights reserved.
// Defines the request for service extension calls over WebSocket.
import 'dart:convert';
import 'package:built_value/built_value.dart';
import 'package:built_value/serializer.dart';
part 'service_extension_request.g.dart';
abstract class ServiceExtensionRequest
implements Built<ServiceExtensionRequest, ServiceExtensionRequestBuilder> {
String get id;
String get method;
String
get argsJson; // Store args as JSON string for built_value compatibility
// Helper method to get args as Map<String, dynamic>
Map<String, dynamic> get args =>
argsJson.isEmpty
? <String, dynamic>{}
: json.decode(argsJson) as Map<String, dynamic>;
ServiceExtensionRequest._();
factory ServiceExtensionRequest([
void Function(ServiceExtensionRequestBuilder) updates,
]) = _$ServiceExtensionRequest;
// Convenient factory method to create with args Map
factory ServiceExtensionRequest.fromArgs({
required String id,
required String method,
required Map<String, dynamic> args,
}) => ServiceExtensionRequest(
(b) =>
b
..id = id
..method = method
..argsJson = json.encode(args),
);
static Serializer<ServiceExtensionRequest> get serializer =>
_$serviceExtensionRequestSerializer;
}