WorkspaceLockConfig.fromMap constructor

WorkspaceLockConfig.fromMap(
  1. Map<Object?, Object?> value
)

Implementation

factory WorkspaceLockConfig.fromMap(Map<Object?, Object?> value) {
  final rawDirectory = value['directory'];
  if (rawDirectory != null &&
      (rawDirectory is! String || rawDirectory.trim().isEmpty)) {
    throw const FormatException('lock.directory must be a non-empty string');
  }
  final rawProfiles = value['profiles'];
  if (rawProfiles != null &&
      (rawProfiles is! List ||
          rawProfiles.any(
            (item) => item is! String || item.trim().isEmpty,
          ))) {
    throw const FormatException('lock.profiles must be non-empty strings');
  }
  final rawClean = value['requireCleanGeneration'];
  if (rawClean != null && rawClean is! bool) {
    throw const FormatException(
      'lock.requireCleanGeneration must be boolean',
    );
  }
  return WorkspaceLockConfig(
    directory: rawDirectory as String?,
    profiles: rawProfiles == null
        ? const []
        : List<String>.unmodifiable(rawProfiles as List),
    requireCleanGeneration: rawClean as bool?,
    extensions: Map.unmodifiable({
      for (final entry in value.entries)
        if (entry.key is String && !_knownKeys.contains(entry.key))
          entry.key as String: _freeze(entry.value),
    }),
  );
}