prepareInputs method

Map<String, dynamic> prepareInputs(
  1. Map<String, dynamic> supplied
)

Implementation

Map<String, dynamic> prepareInputs(Map<String, dynamic> supplied) {
  final prepared = Map<String, dynamic>.from(supplied);
  for (final entry in inputs.entries) {
    final schema = entry.value is Map
        ? Map<String, dynamic>.from(entry.value as Map)
        : <String, dynamic>{'type': entry.value};
    if (!prepared.containsKey(entry.key) && schema.containsKey('default')) {
      prepared[entry.key] = schema['default'];
    }
    if (schema['required'] == true && !prepared.containsKey(entry.key)) {
      throw FormatException("Missing required input '${entry.key}'.");
    }
    if (prepared.containsKey(entry.key)) {
      _validateValue(prepared[entry.key], schema, entry.key);
    }
  }
  final unknown = prepared.keys.where((key) => !inputs.containsKey(key));
  if (unknown.isNotEmpty) {
    throw FormatException('Unknown tool input(s): ${unknown.join(', ')}.');
  }
  return prepared;
}