Skip to content

Commit

Permalink
fix: fix addAllIfAbsent utility method
Browse files Browse the repository at this point in the history
  • Loading branch information
francescovallone committed Aug 3, 2024
1 parent 61e8010 commit 049624b
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 11 deletions.
11 changes: 10 additions & 1 deletion packages/serinus/lib/src/adapters/http_adapter.dart
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,16 @@ import '../core/core.dart';
import '../http/internal_request.dart';
import 'server_adapter.dart';

/// The [RequestCallback] type is used to define the request callback.
/// The [HttpAdapter] class is used to create an HTTP server adapter.
///
/// It extends the [Adapter] class and allows the developer to define the host, port, and powered by header.
///
/// The class must be extended and the [init], [close], and [listen] methods must be implemented.
///
/// Properties:
/// - [host]: The host of the server.
/// - [port]: The port of the server.
/// - [poweredByHeader]: The powered by header.
abstract class HttpAdapter<TServer> extends Adapter<TServer> {
/// The [host] property contains the host of the server.
final String host;
Expand Down
16 changes: 7 additions & 9 deletions packages/serinus/lib/src/containers/module_container.dart
Original file line number Diff line number Diff line change
Expand Up @@ -63,35 +63,33 @@ final class ModulesContainer {
Future<void> registerModule(Module module, Type entrypoint,
[ModuleInjectables? moduleInjectables]) async {
final token = moduleToken(module);
final initializedModule = await module.registerAsync(config);
final initializedModule = _modules[token] = await module.registerAsync(config);
if (initializedModule.runtimeType == entrypoint &&
initializedModule.exports.isNotEmpty) {
throw InitializationError('The entrypoint module cannot have exports');
}
_modules[token] = initializedModule;
if (_moduleInjectables[token] != null) {
_moduleInjectables[token] =
moduleInjectables!.concatTo(_moduleInjectables[token]);
_providers[token] = [];
if (_moduleInjectables.containsKey(token)) {
_moduleInjectables[token] = moduleInjectables!.concatTo(_moduleInjectables[token]);
} else {
final newInjectables = ModuleInjectables(
middlewares: {...module.middlewares},
);
_moduleInjectables[token] =
moduleInjectables?.concatTo(newInjectables) ?? newInjectables;
}
_providers[token] = [];
final split = initializedModule.providers.splitBy<DeferredProvider>();
for (final provider in split.notOfType) {
await initIfUnregistered(provider);
_moduleInjectables[token] = _moduleInjectables[token]!.copyWith(
providers: {..._moduleInjectables[token]!.providers, provider},
);
if (provider.isGlobal) {
globalProviders.add(provider);
} else {
_providers[token]?.add(provider);
}
}
_moduleInjectables[token] = _moduleInjectables[token]!.copyWith(
providers: {..._moduleInjectables[token]!.providers, ...split.notOfType},
);
_deferredProviders[token] = split.ofType;
logger.info(
'${initializedModule.runtimeType}${initializedModule.token.isNotEmpty ? '(${initializedModule.token})' : ''} dependencies initialized');
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ extension AddIfAbsent<T> on Iterable<T> {
final elementsType = map((e) => e.runtimeType);
final currentElements = [...this];
for(final element in elements) {
if (elementsType.contains(element.runtimeType)) {
if (!elementsType.contains(element.runtimeType)) {
currentElements.add(element);
}
}
Expand Down

0 comments on commit 049624b

Please sign in to comment.