Refactor to enforce strictNullChecks

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.
This commit is contained in:
undergroundwires
2023-11-12 22:54:00 +01:00
parent 7ab16ecccb
commit 949fac1a7c
294 changed files with 2477 additions and 2738 deletions

View File

@@ -9,34 +9,37 @@ describe('NonCollapsingDirective', () => {
// arrange
const element = createElementMock();
// act
NonCollapsing.mounted(element, undefined, undefined, undefined);
if (!NonCollapsing.mounted) {
throw new Error('expected hook is missing');
}
NonCollapsing.mounted(element, undefined as never, undefined as never, undefined as never);
// assert
expect(element.hasAttribute(expectedAttributeName));
});
});
describe('hasDirective', () => {
it('returns true if the element has expected attribute', () => {
it('returns `true` if the element has expected attribute', () => {
// arrange
const element = createElementMock();
element.setAttribute(expectedAttributeName, undefined);
element.setAttribute(expectedAttributeName, '');
// act
const actual = hasDirective(element);
// assert
expect(actual).to.equal(true);
});
it('returns true if the element has a parent with expected attribute', () => {
it('returns `true` if the element has a parent with expected attribute', () => {
// arrange
const parent = createElementMock();
const element = createElementMock();
parent.appendChild(element);
element.setAttribute(expectedAttributeName, undefined);
element.setAttribute(expectedAttributeName, '');
// act
const actual = hasDirective(element);
// assert
expect(actual).to.equal(true);
});
it('returns false if nor the element or its parent has expected attribute', () => {
it('returns `false` if nor the element or its parent has expected attribute', () => {
// arrange
const element = createElementMock();
// act