{"adoption": {"forks": 33, "observed_at": "2026-08-28T04:03:23.879823+00:00", "stars": 1053}, "canonical_url": "https://ross.abutalabs.com/products/tsquery", "card": {"archived": false, "artifact_type": "library", "description": "TypeScript AST query library", "domain": ["developer-tools", "parsers", "programming-languages"], "enriched": true, "function": ["parser", "search-engine", "developer-tools"], "health_score": 66, "homepage": null, "language": "TypeScript", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["phenomnomnominal/tsquery"], "name": "phenomnomnominal/tsquery", "platform": ["cross-platform"], "pushed_at": "2026-04-06T22:57:35+00:00", "repo": "phenomnomnominal/tsquery", "stars": 1053, "tags": ["ast", "typescript-ast", "css-selectors", "code-analysis", "esquery", "static-analysis", "code-search", "nodejs", "typescript"], "topics": [], "urls": [], "use_cases": ["find all identifiers named X in a TypeScript file", "query TypeScript AST with CSS-like selectors", "write custom lint rules that match syntax patterns", "search code for specific AST node patterns", "extract class declarations or function signatures from TypeScript source", "build codemods that select nodes to transform"], "what_it_is": "TSQuery is a TypeScript library that ports the ESQuery API to TypeScript, letting you query a TypeScript AST using CSS-style selectors. It supports node type selectors, attribute matching, combinators, and pseudo-classes for pattern-based syntax matching.", "when_to_avoid": ["you need to query JavaScript or other languages' ASTs (use ESQuery or a language-specific tool)", "you need full TypeScript type information rather than syntax patterns", "you want a GUI-based code search tool"], "when_to_choose": ["you need pattern-based searching over TypeScript source code", "you're building linting, refactoring, or codemod tooling on the TypeScript compiler API", "you already know ESQuery or CSS selectors and want the same ergonomics for TS ASTs"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/tsquery", "repo": "phenomnomnominal/tsquery", "role": "main", "score": 66}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:03:23.879823+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T06:59:22.996385+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d19d05e6e1dba9fb37a7653a1a39f51db324b844d8dde9767c5cc224691b27d7", "fetched_at": "2026-08-28T04:03:23.879823+00:00", "kind": "readme", "missing": false, "url": "https://github.com/phenomnomnominal/tsquery"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:03:23.879823+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T06:59:22.996385+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d19d05e6e1dba9fb37a7653a1a39f51db324b844d8dde9767c5cc224691b27d7", "fetched_at": "2026-08-28T04:03:23.879823+00:00", "kind": "readme", "missing": false, "url": "https://github.com/phenomnomnominal/tsquery"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T06:59:22.996385+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d19d05e6e1dba9fb37a7653a1a39f51db324b844d8dde9767c5cc224691b27d7", "fetched_at": "2026-08-28T04:03:23.879823+00:00", "kind": "readme", "missing": false, "url": "https://github.com/phenomnomnominal/tsquery"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:03:23.879823+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:03:23.879823+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:03:23.879823+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T06:59:22.996385+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d19d05e6e1dba9fb37a7653a1a39f51db324b844d8dde9767c5cc224691b27d7", "fetched_at": "2026-08-28T04:03:23.879823+00:00", "kind": "readme", "missing": false, "url": "https://github.com/phenomnomnominal/tsquery"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:03:23.879823+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:03:23.879823+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T06:59:22.996385+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d19d05e6e1dba9fb37a7653a1a39f51db324b844d8dde9767c5cc224691b27d7", "fetched_at": "2026-08-28T04:03:23.879823+00:00", "kind": "readme", "missing": false, "url": "https://github.com/phenomnomnominal/tsquery"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:03:23.879823+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:03:23.879823+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:03:23.879823+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T06:59:22.996385+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d19d05e6e1dba9fb37a7653a1a39f51db324b844d8dde9767c5cc224691b27d7", "fetched_at": "2026-08-28T04:03:23.879823+00:00", "kind": "readme", "missing": false, "url": "https://github.com/phenomnomnominal/tsquery"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:03:23.879823+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:03:23.879823+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T06:59:22.996385+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d19d05e6e1dba9fb37a7653a1a39f51db324b844d8dde9767c5cc224691b27d7", "fetched_at": "2026-08-28T04:03:23.879823+00:00", "kind": "readme", "missing": false, "url": "https://github.com/phenomnomnominal/tsquery"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T06:59:22.996385+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d19d05e6e1dba9fb37a7653a1a39f51db324b844d8dde9767c5cc224691b27d7", "fetched_at": "2026-08-28T04:03:23.879823+00:00", "kind": "readme", "missing": false, "url": "https://github.com/phenomnomnominal/tsquery"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T06:59:22.996385+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d19d05e6e1dba9fb37a7653a1a39f51db324b844d8dde9767c5cc224691b27d7", "fetched_at": "2026-08-28T04:03:23.879823+00:00", "kind": "readme", "missing": false, "url": "https://github.com/phenomnomnominal/tsquery"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T06:59:22.996385+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d19d05e6e1dba9fb37a7653a1a39f51db324b844d8dde9767c5cc224691b27d7", "fetched_at": "2026-08-28T04:03:23.879823+00:00", "kind": "readme", "missing": false, "url": "https://github.com/phenomnomnominal/tsquery"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 76, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": ["no_releases"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 3056, "days_push": 149, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 66, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}