Upgrades @novadi/core and refactors dependency registration

Updates package dependencies to latest version of @novadi/core

Simplifies dependency and service registration by removing automatic array resolution of stores, API repositories, and entity services

Adds DateColumnDataSource as a new column data source implementation
This commit is contained in:
Janus C. H. Knudsen 2025-11-18 22:34:12 +01:00
parent cd2466426b
commit 871f5c5682
3 changed files with 9 additions and 17 deletions

View file

@ -63,6 +63,8 @@ import { AllDayLayoutEngine } from './utils/AllDayLayoutEngine';
import { WorkHoursManager } from './managers/WorkHoursManager';
import { EventStackManager } from './managers/EventStackManager';
import { EventLayoutCoordinator } from './managers/EventLayoutCoordinator';
import { IColumnDataSource } from './types/ColumnDataSource';
import { DateColumnDataSource } from './datasources/DateColumnDataSource';
/**
* Handle deep linking functionality after managers are initialized
@ -115,9 +117,6 @@ async function initializeCalendar(): Promise<void> {
builder.registerType(ResourceStore).as<IStore>();
builder.registerType(EventStore).as<IStore>();
// Resolve all IStore implementations and register as array
const stores = container.resolveTypeAll<IStore>();
builder.registerInstance(stores).as<IStore[]>();
// Register storage and repository services
builder.registerType(IndexedDBService).as<IndexedDBService>();
@ -130,21 +129,14 @@ async function initializeCalendar(): Promise<void> {
builder.registerType(ApiCustomerRepository).as<IApiRepository<any>>();
builder.registerType(ApiResourceRepository).as<IApiRepository<any>>();
// Resolve all API repositories and register as array for SyncManager
const apiRepositories = container.resolveTypeAll<IApiRepository<any>>();
builder.registerInstance(apiRepositories).as<IApiRepository<any>[]>();
// Register entity services (sync status management)
builder.registerType(DateColumnDataSource).as<IColumnDataSource>();
// Register entity services (sync status management)
// Open/Closed Principle: Adding new entity only requires adding one line here
builder.registerType(EventService).as<IEntityService<any>>();
builder.registerType(BookingService).as<IEntityService<any>>();
builder.registerType(CustomerService).as<IEntityService<any>>();
builder.registerType(ResourceService).as<IEntityService<any>>();
// Resolve all IEntityService implementations and register as array for SyncManager
const entityServices = container.resolveTypeAll<IEntityService<any>>();
builder.registerInstance(entityServices).as<IEntityService<any>[]>();
// Register IndexedDB repositories (offline-first)
builder.registerType(IndexedDBEventRepository).as<IEventRepository>();