@neilberkman/sidereon 1.1.0 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,49 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.2.0 - 2026-08-28
4
+
5
+ ### Added
6
+
7
+ - Calendar second-of-day and fractional day-of-year helpers, the five
8
+ covariance-6 conversion/interpolation/ECI-RTN helpers, lenient NAV parsing
9
+ with skipped-block diagnostics and arbitrary record-list encoding, RINEX
10
+ observation-code and version-aware frequency/wavelength lookups, and the
11
+ SBAS EMS and RTKLIB text-log parsers.
12
+
13
+ ### Changed
14
+
15
+ - Engine update: sidereon 1.2.0 / sidereon-core 1.2.0, which corrects lenient
16
+ RINEX 4 CNAV decoding and RTKLIB SBAS wire-form preservation.
17
+
18
+ ## Unreleased
19
+
20
+ ### Added
21
+
22
+ - Lenient RINEX NAV parsing with core skipped-block diagnostics and standalone
23
+ encoding for arbitrary caller-supplied record lists.
24
+ - Direct, RINEX-version-aware observation-code frequency and wavelength
25
+ mappings.
26
+ - EMS and RTKLIB SBAS text-log parsers returning timestamped raw message
27
+ blocks with structured decode access.
28
+ - Added core-backed `secondOfDay`, `dayOfYear`, and `dataDayOfYear` calendar
29
+ helpers.
30
+ - Added core-backed six-by-six covariance unit conversion, PSD interpolation,
31
+ and ECI/RTN transform helpers using flat row-major arrays.
32
+
33
+ ## 1.1.1 - 2026-08-26
34
+
35
+ ### Changed
36
+
37
+ - Engine update: sidereon 1.1.1 / sidereon-core 1.1.1, the coordination
38
+ release restoring the shared release number across the language interfaces.
39
+ No numerical, algorithmic, or API changes.
40
+
41
+ ### Fixed
42
+
43
+ - `THIRD-PARTY-NOTICES.md` names the vendored tide-source snapshot
44
+ consistently (sidereon-core 0.36.3, byte-identical to the 0.35.0 sources).
45
+ No API changes.
46
+
3
47
  ## 1.1.0 - 2026-08-24
4
48
 
5
49
  ### Added
package/README.md CHANGED
@@ -334,6 +334,31 @@ Invalid coordinates throw a `RangeError` whose `kind` is
334
334
  is `"latitude"` or `"longitude"`, and `detail` carries the complete typed
335
335
  record.
336
336
 
337
+ ## RINEX NAV, observation codes, and SBAS text logs
338
+
339
+ `parseRinexNavLenient(bytes)` delegates to the core lenient NAV parser. It
340
+ returns a `RinexNavParse` with supported `records` in file order and `skipped`
341
+ diagnostics for malformed supported blocks. `recordCount` and `skippedCount`
342
+ are available as convenience getters. Header and UTF-8 failures throw; a
343
+ skipped block exposes its `satellite` and core `message`.
344
+
345
+ `encodeRinexNav(records)` accepts any caller-supplied JavaScript array of
346
+ `BroadcastRecordJs` objects and delegates the deterministic RINEX NAV encoding
347
+ to the core engine. The record wrapper list is consumed at the WASM boundary.
348
+
349
+ `rinexObservationFrequencyHz(system, code, rinexVersion, glonassChannel)` and
350
+ `rinexObservationWavelengthM(...)` use the core's direct full observation-code
351
+ policy, including RINEX-version-dependent mappings and the optional GLONASS
352
+ FDMA channel. Unknown combinations return `undefined`; the narrower
353
+ `rinexBandFrequencyHz` and `rinexBandWavelengthM` helpers remain available for
354
+ canonical band lookups.
355
+
356
+ `parseSbasEmsLines(text)` and `parseSbasRtklibLines(text)` return full
357
+ timestamped `SbasLogBlock` objects from the core engine. Each block exposes
358
+ `satellite`/`satelliteId`, GPS `week` and `towS`, the selected wire `form`, raw
359
+ `bytes`, and `decode()` for the structured SBAS message. Malformed recognized
360
+ blocks throw an engine `Error`; unrelated lines are ignored.
361
+
337
362
  ## Capabilities
338
363
 
339
364
  The wasm surface mirrors the full breadth of the engine:
@@ -427,6 +452,25 @@ Full signatures live in the bundled TypeScript declarations (`sidereon.d.ts`),
427
452
  including the plain-object request types for ARAIM, RTK/PPP, fusion,
428
453
  signal-analysis, and terrain protocols.
429
454
 
455
+ ### Calendar and six-by-six covariance helpers
456
+
457
+ `secondOfDay(hour, minute, second)` returns the civil seconds since midnight.
458
+ `dayOfYear(year, month, day, hour, minute, second)` returns the fractional
459
+ civil day-of-year. These two civil helpers forward their raw fields directly to
460
+ the core civil implementations without `ProductDate` validation. In contrast,
461
+ `dataDayOfYear(year, month, day)` constructs a validated `ProductDate` and
462
+ returns its integer day-of-year; invalid product dates throw `RangeError` there.
463
+
464
+ The six-by-six covariance helpers take and return flat row-major
465
+ `Float64Array`s of length 36, with state order `[rX, rY, rZ, vX, vY, vZ]`:
466
+ `covariance6KmToM`, `covariance6MToKm`, and `interpolateCovariance6(a, b, u)`.
467
+ `eciToRtnCovariance6(covariance, positionKm, velocityKmS)` and
468
+ `rtnToEciCovariance6(covariance, positionKm, velocityKmS)` use length-3 flat
469
+ position and velocity arrays in km and km/s. Covariance validation,
470
+ PSD-preserving interpolation, and RTN frame construction are supplied by
471
+ `sidereon-core`; malformed shapes throw `TypeError`, invalid numeric inputs
472
+ throw `RangeError`, and undefined RTN frames throw an engine `Error`.
473
+
430
474
  A few conventions to know: positions and state arrays cross as
431
475
  `Float64Array` (multi-epoch arrays are flat row-major, `3 * epochCount`); SGP4
432
476
  epoch grids are `BigInt64Array` of unix microseconds; SP3 query epochs are plain
@@ -76,8 +76,8 @@ source documents how it is based on and differs from the original. The complete
76
76
  official IERS notice is reproduced in
77
77
  `licenses/IERS-Conventions-Software-License.txt`.
78
78
 
79
- The exact public non-test tide sources distributed in `sidereon-core` 0.35.0
80
- are included under
79
+ The exact public non-test tide sources distributed in `sidereon-core` 0.36.3
80
+ (byte-identical to the 0.35.0 sources) are included under
81
81
  `third_party_source/sidereon-core-0.36.3/tides/`. These copies provide the
82
82
  source for every tide routine in the compiled WebAssembly artifact; they are
83
83
  not represented as original IERS software or as endorsed by the IERS
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@neilberkman/sidereon",
3
- "version": "1.1.0",
3
+ "version": "1.2.0",
4
4
  "description": "WebAssembly / JavaScript interface over the sidereon GNSS + astrodynamics engine: SP3 loading and multi-product merge, SPP / RTK (float + fixed) / PPP (float + fixed) positioning, IONEX slant delay, SGP4 and numerical orbit propagation, RINEX observation/navigation/clock parsing, CRINEX (Hatanaka) decoding, observable-domain math (carrier combinations, cycle slips, Hatch smoothing, weighting, velocity, GPS C/A signal), and the astro domain (scale-tagged time, frame transforms, Sun/Moon ephemerides, eclipse / body angles, DOP, passes / visibility, conjunction + collision probability, CDM / OMM / ANTEX parsing, RF link budget)",
5
5
  "type": "module",
6
6
  "license": "MIT",