From eeea443de6b98181c706a1de74addc209c43059b Mon Sep 17 00:00:00 2001 From: Pieter Vander Vennet Date: Fri, 23 Aug 2024 11:44:19 +0200 Subject: [PATCH] Typing: make 'and' and 'or' in TagsFilter readonly --- src/Logic/Tags/And.ts | 14 +++++++------- src/Logic/Tags/Or.ts | 10 +++++----- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/Logic/Tags/And.ts b/src/Logic/Tags/And.ts index 86dab36702..ef61d861a5 100644 --- a/src/Logic/Tags/And.ts +++ b/src/Logic/Tags/And.ts @@ -9,23 +9,23 @@ import ComparingTag from "./ComparingTag" import { FlatTag, OptimizedTag, TagsFilterClosed, TagTypes } from "./TagTypes" export class And extends TagsFilter { - public and: TagsFilter[] + public and: ReadonlyArray - constructor(and: TagsFilter[]) { + constructor(and: ReadonlyArray) { super() this.and = and } - public static construct(and: TagsFilter[]): TagsFilter - public static construct(and: (FlatTag | (Or & OptimizedTag))[]): TagsFilterClosed & OptimizedTag - public static construct(and: TagsFilter[]): TagsFilter { + public static construct(and: ReadonlyArray): TagsFilter + public static construct(and: ReadonlyArray<(FlatTag | (Or & OptimizedTag))>): TagsFilterClosed & OptimizedTag + public static construct(and: ReadonlyArray< TagsFilter>): TagsFilter { if (and.length === 1) { return and[0] } return new And(and) } - private static combine(filter: string, choices: string[]): string[] { + private static combine(filter: string, choices: ReadonlyArray< string>): string[] { const values = [] for (const or of choices) { values.push(filter + or) @@ -443,7 +443,7 @@ export class And extends TagsFilter { if (containedOrs.length === 1) { newAnds.push(containedOrs[0]) } else if (containedOrs.length > 1) { - let commonValues: TagsFilter[] = containedOrs[0].or + let commonValues: TagsFilter[] = [...(containedOrs[0].or)] for (let i = 1; i < containedOrs.length && commonValues.length > 0; i++) { const containedOr = containedOrs[i] commonValues = commonValues.filter((cv) => diff --git a/src/Logic/Tags/Or.ts b/src/Logic/Tags/Or.ts index e809efe581..8ddebc2095 100644 --- a/src/Logic/Tags/Or.ts +++ b/src/Logic/Tags/Or.ts @@ -10,17 +10,17 @@ import ComparingTag from "./ComparingTag" import { FlatTag, OptimizedTag, TagsFilterClosed, TagTypes } from "./TagTypes" export class Or extends TagsFilter { - public or: TagsFilter[] + public or: ReadonlyArray - constructor(or: TagsFilter[]) { + constructor(or: ReadonlyArray) { super() this.or = or } - public static construct(or: TagsFilter[]): TagsFilter + public static construct(or: ReadonlyArray): TagsFilter public static construct(or: [T]): T public static construct(or: ((And & OptimizedTag) | FlatTag)[]): TagsFilterClosed & OptimizedTag - public static construct(or: TagsFilter[]): TagsFilter { + public static construct(or: ReadonlyArray): TagsFilter { if (or.length === 1) { return or[0] } @@ -264,7 +264,7 @@ export class Or extends TagsFilter { if (containedAnds.length === 1) { newOrs.push(containedAnds[0]) } else if (containedAnds.length > 1) { - let commonValues: TagsFilter[] = containedAnds[0].and + let commonValues: TagsFilter[] = [...(containedAnds[0].and)] for (let i = 1; i < containedAnds.length && commonValues.length > 0; i++) { const containedAnd = containedAnds[i] commonValues = commonValues.filter((cv) =>