syncManagedGuardDefinitions<TContext, TResponse, TDefinition extends Object> function

Set<String> syncManagedGuardDefinitions<TContext, TResponse, TDefinition extends Object>(
  1. AuthGuardRegistry<TContext, TResponse> registry,
  2. Map<String, TDefinition> definitions, {
  3. required AuthGuard<TContext, TResponse>? buildGuard(
    1. String name,
    2. TDefinition definition
    ),
  4. required Set<String> managed,
  5. Set<String> preserve = const <String>{},
})

Builds and synchronizes managed guard registrations from definitions.

Guard names are trimmed and definitions producing null are skipped. Each built guard is registered unconditionally, so it replaces existing entries. preserve may keep a stale registry entry while removing its name from managed.

Implementation

Set<String>
syncManagedGuardDefinitions<TContext, TResponse, TDefinition extends Object>(
  AuthGuardRegistry<TContext, TResponse> registry,
  Map<String, TDefinition> definitions, {
  required AuthGuard<TContext, TResponse>? Function(
    String name,
    TDefinition definition,
  )
  buildGuard,
  required Set<String> managed,
  Set<String> preserve = const <String>{},
}) {
  final nextManaged = <String>{};
  definitions.forEach((name, definition) {
    final trimmed = name.trim();
    if (trimmed.isEmpty) {
      return;
    }
    final guard = buildGuard(trimmed, definition);
    if (guard == null) {
      return;
    }
    registry.register(trimmed, guard);
    nextManaged.add(trimmed);
  });

  syncManagedGuards<TContext, TResponse>(
    registry,
    managed: managed,
    nextManaged: nextManaged,
    preserve: preserve,
  );
  return nextManaged;
}