data0 = {
const data = Object.assign([], { y: "daily downloads" });
const min = new Date(2015, 0, 1);
const max = d3.utcDay(new Date());
let start = max;
let end;
while (start > min) {
end = start;
start = d3.utcDay.offset(start, -365);
if (start < min) start = min;
try {
const batch = await d3.json(
`https://api.npmjs.org/downloads/range/${formatDate(
start
)}:${formatDate(d3.timeDay.offset(end, -1))}${
name ? `/${encodeURIComponent(name)}` : ``
}`
);
for (const { downloads: value, day: date } of batch.downloads.reverse()) {
if (value > 0) {
data.push({ date: new Date(date), value });
}
}
yield data;
} catch {
return;
}
}
}