( ast: html.Block, bindingParser: BindingParser, errors: ParseError[], placeholder: t.DeferredBlockPlaceholder | null, )
| 264 | } |
| 265 | |
| 266 | function parsePrimaryTriggers( |
| 267 | ast: html.Block, |
| 268 | bindingParser: BindingParser, |
| 269 | errors: ParseError[], |
| 270 | placeholder: t.DeferredBlockPlaceholder | null, |
| 271 | ) { |
| 272 | const triggers: t.DeferredBlockTriggers = {}; |
| 273 | const prefetchTriggers: t.DeferredBlockTriggers = {}; |
| 274 | const hydrateTriggers: t.DeferredBlockTriggers = {}; |
| 275 | |
| 276 | for (const param of ast.parameters) { |
| 277 | // The lexer ignores the leading spaces so we can assume |
| 278 | // that the expression starts with a keyword. |
| 279 | if (WHEN_PARAMETER_PATTERN.test(param.expression)) { |
| 280 | parseWhenTrigger(param, bindingParser, triggers, errors); |
| 281 | } else if (ON_PARAMETER_PATTERN.test(param.expression)) { |
| 282 | parseOnTrigger(param, bindingParser, triggers, errors, placeholder); |
| 283 | } else if (PREFETCH_WHEN_PATTERN.test(param.expression)) { |
| 284 | parseWhenTrigger(param, bindingParser, prefetchTriggers, errors); |
| 285 | } else if (PREFETCH_ON_PATTERN.test(param.expression)) { |
| 286 | parseOnTrigger(param, bindingParser, prefetchTriggers, errors, placeholder); |
| 287 | } else if (HYDRATE_WHEN_PATTERN.test(param.expression)) { |
| 288 | parseWhenTrigger(param, bindingParser, hydrateTriggers, errors); |
| 289 | } else if (HYDRATE_ON_PATTERN.test(param.expression)) { |
| 290 | parseOnTrigger(param, bindingParser, hydrateTriggers, errors, placeholder); |
| 291 | } else if (HYDRATE_NEVER_PATTERN.test(param.expression)) { |
| 292 | parseNeverTrigger(param, hydrateTriggers, errors); |
| 293 | } else { |
| 294 | errors.push(new ParseError(param.sourceSpan, 'Unrecognized trigger')); |
| 295 | } |
| 296 | } |
| 297 | |
| 298 | if (hydrateTriggers.never && Object.keys(hydrateTriggers).length > 1) { |
| 299 | errors.push( |
| 300 | new ParseError( |
| 301 | ast.startSourceSpan, |
| 302 | 'Cannot specify additional `hydrate` triggers if `hydrate never` is present', |
| 303 | ), |
| 304 | ); |
| 305 | } |
| 306 | |
| 307 | return {triggers, prefetchTriggers, hydrateTriggers}; |
| 308 | } |
no test coverage detected
searching dependent graphs…