gnss-js 2.8.2 → 2.10.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/dist/index.cjs CHANGED
@@ -36,6 +36,7 @@ __export(src_exports, {
36
36
  DELTA_GLO_L2: () => DELTA_GLO_L2,
37
37
  DUAL_FREQ_PAIRS: () => DUAL_FREQ_PAIRS,
38
38
  EMPTY_WARNINGS: () => EMPTY_WARNINGS,
39
+ EPHEMERIS_VALIDITY_MS: () => EPHEMERIS_VALIDITY_MS,
39
40
  FREQ: () => FREQ,
40
41
  FREQ_BDS_B1A: () => FREQ_BDS_B1A,
41
42
  FREQ_BDS_B1C: () => FREQ_BDS_B1C,
@@ -252,6 +253,7 @@ __export(src_exports, {
252
253
  hdrLine: () => hdrLine,
253
254
  horizonDistance: () => horizonDistance,
254
255
  ionoFree: () => ionoFree,
256
+ isEphemerisValid: () => isEphemerisValid,
255
257
  isSbasL1Preamble: () => isSbasL1Preamble,
256
258
  isSbasL5Correction: () => isSbasL5Correction,
257
259
  isSsrMessage: () => isSsrMessage,
@@ -262,8 +264,10 @@ __export(src_exports, {
262
264
  looksLikeRtcm2: () => looksLikeRtcm2,
263
265
  maskRadForAzimuth: () => maskRadForAzimuth,
264
266
  meridianArc: () => meridianArc,
267
+ modalIntervalS: () => modalIntervalS,
265
268
  moonEcef: () => moonEcef,
266
269
  navTimesFromEph: () => navTimesFromEph,
270
+ nearestValidEphemeris: () => nearestValidEphemeris,
267
271
  niellMapping: () => niellMapping,
268
272
  nlWavelength: () => nlWavelength,
269
273
  nmeaCoordToDecimal: () => nmeaCoordToDecimal,
@@ -320,6 +324,7 @@ __export(src_exports, {
320
324
  readString: () => readString,
321
325
  reportDecodeError: () => reportDecodeError,
322
326
  resetGloFreqCache: () => resetGloFreqCache,
327
+ resolveMsmRanges: () => resolveMsmRanges,
323
328
  resolvePppAmbiguities: () => resolvePppAmbiguities,
324
329
  rhumbLine: () => rhumbLine,
325
330
  rtcm2Dgps: () => rtcm2Dgps,
@@ -4256,6 +4261,21 @@ function writeRinexObsBlob(header, epochs, obsTypes) {
4256
4261
  comment: "Merged from multiple RINEX files"
4257
4262
  });
4258
4263
  }
4264
+ function modalIntervalS(epochs) {
4265
+ const counts = /* @__PURE__ */ new Map();
4266
+ for (let i = 1; i < epochs.length; i++) {
4267
+ const d = Math.round(epochs[i].time - epochs[i - 1].time);
4268
+ if (d > 0) counts.set(d, (counts.get(d) ?? 0) + 1);
4269
+ }
4270
+ let best = null;
4271
+ let bestN = 0;
4272
+ for (const [d, n] of counts)
4273
+ if (n > bestN || n === bestN && best !== null && d < best) {
4274
+ best = d;
4275
+ bestN = n;
4276
+ }
4277
+ return best === null ? null : best / 1e3;
4278
+ }
4259
4279
  async function writeModernObsBlob(header, epochs, obsTypes, opts) {
4260
4280
  if (epochs.length === 0) return new Blob([], { type: "application/gzip" });
4261
4281
  const sink = createGzipLineSink();
@@ -4302,11 +4322,9 @@ async function writeModernObsBlob(header, epochs, obsTypes, opts) {
4302
4322
  "TIME OF LAST OBS"
4303
4323
  )
4304
4324
  );
4305
- if (epochs.length >= 2) {
4306
- const interval = (epochs[1].time - epochs[0].time) / 1e3;
4307
- if (interval > 0 && interval < 3600) {
4308
- sink.push(hdrLine(fmtF(interval, 10, 3), "INTERVAL"));
4309
- }
4325
+ const interval = modalIntervalS(epochs);
4326
+ if (interval !== null && interval < 3600) {
4327
+ sink.push(hdrLine(fmtF(interval, 10, 3), "INTERVAL"));
4310
4328
  }
4311
4329
  if (header.glonassSlots && Object.keys(header.glonassSlots).length > 0) {
4312
4330
  const entries = Object.entries(header.glonassSlots).sort(
@@ -5941,12 +5959,14 @@ function satPrn(sys, satIdx1) {
5941
5959
  const num = sys === "S" ? satIdx1 + 119 : satIdx1;
5942
5960
  return `${prefix}${String(num).padStart(2, "0")}`;
5943
5961
  }
5944
- function decodeMsmFull(frame) {
5962
+ function decodeMsmFull(frame, opts = {}) {
5945
5963
  const type = frame.messageType;
5946
5964
  const sys = msmSystem(type);
5947
5965
  if (!sys) return null;
5948
5966
  const variant = type % 10;
5949
- if (variant < 4 || variant > 7) return null;
5967
+ if (variant < 1 || variant > 7) return null;
5968
+ const compact = variant <= 3;
5969
+ if (compact && !opts.compactMsm) return null;
5950
5970
  const payload = frame.payload;
5951
5971
  if (!payload || payload.length < 10) return null;
5952
5972
  try {
@@ -5991,7 +6011,9 @@ function decodeMsmFull(frame) {
5991
6011
  const rrmod = new Float64Array(numSat);
5992
6012
  const extsat = new Int8Array(numSat);
5993
6013
  const rdop = new Float64Array(numSat);
5994
- if (variant === 4 || variant === 6) {
6014
+ if (compact) {
6015
+ for (let j = 0; j < numSat; j++) rrmod[j] = bits.readU(10) / 1024;
6016
+ } else if (variant === 4 || variant === 6) {
5995
6017
  for (let j = 0; j < numSat; j++) rrint[j] = bits.readU(8);
5996
6018
  for (let j = 0; j < numSat; j++) rrmod[j] = bits.readU(10) / 1024;
5997
6019
  } else {
@@ -6017,7 +6039,18 @@ function decodeMsmFull(frame) {
6017
6039
  psr.fill(-1e30);
6018
6040
  cp.fill(-1e30);
6019
6041
  dop.fill(-1e30);
6020
- if (variant === 4) {
6042
+ if (variant === 1) {
6043
+ for (let i = 0; i < activeCells; i++) psr[i] = bits.readS(15) / 2 ** 24;
6044
+ } else if (variant === 2) {
6045
+ for (let i = 0; i < activeCells; i++) cp[i] = bits.readS(22) / 2 ** 29;
6046
+ for (let i = 0; i < activeCells; i++) ll[i] = bits.readU(4);
6047
+ for (let i = 0; i < activeCells; i++) hc[i] = bits.readU(1);
6048
+ } else if (variant === 3) {
6049
+ for (let i = 0; i < activeCells; i++) psr[i] = bits.readS(15) / 2 ** 24;
6050
+ for (let i = 0; i < activeCells; i++) cp[i] = bits.readS(22) / 2 ** 29;
6051
+ for (let i = 0; i < activeCells; i++) ll[i] = bits.readU(4);
6052
+ for (let i = 0; i < activeCells; i++) hc[i] = bits.readU(1);
6053
+ } else if (variant === 4) {
6021
6054
  for (let i = 0; i < activeCells; i++) psr[i] = bits.readS(15) / 2 ** 24;
6022
6055
  for (let i = 0; i < activeCells; i++) cp[i] = bits.readS(22) / 2 ** 29;
6023
6056
  for (let i = 0; i < activeCells; i++) ll[i] = bits.readU(4);
@@ -6093,8 +6126,10 @@ function decodeMsmFull(frame) {
6093
6126
  if (cnrVal > 0) {
6094
6127
  signal.cn0 = cnrVal;
6095
6128
  }
6096
- signal.lockTime = lockTimeSec(type, ll[cellIdx]);
6097
- signal.halfCycle = hc[cellIdx] === 1;
6129
+ if (variant !== 1) {
6130
+ signal.lockTime = lockTimeSec(type, ll[cellIdx]);
6131
+ signal.halfCycle = hc[cellIdx] === 1;
6132
+ }
6098
6133
  signals.push(signal);
6099
6134
  cellIdx++;
6100
6135
  }
@@ -6106,7 +6141,8 @@ function decodeMsmFull(frame) {
6106
6141
  messageType: type,
6107
6142
  epochMs,
6108
6143
  system: sys,
6109
- observations
6144
+ observations,
6145
+ ...compact ? { rangeModulo1ms: true } : {}
6110
6146
  };
6111
6147
  } catch (err) {
6112
6148
  reportDecodeError("msm", err);
@@ -6260,8 +6296,8 @@ function decodeLegacyObs(frame) {
6260
6296
  }
6261
6297
  return { messageType: type, epochMs, system, observations };
6262
6298
  }
6263
- function decodeObs(frame) {
6264
- return decodeMsmFull(frame) ?? decodeLegacyObs(frame);
6299
+ function decodeObs(frame, opts = {}) {
6300
+ return decodeMsmFull(frame, opts) ?? decodeLegacyObs(frame);
6265
6301
  }
6266
6302
 
6267
6303
  // src/rtcm3/ssr.ts
@@ -12312,6 +12348,42 @@ function invertMatrix(A) {
12312
12348
  return M.map((row) => row.slice(n));
12313
12349
  }
12314
12350
 
12351
+ // src/orbit/validity.ts
12352
+ var H = 36e5;
12353
+ var MIN = 6e4;
12354
+ var EPHEMERIS_VALIDITY_MS = {
12355
+ G: 2 * H,
12356
+ J: 2 * H,
12357
+ E: 2.5 * H,
12358
+ C: 90 * MIN,
12359
+ R: 15 * MIN,
12360
+ I: 2 * H,
12361
+ S: 6 * MIN
12362
+ };
12363
+ function tocDistanceMs(eph, tGpsMs) {
12364
+ const t = eph.system === "R" || eph.system === "S" ? tGpsMs - getGpsLeap(new Date(tGpsMs)) * 1e3 : tGpsMs;
12365
+ return Math.abs(eph.tocDate.getTime() - t);
12366
+ }
12367
+ function isEphemerisValid(eph, tGpsMs) {
12368
+ const w = EPHEMERIS_VALIDITY_MS[eph.system];
12369
+ return w !== void 0 && tocDistanceMs(eph, tGpsMs) <= w;
12370
+ }
12371
+ function nearestValidEphemeris(ephs, tGpsMs) {
12372
+ if (!ephs) return null;
12373
+ let best = null;
12374
+ let bestDt = Infinity;
12375
+ for (const eph of ephs) {
12376
+ const dt = tocDistanceMs(eph, tGpsMs);
12377
+ const w = EPHEMERIS_VALIDITY_MS[eph.system];
12378
+ if (w === void 0 || dt > w) continue;
12379
+ if (dt < bestDt) {
12380
+ bestDt = dt;
12381
+ best = eph;
12382
+ }
12383
+ }
12384
+ return best;
12385
+ }
12386
+
12315
12387
  // src/orbit/almanac.ts
12316
12388
  var GM_GPS = 3986005e8;
12317
12389
  var GM_GAL = 3986004418e5;
@@ -12808,18 +12880,7 @@ function computeAllPositions(ephemerides, times, rxPos) {
12808
12880
  return { prns, times, positions };
12809
12881
  }
12810
12882
  function selectBest(ephs, timeMs) {
12811
- let best = null;
12812
- let bestDt = Infinity;
12813
- for (const eph of ephs) {
12814
- const dt = Math.abs(timeMs - eph.tocDate.getTime());
12815
- const maxAge = eph.system === "R" || eph.system === "S" ? 18e5 : 4 * 36e5;
12816
- if (dt > maxAge) continue;
12817
- if (dt < bestDt) {
12818
- bestDt = dt;
12819
- best = eph;
12820
- }
12821
- }
12822
- return best;
12883
+ return nearestValidEphemeris(ephs, timeMs);
12823
12884
  }
12824
12885
  var GPS_EPOCH_MS24 = START_GPS_TIME.getTime();
12825
12886
  var MS_PER_WEEK13 = 7 * 864e5;
@@ -13060,14 +13121,14 @@ function computeVisibilityFromPositions(all, elevationMaskDeg = 10) {
13060
13121
  }
13061
13122
 
13062
13123
  // src/frames/index.ts
13063
- var H = (t, d, r, tDot, dDot, rDot, epoch) => ({ t, d, r, tDot, dDot, rDot, epoch });
13124
+ var H2 = (t, d, r, tDot, dDot, rDot, epoch) => ({ t, d, r, tDot, dDot, rDot, epoch });
13064
13125
  var Z = [0, 0, 0];
13065
13126
  var FROM_ITRF2020 = {
13066
- ITRF2014: H([-1.4, -0.9, 1.4], -0.42, Z, [0, -0.1, 0.2], 0, Z, 2015),
13067
- ITRF2008: H([0.2, 1, 3.3], -0.29, Z, [0, -0.1, 0.1], 0.03, Z, 2015),
13068
- ITRF2005: H([2.7, 0.1, -1.4], 0.65, Z, [0.3, -0.1, 0.1], 0.03, Z, 2015),
13069
- ITRF2000: H([-0.2, 0.8, -34.2], 2.25, Z, [0.1, 0, -1.7], 0.11, Z, 2015),
13070
- ITRF97: H(
13127
+ ITRF2014: H2([-1.4, -0.9, 1.4], -0.42, Z, [0, -0.1, 0.2], 0, Z, 2015),
13128
+ ITRF2008: H2([0.2, 1, 3.3], -0.29, Z, [0, -0.1, 0.1], 0.03, Z, 2015),
13129
+ ITRF2005: H2([2.7, 0.1, -1.4], 0.65, Z, [0.3, -0.1, 0.1], 0.03, Z, 2015),
13130
+ ITRF2000: H2([-0.2, 0.8, -34.2], 2.25, Z, [0.1, 0, -1.7], 0.11, Z, 2015),
13131
+ ITRF97: H2(
13071
13132
  [6.5, -3.9, -77.9],
13072
13133
  3.98,
13073
13134
  [0, 0, 0.36],
@@ -13076,7 +13137,7 @@ var FROM_ITRF2020 = {
13076
13137
  [0, 0, 0.02],
13077
13138
  2015
13078
13139
  ),
13079
- ITRF96: H(
13140
+ ITRF96: H2(
13080
13141
  [6.5, -3.9, -77.9],
13081
13142
  3.98,
13082
13143
  [0, 0, 0.36],
@@ -13085,7 +13146,7 @@ var FROM_ITRF2020 = {
13085
13146
  [0, 0, 0.02],
13086
13147
  2015
13087
13148
  ),
13088
- ITRF94: H(
13149
+ ITRF94: H2(
13089
13150
  [6.5, -3.9, -77.9],
13090
13151
  3.98,
13091
13152
  [0, 0, 0.36],
@@ -13094,7 +13155,7 @@ var FROM_ITRF2020 = {
13094
13155
  [0, 0, 0.02],
13095
13156
  2015
13096
13157
  ),
13097
- ITRF93: H(
13158
+ ITRF93: H2(
13098
13159
  [-65.8, 1.9, -71.3],
13099
13160
  4.47,
13100
13161
  [-3.36, -4.33, 0.75],
@@ -13103,7 +13164,7 @@ var FROM_ITRF2020 = {
13103
13164
  [-0.11, -0.19, 0.07],
13104
13165
  2015
13105
13166
  ),
13106
- ITRF92: H(
13167
+ ITRF92: H2(
13107
13168
  [14.5, -1.9, -85.9],
13108
13169
  3.27,
13109
13170
  [0, 0, 0.36],
@@ -13112,7 +13173,7 @@ var FROM_ITRF2020 = {
13112
13173
  [0, 0, 0.02],
13113
13174
  2015
13114
13175
  ),
13115
- ITRF91: H(
13176
+ ITRF91: H2(
13116
13177
  [26.5, 12.1, -91.9],
13117
13178
  4.67,
13118
13179
  [0, 0, 0.36],
@@ -13121,7 +13182,7 @@ var FROM_ITRF2020 = {
13121
13182
  [0, 0, 0.02],
13122
13183
  2015
13123
13184
  ),
13124
- ITRF90: H(
13185
+ ITRF90: H2(
13125
13186
  [24.5, 8.1, -107.9],
13126
13187
  4.97,
13127
13188
  [0, 0, 0.36],
@@ -13130,7 +13191,7 @@ var FROM_ITRF2020 = {
13130
13191
  [0, 0, 0.02],
13131
13192
  2015
13132
13193
  ),
13133
- ITRF89: H(
13194
+ ITRF89: H2(
13134
13195
  [29.5, 32.1, -145.9],
13135
13196
  8.37,
13136
13197
  [0, 0, 0.36],
@@ -13139,7 +13200,7 @@ var FROM_ITRF2020 = {
13139
13200
  [0, 0, 0.02],
13140
13201
  2015
13141
13202
  ),
13142
- ITRF88: H(
13203
+ ITRF88: H2(
13143
13204
  [24.5, -3.9, -169.9],
13144
13205
  11.47,
13145
13206
  [0.1, 0, 0.36],
@@ -13149,10 +13210,10 @@ var FROM_ITRF2020 = {
13149
13210
  2015
13150
13211
  ),
13151
13212
  /** ITRF2020 → ETRF2020, EPSG:10572 (epoch-1989 variant) */
13152
- ETRF2020: H(Z, 0, Z, Z, 0, [0.086, 0.519, -0.753], 1989)
13213
+ ETRF2020: H2(Z, 0, Z, Z, 0, [0.086, 0.519, -0.753], 1989)
13153
13214
  };
13154
- var ITRF2014_TO_ETRF2014 = H(Z, 0, Z, Z, 0, [0.085, 0.531, -0.77], 1989);
13155
- var ITRF2014_TO_ETRF2000 = H(
13215
+ var ITRF2014_TO_ETRF2014 = H2(Z, 0, Z, Z, 0, [0.085, 0.531, -0.77], 1989);
13216
+ var ITRF2014_TO_ETRF2000 = H2(
13156
13217
  [54.7, 52.2, -74.1],
13157
13218
  2.12,
13158
13219
  [1.701, 10.29, -16.632],
@@ -13161,7 +13222,7 @@ var ITRF2014_TO_ETRF2000 = H(
13161
13222
  [0.081, 0.49, -0.792],
13162
13223
  2010
13163
13224
  );
13164
- var ITRF2014_TO_NAD83_2011 = H(
13225
+ var ITRF2014_TO_NAD83_2011 = H2(
13165
13226
  [1005.3, -1909.21, -541.57],
13166
13227
  0.36891,
13167
13228
  [-26.78138, 0.42027, -10.93206],
@@ -14870,6 +14931,66 @@ var ZeroBaselineEngine = class {
14870
14931
  }
14871
14932
  };
14872
14933
 
14934
+ // src/positioning/msm-resolve.ts
14935
+ var LIGHT_MS = C_LIGHT / 1e3;
14936
+ var MAX_FRACTION_MISFIT = 0.25;
14937
+ function predictedRange(eph, timeMs, rx) {
14938
+ let tau = 0.075;
14939
+ for (let i = 0; i < 2; i++) {
14940
+ const tEmit = timeMs - tau * 1e3;
14941
+ const p = computeSatPosition(eph, tEmit);
14942
+ if (!Number.isFinite(p.x)) return null;
14943
+ const rho = Math.hypot(p.x - rx[0], p.y - rx[1], p.z - rx[2]);
14944
+ tau = rho / C_LIGHT;
14945
+ if (i === 1) return rho - C_LIGHT * satClockCorrection(eph, tEmit);
14946
+ }
14947
+ return null;
14948
+ }
14949
+ function moduloRange(sat) {
14950
+ for (const s of sat.signals)
14951
+ if (s.pseudorange !== void 0) return s.pseudorange;
14952
+ for (const s of sat.signals)
14953
+ if (s.phase !== void 0 && s.wavelength > 0)
14954
+ return s.phase * s.wavelength;
14955
+ return null;
14956
+ }
14957
+ function resolveMsmRanges(epoch, opts) {
14958
+ if (!epoch.rangeModulo1ms) return epoch;
14959
+ const cand = [];
14960
+ for (const sat of epoch.observations) {
14961
+ const eph = opts.ephFor(sat.prn);
14962
+ const mod = moduloRange(sat);
14963
+ if (!eph || mod === null) continue;
14964
+ const pred = predictedRange(eph, opts.timeMs, opts.rxEcef);
14965
+ if (pred === null) continue;
14966
+ cand.push({ sat, k: (pred - mod) / LIGHT_MS });
14967
+ }
14968
+ const { rangeModulo1ms: _drop, ...rest } = epoch;
14969
+ if (cand.length === 0) return { ...rest, observations: [] };
14970
+ let sx = 0;
14971
+ let sy = 0;
14972
+ for (const c of cand) {
14973
+ sx += Math.cos(2 * Math.PI * c.k);
14974
+ sy += Math.sin(2 * Math.PI * c.k);
14975
+ }
14976
+ const b = Math.atan2(sy, sx) / (2 * Math.PI);
14977
+ const observations = [];
14978
+ for (const { sat, k } of cand) {
14979
+ const n = Math.round(k - b);
14980
+ if (Math.abs(k - b - n) > MAX_FRACTION_MISFIT) continue;
14981
+ const add = n * LIGHT_MS;
14982
+ observations.push({
14983
+ ...sat,
14984
+ signals: sat.signals.map((s) => ({
14985
+ ...s,
14986
+ ...s.pseudorange !== void 0 ? { pseudorange: s.pseudorange + add } : {},
14987
+ ...s.phase !== void 0 && s.wavelength > 0 ? { phase: s.phase + add / s.wavelength } : {}
14988
+ }))
14989
+ });
14990
+ }
14991
+ return { ...rest, observations };
14992
+ }
14993
+
14873
14994
  // src/positioning/sbas.ts
14874
14995
  var P2_11 = 2 ** -11;
14875
14996
  var P2_31 = 2 ** -31;
@@ -15837,7 +15958,7 @@ function moonEcef(timeMs) {
15837
15958
  ];
15838
15959
  return eciToEcef(eci, gmst(timeMs));
15839
15960
  }
15840
- var H2 = 0.6078;
15961
+ var H22 = 0.6078;
15841
15962
  var L2 = 0.0847;
15842
15963
  var RE = 6378137;
15843
15964
  var GM_SUN_RATIO = 332946.0482;
@@ -15862,7 +15983,7 @@ function solidEarthTide(rcv, sun, moon) {
15862
15983
  ];
15863
15984
  const dot2 = rHat[0] * jHat[0] + rHat[1] * jHat[1] + rHat[2] * jHat[2];
15864
15985
  const factor = ratio * RE * RE * RE * RE / (rj * rj * rj);
15865
- const radialScale = H2 * (1.5 * dot2 * dot2 - 0.5);
15986
+ const radialScale = H22 * (1.5 * dot2 * dot2 - 0.5);
15866
15987
  const tanScale = 3 * L2 * dot2;
15867
15988
  for (let k = 0; k < 3; k++) {
15868
15989
  disp[k] += factor * (radialScale * rHat[k] + tanScale * (jHat[k] - dot2 * rHat[k]));
@@ -19522,6 +19643,7 @@ function computePsdDb(centerMHz, halfSpanChips, numPoints, psdFn, f0 = 1023e3, f
19522
19643
  DELTA_GLO_L2,
19523
19644
  DUAL_FREQ_PAIRS,
19524
19645
  EMPTY_WARNINGS,
19646
+ EPHEMERIS_VALIDITY_MS,
19525
19647
  FREQ,
19526
19648
  FREQ_BDS_B1A,
19527
19649
  FREQ_BDS_B1C,
@@ -19738,6 +19860,7 @@ function computePsdDb(centerMHz, halfSpanChips, numPoints, psdFn, f0 = 1023e3, f
19738
19860
  hdrLine,
19739
19861
  horizonDistance,
19740
19862
  ionoFree,
19863
+ isEphemerisValid,
19741
19864
  isSbasL1Preamble,
19742
19865
  isSbasL5Correction,
19743
19866
  isSsrMessage,
@@ -19748,8 +19871,10 @@ function computePsdDb(centerMHz, halfSpanChips, numPoints, psdFn, f0 = 1023e3, f
19748
19871
  looksLikeRtcm2,
19749
19872
  maskRadForAzimuth,
19750
19873
  meridianArc,
19874
+ modalIntervalS,
19751
19875
  moonEcef,
19752
19876
  navTimesFromEph,
19877
+ nearestValidEphemeris,
19753
19878
  niellMapping,
19754
19879
  nlWavelength,
19755
19880
  nmeaCoordToDecimal,
@@ -19806,6 +19931,7 @@ function computePsdDb(centerMHz, halfSpanChips, numPoints, psdFn, f0 = 1023e3, f
19806
19931
  readString,
19807
19932
  reportDecodeError,
19808
19933
  resetGloFreqCache,
19934
+ resolveMsmRanges,
19809
19935
  resolvePppAmbiguities,
19810
19936
  rhumbLine,
19811
19937
  rtcm2Dgps,
package/dist/index.d.cts CHANGED
@@ -5,21 +5,22 @@ export { A as ARC_GAP_FACTOR, B as BAND_LABELS, a as BDS_SATELLITES, b as BdsSat
5
5
  export { Scale, getBdsTime, getDateFromBdsTime, getDateFromDayOfWeek, getDateFromDayOfYear, getDateFromGalTime, getDateFromGloN, getDateFromGpsData, getDateFromGpsTime, getDateFromHourCode, getDateFromJulianDate, getDateFromMJD, getDateFromMJD2000, getDateFromRINEX, getDateFromTai, getDateFromTimeOfDay, getDateFromTt, getDateFromUnixTime, getDateFromUtc, getDayOfWeek, getDayOfYear, getGalTime, getGloN4, getGloNA, getGpsLeap, getGpsTime, getHourCode, getHoursFromTimeDifference, getJulianDate, getLeap, getMJD, getMJD2000, getMinutesFromTimeDifference, getNtpTime, getRINEX, getSecondsFromTimeDifference, getTaiDate, getTimeDifference, getTimeDifferenceFromDays, getTimeDifferenceFromHours, getTimeDifferenceFromMinutes, getTimeDifferenceFromObject, getTimeDifferenceFromSeconds, getTimeOfDay, getTimeOfWeek, getTotalDaysFromTimeDifference, getTtDate, getUnixTime, getUtcDate, getWeekNumber, getWeekOfYear } from './time.cjs';
6
6
  export { deg2dms, deg2rad, euclidean3D, geodeticToGeohash, geodeticToMaidenhead, geodeticToUtm, greatCircleMidpoint, horizonDistance, meridianArc, rad2deg, rhumbLine, vincenty, vincentyDirect } from './coordinates.cjs';
7
7
  export { c as clampUnit, e as ecefToGeodetic, g as geodeticToEcef, a as getAer, b as getEnuDifference } from './ecef-CF0uAysr.cjs';
8
- export { BiasRecord, BiasSinex, CompactEpoch, CrxField, DiffState, EMPTY_WARNINGS, Nav4Input, RinexWarning, RinexWarnings, WarningAccumulator, WarningSeverity, WriteCrxOptions, biasMetres, createGzipLineSink, crxDecompress, crxRepair, findSatBias, fmtD, fmtF, hdrLine, padL, padR, parseBiasSinex, parseCrxDataLine, stationHeaderLines, writeCrx, writeModernObsBlob, writeRinex2ObsBlob, writeRinex4ObsBlob, writeRinexNav, writeRinexNav4, writeRinexObsBlob } from './rinex.cjs';
8
+ export { BiasRecord, BiasSinex, CompactEpoch, CrxField, DiffState, EMPTY_WARNINGS, Nav4Input, RinexWarning, RinexWarnings, WarningAccumulator, WarningSeverity, WriteCrxOptions, biasMetres, createGzipLineSink, crxDecompress, crxRepair, findSatBias, fmtD, fmtF, hdrLine, modalIntervalS, padL, padR, parseBiasSinex, parseCrxDataLine, stationHeaderLines, writeCrx, writeModernObsBlob, writeRinex2ObsBlob, writeRinex4ObsBlob, writeRinexNav, writeRinexNav4, writeRinexObsBlob } from './rinex.cjs';
9
9
  export { E as EpochSummary, P as ParseOptions, R as RinexHeader, 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';
10
10
  export { C as CnavEphemeris, E as Ephemeris, G as GlonassEphemeris, K as KeplerEphemeris, N as NavHeader, a as NavResult, R as RinexCnavEphemeris, p as parseNavFile } from './nav-DImXUdbp.cjs';
11
11
  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';
12
12
  export { RTCM2_MESSAGE_NAMES, Rtcm2Correction, Rtcm2Decoder, Rtcm2Frame, Rtcm2ObsRecord, Rtcm2Station, looksLikeRtcm2, rtcm2Dgps, rtcm2Observation, rtcm2Station, rtcm2Text, rtcm2Time } from './rtcm2.cjs';
13
13
  export { B as BitReader, E as EphemerisInfo, R as Rtcm3DebugHandler, a as Rtcm3Decoder, b as Rtcm3Frame, d as decodeEphemeris, r as readString, c as reportDecodeError, s as setRtcm3DebugHandler } from './ephemeris-BAnBLLB9.cjs';
14
- export { IgsSsrIonoLayer, IgsSsrMessage, MessageTypeStats, ObsEpoch, ObsSatObs, ObsSignal, RTCM3_MESSAGE_NAMES, SatCn0, SignalCn0, SsrCodeBias, SsrKind, SsrMessage, SsrPhaseBias, SsrSatCorrection, StationMeta, StreamStats, SystemParams, SystemParamsMessage, createStationMeta, createStreamStats, decodeIgsSsr, decodeLegacyObs, decodeMsmFull, decodeObs, decodeSsr, decodeSystemParams, isSsrMessage, obsEpochToDate, resetGloFreqCache, rtcm3Constellation, setGloFreqNumber, updateStationMeta, updateStreamStats } from './rtcm3.cjs';
14
+ export { IgsSsrIonoLayer, IgsSsrMessage, MessageTypeStats, RTCM3_MESSAGE_NAMES, SatCn0, SignalCn0, SsrCodeBias, SsrKind, SsrMessage, SsrPhaseBias, SsrSatCorrection, StationMeta, StreamStats, SystemParams, SystemParamsMessage, createStationMeta, createStreamStats, decodeIgsSsr, decodeLegacyObs, decodeObs, decodeSsr, decodeSystemParams, isSsrMessage, rtcm3Constellation, updateStationMeta, updateStreamStats } from './rtcm3.cjs';
15
+ export { O as ObsDecodeOptions, a as ObsEpoch, b as ObsSatObs, c as ObsSignal, d as decodeMsmFull, o as obsEpochToDate, r as resetGloFreqCache, s as setGloFreqNumber } from './msm-DWtoTvx2.cjs';
15
16
  export { UbxCnavResult, UbxFrame, UbxIonoUtcResult, UbxMeasurement, UbxNavOptions, UbxNavResult, UbxParseResult, UbxPvtResult, UbxRawNavOptions, UbxRawNavResult, UbxRawxEpoch, parseUbxCnav, parseUbxIonoUtc, parseUbxNav, parseUbxPvt, parseUbxRawNav, parseUbxRawx, ubxFrames } from './ubx.cjs';
16
17
  export { DfmcCensus, DfmcMessageCb, GeoL5Result, SBAS_L5_MT_NAMES, SBAS_L5_PREAMBLE_UW, SbasMessageCb, SbfBdsNavResult, SbfCnavEphemeris, SbfCnavResult, SbfGalEphemeris, SbfGalNavResult, SbfGeoL5Result, SbfGeoNavResult, SbfGloNavResult, SbfGpsNavResult, SbfHasMessage, SbfHasResult, SbfIonoUtcResult, SbfMeasEpoch, SbfMeasurement, SbfNavCounts, SbfNavicResult, SbfNavigation, SbfParseResult, SbfPvt, SbfPvtResult, SbfReceiverSetup, decodeSbfNavigation, extractSbfNavicSubframe, feedGeoBlock, feedGeoL5Block, feedNavicBlock, isSbasL1Preamble, isSbasL5Correction, parseSbfBdsNav, parseSbfCnav, parseSbfGalNav, parseSbfGeoL5, parseSbfGeoNav, parseSbfGloNav, parseSbfGpsNav, parseSbfHas, parseSbfIonoUtc, parseSbfMeas, parseSbfNavic, parseSbfPvt, parseSbfReceiverSetup, sbasL5MessageName, sbasL5MessageType, sbfCrc16, scanSbfFrames } from './sbf.cjs';
17
18
  export { NovatelEpoch, NovatelMeasurement, NovatelNavResult, NovatelParseResult, NovatelPvtResult, OEM4_HLEN, Oem4Frame, crc32, oem4Frames, parseNovatelNav, parseNovatelPvt, parseNovatelRange } from './novatel.cjs';
18
19
  export { TrimbleEpoch, TrimbleFrame, TrimbleMeasurement, TrimbleNavResult, TrimbleParseResult, parseTrimble, parseTrimbleNav, trimbleFrames } from './trimble.cjs';
19
20
  export { BinexEpoch, BinexMeasurement, BinexParseResult, BinexRecord, binexCrc16, binexCrc32, binexCsum8, binexRecords, decodeBinexEph, getBnxi, parseBinex } from './binex.cjs';
20
- export { AllPositionsData, AlmanacPosition, DopValues, EpochSkyData, SatAzEl, SatPoint, SatPosition, VisibilityPass, VisibilityResult, almanacEpochMs, almanacSatPosition, computeAllPositions, computeDop, computeLiveSkyPositions, computeSatPosition, computeVisibility, computeVisibilityFromPositions, dopplerHz, ecefToAzEl, ephInfoToEphemeris, glonassAlmanacEpochMs, glonassAlmanacPosition, glonassPosition, keplerPosition, maskRadForAzimuth, navTimesFromEph, rangeRate, selectEphemeris } from './orbit.cjs';
21
+ export { AllPositionsData, AlmanacPosition, DopValues, EPHEMERIS_VALIDITY_MS, EpochSkyData, SatAzEl, SatPoint, SatPosition, VisibilityPass, VisibilityResult, almanacEpochMs, almanacSatPosition, computeAllPositions, computeDop, computeLiveSkyPositions, computeSatPosition, computeVisibility, computeVisibilityFromPositions, dopplerHz, ecefToAzEl, ephInfoToEphemeris, glonassAlmanacEpochMs, glonassAlmanacPosition, glonassPosition, isEphemerisValid, keplerPosition, maskRadForAzimuth, navTimesFromEph, nearestValidEphemeris, rangeRate, selectEphemeris } from './orbit.cjs';
21
22
  export { Helmert14, REFERENCE_FRAMES, ReferenceFrame, applyHelmert, dateToEpoch, transformFrame } from './frames.cjs';
22
- export { AntennaOffset, AppliedOrbitClock, ArFixedSat, ArOptions, ArResult, ArSat, CorrectionResult, Degradation, DgnssOptions, DgnssSolution, EphemerisSource, FixedPositionResult, IONO_L1_M_PER_TECU, KlobucharCoeffs, LambdaResult, NetworkFcbResult, NetworkFcbSummary, NlArc, NlFcbResult, OrbitClockCorrection, PppAntennaModel, PppArc, PppCorrectionConfig, PppCorrections, PppEngine, PppEphemerisSource, PppEpoch, PppEpochContext, PppEpochResult, PppFixState, PppOptions, PppSatObs, PppSolution, RawObservation, ReceiverBias, ReceiverClockSample, RtkAntennaConfig, RtkAntennaModel, RtkAntennaOffset, RtkEpochMeasurements, RtkFloatEngine, RtkFloatOptions, RtkFloatSolution, RtkMeasurement, RtkObsEpoch, RtkObsInput, RtkPostProcessOptions, RtkPostProcessResult, RtkReceiverAntenna, RtkTrackPoint, SatGeom, SatSample, SbasCorrectionSource, SbasIgp, SbasIonoDelay, SbasProcessor, SbasSatCorrection, Sp3EphemerisSource, SppOptions, SppSolution, TropoMapping, WlArc, WlFcbOptions, WlFcbResult, WlObs, ZeroBaselineEngine, ZeroBaselineOptions, antexFreqOfGroup, applyOrbitClock, buildPppAntenna, buildRtkAntenna, createPppCorrections, estimateNarrowlaneFcb, estimateNetworkFcbs, estimateWidelaneFcb, extractWidelaneArcs, fixPppPosition, gimSlantIonoDelayL1, gimVerticalTec, gmst, hasToOrbitClock, ionoFree, klobucharDelay, lambdaReduction, lambdaSearch, moonEcef, niellMapping, nlWavelength, postProcessRtk, rcvAntennaRangeM, resolvePppAmbiguities, satClockCorrection, sbasIonoDeg, sbasLongTermDeg, sbasProtectionLevels, solidEarthTide, solveDgnss, solvePpp, solveSpp, sunEcef, toRtkEpoch, wlWavelength } from './positioning.cjs';
23
+ export { AntennaOffset, AppliedOrbitClock, ArFixedSat, ArOptions, ArResult, ArSat, CorrectionResult, Degradation, DgnssOptions, DgnssSolution, EphemerisSource, FixedPositionResult, IONO_L1_M_PER_TECU, KlobucharCoeffs, LambdaResult, MsmResolveOptions, NetworkFcbResult, NetworkFcbSummary, NlArc, NlFcbResult, OrbitClockCorrection, PppAntennaModel, PppArc, PppCorrectionConfig, PppCorrections, PppEngine, PppEphemerisSource, PppEpoch, PppEpochContext, PppEpochResult, PppFixState, PppOptions, PppSatObs, PppSolution, RawObservation, ReceiverBias, ReceiverClockSample, RtkAntennaConfig, RtkAntennaModel, RtkAntennaOffset, RtkEpochMeasurements, RtkFloatEngine, RtkFloatOptions, RtkFloatSolution, RtkMeasurement, RtkObsEpoch, RtkObsInput, RtkPostProcessOptions, RtkPostProcessResult, RtkReceiverAntenna, RtkTrackPoint, SatGeom, SatSample, SbasCorrectionSource, SbasIgp, SbasIonoDelay, SbasProcessor, SbasSatCorrection, Sp3EphemerisSource, SppOptions, SppSolution, TropoMapping, WlArc, WlFcbOptions, WlFcbResult, WlObs, ZeroBaselineEngine, ZeroBaselineOptions, antexFreqOfGroup, applyOrbitClock, buildPppAntenna, buildRtkAntenna, createPppCorrections, estimateNarrowlaneFcb, estimateNetworkFcbs, estimateWidelaneFcb, extractWidelaneArcs, fixPppPosition, gimSlantIonoDelayL1, gimVerticalTec, gmst, hasToOrbitClock, ionoFree, klobucharDelay, lambdaReduction, lambdaSearch, moonEcef, niellMapping, nlWavelength, postProcessRtk, rcvAntennaRangeM, resolveMsmRanges, resolvePppAmbiguities, satClockCorrection, sbasIonoDeg, sbasLongTermDeg, sbasProtectionLevels, solidEarthTide, solveDgnss, solvePpp, solveSpp, sunEcef, toRtkEpoch, wlWavelength } from './positioning.cjs';
23
24
  export { NtripCaster, NtripConnectionInfo, NtripNetwork, NtripStream, NtripStreamConnection, NtripVersion, Sourcetable, SourcetableEntry, connectToMountpoint, fetchSourcetable, parseSourcetable } from './ntrip.cjs';
24
25
  export { CompleteSatSignal, CompleteSignalStats, CompletenessAccumulator, CompletenessResult, CycleSlipAccumulator, CycleSlipEvent, CycleSlipResult, CycleSlipSignalStats, IonoAccumulator, IonoDcbResult, IonoPoint, IonoRatePoint, IonoRateSeries, IonoResult, IonoSeries, MultipathAccumulator, MultipathPoint, MultipathResult, MultipathSeries, MultipathSignalStat, QualityResult, SatDcbMap, analyzeQuality, applyIonoDcb, computeIonoRate, detrendIonoArcs, parseSinexBiasDcb } from './analysis.cjs';
25
26
  export { AntennaEntry, AntexFile, FrequencyData, frequencyLabel, parseAntex } from './antex.cjs';
package/dist/index.d.ts CHANGED
@@ -5,21 +5,22 @@ export { A as ARC_GAP_FACTOR, B as BAND_LABELS, a as BDS_SATELLITES, b as BdsSat
5
5
  export { Scale, getBdsTime, getDateFromBdsTime, getDateFromDayOfWeek, getDateFromDayOfYear, getDateFromGalTime, getDateFromGloN, getDateFromGpsData, getDateFromGpsTime, getDateFromHourCode, getDateFromJulianDate, getDateFromMJD, getDateFromMJD2000, getDateFromRINEX, getDateFromTai, getDateFromTimeOfDay, getDateFromTt, getDateFromUnixTime, getDateFromUtc, getDayOfWeek, getDayOfYear, getGalTime, getGloN4, getGloNA, getGpsLeap, getGpsTime, getHourCode, getHoursFromTimeDifference, getJulianDate, getLeap, getMJD, getMJD2000, getMinutesFromTimeDifference, getNtpTime, getRINEX, getSecondsFromTimeDifference, getTaiDate, getTimeDifference, getTimeDifferenceFromDays, getTimeDifferenceFromHours, getTimeDifferenceFromMinutes, getTimeDifferenceFromObject, getTimeDifferenceFromSeconds, getTimeOfDay, getTimeOfWeek, getTotalDaysFromTimeDifference, getTtDate, getUnixTime, getUtcDate, getWeekNumber, getWeekOfYear } from './time.js';
6
6
  export { deg2dms, deg2rad, euclidean3D, geodeticToGeohash, geodeticToMaidenhead, geodeticToUtm, greatCircleMidpoint, horizonDistance, meridianArc, rad2deg, rhumbLine, vincenty, vincentyDirect } from './coordinates.js';
7
7
  export { c as clampUnit, e as ecefToGeodetic, g as geodeticToEcef, a as getAer, b as getEnuDifference } from './ecef-CF0uAysr.js';
8
- export { BiasRecord, BiasSinex, CompactEpoch, CrxField, DiffState, EMPTY_WARNINGS, Nav4Input, RinexWarning, RinexWarnings, WarningAccumulator, WarningSeverity, WriteCrxOptions, biasMetres, createGzipLineSink, crxDecompress, crxRepair, findSatBias, fmtD, fmtF, hdrLine, padL, padR, parseBiasSinex, parseCrxDataLine, stationHeaderLines, writeCrx, writeModernObsBlob, writeRinex2ObsBlob, writeRinex4ObsBlob, writeRinexNav, writeRinexNav4, writeRinexObsBlob } from './rinex.js';
8
+ export { BiasRecord, BiasSinex, CompactEpoch, CrxField, DiffState, EMPTY_WARNINGS, Nav4Input, RinexWarning, RinexWarnings, WarningAccumulator, WarningSeverity, WriteCrxOptions, biasMetres, createGzipLineSink, crxDecompress, crxRepair, findSatBias, fmtD, fmtF, hdrLine, modalIntervalS, padL, padR, parseBiasSinex, parseCrxDataLine, stationHeaderLines, writeCrx, writeModernObsBlob, writeRinex2ObsBlob, writeRinex4ObsBlob, writeRinexNav, writeRinexNav4, writeRinexObsBlob } from './rinex.js';
9
9
  export { E as EpochSummary, P as ParseOptions, R as RinexHeader, 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';
10
10
  export { C as CnavEphemeris, E as Ephemeris, G as GlonassEphemeris, K as KeplerEphemeris, N as NavHeader, a as NavResult, R as RinexCnavEphemeris, p as parseNavFile } from './nav-DImXUdbp.js';
11
11
  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';
12
12
  export { RTCM2_MESSAGE_NAMES, Rtcm2Correction, Rtcm2Decoder, Rtcm2Frame, Rtcm2ObsRecord, Rtcm2Station, looksLikeRtcm2, rtcm2Dgps, rtcm2Observation, rtcm2Station, rtcm2Text, rtcm2Time } from './rtcm2.js';
13
13
  export { B as BitReader, E as EphemerisInfo, R as Rtcm3DebugHandler, a as Rtcm3Decoder, b as Rtcm3Frame, d as decodeEphemeris, r as readString, c as reportDecodeError, s as setRtcm3DebugHandler } from './ephemeris-BAnBLLB9.js';
14
- export { IgsSsrIonoLayer, IgsSsrMessage, MessageTypeStats, ObsEpoch, ObsSatObs, ObsSignal, RTCM3_MESSAGE_NAMES, SatCn0, SignalCn0, SsrCodeBias, SsrKind, SsrMessage, SsrPhaseBias, SsrSatCorrection, StationMeta, StreamStats, SystemParams, SystemParamsMessage, createStationMeta, createStreamStats, decodeIgsSsr, decodeLegacyObs, decodeMsmFull, decodeObs, decodeSsr, decodeSystemParams, isSsrMessage, obsEpochToDate, resetGloFreqCache, rtcm3Constellation, setGloFreqNumber, updateStationMeta, updateStreamStats } from './rtcm3.js';
14
+ export { IgsSsrIonoLayer, IgsSsrMessage, MessageTypeStats, RTCM3_MESSAGE_NAMES, SatCn0, SignalCn0, SsrCodeBias, SsrKind, SsrMessage, SsrPhaseBias, SsrSatCorrection, StationMeta, StreamStats, SystemParams, SystemParamsMessage, createStationMeta, createStreamStats, decodeIgsSsr, decodeLegacyObs, decodeObs, decodeSsr, decodeSystemParams, isSsrMessage, rtcm3Constellation, updateStationMeta, updateStreamStats } from './rtcm3.js';
15
+ export { O as ObsDecodeOptions, a as ObsEpoch, b as ObsSatObs, c as ObsSignal, d as decodeMsmFull, o as obsEpochToDate, r as resetGloFreqCache, s as setGloFreqNumber } from './msm-CcQJV3PC.js';
15
16
  export { UbxCnavResult, UbxFrame, UbxIonoUtcResult, UbxMeasurement, UbxNavOptions, UbxNavResult, UbxParseResult, UbxPvtResult, UbxRawNavOptions, UbxRawNavResult, UbxRawxEpoch, parseUbxCnav, parseUbxIonoUtc, parseUbxNav, parseUbxPvt, parseUbxRawNav, parseUbxRawx, ubxFrames } from './ubx.js';
16
17
  export { DfmcCensus, DfmcMessageCb, GeoL5Result, SBAS_L5_MT_NAMES, SBAS_L5_PREAMBLE_UW, SbasMessageCb, SbfBdsNavResult, SbfCnavEphemeris, SbfCnavResult, SbfGalEphemeris, SbfGalNavResult, SbfGeoL5Result, SbfGeoNavResult, SbfGloNavResult, SbfGpsNavResult, SbfHasMessage, SbfHasResult, SbfIonoUtcResult, SbfMeasEpoch, SbfMeasurement, SbfNavCounts, SbfNavicResult, SbfNavigation, SbfParseResult, SbfPvt, SbfPvtResult, SbfReceiverSetup, decodeSbfNavigation, extractSbfNavicSubframe, feedGeoBlock, feedGeoL5Block, feedNavicBlock, isSbasL1Preamble, isSbasL5Correction, parseSbfBdsNav, parseSbfCnav, parseSbfGalNav, parseSbfGeoL5, parseSbfGeoNav, parseSbfGloNav, parseSbfGpsNav, parseSbfHas, parseSbfIonoUtc, parseSbfMeas, parseSbfNavic, parseSbfPvt, parseSbfReceiverSetup, sbasL5MessageName, sbasL5MessageType, sbfCrc16, scanSbfFrames } from './sbf.js';
17
18
  export { NovatelEpoch, NovatelMeasurement, NovatelNavResult, NovatelParseResult, NovatelPvtResult, OEM4_HLEN, Oem4Frame, crc32, oem4Frames, parseNovatelNav, parseNovatelPvt, parseNovatelRange } from './novatel.js';
18
19
  export { TrimbleEpoch, TrimbleFrame, TrimbleMeasurement, TrimbleNavResult, TrimbleParseResult, parseTrimble, parseTrimbleNav, trimbleFrames } from './trimble.js';
19
20
  export { BinexEpoch, BinexMeasurement, BinexParseResult, BinexRecord, binexCrc16, binexCrc32, binexCsum8, binexRecords, decodeBinexEph, getBnxi, parseBinex } from './binex.js';
20
- export { AllPositionsData, AlmanacPosition, DopValues, EpochSkyData, SatAzEl, SatPoint, SatPosition, VisibilityPass, VisibilityResult, almanacEpochMs, almanacSatPosition, computeAllPositions, computeDop, computeLiveSkyPositions, computeSatPosition, computeVisibility, computeVisibilityFromPositions, dopplerHz, ecefToAzEl, ephInfoToEphemeris, glonassAlmanacEpochMs, glonassAlmanacPosition, glonassPosition, keplerPosition, maskRadForAzimuth, navTimesFromEph, rangeRate, selectEphemeris } from './orbit.js';
21
+ export { AllPositionsData, AlmanacPosition, DopValues, EPHEMERIS_VALIDITY_MS, EpochSkyData, SatAzEl, SatPoint, SatPosition, VisibilityPass, VisibilityResult, almanacEpochMs, almanacSatPosition, computeAllPositions, computeDop, computeLiveSkyPositions, computeSatPosition, computeVisibility, computeVisibilityFromPositions, dopplerHz, ecefToAzEl, ephInfoToEphemeris, glonassAlmanacEpochMs, glonassAlmanacPosition, glonassPosition, isEphemerisValid, keplerPosition, maskRadForAzimuth, navTimesFromEph, nearestValidEphemeris, rangeRate, selectEphemeris } from './orbit.js';
21
22
  export { Helmert14, REFERENCE_FRAMES, ReferenceFrame, applyHelmert, dateToEpoch, transformFrame } from './frames.js';
22
- export { AntennaOffset, AppliedOrbitClock, ArFixedSat, ArOptions, ArResult, ArSat, CorrectionResult, Degradation, DgnssOptions, DgnssSolution, EphemerisSource, FixedPositionResult, IONO_L1_M_PER_TECU, KlobucharCoeffs, LambdaResult, NetworkFcbResult, NetworkFcbSummary, NlArc, NlFcbResult, OrbitClockCorrection, PppAntennaModel, PppArc, PppCorrectionConfig, PppCorrections, PppEngine, PppEphemerisSource, PppEpoch, PppEpochContext, PppEpochResult, PppFixState, PppOptions, PppSatObs, PppSolution, RawObservation, ReceiverBias, ReceiverClockSample, RtkAntennaConfig, RtkAntennaModel, RtkAntennaOffset, RtkEpochMeasurements, RtkFloatEngine, RtkFloatOptions, RtkFloatSolution, RtkMeasurement, RtkObsEpoch, RtkObsInput, RtkPostProcessOptions, RtkPostProcessResult, RtkReceiverAntenna, RtkTrackPoint, SatGeom, SatSample, SbasCorrectionSource, SbasIgp, SbasIonoDelay, SbasProcessor, SbasSatCorrection, Sp3EphemerisSource, SppOptions, SppSolution, TropoMapping, WlArc, WlFcbOptions, WlFcbResult, WlObs, ZeroBaselineEngine, ZeroBaselineOptions, antexFreqOfGroup, applyOrbitClock, buildPppAntenna, buildRtkAntenna, createPppCorrections, estimateNarrowlaneFcb, estimateNetworkFcbs, estimateWidelaneFcb, extractWidelaneArcs, fixPppPosition, gimSlantIonoDelayL1, gimVerticalTec, gmst, hasToOrbitClock, ionoFree, klobucharDelay, lambdaReduction, lambdaSearch, moonEcef, niellMapping, nlWavelength, postProcessRtk, rcvAntennaRangeM, resolvePppAmbiguities, satClockCorrection, sbasIonoDeg, sbasLongTermDeg, sbasProtectionLevels, solidEarthTide, solveDgnss, solvePpp, solveSpp, sunEcef, toRtkEpoch, wlWavelength } from './positioning.js';
23
+ export { AntennaOffset, AppliedOrbitClock, ArFixedSat, ArOptions, ArResult, ArSat, CorrectionResult, Degradation, DgnssOptions, DgnssSolution, EphemerisSource, FixedPositionResult, IONO_L1_M_PER_TECU, KlobucharCoeffs, LambdaResult, MsmResolveOptions, NetworkFcbResult, NetworkFcbSummary, NlArc, NlFcbResult, OrbitClockCorrection, PppAntennaModel, PppArc, PppCorrectionConfig, PppCorrections, PppEngine, PppEphemerisSource, PppEpoch, PppEpochContext, PppEpochResult, PppFixState, PppOptions, PppSatObs, PppSolution, RawObservation, ReceiverBias, ReceiverClockSample, RtkAntennaConfig, RtkAntennaModel, RtkAntennaOffset, RtkEpochMeasurements, RtkFloatEngine, RtkFloatOptions, RtkFloatSolution, RtkMeasurement, RtkObsEpoch, RtkObsInput, RtkPostProcessOptions, RtkPostProcessResult, RtkReceiverAntenna, RtkTrackPoint, SatGeom, SatSample, SbasCorrectionSource, SbasIgp, SbasIonoDelay, SbasProcessor, SbasSatCorrection, Sp3EphemerisSource, SppOptions, SppSolution, TropoMapping, WlArc, WlFcbOptions, WlFcbResult, WlObs, ZeroBaselineEngine, ZeroBaselineOptions, antexFreqOfGroup, applyOrbitClock, buildPppAntenna, buildRtkAntenna, createPppCorrections, estimateNarrowlaneFcb, estimateNetworkFcbs, estimateWidelaneFcb, extractWidelaneArcs, fixPppPosition, gimSlantIonoDelayL1, gimVerticalTec, gmst, hasToOrbitClock, ionoFree, klobucharDelay, lambdaReduction, lambdaSearch, moonEcef, niellMapping, nlWavelength, postProcessRtk, rcvAntennaRangeM, resolveMsmRanges, resolvePppAmbiguities, satClockCorrection, sbasIonoDeg, sbasLongTermDeg, sbasProtectionLevels, solidEarthTide, solveDgnss, solvePpp, solveSpp, sunEcef, toRtkEpoch, wlWavelength } from './positioning.js';
23
24
  export { NtripCaster, NtripConnectionInfo, NtripNetwork, NtripStream, NtripStreamConnection, NtripVersion, Sourcetable, SourcetableEntry, connectToMountpoint, fetchSourcetable, parseSourcetable } from './ntrip.js';
24
25
  export { CompleteSatSignal, CompleteSignalStats, CompletenessAccumulator, CompletenessResult, CycleSlipAccumulator, CycleSlipEvent, CycleSlipResult, CycleSlipSignalStats, IonoAccumulator, IonoDcbResult, IonoPoint, IonoRatePoint, IonoRateSeries, IonoResult, IonoSeries, MultipathAccumulator, MultipathPoint, MultipathResult, MultipathSeries, MultipathSignalStat, QualityResult, SatDcbMap, analyzeQuality, applyIonoDcb, computeIonoRate, detrendIonoArcs, parseSinexBiasDcb } from './analysis.js';
25
26
  export { AntennaEntry, AntexFile, FrequencyData, frequencyLabel, parseAntex } from './antex.js';
package/dist/index.js CHANGED
@@ -77,7 +77,7 @@ import {
77
77
  setRtcm3DebugHandler,
78
78
  updateStationMeta,
79
79
  updateStreamStats
80
- } from "./chunk-7GNRNKBR.js";
80
+ } from "./chunk-N6GQUHM4.js";
81
81
  import {
82
82
  parseUbxCnav,
83
83
  parseUbxIonoUtc,
@@ -201,6 +201,7 @@ import {
201
201
  nlWavelength,
202
202
  postProcessRtk,
203
203
  rcvAntennaRangeM,
204
+ resolveMsmRanges,
204
205
  resolvePppAmbiguities,
205
206
  satClockCorrection,
206
207
  sbasIonoDeg,
@@ -213,9 +214,10 @@ import {
213
214
  sunEcef,
214
215
  toRtkEpoch,
215
216
  wlWavelength
216
- } from "./chunk-CLNLOYBX.js";
217
+ } from "./chunk-K3GLUWZI.js";
217
218
  import "./chunk-WQX354KD.js";
218
219
  import {
220
+ EPHEMERIS_VALIDITY_MS,
219
221
  almanacEpochMs,
220
222
  almanacSatPosition,
221
223
  computeAllPositions,
@@ -230,12 +232,14 @@ import {
230
232
  glonassAlmanacEpochMs,
231
233
  glonassAlmanacPosition,
232
234
  glonassPosition,
235
+ isEphemerisValid,
233
236
  keplerPosition,
234
237
  maskRadForAzimuth,
235
238
  navTimesFromEph,
239
+ nearestValidEphemeris,
236
240
  rangeRate,
237
241
  selectEphemeris
238
- } from "./chunk-5OWRCF56.js";
242
+ } from "./chunk-7T5DLVZL.js";
239
243
  import {
240
244
  getBdsTime,
241
245
  getDateFromBdsTime,
@@ -334,6 +338,7 @@ import {
334
338
  fmtD,
335
339
  fmtF,
336
340
  hdrLine,
341
+ modalIntervalS,
337
342
  padL,
338
343
  padR,
339
344
  parseBiasSinex,
@@ -347,7 +352,7 @@ import {
347
352
  writeRinexNav,
348
353
  writeRinexNav4,
349
354
  writeRinexObsBlob
350
- } from "./chunk-6SWJTN6H.js";
355
+ } from "./chunk-56HM5B6T.js";
351
356
  import {
352
357
  SYSTEM_ORDER,
353
358
  crxDecompress,
@@ -415,6 +420,7 @@ export {
415
420
  DELTA_GLO_L2,
416
421
  DUAL_FREQ_PAIRS,
417
422
  EMPTY_WARNINGS,
423
+ EPHEMERIS_VALIDITY_MS,
418
424
  FREQ,
419
425
  FREQ_BDS_B1A,
420
426
  FREQ_BDS_B1C,
@@ -631,6 +637,7 @@ export {
631
637
  hdrLine,
632
638
  horizonDistance,
633
639
  ionoFree,
640
+ isEphemerisValid,
634
641
  isSbasL1Preamble,
635
642
  isSbasL5Correction,
636
643
  isSsrMessage,
@@ -641,8 +648,10 @@ export {
641
648
  looksLikeRtcm2,
642
649
  maskRadForAzimuth,
643
650
  meridianArc,
651
+ modalIntervalS,
644
652
  moonEcef,
645
653
  navTimesFromEph,
654
+ nearestValidEphemeris,
646
655
  niellMapping,
647
656
  nlWavelength,
648
657
  nmeaCoordToDecimal,
@@ -699,6 +708,7 @@ export {
699
708
  readString,
700
709
  reportDecodeError,
701
710
  resetGloFreqCache,
711
+ resolveMsmRanges,
702
712
  resolvePppAmbiguities,
703
713
  rhumbLine,
704
714
  rtcm2Dgps,