UNPKG

redos-detector

Version:

A CLI and library which tests helps score how vulnerable a regex pattern is to ReDoS attacks. Supported in the browser, Node and Deno.

46 lines (45 loc) 1.76 kB
import { StackGroupEntry } from '../nodes/group'; import { StackQuantifierEntry } from '../nodes/quantifier'; import { CharacterClass, CharacterClassEscape, Dot, Reference, UnicodePropertyEscape, Value } from 'regjsparser'; import { CharacterGroups } from '../character-groups'; import { MyRootNode } from '../parse'; import { Reader } from '../reader'; export declare const characterReaderTypeCharacterEntry: unique symbol; export declare const characterReaderTypeSplit: unique symbol; export type CharacterReaderValueSplitSubType = 'lookahead' | 'lookbehind' | 'negativeLookahead' | 'negativeLookbehind' | null; export type CharacterReaderValueSplit = Readonly<{ reader: () => CharacterReader; subType: CharacterReaderValueSplitSubType; type: typeof characterReaderTypeSplit; }>; export type StackEntry = StackGroupEntry | StackQuantifierEntry; export type Stack = readonly StackEntry[]; export type CharacterReaderValueGroups = Readonly<{ stack: Stack; type: typeof characterReaderTypeCharacterEntry; } & ({ characterGroups: CharacterGroups; node: CharacterClass | CharacterClassEscape | Dot | UnicodePropertyEscape | Value; subType: 'groups'; } | { node: Reference; referenceIndex: number; subType: 'reference'; } | { bounded: boolean; offset: number; subType: 'end'; } | { offset: number; subType: 'null'; } | { offset: number; subType: 'start'; })>; export type CharacterReaderValue = CharacterReaderValueGroups | CharacterReaderValueSplit; export type CharacterReader = Reader<CharacterReaderValue>; export declare function buildCharacterReader({ caseInsensitive, dotAll, node, }: { caseInsensitive: boolean; dotAll: boolean; node: MyRootNode; }): CharacterReader;