mirror of
https://github.com/acamarata/nrel-spa.git
synced 2026-07-01 11:24:25 +00:00
Complete modernization of the package. The core SPA algorithm is unchanged and validated; everything else is rebuilt to match current JavaScript ecosystem standards. Changes: - TypeScript wrapper in src/ with full type definitions - Dual CJS/ESM build via tsup (dist/index.cjs, dist/index.mjs) - Core algorithm moved from dist/spa.js to lib/spa.js (same code) - Input validation with descriptive TypeError/RangeError messages - formatTime() and SPA function code constants as named exports - getSpa() / calcSpa() accept null for optional args (tz, options) - Test suite: 61 ESM assertions and 17 CJS assertions - GitHub Actions CI: Node 20/22/24 matrix, typecheck, pack-check - GitHub Wiki: Home, API Reference, Architecture, Twilight, NREL SPA - NREL attribution in LICENSE and README per their license terms - package.json: exports map, files, engines >=20, sideEffects: false - Author corrected to Aric Camarata; repository.url uses git+https:// - LICENSE year corrected to 2023-2026 - Removed: index.js, test.js, dist/spa.js (superseded by above)
1.9 KiB
1.9 KiB
Changelog
[2.0.0] - 2026-02-25
Added
- TypeScript wrapper (
src/index.ts,src/types.ts) with full type definitions - Dual CJS and ESM builds via tsup (
dist/index.cjs,dist/index.mjs) - TypeScript declaration files (
dist/index.d.ts,dist/index.d.mts) formatTime()utility export for converting fractional hours toHH:MM:SS- Input validation with descriptive
TypeErrorandRangeErrormessages - Function code exports:
SPA_ZA,SPA_ZA_INC,SPA_ZA_RTS,SPA_ALL - Test suite: 61 ESM assertions and 17 CJS assertions
- GitHub Actions CI workflow (Node 20/22/24 matrix, typecheck, pack-check)
- GitHub Wiki with architecture, API reference, twilight calculations, and algorithm documentation
- NREL attribution in
LICENSEandREADME pnpm-workspace.yaml,.editorconfig,.npmrc,.nvmrcconfig files
Changed
- Core algorithm moved from
dist/spa.jstolib/spa.js(same code, clearer location) package.jsonrewritten: properexportsmap,files,engines,sideEffects, all required fields- Author corrected to "Aric Camarata"
repository.urlcorrected to usegit+https://prefix (no npm publish warnings)engines.nodeset to>=20- Description expanded with full keyword coverage
- LICENSE year corrected to
2023-2026 - README rewritten with badges, full API tables, quick start, and NREL acknowledgments
[1.3.0] - 2025-05-04
- Major fix for discrepancies between this implementation and the original NREL C reference
- Added
bin/folder for compiling and testing against the C reference executable - All 10 global test cases now produce identical output to the C reference
[1.2.2] - 2023-11-12
- Moved timezone to main function arguments and changed default behavior
- Updated test cases and README
[1.1.0] - 2023-11-11
- Committed
dist/folder (core algorithm) to git
[1.0.0] - 2023-11-11
- Initial release