(segment: string)
| 136 | } |
| 137 | |
| 138 | function parseSelector(segment: string): Selector { |
| 139 | const raw = segment.trim(); |
| 140 | if (!raw) throw new AppError('INVALID_ARGS', 'Selector segment cannot be empty'); |
| 141 | const tokens = tokenize(raw); |
| 142 | if (tokens.length === 0) { |
| 143 | throw new AppError('INVALID_ARGS', `Invalid selector segment: ${segment}`); |
| 144 | } |
| 145 | return { raw, terms: tokens.map(parseTerm) }; |
| 146 | } |
| 147 | |
| 148 | function parseTerm(token: string): SelectorTerm { |
| 149 | const normalized = token.trim(); |
no test coverage detected