in parseRuleData.ts [290:323]
async function precomputeRuleSummaries() {
const ruleSummaries: RuleSummary[] = [];
const tagSummaries = new Map<string, TagSummary>();
fs.mkdirSync(RULES_OUTPUT_PATH, { recursive: true });
await getPrebuiltDetectionRules(ruleSummaries, tagSummaries);
console.log(`loaded ${ruleSummaries.length} rules`);
console.log(`example rule:`);
console.log(ruleSummaries[0]);
console.log(`found ${tagSummaries.size} tags`);
console.log(`example tag:`);
console.log(tagSummaries.get('Data Source: APM'));
const newestRules = ruleSummaries.sort(
(a, b) => b.updated_date.getTime() - a.updated_date.getTime()
);
console.log(
`Parsed ${newestRules.length} rules. Newest rule is '${newestRules[0].name}', updated '${newestRules[0].updated_date}'.`
);
fs.writeFileSync('./src/data/newestRules.json', JSON.stringify(newestRules));
const popularTags = Array.from(tagSummaries.values()).sort(
(a, b) => b.count - a.count
);
console.log(
`Parsed ${popularTags.length} tags. Most popular tag is '${popularTags[0].tag_full}' with '${popularTags[0].count}' rules.`
);
fs.writeFileSync('./src/data/tagSummaries.json', JSON.stringify(popularTags));
}