merge method

SchemaMap merge(
  1. Map<String, SchemaValue> properties, {
  2. bool? additionalProperties,
  3. bool? isOptional,
})

Implementation

SchemaMap merge(
  Map<String, SchemaValue> properties, {
  bool? additionalProperties,
  bool? isOptional,
}) {
  // if property SchemaValue is of SchemaMap, we need to merge them
  final mergedProperties = {...this.properties};

  for (final entry in properties.entries) {
    final key = entry.key;
    final prop = entry.value;

    final existingProp = mergedProperties[key];

    if (existingProp is SchemaMap && prop is SchemaMap) {
      mergedProperties[key] = existingProp.merge(prop.properties);
    } else {
      mergedProperties[key] = prop;
    }
  }

  return copyWith(
    properties: mergedProperties,
    isOptional: isOptional,
    additionalProperties: additionalProperties,
  );
}