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.
32 lines
941 B
TypeScript
32 lines
941 B
TypeScript
import { NodeMetadata } from '../NodeContent/NodeMetadata';
|
|
import { ReadOnlyTreeNode } from '../TreeView/Node/TreeNode';
|
|
import { TreeInputNodeData } from '../TreeView/Bindings/TreeInputNodeData';
|
|
|
|
export function getNodeMetadata(
|
|
treeNode: ReadOnlyTreeNode,
|
|
): NodeMetadata {
|
|
const data = treeNode.metadata as NodeMetadata;
|
|
if (!data) {
|
|
throw new Error('Provided node does not contain the expected metadata.');
|
|
}
|
|
return data;
|
|
}
|
|
|
|
export function convertToNodeInput(metadata: NodeMetadata): TreeInputNodeData {
|
|
return {
|
|
id: metadata.id,
|
|
children: convertChildren(metadata.children, convertToNodeInput),
|
|
data: metadata,
|
|
};
|
|
}
|
|
|
|
function convertChildren<TOldNode, TNewNode>(
|
|
oldChildren: readonly TOldNode[] | undefined,
|
|
callback: (value: TOldNode) => TNewNode,
|
|
): TNewNode[] {
|
|
if (!oldChildren || oldChildren.length === 0) {
|
|
return [];
|
|
}
|
|
return oldChildren.map((childNode) => callback(childNode));
|
|
}
|