in src/server.ts [61:121]
displayName: removeMeta(bug.summary),
release: bug.cf_fx_iteration.split(".")[0],
}));
}
} catch (e) {
// Don't update if the data is bad
}
}
res.send(metasCache.data);
});
const iterationsCache = new ServerCache({
name: "Iterations",
maxAge: { days: 1 },
});
app.get("/api/iterations", async (req, res) => {
if (iterationsCache.isExpired() || req.query.force) {
try {
const iterationsLookup = await fetchIterations();
if (iterationsLookup) {
iterationsCache.data = iterationsLookup;
}
} catch (e) {
// Don't update if the data is bad
}
}
res.send(iterationsCache.data);
});
const releasesCache = new ServerCache({
name: "Releases",
maxAge: { hours: 6 },
});
app.get("/api/releases", async (req, res) => {
if (releasesCache.isExpired() || req.query.force) {
try {
const releases = await fetchReleaseData();
if (releases && releases.beta.date && releases.release.date) {
releasesCache.data = releases;
}
} catch (e) {
// Don't update if the data is bad
}
}
res.send(releasesCache.data);
});
const teamsCache = new ServerCache({
name: "Teams",
maxAge: { days: 1 },
// Refresh before triage meeting to ensure triage owner is up-to-date. The
// triage owner on Bugzilla is synced with Google Calendar every weekday at
// 12:00 UTC, so we refresh on Mondays at 12:30 UTC.
interval: { weekday: "monday", hour: 12, minute: 30 },
});
app.get("/api/teams", async (req, res) => {
if (teamsCache.isExpired() || req.query.force) {
try {
let detailedTeams: { [key: string]: any[] } = {};
for (const team of Object.keys(teams)) {
try {