UNPKG

@dancing-ninjas/project-euler-helper-kit

Version:

Dancing Ninjas Project Euler helpers + constrained telemetry strategies compatible with npmjs.org-only egress.

29 lines (23 loc) 935 B
import fs from 'fs'; import readline from 'readline'; const input = process.argv[2]; const out = process.argv[3] || 'telemetry/events.ndjson'; const pkg = process.argv[4]; if (!input || !pkg) { console.error('Usage: node scripts/npmjs-proxy-logs-to-events.mjs <infile> <outfile> <package>'); process.exit(1); } const rl = readline.createInterface({ input: fs.createReadStream(input, { encoding: 'utf8' }) }); const outStream = fs.createWriteStream(out, { flags: 'a' }); function parse(line) { const req = line.match(/"GET ([^ ]+) HTTP/); if (!req) return null; const path = req[1]; if (!path.includes(pkg.split('/').pop()) || !path.endsWith('.tgz')) return null; const t = line.match(/\[(.*?)\]/); return { at: new Date().toISOString(), path }; } rl.on('line', line => { const ev = parse(line); if (ev) outStream.write(JSON.stringify({ kind: 'download', at: ev.at, pkg, http: { path: ev.path } }) + '\n'); });