gnss-js 2.10.0 → 2.11.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.
Files changed (45) hide show
  1. package/README.md +1 -1
  2. package/dist/binex.d.cts +1 -1
  3. package/dist/binex.d.ts +1 -1
  4. package/dist/{chunk-WQX354KD.js → chunk-H3AKFD25.js} +1 -1
  5. package/dist/{chunk-YUW33VXK.js → chunk-HUXQABJI.js} +2 -0
  6. package/dist/{chunk-GH7MYXON.js → chunk-IQHQHUOB.js} +3 -3
  7. package/dist/{chunk-56HM5B6T.js → chunk-MDO77CCC.js} +132 -9
  8. package/dist/chunk-NL2ORX75.js +319 -0
  9. package/dist/{chunk-N6GQUHM4.js → chunk-PBENVPFL.js} +1 -1
  10. package/dist/{chunk-74IVYOQV.js → chunk-RFPR4LKM.js} +110 -4
  11. package/dist/{chunk-3KSDL3CO.js → chunk-SSWFX3P3.js} +1 -1
  12. package/dist/{chunk-SEYH4BEN.js → chunk-SZP4TLYR.js} +2 -2
  13. package/dist/{chunk-K3GLUWZI.js → chunk-UMINQTMK.js} +1 -1
  14. package/dist/index.cjs +626 -110
  15. package/dist/index.d.cts +3 -3
  16. package/dist/index.d.ts +3 -3
  17. package/dist/index.js +12 -9
  18. package/dist/{nav-DImXUdbp.d.ts → nav-COp0Vmlw.d.cts} +83 -2
  19. package/dist/{nav-DImXUdbp.d.cts → nav-COp0Vmlw.d.ts} +83 -2
  20. package/dist/{nav-BYmYoh9A.d.cts → nav-CvZXmumD.d.cts} +1 -1
  21. package/dist/{nav-CN8rxL4h.d.ts → nav-D2DFlVpa.d.ts} +1 -1
  22. package/dist/novatel.d.cts +1 -1
  23. package/dist/novatel.d.ts +1 -1
  24. package/dist/novatel.js +3 -3
  25. package/dist/orbit.d.cts +2 -2
  26. package/dist/orbit.d.ts +2 -2
  27. package/dist/positioning.d.cts +2 -2
  28. package/dist/positioning.d.ts +2 -2
  29. package/dist/positioning.js +3 -3
  30. package/dist/rinex.cjs +140 -11
  31. package/dist/rinex.d.cts +9 -6
  32. package/dist/rinex.d.ts +9 -6
  33. package/dist/rinex.js +3 -2
  34. package/dist/rtcm3.cjs +1 -1
  35. package/dist/rtcm3.js +1 -1
  36. package/dist/sbf.cjs +420 -24
  37. package/dist/sbf.d.cts +46 -5
  38. package/dist/sbf.d.ts +46 -5
  39. package/dist/sbf.js +7 -4
  40. package/dist/trimble.d.cts +1 -1
  41. package/dist/trimble.d.ts +1 -1
  42. package/dist/ubx.d.cts +1 -1
  43. package/dist/ubx.d.ts +1 -1
  44. package/dist/ubx.js +4 -4
  45. package/package.json +1 -1
package/dist/rinex.cjs CHANGED
@@ -1495,6 +1495,15 @@ var SEC_PER_WEEK2 = 7 * 86400;
1495
1495
  var CNAV_A_REF = 26559710;
1496
1496
  var CNAV_OMEGA_DOT_REF = -26e-10;
1497
1497
 
1498
+ // src/navbits/bds-cnav.ts
1499
+ var BDT_EPOCH_MS = Date.UTC(2006, 0, 1);
1500
+ var SEC_PER_WEEK3 = 7 * 86400;
1501
+ var BDS_CNAV_A_REF_MEO = 27906100;
1502
+ var BDS_CNAV_A_REF_IGSO_GEO = 42162200;
1503
+ function bdsCnavAref(satType) {
1504
+ return satType === 3 ? BDS_CNAV_A_REF_MEO : BDS_CNAV_A_REF_IGSO_GEO;
1505
+ }
1506
+
1498
1507
  // src/rinex/nav.ts
1499
1508
  var DATA_LINES = {
1500
1509
  G: 7,
@@ -1520,16 +1529,17 @@ var R4_MSG_LINES = {
1520
1529
  // RINEX 4 adds orbit-4 (status flags) vs 3 in RINEX 3
1521
1530
  // EPH type parsed into RinexCnavEphemeris for G/J (skipped otherwise)
1522
1531
  CNAV: 9,
1523
- // EPH types we skip (different field layout)
1532
+ // BeiDou-3 B-CNAV, parsed into BdsCnavEphemeris
1524
1533
  CNV1: 10,
1525
1534
  CNV2: 10,
1526
1535
  CNV3: 9,
1536
+ // EPH types we skip (different field layout)
1527
1537
  L1NV: 8,
1528
1538
  L1OC: 9,
1529
1539
  L3OC: 9
1530
1540
  };
1531
1541
  var GPS_EPOCH_MS3 = Date.UTC(1980, 0, 6);
1532
- var SEC_PER_WEEK3 = 7 * 86400;
1542
+ var SEC_PER_WEEK4 = 7 * 86400;
1533
1543
  var QZSS_CNAV_A_REF = 42164200;
1534
1544
  var SUPPORTED_EPH_MSGS = /* @__PURE__ */ new Set([
1535
1545
  "LNAV",
@@ -1674,8 +1684,8 @@ function buildCnavEphemeris(sys, prn, date, epochVals, d) {
1674
1684
  const num = (r, c) => d[r]?.[c] ?? 0;
1675
1685
  const opt = (r, c) => d[r]?.[c] ?? null;
1676
1686
  const t = (date.getTime() - GPS_EPOCH_MS3) / 1e3;
1677
- const week = Math.floor(t / SEC_PER_WEEK3);
1678
- const toc = t - week * SEC_PER_WEEK3;
1687
+ const week = Math.floor(t / SEC_PER_WEEK4);
1688
+ const toc = t - week * SEC_PER_WEEK4;
1679
1689
  const sqrtA = num(1, 3);
1680
1690
  const a = sqrtA * sqrtA;
1681
1691
  const aRef = sys === "J" ? QZSS_CNAV_A_REF : CNAV_A_REF;
@@ -1732,6 +1742,68 @@ function buildCnavEphemeris(sys, prn, date, epochVals, d) {
1732
1742
  tow: num(7, 0)
1733
1743
  };
1734
1744
  }
1745
+ var BDT_EPOCH_MS2 = Date.UTC(2006, 0, 1);
1746
+ function buildBdsCnavEphemeris(message, prn, date, epochVals, d) {
1747
+ const num = (r, c) => d[r]?.[c] ?? 0;
1748
+ const opt = (r, c) => d[r]?.[c] ?? null;
1749
+ const cnv3 = message === "CNV3";
1750
+ const t = (date.getTime() - BDT_EPOCH_MS2) / 1e3;
1751
+ const weekToc = Math.floor(t / SEC_PER_WEEK4);
1752
+ const toc = t - weekToc * SEC_PER_WEEK4;
1753
+ const toe = num(2, 0);
1754
+ const week = toe - toc > SEC_PER_WEEK4 / 2 ? weekToc - 1 : toc - toe > SEC_PER_WEEK4 / 2 ? weekToc + 1 : weekToc;
1755
+ const sqrtA = num(1, 3);
1756
+ const a = sqrtA * sqrtA;
1757
+ const satType = num(4, 2);
1758
+ return {
1759
+ system: "C",
1760
+ prn,
1761
+ message,
1762
+ week,
1763
+ toe,
1764
+ toeDate: new Date(BDT_EPOCH_MS2 + (week * SEC_PER_WEEK4 + toe) * 1e3),
1765
+ toc,
1766
+ tocDate: date,
1767
+ satType,
1768
+ a,
1769
+ deltaA: a - bdsCnavAref(satType),
1770
+ aDot: num(0, 0),
1771
+ deltaN0: num(0, 2),
1772
+ deltaN0Dot: num(4, 1),
1773
+ m0: num(0, 3),
1774
+ e: num(1, 1),
1775
+ omega: num(3, 2),
1776
+ omega0: num(2, 2),
1777
+ i0: num(3, 0),
1778
+ omegaDot: num(3, 3),
1779
+ i0Dot: num(4, 0),
1780
+ cis: num(2, 3),
1781
+ cic: num(2, 1),
1782
+ crs: num(0, 1),
1783
+ crc: num(3, 1),
1784
+ cus: num(1, 2),
1785
+ cuc: num(1, 0),
1786
+ af0: epochVals[0] ?? 0,
1787
+ af1: epochVals[1] ?? 0,
1788
+ af2: epochVals[2] ?? 0,
1789
+ iode: cnv3 ? null : opt(8, 3),
1790
+ iodc: cnv3 ? null : opt(7, 3),
1791
+ tgdB1Cp: cnv3 ? null : opt(6, 2),
1792
+ tgdB2ap: cnv3 ? null : opt(6, 3),
1793
+ iscB1Cd: cnv3 ? null : opt(6, 0),
1794
+ iscB2ad: cnv3 ? null : opt(6, 1),
1795
+ tgdB2bI: cnv3 ? opt(6, 3) : null,
1796
+ top: opt(4, 3),
1797
+ sisaiOe: opt(5, 0),
1798
+ sisaiOcb: opt(5, 1),
1799
+ sisaiOc1: opt(5, 2),
1800
+ sisaiOc2: opt(5, 3),
1801
+ sismai: cnv3 ? opt(6, 0) : opt(7, 0),
1802
+ health: cnv3 ? opt(6, 1) : opt(7, 1),
1803
+ integrityFlags: cnv3 ? opt(6, 2) : opt(7, 2),
1804
+ tow: cnv3 ? num(7, 0) : num(8, 0)
1805
+ };
1806
+ }
1735
1807
  function parseNavFile(text) {
1736
1808
  const lines = text.split("\n");
1737
1809
  const header = {
@@ -1742,6 +1814,7 @@ function parseNavFile(text) {
1742
1814
  };
1743
1815
  const ephemerides = [];
1744
1816
  const cnav = [];
1817
+ const bdsCnav = [];
1745
1818
  let inHeader = true;
1746
1819
  let i = 0;
1747
1820
  while (i < lines.length) {
@@ -1810,7 +1883,8 @@ function parseNavFile(text) {
1810
1883
  continue;
1811
1884
  }
1812
1885
  const isCnav = msgType === "CNAV" && (svSys === "G" || svSys === "J");
1813
- if (!SUPPORTED_EPH_MSGS.has(msgType) && !isCnav) {
1886
+ const isBdsCnav = svSys === "C" && (msgType === "CNV1" || msgType === "CNV2" || msgType === "CNV3");
1887
+ if (!SUPPORTED_EPH_MSGS.has(msgType) && !isCnav && !isBdsCnav) {
1814
1888
  const totalLines = R4_MSG_LINES[msgType] ?? 2;
1815
1889
  i += totalLines + 1;
1816
1890
  continue;
@@ -1822,17 +1896,34 @@ function parseNavFile(text) {
1822
1896
  const sys2 = epochLine.charAt(0);
1823
1897
  const parsed = parseNavEpochV3(epochLine);
1824
1898
  const prn2 = `${sys2}${parsed.prn.substring(1)}`;
1825
- if (isCnav) {
1899
+ if (isCnav || isBdsCnav) {
1826
1900
  const slotLines = [];
1827
1901
  for (let j = 0; j < numDataLines2; j++) {
1828
1902
  i++;
1829
1903
  if (i >= lines.length) break;
1830
1904
  slotLines.push(parseDataLineSlots(lines[i]));
1831
1905
  }
1832
- if (slotLines.length === numDataLines2 && (sys2 === "G" || sys2 === "J")) {
1833
- cnav.push(
1834
- buildCnavEphemeris(sys2, prn2, parsed.date, parsed.values, slotLines)
1835
- );
1906
+ if (slotLines.length === numDataLines2) {
1907
+ if (isBdsCnav && sys2 === "C")
1908
+ bdsCnav.push(
1909
+ buildBdsCnavEphemeris(
1910
+ msgType,
1911
+ prn2,
1912
+ parsed.date,
1913
+ parsed.values,
1914
+ slotLines
1915
+ )
1916
+ );
1917
+ else if (sys2 === "G" || sys2 === "J")
1918
+ cnav.push(
1919
+ buildCnavEphemeris(
1920
+ sys2,
1921
+ prn2,
1922
+ parsed.date,
1923
+ parsed.values,
1924
+ slotLines
1925
+ )
1926
+ );
1836
1927
  }
1837
1928
  i++;
1838
1929
  continue;
@@ -1910,7 +2001,12 @@ function parseNavFile(text) {
1910
2001
  }
1911
2002
  i++;
1912
2003
  }
1913
- return cnav.length > 0 ? { header, ephemerides, cnav } : { header, ephemerides };
2004
+ return {
2005
+ header,
2006
+ ephemerides,
2007
+ ...cnav.length > 0 && { cnav },
2008
+ ...bdsCnav.length > 0 && { bdsCnav }
2009
+ };
1914
2010
  }
1915
2011
 
1916
2012
  // src/rinex/nav-writer.ts
@@ -2106,6 +2202,30 @@ function cnavRecord(eph) {
2106
2202
  orbitLine4([eph.tow, resolveWnOp(eph.week, eph.wnOp)])
2107
2203
  ].join("\n");
2108
2204
  }
2205
+ function bdsCnavRecord(eph) {
2206
+ const lines = [
2207
+ epochLine4(eph.prn, eph.tocDate, [eph.af0, eph.af1, eph.af2]),
2208
+ orbitLine4([eph.aDot, eph.crs, eph.deltaN0, eph.m0]),
2209
+ orbitLine4([eph.cuc, eph.e, eph.cus, Math.sqrt(eph.a)]),
2210
+ orbitLine4([eph.toe, eph.cic, eph.omega0, eph.cis]),
2211
+ orbitLine4([eph.i0, eph.crc, eph.omega, eph.omegaDot]),
2212
+ orbitLine4([eph.i0Dot, eph.deltaN0Dot, eph.satType, eph.top]),
2213
+ orbitLine4([eph.sisaiOe, eph.sisaiOcb, eph.sisaiOc1, eph.sisaiOc2])
2214
+ ];
2215
+ if (eph.message === "CNV3") {
2216
+ lines.push(
2217
+ orbitLine4([eph.sismai, eph.health, eph.integrityFlags, eph.tgdB2bI]),
2218
+ orbitLine4([eph.tow])
2219
+ );
2220
+ } else {
2221
+ lines.push(
2222
+ orbitLine4([eph.iscB1Cd, eph.iscB2ad, eph.tgdB1Cp, eph.tgdB2ap]),
2223
+ orbitLine4([eph.sismai, eph.health, eph.integrityFlags, eph.iodc]),
2224
+ orbitLine4([eph.tow, null, null, eph.iode])
2225
+ );
2226
+ }
2227
+ return lines.join("\n");
2228
+ }
2109
2229
  var KLOBUCHAR_SOURCES = [
2110
2230
  ["GPSA", "GPSB", "G", "LNAV"],
2111
2231
  ["QZSA", "QZSB", "J", "LNAV"],
@@ -2183,6 +2303,15 @@ function writeRinexNav4(nav) {
2183
2303
  ` + cnavRecord(eph)
2184
2304
  });
2185
2305
  }
2306
+ for (const eph of nav.bdsCnav ?? []) {
2307
+ records.push({
2308
+ prn: eph.prn,
2309
+ time: eph.tocDate.getTime(),
2310
+ label: eph.message,
2311
+ body: `> EPH ${padL(eph.prn, 3)} ${eph.message}
2312
+ ` + bdsCnavRecord(eph)
2313
+ });
2314
+ }
2186
2315
  records.sort(
2187
2316
  (a, b) => a.prn.localeCompare(b.prn) || a.time - b.time || a.label.localeCompare(b.label)
2188
2317
  );
package/dist/rinex.d.cts CHANGED
@@ -1,7 +1,7 @@
1
1
  import { R as RinexHeader } from './parser-JPjjFgeP.cjs';
2
2
  export { E as EpochSummary, P as ParseOptions, a as RinexResult, b as RinexStats, S as SYSTEM_ORDER, c as SatObsCallback, p as parseRinexStream, s as systemCmp, d as systemName } from './parser-JPjjFgeP.cjs';
3
- import { a as NavResult, N as NavHeader, E as Ephemeris, R as RinexCnavEphemeris } from './nav-DImXUdbp.cjs';
4
- export { G as GlonassEphemeris, K as KeplerEphemeris, p as parseNavFile } from './nav-DImXUdbp.cjs';
3
+ import { b as NavResult, N as NavHeader, E as Ephemeris, R as RinexCnavEphemeris, B as BdsCnavEphemeris } from './nav-COp0Vmlw.cjs';
4
+ export { a as BdsCnavMessage, G as GlonassEphemeris, K as KeplerEphemeris, p as parseNavFile } from './nav-COp0Vmlw.cjs';
5
5
  export { C as ClkFile, I as IonexGrid, S as Sp3File, a as Sp3Sample, c as clkBias, p as parseClk, b as parseIonex, d as parseSp3, s as sp3Position } from './clk-DGVBGRzA.cjs';
6
6
 
7
7
  /**
@@ -155,7 +155,8 @@ declare function writeRinexNav(nav: NavResult): string;
155
155
  *
156
156
  * Produces `> EPH` data records for the classic ephemeris types
157
157
  * (GPS/QZSS/NavIC LNAV, Galileo INAV, BeiDou D1/D2, GLONASS FDMA,
158
- * SBAS), `> EPH ... CNAV` records for GPS/QZSS CNAV ephemerides, and
158
+ * SBAS), `> EPH ... CNAV` records for GPS/QZSS CNAV ephemerides, BeiDou-3
159
+ * `CNV1`/`CNV2`/`CNV3` records for B-CNAV ephemerides, and
159
160
  * `> ION` records for the header's Klobuchar/NeQuick-G coefficients,
160
161
  * per the RINEX 4.01 record tables (A9-A18, A21, A26, A32, A33).
161
162
  */
@@ -165,13 +166,15 @@ interface Nav4Input {
165
166
  header: NavHeader;
166
167
  ephemerides: Ephemeris[];
167
168
  cnav?: RinexCnavEphemeris[];
169
+ bdsCnav?: BdsCnavEphemeris[];
168
170
  }
169
171
  /**
170
172
  * Write a RINEX 4.01 mixed navigation file.
171
173
  *
172
174
  * Emits `> EPH` records for every classic ephemeris (message labels
173
- * per constellation: LNAV, INAV, D1/D2, FDMA, SBAS) and every CNAV
174
- * ephemeris (`CNAV`), sorted by PRN, epoch, then label; followed by
175
+ * per constellation: LNAV, INAV, D1/D2, FDMA, SBAS), every GPS/QZSS
176
+ * CNAV ephemeris (`CNAV`) and every BeiDou-3 B-CNAV ephemeris (`CNV1`/
177
+ * `CNV2`/`CNV3`), sorted by PRN, epoch, then label; followed by
175
178
  * `> ION` records when the header carries Klobuchar (GPSA/GPSB,
176
179
  * QZSA/QZSB, BDSA/BDSB, IRNA/IRNB) or NeQuick-G (GAL) coefficients.
177
180
  * ION records need a transmit-time epoch, which RINEX 3-style headers
@@ -320,4 +323,4 @@ declare function createGzipLineSink(): {
320
323
  */
321
324
  declare function stationHeaderLines(header: RinexHeader): string[];
322
325
 
323
- export { type BiasRecord, type BiasSinex, type CompactEpoch, type CrxField, type DiffState, EMPTY_WARNINGS, Ephemeris, type Nav4Input, NavHeader, NavResult, RinexCnavEphemeris, RinexHeader, type RinexWarning, type RinexWarnings, WarningAccumulator, type WarningSeverity, type WriteCrxOptions, biasMetres, createGzipLineSink, crxDecompress, crxRepair, findSatBias, fmtD, fmtF, hdrLine, modalIntervalS, padL, padR, parseBiasSinex, parseCrxDataLine, stationHeaderLines, writeCrx, writeModernObsBlob, writeRinex2ObsBlob, writeRinex4ObsBlob, writeRinexNav, writeRinexNav4, writeRinexObsBlob };
326
+ export { BdsCnavEphemeris, type BiasRecord, type BiasSinex, type CompactEpoch, type CrxField, type DiffState, EMPTY_WARNINGS, Ephemeris, type Nav4Input, NavHeader, NavResult, RinexCnavEphemeris, RinexHeader, type RinexWarning, type RinexWarnings, WarningAccumulator, type WarningSeverity, type WriteCrxOptions, biasMetres, createGzipLineSink, crxDecompress, crxRepair, findSatBias, fmtD, fmtF, hdrLine, modalIntervalS, padL, padR, parseBiasSinex, parseCrxDataLine, stationHeaderLines, writeCrx, writeModernObsBlob, writeRinex2ObsBlob, writeRinex4ObsBlob, writeRinexNav, writeRinexNav4, writeRinexObsBlob };
package/dist/rinex.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import { R as RinexHeader } from './parser-JPjjFgeP.js';
2
2
  export { E as EpochSummary, P as ParseOptions, a as RinexResult, b as RinexStats, S as SYSTEM_ORDER, c as SatObsCallback, p as parseRinexStream, s as systemCmp, d as systemName } from './parser-JPjjFgeP.js';
3
- import { a as NavResult, N as NavHeader, E as Ephemeris, R as RinexCnavEphemeris } from './nav-DImXUdbp.js';
4
- export { G as GlonassEphemeris, K as KeplerEphemeris, p as parseNavFile } from './nav-DImXUdbp.js';
3
+ import { b as NavResult, N as NavHeader, E as Ephemeris, R as RinexCnavEphemeris, B as BdsCnavEphemeris } from './nav-COp0Vmlw.js';
4
+ export { a as BdsCnavMessage, G as GlonassEphemeris, K as KeplerEphemeris, p as parseNavFile } from './nav-COp0Vmlw.js';
5
5
  export { C as ClkFile, I as IonexGrid, S as Sp3File, a as Sp3Sample, c as clkBias, p as parseClk, b as parseIonex, d as parseSp3, s as sp3Position } from './clk-DGVBGRzA.js';
6
6
 
7
7
  /**
@@ -155,7 +155,8 @@ declare function writeRinexNav(nav: NavResult): string;
155
155
  *
156
156
  * Produces `> EPH` data records for the classic ephemeris types
157
157
  * (GPS/QZSS/NavIC LNAV, Galileo INAV, BeiDou D1/D2, GLONASS FDMA,
158
- * SBAS), `> EPH ... CNAV` records for GPS/QZSS CNAV ephemerides, and
158
+ * SBAS), `> EPH ... CNAV` records for GPS/QZSS CNAV ephemerides, BeiDou-3
159
+ * `CNV1`/`CNV2`/`CNV3` records for B-CNAV ephemerides, and
159
160
  * `> ION` records for the header's Klobuchar/NeQuick-G coefficients,
160
161
  * per the RINEX 4.01 record tables (A9-A18, A21, A26, A32, A33).
161
162
  */
@@ -165,13 +166,15 @@ interface Nav4Input {
165
166
  header: NavHeader;
166
167
  ephemerides: Ephemeris[];
167
168
  cnav?: RinexCnavEphemeris[];
169
+ bdsCnav?: BdsCnavEphemeris[];
168
170
  }
169
171
  /**
170
172
  * Write a RINEX 4.01 mixed navigation file.
171
173
  *
172
174
  * Emits `> EPH` records for every classic ephemeris (message labels
173
- * per constellation: LNAV, INAV, D1/D2, FDMA, SBAS) and every CNAV
174
- * ephemeris (`CNAV`), sorted by PRN, epoch, then label; followed by
175
+ * per constellation: LNAV, INAV, D1/D2, FDMA, SBAS), every GPS/QZSS
176
+ * CNAV ephemeris (`CNAV`) and every BeiDou-3 B-CNAV ephemeris (`CNV1`/
177
+ * `CNV2`/`CNV3`), sorted by PRN, epoch, then label; followed by
175
178
  * `> ION` records when the header carries Klobuchar (GPSA/GPSB,
176
179
  * QZSA/QZSB, BDSA/BDSB, IRNA/IRNB) or NeQuick-G (GAL) coefficients.
177
180
  * ION records need a transmit-time epoch, which RINEX 3-style headers
@@ -320,4 +323,4 @@ declare function createGzipLineSink(): {
320
323
  */
321
324
  declare function stationHeaderLines(header: RinexHeader): string[];
322
325
 
323
- export { type BiasRecord, type BiasSinex, type CompactEpoch, type CrxField, type DiffState, EMPTY_WARNINGS, Ephemeris, type Nav4Input, NavHeader, NavResult, RinexCnavEphemeris, RinexHeader, type RinexWarning, type RinexWarnings, WarningAccumulator, type WarningSeverity, type WriteCrxOptions, biasMetres, createGzipLineSink, crxDecompress, crxRepair, findSatBias, fmtD, fmtF, hdrLine, modalIntervalS, padL, padR, parseBiasSinex, parseCrxDataLine, stationHeaderLines, writeCrx, writeModernObsBlob, writeRinex2ObsBlob, writeRinex4ObsBlob, writeRinexNav, writeRinexNav4, writeRinexObsBlob };
326
+ export { BdsCnavEphemeris, type BiasRecord, type BiasSinex, type CompactEpoch, type CrxField, type DiffState, EMPTY_WARNINGS, Ephemeris, type Nav4Input, NavHeader, NavResult, RinexCnavEphemeris, RinexHeader, type RinexWarning, type RinexWarnings, WarningAccumulator, type WarningSeverity, type WriteCrxOptions, biasMetres, createGzipLineSink, crxDecompress, crxRepair, findSatBias, fmtD, fmtF, hdrLine, modalIntervalS, padL, padR, parseBiasSinex, parseCrxDataLine, stationHeaderLines, writeCrx, writeModernObsBlob, writeRinex2ObsBlob, writeRinex4ObsBlob, writeRinexNav, writeRinexNav4, writeRinexObsBlob };
package/dist/rinex.js CHANGED
@@ -21,7 +21,7 @@ import {
21
21
  writeRinexNav,
22
22
  writeRinexNav4,
23
23
  writeRinexObsBlob
24
- } from "./chunk-56HM5B6T.js";
24
+ } from "./chunk-MDO77CCC.js";
25
25
  import {
26
26
  SYSTEM_ORDER,
27
27
  crxDecompress,
@@ -31,13 +31,14 @@ import {
31
31
  systemCmp,
32
32
  systemName
33
33
  } from "./chunk-3U5AX7PY.js";
34
+ import "./chunk-NL2ORX75.js";
34
35
  import {
35
36
  clkBias,
36
37
  parseClk,
37
38
  parseSp3,
38
39
  sp3Position
39
40
  } from "./chunk-GPEP67TG.js";
40
- import "./chunk-YUW33VXK.js";
41
+ import "./chunk-HUXQABJI.js";
41
42
  import "./chunk-V2D5KUKH.js";
42
43
  import "./chunk-FIEWO4J4.js";
43
44
  export {
package/dist/rtcm3.cjs CHANGED
@@ -2057,7 +2057,7 @@ function updateStreamStats(stats, frames, rawBytes) {
2057
2057
  entry.count++;
2058
2058
  entry.lastSeen = now;
2059
2059
  entry.totalBytes += frame.length + 6;
2060
- const obsEpoch = decodeObs(frame);
2060
+ const obsEpoch = decodeObs(frame, { compactMsm: true });
2061
2061
  if (obsEpoch) {
2062
2062
  for (const obs of obsEpoch.observations) {
2063
2063
  const signals = [];
package/dist/rtcm3.js CHANGED
@@ -21,7 +21,7 @@ import {
21
21
  setRtcm3DebugHandler,
22
22
  updateStationMeta,
23
23
  updateStreamStats
24
- } from "./chunk-N6GQUHM4.js";
24
+ } from "./chunk-PBENVPFL.js";
25
25
  import "./chunk-HVXYFUCB.js";
26
26
  import "./chunk-LEEU5OIO.js";
27
27
  import "./chunk-FIEWO4J4.js";