mirror of
https://github.com/acamarata/moon-cycle.git
synced 2026-07-01 11:14:31 +00:00
Port to TypeScript with dual CJS/ESM build via tsup. Fix off-by-one bug in both cycleMonth and cycleYear (images are 1-indexed; v1 returned 000.webp/0000.webp which don't exist). Add imageFolder and cdnUrl helpers for jsDelivr CDN integration. Export constants and types. Separate the ~438 MB image dataset from the npm package via the files field, making moon-cycle publishable to npm for the first time. Add CI workflow with Node 20/22/24 matrix, typecheck, and pack-check jobs. Add wiki-sync workflow and full .wiki/ documentation (Home, API Reference, Architecture, Migration Guide).
45 lines
2.8 KiB
Markdown
45 lines
2.8 KiB
Markdown
# Changelog
|
|
|
|
All notable changes to this project will be documented in this file. Format follows [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
|
|
|
|
## [2.0.0] - 2025-02-25
|
|
|
|
### Added
|
|
|
|
- TypeScript source (`src/`) with full type definitions — dual CJS and ESM builds via tsup
|
|
- `imageFolder(set, size, quality)` helper to construct image directory names
|
|
- `cdnUrl(filename, set, size, quality, ref?)` helper to generate jsDelivr CDN URLs, enabling image serving without self-hosting the ~438 MB dataset
|
|
- Exported constants: `SYNODIC_MONTH`, `MONTH_IMAGES`, `YEAR_IMAGES`, `MONTH_ANCHOR`, `YEAR_ANCHOR`
|
|
- Exported types: `ImageSet`, `ImageSize`, `ImageQuality`
|
|
- Dual ESM and CJS builds with `.mjs` / `.cjs` extensions and matching `.d.ts` / `.d.mts` type definitions
|
|
- Proper `exports` map in `package.json` (types-first conditional exports)
|
|
- `test.mjs` and `test-cjs.cjs` — full assertion-based test suites covering bounds, anchor dates, edge cases, and all exported functions
|
|
- GitHub Actions CI workflow: Node 20/22/24 test matrix, typecheck job, pack-check job
|
|
- GitHub Actions wiki-sync workflow: syncs `.wiki/` to GitHub Wiki on push to `main`
|
|
- `.wiki/` documentation: Home, API Reference, Architecture, Migration Guide
|
|
- `.nvmrc`, `.editorconfig`, `.npmrc`, `pnpm-workspace.yaml`
|
|
|
|
### Changed
|
|
|
|
- Package is now npm-publishable: `files` field restricts the npm package to `dist/`, README, LICENSE, and CHANGELOG — images are excluded
|
|
- `package.json` fully updated: correct author name, accurate description, `engines`, `sideEffects`, `publishConfig`, `repository.url` with `git+https://` prefix, expanded keywords
|
|
- `repository.url` corrected to use `git+https://` prefix per npm convention
|
|
|
|
### Fixed
|
|
|
|
- **Off-by-one bug in both algorithms.** The v1 implementation mapped dates to 0-indexed filenames (`000.webp` to `707.webp` monthly, `0000.webp` to `8759.webp` yearly). The image dataset is 1-indexed (`001.webp` to `708.webp`, `0001.webp` to `8760.webp`). Both functions now return the correct 1-indexed filename. This is a breaking change for anyone who was working around the bug or had a local image set starting at `000.webp`.
|
|
- TypeScript definitions in `index.d.ts` were incorrect — both functions were typed as returning `{ result: string }` instead of `string`. The new generated types are accurate.
|
|
|
|
### Removed
|
|
|
|
- `index.js`, `cycleMonth.js`, `cycleYear.js` — replaced by `src/` TypeScript source and `dist/` build output
|
|
- `index.d.ts` — replaced by generated `dist/index.d.ts` and `dist/index.d.mts`
|
|
- `test.js` — replaced by `test.mjs` and `test-cjs.cjs`
|
|
|
|
## [1.0.1] - 2023-11-14
|
|
|
|
- Minor repository metadata updates
|
|
|
|
## [1.0.0] - 2023-11-14
|
|
|
|
- Initial release: `cycleMonth` and `cycleYear` functions, 708 monthly and 8,760 yearly NASA moon phase images in WebP format
|