Commit Graph

4 Commits

Author SHA1 Message Date
github-actions[bot] fa2e1bada8 chore: version packages 2026-03-30 13:40:28 +00:00
Jeffrey (Dongkyu) Kim c784a77454 Reject impossible K League schedule dates before querying
The kleague-results API previously accepted regex-shaped but impossible calendar dates and treated them like empty-result queries. This change adds a regression test first, then rejects invalid YYYY-MM-DD strings during normalization so bad input never reaches the fetch layer.

Constraint: Public API contract says date must be a valid Date or YYYY-MM-DD string
Rejected: Let upstream return zero matches | hides invalid input as a valid no-results response
Confidence: high
Scope-risk: narrow
Reversibility: clean
Directive: Keep string-date validation in normalizeDateInput before any schedule fetch
Tested: node --test packages/kleague-results/test/index.test.js; npm run ci; live smoke getKLeagueSummary(2026-03-22, K리그1, FC서울, standings); live smoke getMatchResults(2026-03-22, K리그2); invalid-date smoke getMatchResults(2026-13-40); LSP diagnostics on changed files; architect verification
Not-tested: Additional leap-year and month-end invalid-date permutations
2026-03-29 16:22:38 +09:00
Jeffrey (Dongkyu) Kim 01915d8032 Make the package README example runnable
The initial package README used top-level await inside a CommonJS example. This follow-up keeps the documented install/use flow aligned with Node defaults by wrapping the sample in an async IIFE.

Constraint: README example should run as pasted under the package's CommonJS entrypoint
Rejected: Switching the example to ESM only | package docs still center the CommonJS require path
Confidence: high
Scope-risk: narrow
Reversibility: clean
Directive: Keep package README examples executable without assuming top-level await in CommonJS
Tested: npm run ci
Not-tested: Alternate package-manager docs rendering
2026-03-29 16:00:04 +09:00
Jeffrey (Dongkyu) Kim 83d5f26b39 Add an official K League results client and skill
The K League site already exposes JSON schedule and standings endpoints, so this change wraps those official surfaces in a reusable workspace package and wires the new skill/docs flow into the repo.

The implementation keeps the fetch/parse boundary small, locks normalization with fixtures and regression tests, and documents the publish follow-up needed for the new npm package. Korean-language request headers are pinned so live payloads keep the expected team names and result labels.

Constraint: Must use official K League surfaces instead of adding scraping or third-party dependencies
Rejected: HTML scraping from schedule pages | official JSON endpoints already provide schedule and standings data
Confidence: high
Scope-risk: moderate
Reversibility: clean
Directive: Keep the accept-language header pinned to Korean unless team alias normalization is expanded for English payloads
Tested: npm run ci; live getKLeagueSummary('2026-03-22', { leagueId: 'K리그1', team: 'FC서울', includeStandings: true }); live getMatchResults('2026-03-22', { leagueId: 'K리그2' })
Not-tested: Live in-progress/postponed match statuses beyond the fixture-covered finished-game path
2026-03-29 15:57:15 +09:00