{"version":3,"sources":["../src/ranking-history.ts","../src/util/date.ts"],"sourcesContent":["import type { RankingType } from \"./params.js\";\nimport { parseDate } from \"./util/date.js\";\n\nexport interface RankingHistoryRawResult {\n  rtype: `${string}-${RankingType}`;\n  pt: number;\n  rank: number;\n}\n\nexport interface RankingHistoryResult {\n  type: RankingType;\n  date: Date;\n  pt: number;\n  rank: number;\n}\n\n/**\n * 生のランキング履歴エントリを構造化された形式にフォーマットします。\n * \n * @param rankin - フォーマットする生のランキング履歴データ\n * @returns 日付とタイプが解析されたフォーマット済みランキング履歴\n * \n * @example\n * const rawData = { rtype: \"20230101-daily\", pt: 500, rank: 10 };\n * const formattedData = formatRankingHistory(rawData);\n * // 返り値: { type: \"daily\", date: [Dateオブジェクト], pt: 500, rank: 10 }\n */\nexport function formatRankingHistory(\n  rankin: RankingHistoryRawResult\n): RankingHistoryResult {\n  const { rtype, pt, rank } = rankin;\n  const [_date, _type] = rtype.split(\"-\");\n  const date = parseDate(_date);\n  const type = _type as RankingType;\n\n  return { type, date, pt, rank };\n}\n","// 日付関連のユーティリティ関数\n\n/**\n * 文字列の日付（yyyyMMdd形式）をDateオブジェクトに変換する\n * @param dateStr yyyyMMdd形式の日付文字列\n * @returns Dateオブジェクト\n */\nexport function parseDate(dateStr: string): Date {\n  const year = parseInt(dateStr.substring(0, 4), 10);\n  const month = parseInt(dateStr.substring(4, 6), 10) - 1; // JavaScriptの月は0から始まる\n  const day = parseInt(dateStr.substring(6, 8), 10);\n\n  return new Date(year, month, day, 0, 0, 0, 0);\n}\n\n/**\n * 日付をyyyyMMdd形式の文字列に変換する\n * @param date 日付\n * @returns yyyyMMdd形式の文字列\n */\nexport function formatDate(date: Date): string {\n  const year = date.getFullYear();\n  const month = String(date.getMonth() + 1).padStart(2, '0');\n  const day = String(date.getDate()).padStart(2, '0');\n  return `${year}${month}${day}`;\n}\n\n/**\n * 指定された日数を加算した新しい日付を返す\n * @param date 元の日付\n * @param days 加算する日数\n * @returns 新しい日付\n */\nexport function addDays(date: Date, days: number): Date {\n  const result = new Date(date);\n  result.setDate(result.getDate() + days);\n  return result;\n}"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACOO,SAAS,UAAU,SAAuB;AAC/C,QAAM,OAAO,SAAS,QAAQ,UAAU,GAAG,CAAC,GAAG,EAAE;AACjD,QAAM,QAAQ,SAAS,QAAQ,UAAU,GAAG,CAAC,GAAG,EAAE,IAAI;AACtD,QAAM,MAAM,SAAS,QAAQ,UAAU,GAAG,CAAC,GAAG,EAAE;AAEhD,SAAO,IAAI,KAAK,MAAM,OAAO,KAAK,GAAG,GAAG,GAAG,CAAC;AAC9C;;;ADcO,SAAS,qBACd,QACsB;AACtB,QAAM,EAAE,OAAO,IAAI,KAAK,IAAI;AAC5B,QAAM,CAAC,OAAO,KAAK,IAAI,MAAM,MAAM,GAAG;AACtC,QAAM,OAAO,UAAU,KAAK;AAC5B,QAAM,OAAO;AAEb,SAAO,EAAE,MAAM,MAAM,IAAI,KAAK;AAChC;","names":[]}