The vlt query syntax engine.
Usage
import { Query } from '@vltpkg/query'
const query = new Query({ nodes, specOptions, securityArchive })const res = await query.search(':root > *')
Examples
Querying against an ideal/virtual graph
import { ideal } from '@vltpkg/graph'import { Query } from '@vltpkg/query'import { PackageJson } from '@vltpkg/package-json'const signal = new AbortController().signalconst projectRoot = process.cwd()const packageJson = new PackageJson()const graph = await ideal.build({ projectRoot, packageJson })const query = new Query({ graph })const res = await query.search(':root > *', { signal })
Querying against a local node_modules
folder
import { actual } from '@vltpkg/graph'import { Query } from '@vltpkg/query'import { PackageJson } from '@vltpkg/package-json'import { PathScurry } from 'path-scurry'const signal = new AbortController().signalconst projectRoot = process.cwd()const scurry = new PathScurry(projectRoot)const packageJson = new PackageJson()const graph = await actual.load({ projectRoot, packageJson, scurry })const query = new Query({ graph })const res = await query.search(':root > *', { signal })
Querying against a lockfile
import { lockfile } from '@vltpkg/graph'import { Query } from '@vltpkg/query'const signal = new AbortController().signalconst projectRoot = process.cwd()const graph = await lockfile.load({ mainManifest: 'package.json', projectRoot,})const query = new Query({ graph })const res = await query.search(':root > *', { signal })