diff --git a/browser/queryan.ts b/browser/queryan.ts index 3561511..782ea7a 100644 --- a/browser/queryan.ts +++ b/browser/queryan.ts @@ -1,7 +1,8 @@ import { complement, isEmpty, remove } from "./helpers.js"; -type Token = [string, number]; -type Tokens = Token[]; +export type Token = [string, number]; +export type Tokens = Token[]; +type Predicate = (_: any) => boolean; // Add to stop TS from complaining. const T = (...args: any) => true; @@ -10,7 +11,7 @@ const isOrToken = (token: Token): boolean => const isNotToken = (token: Token): boolean => Boolean(token && token[0] === "not"); const isWhitespaceToken = ([token]: Token): boolean => /^\s/.test(token); -const isTextToken = complement(isWhitespaceToken); +const isTextToken = complement(isWhitespaceToken) as (token: Token) => boolean; const isLeftOfOr = ([, index]: Token, tokens: Tokens): boolean => isOrToken(tokens[index + 2]); const isRightOfOr = ([, index]: Token, tokens: Tokens): boolean => @@ -108,8 +109,6 @@ function stringify(tokens: Tokens): string { return tokens.map(tokenValue).join(""); } -type Predicate = (_: any) => boolean; - const or = (before: Predicate, token: Predicate) => (issue: string) => before(issue) || token(issue); const and = (before: Predicate, token: Predicate) => (issue: string) =>