
@vltpkg/query
The vlt query syntax engine.
Usage · Examples
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().signal
const 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().signal
const 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().signal
const projectRoot = process.cwd()
const graph = await lockfile.load({
mainManifest: 'package.json',
projectRoot,
})
const query = new Query({ graph })
const res = await query.search(':root > *', { signal })