amql-selector 0.0.0-alpha.0

Structural selector parser and matcher for annotation trees
Documentation

amql-selector

CSS-like selector parsing and matching for AQL annotation trees

Role

  • Parses selectors like controller[method="POST"] > handler
  • Matches annotations against compound selectors with combinators
  • Defines shared newtypes: TagName, AttrName
  • Dependency of amql-engine

Features

  • wasm — WASM bindings via wasm_bindgen
  • ts — TypeScript type generation via ts-rs
  • jsonschema — JSON Schema derivation via schemars

Types

  • SelectorAst — parsed selector tree
  • CompoundSelector — tag + attribute predicates
  • Combinator — Child, Descendant, AdjacentSibling, GeneralSibling
  • AttrPredicate — attribute comparison (name, op, value)
  • TagName — opaque newtype for annotation/element tag names
  • AttrName — opaque newtype for attribute keys

Getting Started

use aql_selector::{parse_selector, TagName, AttrName};

let ast = parse_selector("controller[method=\"POST\"] > handler")?;
assert_eq!(ast.compounds.len(), 2);

npm

  • Package: @aql/selector
  • Build: bun run build (wasm-pack + codegen)
  • Types: branded newtypes (TagName, AttrName), generated via ts-rs

License

MIT