in functions/src/report.ts [437:492]
export async function MakeRepoTimeSeries(
org: string,
repo: string,
field: string,
points: number,
daysBetween: number = 1
): Promise<report.RepoTimeSeries> {
const result: report.RepoTimeSeries = {
org,
repo,
field,
data: {}
};
const now = new Date();
for (let i = 0; i < points; i++) {
// Always start at day now-1 because we don't always have today's report
const diff = (1 + i * daysBetween) * DAY_MS;
const pointDate = new Date(now.getTime() - diff);
const dateSlug = util.DateSlug(pointDate);
const snapshot = await snap.FetchRepoSnapshot(org, repo, pointDate);
if (!snapshot) {
console.warn(`Could not fetch data for ${repo} on ${dateSlug}`);
continue;
}
let val: number;
switch (field) {
case "open_issues_count":
case "open_issues":
val = snapshot.open_issues_count;
break;
case "closed_issues_count":
case "closed_issues":
val = snapshot.closed_issues_count;
break;
case "stargazers_count":
case "stars_count":
case "stars":
val = snapshot.stargazers_count;
break;
case "sam":
case "samscore":
case "sam_score":
val = ComputeSAMScore(snapshot);
break;
default:
throw `Invalid field: ${field}`;
}
result.data[dateSlug] = val;
}
return result;
}