This commit upgrades TypeScript to the latest version 5.3 and introduces `verbatimModuleSyntax` in line with the official Vue guide recommendatinos (vuejs/docs#2592). By enforcing `import type` for type-only imports, this commit improves code clarity and supports tooling optimization, ensuring imports are only bundled when necessary for runtime. Changes: - Bump TypeScript to 5.3.3 across the project. - Adjust import statements to utilize `import type` where applicable, promoting cleaner and more efficient code.
36 lines
902 B
TypeScript
36 lines
902 B
TypeScript
import type { IEventSubscription } from '@/infrastructure/Events/IEventSource';
|
|
|
|
export class EventSubscriptionStub implements IEventSubscription {
|
|
private currentState = SubscriptionState.Subscribed;
|
|
|
|
public get isUnsubscribed(): boolean {
|
|
return this.currentState === SubscriptionState.Unsubscribed;
|
|
}
|
|
|
|
public get isSubscribed(): boolean {
|
|
return this.currentState === SubscriptionState.Subscribed;
|
|
}
|
|
|
|
private readonly onUnsubscribe = new Array<UnsubscribeCallback>();
|
|
|
|
constructor(unsubscribeCallback?: UnsubscribeCallback) {
|
|
if (unsubscribeCallback) {
|
|
this.onUnsubscribe.push(unsubscribeCallback);
|
|
}
|
|
}
|
|
|
|
unsubscribe(): void {
|
|
for (const callback of this.onUnsubscribe) {
|
|
callback();
|
|
}
|
|
this.currentState = SubscriptionState.Unsubscribed;
|
|
}
|
|
}
|
|
|
|
type UnsubscribeCallback = () => void;
|
|
|
|
enum SubscriptionState {
|
|
Subscribed,
|
|
Unsubscribed,
|
|
}
|