This commit applies `strictNullChecks` to the entire codebase to improve maintainability and type safety. Key changes include: - Remove some explicit null-checks where unnecessary. - Add necessary null-checks. - Refactor static factory functions for a more functional approach. - Improve some test names and contexts for better debugging. - Add unit tests for any additional logic introduced. - Refactor `createPositionFromRegexFullMatch` to its own function as the logic is reused. - Prefer `find` prefix on functions that may return `undefined` and `get` prefix for those that always return a value.
26 lines
798 B
TypeScript
26 lines
798 B
TypeScript
import { EventSource } from '@/infrastructure/Events/EventSource';
|
|
import { IEventSource } from '@/infrastructure/Events/IEventSource';
|
|
import { FunctionKeys } from '@/TypeHelpers';
|
|
|
|
export abstract class StubWithObservableMethodCalls<T> {
|
|
public readonly callHistory = new Array<MethodCall<T>>();
|
|
|
|
public get methodCalls(): IEventSource<MethodCall<T>> {
|
|
return this.notifiableMethodCalls;
|
|
}
|
|
|
|
private readonly notifiableMethodCalls = new EventSource<MethodCall<T>>();
|
|
|
|
protected registerMethodCall(name: MethodCall<T>) {
|
|
this.callHistory.push(name);
|
|
this.notifiableMethodCalls.notify(name);
|
|
}
|
|
}
|
|
|
|
type MethodCall<T> = {
|
|
[K in FunctionKeys<T>]: {
|
|
readonly methodName: K;
|
|
readonly args: T[K] extends (...args: infer A) => unknown ? A : never;
|
|
}
|
|
}[FunctionKeys<T>];
|