daydata = {
const data = [];
const min = new Date("2015-01-01");
const max = d3.utcDay();
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.utcDay.offset(end, -1))}${name ? `/${encodeURIComponent(name)}`: ``}`);
for (const {downloads: value, day: date} of batch.downloads.reverse()) {
data.push({date: new Date(date), value});
}
for (let i = data.length - 1; i >= 0; --i) {
if (data[i].value > 0) {
yield data.slice(data[0].value > 0 ? 0 : 1, i + 1).reverse();
break;
}
}
} catch {
return;
}
}
}