11import { getQuotePairMap } from './utils'
22
3- // types
3+ const RESET = 'RESET'
4+ const IN_OPERAND = 'IN_OPERAND'
5+ const IN_TEXT = 'IN_TEXT'
6+ const SINGLE_QUOTE = 'SINGLE_QUOTE'
7+ const DOUBLE_QUOTE = 'DOUBLE_QUOTE'
8+
49type State = typeof RESET | typeof IN_OPERAND | typeof IN_TEXT
510type QuoteState = typeof RESET | typeof SINGLE_QUOTE | typeof DOUBLE_QUOTE
611type Keyword = Exclude < string , 'exclude' >
@@ -12,13 +17,6 @@ type ParsedQuery = Record<string, any> & {
1217 exclude : Record < string , Value [ ] >
1318}
1419
15- // state tokens
16- const RESET = 'RESET'
17- const IN_OPERAND = 'IN_OPERAND'
18- const IN_TEXT = 'IN_TEXT'
19- const SINGLE_QUOTE = 'SINGLE_QUOTE'
20- const DOUBLE_QUOTE = 'DOUBLE_QUOTE'
21-
2220/**
2321 * AdvancedSearchQuery is a parsed search string which allows you to fetch conditions
2422 * and text being searched.
@@ -40,15 +38,14 @@ export default class AdvancedSearchQuery {
4038 }
4139
4240 /**
43- * @param {String } str to parse e.g. 'to:me -from:joe@acme.com foobar'.
41+ * @param {String } string to parse e.g. 'to:me -from:joe@acme.com foobar'.
4442 * @param {Array } transformTextToConditions Array of functions to transform text into conditions
4543 * @returns {AdvancedSearchQuery } An instance of this class AdvancedSearchQuery.
4644 */
4745 static parse (
48- str ? : string | null ,
46+ string : string = '' ,
4947 transformTextToConditions : Transformer [ ] = [ ]
5048 ) {
51- if ( ! str ) str = ''
5249 const conditionArray : Condition [ ] = [ ]
5350 const textSegments : TextSegment [ ] = [ ]
5451
@@ -104,10 +101,10 @@ export default class AdvancedSearchQuery {
104101
105102 performReset ( )
106103
107- const quotePairMap = getQuotePairMap ( str )
104+ const quotePairMap = getQuotePairMap ( string )
108105
109- for ( let i = 0 ; i < str . length ; i ++ ) {
110- const char = str [ i ]
106+ for ( let i = 0 ; i < string . length ; i ++ ) {
107+ const char = string [ i ]
111108 if ( char === ' ' ) {
112109 if ( inOperand ( ) ) {
113110 if ( inQuote ( ) ) {
0 commit comments