feat: add Punishing: Gray Raven with karendar.com source
Add karendar.com as the event source for Punishing: Gray Raven (PGR). Karendar publishes a dedicated Global event calendar with exact UTC timestamps in clean server-rendered HTML. - Register 'pgr' in GameId and GAMES registry (#CC292B, Kuro Games). - Add parseWeekdayDayMonthYearUtc in src/ingest/dates.ts with unit tests. - Implement karendarParser in src/ingest/parsers/karendar.ts reading 'week', 'ongoing', and 'upcoming' sections, mapping indefinite/permanent ends to endsAt: null, and categorizing tags to EventType. - Register pgr-karendar-events in src/ingest/adapters/index.ts. - Add pinned fixture, expected output, and comprehensive test suites. - Update documentation in AGENTS.md, README.md, docs/INGESTION.md, and docs/SOURCES.md.
This commit is contained in:
1 parent
2d6299445c
commit
4382ed35ee
15 files changed
+1645
-22
No files matched your search
@@ -162,6 +162,10 @@ export const GAMES: Record<GameId, GameMeta> = {
|
||||
// per-region split, so there is nothing here that could evidence a server
|
||||
// map even if a clock appeared. See src/ingest/parsers/arustats.ts.
|
||||
hi3: { id: "hi3", name: "Honkai Impact 3rd", short: "Honkai 3rd", hue: "#8B5CF6", studio: "HoYoverse", dailyTasks: "Daily missions, stamina" },
|
||||
// No `resetOffsets`: Karendar states all times for the Global server in UTC
|
||||
// with no per-region columns and no stated reset hour, so PGR takes the
|
||||
// default regional reset until a source evidences an override.
|
||||
pgr: { id: "pgr", name: "Punishing: Gray Raven", short: "PGR", hue: "#CC292B", studio: "Kuro Games", dailyTasks: "Daily missions, serum" },
|
||||
};
|
||||
|
||||
export const GAME_LIST: GameMeta[] = Object.values(GAMES);
|
||||
|
||||
@@ -22,6 +22,7 @@ export const GameId = z.enum([
|
||||
// first segment of every completion key their game will ever have.
|
||||
"nikke", // Goddess of Victory: Nikke
|
||||
"hi3", // Honkai Impact 3rd
|
||||
"pgr", // Punishing: Gray Raven
|
||||
]);
|
||||
export type GameId = z.infer<typeof GameId>;
|
||||
|
||||
|
||||
Reference in new issue
Block a user