Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
242 commits
Select commit Hold shift + click to select a range
8a6a365
chore(ootk): standardize imports/exports, refine base APIs, bump version
thkruz Oct 23, 2025
e4a0574
docs: update CHANGELOG (add v5.1.1 entries and reorder v4/v5 sections)
thkruz Oct 23, 2025
e340ccc
chore(ootk): bump @typescript-eslint/eslint-plugin & parser to ^8.46.…
thkruz Oct 23, 2025
6bc4943
refactor: :recycle: rename astronomicalUnit to KM_PER_AU and update u…
thkruz Oct 24, 2025
76ed1f7
feat(ootk): :satellite: add NASA JPL Horizons client + constants/inte…
thkruz Oct 26, 2025
7612eca
test(body): update Moon snapshots for getMoonTimes (including timezon…
thkruz Oct 27, 2025
9b49f2f
fix(ootk): add missing SpaceObjectType string mappings for terrestria…
thkruz Nov 4, 2025
94d3643
docs: add comprehensive advanced features guide
thkruz Nov 19, 2025
eb83cf5
docs: add Lambert integration guide and examples
thkruz Nov 19, 2025
94a0aa3
docs: add comprehensive user guide and getting started documentation
thkruz Nov 19, 2025
bd1955d
feat: add comprehensive examples for library features
thkruz Nov 19, 2025
0d01a89
feat: add high accuracy conjunction assessment workflow
thkruz Nov 19, 2025
3f7ccd5
Merge branch 'develop' into claude/lambert-satellite-integration-01EW…
thkruz Nov 19, 2025
4ad5d34
Merge pull request #36 from thkruz/claude/lambert-satellite-integrati…
thkruz Nov 19, 2025
0fec3ae
Merge pull request #38 from thkruz/claude/add-feature-examples-01LsHA…
thkruz Nov 19, 2025
49a809c
Merge branch 'develop' into claude/conjunction-assessment-workflow-01…
thkruz Nov 19, 2025
56aa487
Merge pull request #37 from thkruz/claude/conjunction-assessment-work…
thkruz Nov 19, 2025
95e67f4
Merge pull request #39 from thkruz/claude/user-guide-onboarding-012kA…
thkruz Nov 19, 2025
579388d
Merge pull request #41 from thkruz/claude/library-features-guide-017t…
thkruz Nov 19, 2025
5da537b
Implement tests for GaussIOD and GoodingIOD; refactor ModifiedGooding…
thkruz Nov 22, 2025
993a790
refactor(orbit_determination): improve GoodingIOD and ModifiedGooding…
thkruz Nov 22, 2025
6316048
chore(package): update version to 6.0.0-rc.2
thkruz Nov 22, 2025
842b458
refactor(GaussIOD): reorganize import statements for better clarity
thkruz Nov 22, 2025
02aa5b3
chore(package): update version to 6.0.0-rc.3
thkruz Nov 22, 2025
c9d458a
test: :sparkles: add comprehensive tests for Levenberg-MarquardtOD
thkruz Nov 29, 2025
0c4dc65
refactor(functions): :sparkles: optimize log10, array2d, and distance…
thkruz Nov 29, 2025
6ace6b2
test(create-covariance-from-tle): :sparkles: add tests for covariance…
thkruz Nov 29, 2025
8e7806e
test(create-sample-covariance-from-tle): :white_check_mark: add test …
thkruz Nov 29, 2025
aec8e93
test: :sparkles: add tests for factorial function with edge cases
thkruz Nov 29, 2025
9ee23a1
test: :camera_flash: update snapshots to deal with floating point errors
thkruz Nov 29, 2025
e1a0d28
refactor(conjunction): :sparkles: reorganize imports and improve cova…
thkruz Nov 29, 2025
6467bfa
refactor(main): :sparkles: remove unnecessary file extensions from ex…
thkruz Nov 29, 2025
2f1856b
refactor(conjunction): :sparkles: remove unnecessary file extensions …
thkruz Nov 29, 2025
04efea0
refactor(conjunction): :sparkles: remove unnecessary file extensions …
thkruz Nov 29, 2025
4df0ad8
refactor(conjunction): :sparkles: remove file extensions from imports
thkruz Nov 29, 2025
50e2da8
refactor(conjunction): :sparkles: rename parameter for clarity in ini…
thkruz Nov 29, 2025
3b32de8
chore(gitignore): :sparkles: add CLAUDE.md to .gitignore
thkruz Nov 29, 2025
284dc02
refactor(conjunction): :recylce: update ConjunctionEvent constructor …
thkruz Nov 29, 2025
9e112b0
test(probability): :white_check_mark: adjust relative velocity and po…
thkruz Nov 29, 2025
6dd3c5e
docs(time): enhance documentation for time classes and conversions
thkruz Nov 29, 2025
e0c978b
refactor(smoothing): :recycle: convert ExponentialSmoothing class to …
thkruz Nov 29, 2025
038c912
test(sgp4): :white_check_mark: add unit tests for Sgp4Propagator func…
thkruz Nov 29, 2025
6f033f2
docs(readme): :memo: add detailed documentation for orbital propagators
thkruz Nov 29, 2025
cc61975
test(kepler): :white_check_mark: add comprehensive tests for KeplerPr…
thkruz Nov 29, 2025
84aef88
test(propagator): :white_check_mark: add unit tests for MockPropagato…
thkruz Nov 29, 2025
007d17e
refactor(chebyshev): :recycle: improve documentation and method naming
thkruz Nov 29, 2025
acfb462
refactor(downhill-simplex): :recycle: improve method naming and docum…
thkruz Nov 29, 2025
b627eaf
docs(golden-section): :memo: enhance documentation and examples for o…
thkruz Nov 29, 2025
9f8c019
docs(polynomial-regression): :memo: enhance documentation and example…
thkruz Nov 29, 2025
c6a7fd5
refactor(polynomial-regression): :recycle: move PolynomicalRegression…
thkruz Nov 29, 2025
0680b95
refactor(simplex): :recycle: move SimplexEntry to internal directory
thkruz Nov 29, 2025
23ce52f
docs(simple-linear-regression): :memo: enhance class documentation an…
thkruz Nov 29, 2025
a3e00b1
refactor(orbit-determination): :recycle: move CostFunction import to …
thkruz Nov 29, 2025
8ed7178
docs(readme): :sparkles: add comprehensive documentation for orbit de…
thkruz Nov 29, 2025
491bbed
docs(readme): :sparkles: add README for optimize module with examples
thkruz Nov 29, 2025
64485c2
feat(optimize): :sparkles: add index file to export optimization modules
thkruz Nov 29, 2025
c26343b
test: :rocket: add LambertIOD test suite for orbit determination
thkruz Nov 29, 2025
34d28e0
refactor: 🔧 rename private methods for consistency and clarity
thkruz Nov 29, 2025
bd907d8
test: :truck: move tests into __tests__ folders for easier management
thkruz Nov 30, 2025
507cb3d
test: :truck: move tests into __tests__ folders for easier management
thkruz Nov 30, 2025
ec789f4
test: :white_check_mark: add unit tests for conversions
thkruz Nov 30, 2025
b022166
chore: :truck: update import path for transformsData
thkruz Nov 30, 2025
c275e6b
chore: :wrench: update coveragePathIgnorePatterns in jest config
thkruz Nov 30, 2025
3795c53
test: :white_check_mark: add tests for ModifiedGoodingIOD
thkruz Nov 30, 2025
3b8e24f
test: :white_check_mark: add tests for ephemerisManeuver
thkruz Nov 30, 2025
9272b24
refactor: :truck: rename all iod tests to match main files
thkruz Nov 30, 2025
6dd0d1a
fix: :bug: correct maneuver filtering logic in propagator
thkruz Nov 30, 2025
78199f4
test: :white_check_mark: add tests for optimization algorithms
thkruz Nov 30, 2025
43e9aad
test: :white_check_mark: add tests for interpolators
thkruz Nov 30, 2025
475acc3
test: :white_check_mark: add tests for Hill class methods
thkruz Nov 30, 2025
24bfedd
docs: :memo: add comprehensive coordinate systems guide
thkruz Nov 30, 2025
fedc88b
build: :arrow_up: upgrade all dependencies to most current
thkruz Nov 30, 2025
0f75b33
refactor: :recycle: complete phase 1A of objects module refactor
thkruz Nov 30, 2025
1b046f9
refactor: :recycle: update SpaceObject to use TEME frame
thkruz Nov 30, 2025
18aed53
remove: :fire: delete Horizons API client and constants
thkruz Nov 30, 2025
4b06dad
refactor: :recycle: update tsconfig to exclude test files
thkruz Nov 30, 2025
935a778
feat: :sparkles: add PassiveRFSensor and PhasedArrayRadar classes
thkruz Nov 30, 2025
c0967d1
feat: :sparkles: Add OEM parsing and data structures
thkruz Nov 30, 2025
33d40e4
refactor: :recycle: update sensor imports and exports
thkruz Nov 30, 2025
e840337
feat: :sparkles: Add communication devices and tests
thkruz Nov 30, 2025
e35c4a9
test: :white_check_mark: Add tests for DynamicGroundObject
thkruz Nov 30, 2025
d808d1e
feat: :sparkles: Add HorizonsParser and tests
thkruz Dec 1, 2025
a56c10c
refactor: :recycle: update and modernize body module to use astronomy…
thkruz Dec 1, 2025
b8f940a
feat: :sparkles: Integrate astronomy-engine for star position
thkruz Dec 1, 2025
13dc9c0
refactor: :recycle: Update sun position methods in force classes
thkruz Dec 1, 2025
ceb0c58
refactor: :recycle: Correct export test for CelestialBody
thkruz Dec 1, 2025
5d2fc8a
feat: :sparkles: add angle calculations for satellites and Sun
thkruz Dec 4, 2025
ebc0b44
Merge branch 'develop' of https://github.com/thkruz/ootk into develop
thkruz Dec 4, 2025
0ef09ea
refactor: :recycle: Rename ECF to ECEF in codebase
thkruz Dec 6, 2025
1caf07b
Merge branch 'develop' of https://github.com/thkruz/ootk into develop
thkruz Dec 6, 2025
5ab6b1e
feat: :sparkles: add history tracking to Satellite class
thkruz Dec 6, 2025
278e8bd
feat: :sparkles: add VisualizationHelpers and related types
thkruz Dec 6, 2025
32abe79
feat: :sparkles: add AccessCalculator and AccessWindow types
thkruz Dec 6, 2025
ee556b2
refactor: :recycle: clean up exports in index.ts
thkruz Dec 6, 2025
6f94279
feat: :sparkles: add interpolator and maneuver modules
thkruz Dec 6, 2025
00e3af3
refactor: :recycle: replace EciVec3 with TemeVec3 types
thkruz Dec 6, 2025
1701853
feat: :sparkles: enhance visibility checks for Transmitter
thkruz Dec 6, 2025
6a71aec
refactor: :recycle: streamline imports and enhance AccessWindow
thkruz Dec 6, 2025
f4a1c9e
docs: :memo: add examples for SunBody, Satellite, and Sensor
thkruz Dec 6, 2025
cd82439
test: :zap: improve test performance
thkruz Dec 7, 2025
79baa37
feat: :sparkles: Add custom error classes for ootk
thkruz Dec 7, 2025
51cbb97
feat: :sparkles: add clone methods for sensor and device classes
thkruz Dec 7, 2025
f3ad72c
feat: :sparkles: make lat, lon, alt properties readonly
thkruz Dec 7, 2025
824c8bf
feat: :sparkles: add validation errors for sensor parent checks
thkruz Dec 7, 2025
2f00d20
feat: :sparkles: implement RAE methods in SpaceObject class
thkruz Dec 7, 2025
261dc52
feat: :sparkles: add history tracking and cloning options
thkruz Dec 7, 2025
b37ba1b
docs: :memo: update documentation for coordinate transformations
thkruz Dec 7, 2025
fa11c93
feat: :sparkles: Add ScheduledContact and tests
thkruz Dec 7, 2025
85ddedd
feat: :sparkles: Add CDM types and parsing/exporting logic
thkruz Dec 7, 2025
c50d16f
feat: :sparkles: Add ConstellationGenerator and tests
thkruz Dec 7, 2025
4541925
feat: :sparkles: Add RepeatGroundTrack and tests
thkruz Dec 7, 2025
ae88268
chore: :wrench: update version to 6.0.0-rc.4
thkruz Dec 7, 2025
d69137b
refactor: :recycle: change sensor and object IDs to numbers
thkruz Dec 7, 2025
cf97616
refactor: :recycle: simplify imports in multiple files
thkruz Dec 7, 2025
97c188b
feat: :sparkles: add SunStatus enum for illumination states
thkruz Dec 8, 2025
448eef9
feat: :sparkles: add OrbitFinder class for satellite orbits
thkruz Dec 8, 2025
93b0e68
feat: :sparkles: add fromPosVel method for RIC coordinates
thkruz Dec 8, 2025
9b9dc88
fix: :bug: resolve circular dependency in types.ts
thkruz Feb 2, 2026
3169ba5
fix: :bug: replace @src/ path alias with relative imports
thkruz Feb 2, 2026
c164f92
build: :wrench: add madge configuration for circular dependency detec…
thkruz Feb 2, 2026
07be71c
build: :wrench: add ESM import path fixer for dist output
thkruz Feb 2, 2026
0431ecc
test: :white_check_mark: add integration test infrastructure with Vitest
thkruz Feb 2, 2026
688f339
test: :white_check_mark: add integration tests for built package
thkruz Feb 2, 2026
bf9fa35
ci: :construction_worker: add circular-check and integration test jobs
thkruz Feb 2, 2026
08fc0ed
test: :wrench: exclude integration tests from Jest
thkruz Feb 2, 2026
5b93c82
build: :package: add madge, vitest and integration test scripts
thkruz Feb 2, 2026
e691a5d
feat: :sparkles: add PayloadStatus type
thkruz Feb 2, 2026
d8a565a
chore: :wrench: update .gitignore to include new files
thkruz Feb 2, 2026
bffe544
fix: :bug: resolve circular dependencies in operations module
thkruz Feb 2, 2026
be38190
fix: :bug: resolve circular dependency in Earth class
thkruz Feb 2, 2026
4138c43
build: :wrench: migrate from Jest to Vitest
thkruz Feb 2, 2026
3bdcf24
test: :white_check_mark: migrate test files from Jest to Vitest
thkruz Feb 2, 2026
b3ff8e4
test: :camera_flash: update body module snapshots for Vitest
thkruz Feb 2, 2026
5135e7e
test: :camera_flash: update coordinate module snapshots for Vitest
thkruz Feb 2, 2026
cc1d7d5
test: :camera_flash: update observation module snapshots for Vitest
thkruz Feb 2, 2026
0547cc3
test: :camera_flash: update operations module snapshots for Vitest
thkruz Feb 2, 2026
1f427ff
test: :camera_flash: update time module snapshots for Vitest
thkruz Feb 2, 2026
16ac8a4
test: :camera_flash: update transforms module snapshots for Vitest
thkruz Feb 2, 2026
76daf1e
test: :camera_flash: update utils module snapshots for Vitest
thkruz Feb 2, 2026
9bce358
test: :camera_flash: update sgp4 module snapshots for Vitest
thkruz Feb 2, 2026
52c65a2
chore: :wrench: update version to 6.0.0-rc.5 in package.json
thkruz Feb 2, 2026
5b505cd
build: :building_construction: migrate to tsup for ESM builds
thkruz Feb 2, 2026
7589ca4
test: :camera_flash: update body module snapshots for Vitest
thkruz Feb 2, 2026
c35f910
test: :camera_flash: update coordinate module snapshots for Vitest
thkruz Feb 2, 2026
26e205b
test: :camera_flash: update observation module snapshots for Vitest
thkruz Feb 2, 2026
725d6ea
test: :camera_flash: update operations module snapshots for Vitest
thkruz Feb 2, 2026
7e1e498
test: :wrench: increase timeout for ConjunctionAssessment high-fideli…
thkruz Feb 2, 2026
f8c380c
test: :sparkles: add integration tests for core functionality
thkruz Feb 2, 2026
aa0313b
test: :camera_flash: update time module snapshots for Vitest
thkruz Feb 2, 2026
bf3fecb
test: :camera_flash: update transforms module snapshots for Vitest
thkruz Feb 2, 2026
f7930db
test: :camera_flash: update utils module snapshots for Vitest
thkruz Feb 2, 2026
af2b4e2
test: :camera_flash: update sgp4 module snapshots for Vitest
thkruz Feb 2, 2026
d38f1c5
chore: :wrench: update repository URL format in package.json
thkruz Feb 3, 2026
6b4dfe7
chore: :wrench: add .npmrc to .gitignore
thkruz Feb 3, 2026
247323a
fix: :bug: export PayloadStatus from types module
thkruz Feb 3, 2026
6bf1f21
feat: :sparkles: add additional star parameters to interface
thkruz Feb 14, 2026
66565ce
fix: :bug: initialize Float64Arrays with coeffs length
thkruz Feb 14, 2026
dc43ffc
feat(parsers): :sparkles: add OdmExporter and export options
thkruz Feb 15, 2026
2571b7b
feat(orbit-determination): :sparkles: add maxIter option to SolveOptions
thkruz Feb 15, 2026
dd8e395
feat(ootk): :sparkles: add interpolator, maneuver and orbit-design mo…
thkruz Feb 26, 2026
5723c02
feat(numerical-propagator): :sparkles: add NumericalPropagatorOptions…
thkruz Feb 26, 2026
20fd9f6
feat(enums): :sparkles: add PropagatorType enum with implementations
thkruz Feb 26, 2026
98d4d8f
refactor(objects): :recycle: remove PropagatorType from ObjectTypes
thkruz Feb 26, 2026
d7ef3b5
test(satellite): :white_check_mark: add unit tests for propagators
thkruz Feb 26, 2026
c4b985a
fix(sgp4): :bug: handle decayed satellites in Sgp4 class
thkruz Feb 27, 2026
355e740
chore(.gitignore): :wrench: add .dev.vars to ignore list
thkruz Mar 7, 2026
fa530aa
docs: :memo: update documentation
thkruz Mar 8, 2026
0cceb50
docs: :memo: update copyright year to 2025-2026
thkruz Mar 8, 2026
d43bdb7
style: :art: fix indentation and license header in source files
thkruz Mar 8, 2026
1ed5e98
chore(build): :wrench: bundle astronomy-engine and add CJS output
thkruz Mar 8, 2026
ba956a8
fix(package): :bug: fix license typo and configure dual ESM/CJS exports
thkruz Mar 8, 2026
a851aec
chore(ci): :wrench: add Node 18 to test matrix
thkruz Mar 8, 2026
f50e22a
test(integration): :white_check_mark: add pre-publish integration tests
thkruz Mar 8, 2026
d06617c
test(propagator): :white_check_mark: add SP3 accuracy comparison results
thkruz Mar 8, 2026
ee44466
6.0.0
thkruz Mar 8, 2026
a87119c
chore(gitignore): :wastebasket: update .gitignore to include propagat…
thkruz Mar 8, 2026
b8ff3b3
chore(gitignore): :wastebasket: fix path format for propagator accura…
thkruz Mar 8, 2026
7dded61
fix(Tle): :bug: handle '0' as valid BSTAR symbol
thkruz Mar 12, 2026
13ee240
test(Tle): :white_check_mark: add tests for meanMoDev1 and bstar parsing
thkruz Mar 12, 2026
253b1c2
feat(parsers): :sparkles: add OMM parser and types
thkruz Mar 12, 2026
057a7fd
test(OmmParser): :white_check_mark: add unit tests for OMM parsing
thkruz Mar 12, 2026
6dfb390
feat(Satellite): :sparkles: add fromOmm method for satellite creation
thkruz Mar 12, 2026
9b88b46
chore(package): :wrench: bump version to 6.0.1
thkruz Mar 12, 2026
63e06e4
test(integration): :white_check_mark: update export snapshot for new …
thkruz Mar 12, 2026
e3e4ef8
feat(TleParams): :sparkles: add additional satellite parameters
thkruz Mar 13, 2026
42587bc
feat(OmmParser): :sparkles: add JSON parsing for CelesTrak OMM
thkruz Mar 13, 2026
1a051ff
feat(OmmFormat): :sparkles: update data format to support numeric types
thkruz Mar 13, 2026
c7cc06f
feat(FormatTle): :sparkles: enhance TLE generation with new formatting
thkruz Mar 13, 2026
8e5357c
feat(Satellite): :sparkles: update OMM parsing to use Number
thkruz Mar 13, 2026
9573455
chore(package): :wrench: bump version to 6.0.2
thkruz Mar 13, 2026
a522f08
test(FormatTle): :white_check_mark: update test expectations for new …
thkruz Mar 13, 2026
198faa0
test(FormatTle): :white_check_mark: fix line 2 expected value for new…
thkruz Mar 13, 2026
8862276
fix(FormatTle): :bug: fix TLE formatting to match NORAD/CelesTrak con…
thkruz Mar 13, 2026
773cf97
test(FormatTle): :white_check_mark: add CelesTrak stations validation…
thkruz Mar 13, 2026
56e6b13
chore(package): :wrench: bump version to 6.0.3
thkruz Mar 13, 2026
1b6d7f9
fix(ClassicalElements): :bug: handle equatorial orbits in fromStateVe…
thkruz Mar 13, 2026
a28ef5d
fix(CatalogSource): :bug: update catalog source names to match standards
thkruz Mar 15, 2026
2b31e4f
fix(Tle): :bug: handle additional BSTAR exponent symbols
thkruz Mar 15, 2026
3776ada
fix(Epoch): :bug: allow pre-1970 POSIX timestamps for historic TLEs
thkruz Mar 22, 2026
4925527
chore(package): :wrench: bump version to 6.0.4
thkruz Mar 22, 2026
0e0054e
fix(CatalogSource): :bug: add UNKNOWN source to enum
thkruz Mar 29, 2026
37f600a
fix(HorizonsParser): :bug: improve target name extraction logic
thkruz Apr 1, 2026
d738f8a
feat(OdmExporter): :sparkles: add OEM export from state vectors
thkruz Apr 1, 2026
84bc268
fix(Tle): :bug: add debug info for TLE line validation
thkruz May 6, 2026
5063a8d
chore(package): :wrench: bump version to 6.0.5
thkruz May 6, 2026
d58ec39
test(EpochUTC): :white_check_mark: add tests for pre-1970 dates
thkruz May 8, 2026
379e9b5
feat(Satellite): add support for OMM ID conversion and classification…
thkruz May 27, 2026
0f4439e
6.0.6
thkruz May 27, 2026
e206d29
fix(OrbitFinder): :bug: keep TLE satnum 5-char for extended sccNums
thkruz May 27, 2026
2f061e1
test(OrbitFinder): :white_check_mark: pin extended-sccNum TLE generat…
thkruz May 27, 2026
01c704b
test(Satellite): :white_check_mark: pin sccNum derivation across all …
thkruz May 28, 2026
bc10faf
feat(Satellite): :sparkles: enforce display-canonical numeric sccNum …
thkruz May 28, 2026
7b06e93
feat(Satellite): :sparkles: strip leading zeros from sccNum for natur…
thkruz May 29, 2026
e69f602
fix(tle): :bug: handle real-world TLE edge cases in parsing and age
thkruz Jun 2, 2026
edcc5a6
fix(tle): :bug: tolerate blank catalog number on JSC Vimpel TLEs
thkruz Jun 3, 2026
6d13f77
fix(sgp4): :bug: handle blank Vimpel catalog number in createSatrec
thkruz Jun 3, 2026
2f05f07
test(parsers): :white_check_mark: add OdmExporter KVN export tests
thkruz Jun 13, 2026
0fdb613
feat(covariance): :sparkles: add RIC display-radii scaling helper
thkruz Jun 14, 2026
66b3955
feat(covariance): :sparkles: add cappedScreeningCovarianceFromTle for…
thkruz Jun 14, 2026
23178b0
feat(orbit-determination): :sparkles: add rv2tle for IOD from state v…
thkruz Jun 23, 2026
e3c3f28
fix(time): :bug: use full time-of-day precision in TLE epoch generation
thkruz Jun 23, 2026
25debfd
feat(photometry): :sparkles: add RCS-based visual magnitude estimator
thkruz Jun 23, 2026
188e487
test(tle): :white_check_mark: update snapshot for full-precision TLE …
thkruz Jun 23, 2026
7fc053e
6.0.7
thkruz Jun 23, 2026
ea0b454
test(exports): :white_check_mark: add localeCompare compare function …
thkruz Jun 26, 2026
8e5129e
feat(orbit-design): :sparkles: add computeInclinationFromAzimuth helper
thkruz Jun 30, 2026
77f4e64
fix(observation): :bug: export Observation classes from package root
thkruz Jul 2, 2026
086771c
fix(examples): :bug: repair example scripts against current API
thkruz Jul 2, 2026
1d8d230
docs(vitepress): :memo: add VitePress documentation site with example…
thkruz Jul 2, 2026
151051c
chore(deps): :wrench: bump vitepress to 2.0.0-alpha.17 to clear dev-s…
thkruz Jul 5, 2026
1344643
style(keywords): :art: reorder keywords in package.json
thkruz Jul 5, 2026
83d8037
chore: :wrench: update package-lock.json for dependencies
thkruz Jul 5, 2026
c181ac5
ci: :wrench: run CI on Node 24 (npm 11) to fix package-lock sync; bum…
thkruz Jul 5, 2026
e822c82
7.0.0
thkruz Jul 5, 2026
caaf27a
chore(eslint): :wrench: migrate to ESLint 9 flat config
thkruz Jul 5, 2026
1c5e5a7
style(ootk): :art: resolve ESLint 9 lint violations in source
thkruz Jul 5, 2026
c4a601b
test(ootk): :white_check_mark: resolve ESLint 9 lint violations in tests
thkruz Jul 5, 2026
8dde3ef
test(integration): :white_check_mark: update export snapshot for new …
thkruz Jul 5, 2026
9378608
refactor(ootk): :recycle: de-barrel main-barrel imports to concrete m…
thkruz Jul 6, 2026
4a50290
refactor(coordinate): :recycle: break circular dependencies via alpha…
thkruz Jul 6, 2026
a507bd3
chore(release): :wrench: automate npm releases with semantic-release …
thkruz Jul 6, 2026
f2c6977
chore(ci): :wrench: gate circular dependencies with a ratchet and doc…
thkruz Jul 6, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
Empty file removed .eslintignore
Empty file.
115 changes: 97 additions & 18 deletions .eslintrc.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,30 @@
"env": {
"browser": true,
"es2021": true,
"node": true,
"jest": true
"node": true
},
"extends": ["eslint:recommended", "plugin:@typescript-eslint/recommended"],
"globals": {
"describe": "readonly",
"it": "readonly",
"expect": "readonly",
"beforeEach": "readonly",
"afterEach": "readonly",
"beforeAll": "readonly",
"afterAll": "readonly",
"vi": "readonly"
},
"extends": [
"eslint:recommended",
"plugin:@typescript-eslint/recommended"
],
"parser": "@typescript-eslint/parser",
"parserOptions": {
"ecmaVersion": 12,
"sourceType": "module"
},
"plugins": ["@typescript-eslint"],
"plugins": [
"@typescript-eslint"
],
"rules": {
"accessor-pairs": "error",
"array-bracket-newline": "error",
Expand All @@ -28,7 +42,10 @@
"camelcase": "error",
"capitalized-comments": "off",
"class-methods-use-this": "off",
"comma-dangle": ["error", "always-multiline"],
"comma-dangle": [
"error",
"always-multiline"
],
"comma-spacing": "error",
"comma-style": "error",
"complexity": "error",
Expand Down Expand Up @@ -59,25 +76,65 @@
"id-length": "off",
"id-match": "error",
"implicit-arrow-linebreak": "off",
"indent": ["error", 2, { "SwitchCase": 1 }],
"indent-legacy": ["error", 2, { "SwitchCase": 1 }],
"indent": [
"error",
2,
{
"SwitchCase": 1
}
],
"indent-legacy": [
"error",
2,
{
"SwitchCase": 1
}
],
"init-declarations": "off",
"jsx-quotes": "error",
"key-spacing": "error",
"keyword-spacing": "error",
"line-comment-position": "off",
"linebreak-style": ["error", "unix"],
"linebreak-style": [
"error",
"unix"
],
"lines-around-comment": "off",
"lines-around-directive": "error",
"lines-between-class-members": "off",
"max-classes-per-file": "error",
"max-depth": "error",
"max-len": ["error", { "code": 120 }],
"max-lines": ["error", { "max": 1000 }],
"max-lines-per-function": ["error", { "max": 300 }],
"max-len": [
"error",
{
"code": 180
}
],
"max-lines": [
"error",
{
"max": 1000
}
],
"max-lines-per-function": [
"error",
{
"max": 300
}
],
"max-nested-callbacks": "error",
"max-params": ["error", { "max": 8 }],
"max-statements": ["error", { "max": 85 }],
"max-params": [
"error",
{
"max": 8
}
],
"max-statements": [
"error",
{
"max": 85
}
],
"max-statements-per-line": "error",
"multiline-comment-style": "error",
"multiline-ternary": "off",
Expand Down Expand Up @@ -150,7 +207,21 @@
"no-restricted-imports": "error",
"no-restricted-modules": "error",
"no-restricted-properties": "error",
"no-restricted-syntax": "error",
"no-restricted-syntax": [
"error",
{
"selector": "ImportDeclaration[source.value=/\\.js$/]",
"message": "Do not use .js extension in imports"
},
{
"selector": "ExportNamedDeclaration[source.value=/\\.js$/]",
"message": "Do not use .js extension in exports"
},
{
"selector": "ExportAllDeclaration[source.value=/\\.js$/]",
"message": "Do not use .js extension in exports"
}
],
"no-return-assign": "error",
"no-return-await": "error",
"no-script-url": "error",
Expand All @@ -163,9 +234,14 @@
"no-template-curly-in-string": "error",
"no-ternary": "off",
"no-throw-literal": "error",
"no-trailing-spaces": ["error", { "ignoreComments": true }],
"no-trailing-spaces": [
"error",
{
"ignoreComments": true
}
],
"no-undef-init": "error",
"no-undefined": "error",
"no-undefined": "off",
"no-underscore-dangle": "off",
"no-unmodified-loop-condition": "error",
"no-unneeded-ternary": "error",
Expand Down Expand Up @@ -209,7 +285,10 @@
"prefer-spread": "error",
"prefer-template": "error",
"quote-props": "off",
"quotes": ["error", "single"],
"quotes": [
"error",
"single"
],
"radix": "off",
"require-atomic-updates": "error",
"require-await": "error",
Expand Down Expand Up @@ -241,4 +320,4 @@
"yield-star-spacing": "error",
"yoda": "error"
}
}
}
57 changes: 51 additions & 6 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,20 +23,34 @@ jobs:

- uses: actions/setup-node@v4.0.1
with:
node-version: '20.x'
node-version: '24.x'

- run: npm ci --ignore-scripts

- run: npm run lint
build:
circular-check:
needs: lint
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4.1.1

- uses: actions/setup-node@v4.0.1
with:
node-version: '20.x'
node-version: '24.x'

- run: npm ci --ignore-scripts

- name: Check for circular dependencies
run: npm run circular
build:
needs: circular-check
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4.1.1

- uses: actions/setup-node@v4.0.1
with:
node-version: '24.x'

- uses: actions/cache@v3
env:
Expand All @@ -51,27 +65,58 @@ jobs:
- run: npm ci --ignore-scripts

- run: npm run build

- uses: actions/upload-artifact@v4
with:
name: dist
path: dist/
retention-days: 1
test:
needs: build
runs-on: ubuntu-latest
strategy:
matrix:
node-version: ['24.x']
steps:
- uses: actions/checkout@v4.1.1

- uses: actions/setup-node@v4.0.1
with:
node-version: '20.x'
node-version: ${{ matrix.node-version }}

- uses: actions/cache@v3
env:
cache-name: cache-node-modules
with:
path: |
**/lib
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
key: ${{ runner.os }}-node-${{ matrix.node-version }}-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-node-
${{ runner.os }}-node-${{ matrix.node-version }}-

- run: npm ci --ignore-scripts

- name: Test
run: npm run test
test-integration:
needs: build
runs-on: ubuntu-latest
strategy:
matrix:
node-version: ['24.x']
steps:
- uses: actions/checkout@v4.1.1

- uses: actions/setup-node@v4.0.1
with:
node-version: ${{ matrix.node-version }}

- uses: actions/download-artifact@v4
with:
name: dist
path: dist/

- run: npm ci --ignore-scripts

- name: Integration Tests
run: npm run test:integration:only
63 changes: 63 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
name: Release

# On every push to main, re-run the CI gate and then hand off to
# semantic-release. It reads the conventional commits since the last tag,
# computes the bump (feat -> minor, BREAKING CHANGE -> major, everything else
# -> patch, per .releaserc.json), updates package.json + CHANGELOG.md, tags,
# creates the GitHub release, and publishes to npm with provenance.
#
# Nothing publishes unless the gate passes. semantic-release itself no-ops when
# there are no releasable commits, so an empty run is harmless.
on:
push:
branches:
- main

permissions:
contents: write # tag + push CHANGELOG/package.json, create GitHub release
issues: write # semantic-release success/failure comments
pull-requests: write
id-token: write # npm provenance

concurrency:
group: release-${{ github.ref }}
cancel-in-progress: false

jobs:
release:
name: Gate + Release
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0 # semantic-release needs full history + tags
persist-credentials: false # semantic-release authenticates itself

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '24.x'
registry-url: 'https://registry.npmjs.org'

- run: npm ci --ignore-scripts

# --- CI gate (mirrors ci.yml). No publish if any of these fail. ---
- name: Lint
run: npm run lint
- name: Circular dependency check
run: npm run circular
- name: Build
run: npm run build
- name: Unit tests
run: npm run test
- name: Integration tests
run: npm run test:integration:only

# --- Release (no-ops when there are no releasable commits) ---
- name: semantic-release
run: npx semantic-release
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
NPM_CONFIG_PROVENANCE: 'true'
18 changes: 18 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,28 @@ coverage
dist
node_modules
*.log
.npmrc

.claude
.github/instructions

test/performance
test/satellite/transform*
test/sgp4/sgp4prop

FUTURE-WORK.md

circular-deps.svg

**/**.out
.qodo

src/fetch

CLAUDE.md
.dev.vars

src/objects/__tests__/propagator-accuracy-summary.txt

docs/.vitepress/cache
docs/.vitepress/dist
7 changes: 7 additions & 0 deletions .husky/pre-push
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# Mirror the CI gate locally so failures surface BEFORE they hit GitHub.
# Matches the fast jobs in .github/workflows/ci.yml. Bypass with `--no-verify`
# only when you know what you're doing.
npm run lint && npm run circular && npm run test

# To also gate the slower build + integration tests before every push, swap the
# line above for: npm run lint && npm run circular && npm run test:all
15 changes: 15 additions & 0 deletions .madgerc
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
{
"fileExtensions": [
"ts"
],
"tsConfig": "./tsconfig.json",
"excludeRegExp": [
".*\\.test\\.ts$",
".*__tests__.*"
],
"detectiveOptions": {
"ts": {
"skipTypeImports": true
}
}
}
Loading
Loading