Refactor event bus and queue system; detect cycles in DI realization and make
Some checks failed
continuous-integration/drone/push Build is failing

This commit is contained in:
2022-01-26 19:37:54 -06:00
parent 506fb55c74
commit 6d1cf18680
69 changed files with 1673 additions and 720 deletions

View File

@@ -5,5 +5,5 @@ import {ModelEvent} from './ModelEvent'
* Event fired right after a model is inserted.
*/
export class ModelCreatedEvent<T extends Model<T>> extends ModelEvent<T> {
eventName = '@extollo/lib.ModelCreatedEvent'
}

View File

@@ -5,5 +5,5 @@ import {ModelEvent} from './ModelEvent'
* Event fired right before a model is inserted.
*/
export class ModelCreatingEvent<T extends Model<T>> extends ModelEvent<T> {
eventName = '@extollo/lib.ModelCreatingEvent'
}

View File

@@ -5,5 +5,5 @@ import {ModelEvent} from './ModelEvent'
* Event fired right after a model is deleted.
*/
export class ModelDeletedEvent<T extends Model<T>> extends ModelEvent<T> {
eventName = '@extollo/lib.ModelDeletedEvent'
}

View File

@@ -5,5 +5,5 @@ import {ModelEvent} from './ModelEvent'
* Event fired right before a model is deleted.
*/
export class ModelDeletingEvent<T extends Model<T>> extends ModelEvent<T> {
eventName = '@extollo/lib.ModelDeletingEvent'
}

View File

@@ -1,31 +1,19 @@
import {Model} from '../Model'
import {Event} from '../../../event/Event'
import {JSONState} from '../../../util'
import {BaseEvent} from '../../../support/bus'
import {Awaitable} from '../../../util'
/**
* Base class for events that concern an instance of a model.
* @fixme support serialization
*/
export abstract class ModelEvent<T extends Model<T>> extends Event {
/**
* The instance of the model.
*/
public instance!: T
export abstract class ModelEvent<T extends Model<T>> extends BaseEvent {
constructor(
instance?: T,
public readonly instance: T,
) {
super()
if ( instance ) {
this.instance = instance
}
}
// TODO implement serialization here
dehydrate(): Promise<JSONState> {
return Promise.resolve({})
}
rehydrate(/* state: JSONState */): void | Promise<void> {
return undefined
shouldBroadcast(): Awaitable<boolean> {
return false
}
}

View File

@@ -5,5 +5,5 @@ import {ModelEvent} from './ModelEvent'
* Event fired right after a model's data is loaded from the source.
*/
export class ModelRetrievedEvent<T extends Model<T>> extends ModelEvent<T> {
eventName = '@extollo/lib.ModelRetrievedEvent'
}

View File

@@ -5,5 +5,5 @@ import {ModelEvent} from './ModelEvent'
* Event fired right after a model is persisted to the source.
*/
export class ModelSavedEvent<T extends Model<T>> extends ModelEvent<T> {
eventName = '@extollo/lib.ModelSavedEvent'
}

View File

@@ -5,5 +5,5 @@ import {ModelEvent} from './ModelEvent'
* Event fired right before a model is persisted to the source.
*/
export class ModelSavingEvent<T extends Model<T>> extends ModelEvent<T> {
eventName = '@extollo/lib.ModelSavingEvent'
}

View File

@@ -5,5 +5,5 @@ import {ModelEvent} from './ModelEvent'
* Event fired right after a model's data is updated.
*/
export class ModelUpdatedEvent<T extends Model<T>> extends ModelEvent<T> {
eventName = '@extollo/lib.ModelUpdatedEvent'
}

View File

@@ -5,5 +5,5 @@ import {ModelEvent} from './ModelEvent'
* Event fired right before a model's data is updated.
*/
export class ModelUpdatingEvent<T extends Model<T>> extends ModelEvent<T> {
eventName = '@extollo/lib.ModelUpdatingEvent'
}