parses and executes a tiny subset of splunk SPL on in-memory data.
usable via browser UI, CLI, and library import.
this is a toy project for fun
npx caveql --helprun a query on a file:
npx caveql -i ./sample/population.json "usa | stats max(value)"run a query not on a file:
npx caveql "| makeresults count=10 | streamstats count as x | eval y=x*x"pnpm add caveqlimport { parseQuery, compileQuery } from "caveql";
const parsed = parseQuery("usa | stats max(value)");
const run = compileQuery(parsed.ast);
const result = run([
{ country: "usa", value: 100 },
{ country: "can", value: 200 },
]);
for (const record of result) {
console.log(record);
}setup:
- install nvm
- switch node version:
nvm install - enable corepack:
corepack enable - install dependencies:
pnpm i
build: pnpm build
dev server: pnpm dev