Conversation
- ESLint → Biome (@yuu1111/biome-config) に移行 - tsconfig → @yuu1111/tsconfig/base.json をextends (ESNext, strict) - CommonJS → ESM化 (type: module, import.meta, tsx) - verbatimModuleSyntax, noUncheckedIndexedAccess, exactOptionalPropertyTypes対応 - GoogleSheets configをdiscriminated unionに改善しnon-null assertion除去 - node: プロトコルでNode.jsビルトインをimport - scripts/release.js → release.cjs
- src/schemas/にZodスキーマを新規作成(config, csv, steam-api, google-credentials) - 手動バリデーションをZodスキーマベースに置換 - CSVパーサーをsrc/utils/csv-parser.tsに抽出 - 各サービス・ワーカーをスキーマベースの型に移行 - CLAUDE.mdをBun移行後の内容に更新 - シャットダウン時にqueuedGoogleSheetsのdisposeを追加
steamApi.tsとretry.tsをクラスからモジュール関数/ファクトリ関数に変換。 CLAUDE.md・README.md・README-JP.mdを現状のBunベースアーキテクチャに合わせて簡潔に書き直し。
- サービスコンテナ(container.ts)を導入しmain.tsとworkersの振る舞いを統一 - googleSheets.tsを汎用SheetAccessor<T>に再構築(646行→290行) - initializeAuthの競合状態をPromiseキャッシュで修正 - DailyAverageSheetRecordを廃止しDailyAverageRowに統一 - types/config.ts(不要な間接層)を削除 - config/config.tsをsrc/config.tsに移動 - axiosをネイティブfetchに置換、date-fnsをdayjsに統一 - toolsのハードコードパスをconfig参照に変更
- schemas/config.tsからparsed singleton を config/config.ts に分離し副作用を除去 - kebab-caseファイル6件をcamelCaseに統一 - googleSheets.tsからカラム定義を schemas/columnDefs.ts に抽出 - logger.tsのモジュールレベル副作用を initLogMaintenance() に移動 - Services interfaceを ReturnType<typeof> から名前付き型に改善 - steamApi.tsを createSteamApiClient() ファクトリパターンに変換
- CSV永続ストレージをbun:sqlite (WALモード)に置換 - dailyAverageService (277行)をSQLクエリ1本に置換 - インメモリキュー(queuedGoogleSheets)をDB駆動同期(synced_at IS NULL)に置換 - Winston+カスタムTransportを40行の軽量JSONロガーに置換 - サービスコンテナを廃止し依存を直接組み立て - フォルダ構造をフラット化(services/utils/workers/ → jobs/) - CSV入出力はツール(importCsv/exportCsv)として残存 - winston依存を削除
- steamApi.ts を廃止しfetchをcollectData.tsとmain.tsにインライン化 - retry.ts を87行のファクトリから27行のプレーン関数に簡素化 - config.tsからretry設定を削除(デフォルト値で十分) - ウィンドウタイトルを固定表示に簡素化 - catchブロックのコメントを明確化
- fetchPlayerCountをexportしmain.tsで再利用(Steam API fetch重複解消) - 起動時の設定検証とゲーム名取得をPromise.allSettledで並列化 - googleSheets.tsのlastCol導出を1箇所に集約、clearDataの余分なAPI呼び出しを除去 - syncSheets.tsのSheetAccessor生成をcreateSyncContextヘルパーに抽出 - generateCharts.tsのDB接続とChartJSNodeCanvasを共有化 - console.logを構造化ロガーに統一
- tests/にミラー構造でテストファイルを配置 - schemas, config, logger, retryの純粋ユニットテスト - db.tsのSQLite統合テスト (:memory:使用) - collectData, syncSheetsのモックテスト (mock.module) - googleSheets.tsのgoogleapis完全モックテスト - package.jsonにtestスクリプト追加 - db.tsに:memory:対応、importCsv.tsのparse関数をexport化 - .gitignoreにdata/とcoverage/を追加
- Bun.cron(OS Task Scheduler)をsetInterval毎分チェックに置換(管理者権限不要に)
- jobs/*.tsからCronController default exportを削除、関数を直接呼び出し
- build.tsからjobsエントリーポイント除去(main.tsのみ、ビルド出力30+→6ファイル)
- CI/release.ymlにbun testステップ追加
- release.ymlのLICENCE.txt→LICENCE、Bun要件1.3.11+に修正
- exportCsv.tsのmkdir(".")エラーをWindows対応
- README/CLAUDE.mdからBun.cron言及を更新
- DatabaseにSymbol.dispose追加、try/finally+db.close()をusing宣言に置換 - db.exec(非推奨)をdb.runに置換 - generateCharts.tsのReturnType<typeof createDatabase>をDatabase型に変更 - LogLevel型をstringからunion型に絞り込み - tsconfig.jsonにtypes: bun-types追加、testsをincludeに追加
- collectData/dailyAverageのモジュールレベルDB接続を廃止し引数で受け取る - fullSyncToSheetsの冗長なgetUnsynced再クエリをmarkAll一括更新に置換 - googleSheets.tsのgetSheets()パススルーを直接await sheetsPromiseに置換 - コードから自明なWHATコメントを削除
- db.run()マルチステートメントバグ修正(個別呼び出しに分割) - syncUnsyncedToSheets/fullSyncToSheetsにdb引数追加(DI完了) - setIntervalにrunningフラグ追加し並行実行を防止 - markAllPlayerDataSynced/markAllDailyAveragesSyncedを追加
- calculateDailyAverageのnullガードにmin_timestamp追加 - Database interfaceにrun/transactionを追加、importCsvで一括トランザクション化 - generateCharts.tsのmkdirを各チャート関数から呼び出し元に集約 - generateCharts.tsのswitch文で未awaitだったasync呼び出しを修正 - syncSheets.tsの重複TSDocを削除 - googleSheets.tsのcolumnRange検証を追加
- Database interfaceのrun重複宣言を削除 - syncUnsyncedToSheetsで未同期データがない場合は早期リターン(accessor生成を遅延) - importCsv.tsの日次平均トランザクションに空配列ガードを追加
- db.transaction()をbun:sqliteネイティブAPIに置換 - SheetAccessorsをmain.tsで1回だけ生成し引数で渡す(毎回のキーファイル読み込みを排除) - importCsv.tsの日次平均ログを空配列ガード内に移動
- syncSheets.tsの重複TSDocブロック2箇所を削除 - generateCharts.tsのto境界を23:59:59→翌日00:00:00に修正(最終秒のデータ欠落を解消)
- dailyAverage syncをbatchAppendからappend(upsert)に戻す(再計算時の重複行防止) - ensureHeader/findRowByKeyにrateLimitedRequestを適用(レート制限の漏れを修正)
- syncSheets関数内のconfig.googleSheets.enabledチェック削除(呼び出し元で保証済み) - markSyncedの動的prepared statementにfinalize()追加(リソースリーク防止) - generateChartsのCLI引数にNaNバリデーション追加
- getChartsDir()関数をモジュールレベル定数に置換(7回の再計算を排除) - markPlayerDataSynced/markDailyAveragesSyncedをmarkSyncedByColumnに統合 - replaceAll成功後にheaderVerified=trueを設定(後続の不要なAPI呼び出しを排除)
- markSyncedByColumnにtry/finally追加(エラー時のstatementリーク防止) - importCsv.tsのENOENT処理をreadCsvFileヘルパーに統合 - generateCharts.tsのチャートoptionsをbuildChartOptions関数に集約
- 動的db.prepare(IN句)を廃止し、事前コンパイル済み単一行updateをトランザクション内ループで実行 - markSyncedByColumnヘルパーを削除、stmtsに統合
- tests/mocks/googleSheets.ts: Google Sheets APIモックファクトリ (setupGoogleSheetsMocks) - tests/mocks/config.ts: configモックファクトリ (mockConfigModule) - googleSheets.test.ts/syncSheets.test.tsのモック定型コードを大幅削減 - CLAUDE.mdのテスト配置説明をtests/ミラー構造に修正
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Node.js/npm/ESLint/CommonJSベースの構成をBun/Biome/ESMに全面移行し、アーキテクチャを刷新。
ランタイム・ツールチェイン
ストレージ
アーキテクチャ
テスト
バグ修正
削除
Test plan
bun run typecheck- passbun run lint- passbun run test- 112 pass / 0 failbun run build→bun run start- 正常起動・データ収集