@neilberkman/sidereon 0.9.1 → 0.9.2

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/pkg/sidereon.js CHANGED
@@ -9126,6 +9126,58 @@ export class PppFloatSolution {
9126
9126
  }
9127
9127
  if (Symbol.dispose) PppFloatSolution.prototype[Symbol.dispose] = PppFloatSolution.prototype.free;
9128
9128
 
9129
+ /**
9130
+ * A precise-ephemeris source built from samples rather than parsed SP3 text.
9131
+ *
9132
+ * Implements the same `ObservableEphemerisSource` contract as a parsed [`Sp3`]
9133
+ * product and shares its interpolation substrate, so [`predictRanges`] accepts
9134
+ * either handle. Build one with [`preciseEphemerisSamplesFromSamples`].
9135
+ */
9136
+ export class PreciseEphemerisSampleSource {
9137
+ static __wrap(ptr) {
9138
+ const obj = Object.create(PreciseEphemerisSampleSource.prototype);
9139
+ obj.__wbg_ptr = ptr;
9140
+ PreciseEphemerisSampleSourceFinalization.register(obj, obj.__wbg_ptr, obj);
9141
+ return obj;
9142
+ }
9143
+ __destroy_into_raw() {
9144
+ const ptr = this.__wbg_ptr;
9145
+ this.__wbg_ptr = 0;
9146
+ PreciseEphemerisSampleSourceFinalization.unregister(this);
9147
+ return ptr;
9148
+ }
9149
+ free() {
9150
+ const ptr = this.__destroy_into_raw();
9151
+ wasm.__wbg_preciseephemerissamplesource_free(ptr, 0);
9152
+ }
9153
+ /**
9154
+ * Predict geometric ranges for many requests in one call. See the shared
9155
+ * [`predictRanges`](crate::precise_samples::predict_ranges_over) contract;
9156
+ * this is the sample-source entry point.
9157
+ * @param {any} requests
9158
+ * @param {any} options
9159
+ * @returns {any}
9160
+ */
9161
+ predictRanges(requests, options) {
9162
+ const ret = wasm.preciseephemerissamplesource_predictRanges(this.__wbg_ptr, requests, options);
9163
+ if (ret[2]) {
9164
+ throw takeFromExternrefTable0(ret[1]);
9165
+ }
9166
+ return takeFromExternrefTable0(ret[0]);
9167
+ }
9168
+ /**
9169
+ * The satellites this source can interpolate (e.g. `"G01"`), ascending.
9170
+ * @returns {string[]}
9171
+ */
9172
+ get satellites() {
9173
+ const ret = wasm.preciseephemerissamplesource_satellites(this.__wbg_ptr);
9174
+ var v1 = getArrayJsValueFromWasm0(ret[0], ret[1]).slice();
9175
+ wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);
9176
+ return v1;
9177
+ }
9178
+ }
9179
+ if (Symbol.dispose) PreciseEphemerisSampleSource.prototype[Symbol.dispose] = PreciseEphemerisSampleSource.prototype.free;
9180
+
9129
9181
  /**
9130
9182
  * The per-request results of a batch observable prediction, index-aligned to
9131
9183
  * the input requests. Each request independently either produced observables or
@@ -10728,6 +10780,25 @@ export class Sp3 {
10728
10780
  }
10729
10781
  return Sp3Interpolation.__wrap(ret[0]);
10730
10782
  }
10783
+ /**
10784
+ * Predict geometric ranges for many `(satellite, receiver, epoch)` requests
10785
+ * against this ephemeris in one call. `requests` is an array of
10786
+ * `{ sat, receiverEcefM, tRxJ2000S }`; returns an array of
10787
+ * `{ geometricRangeM, satClockS, transmitTimeJ2000S, satPosEcefM }`
10788
+ * index-aligned to `requests`. The same call shape works on a
10789
+ * `PreciseEphemerisSampleSource`. Delegates to the serial reference kernel
10790
+ * `sidereon_core::observables::predict_ranges`.
10791
+ * @param {any} requests
10792
+ * @param {any} options
10793
+ * @returns {any}
10794
+ */
10795
+ predictRanges(requests, options) {
10796
+ const ret = wasm.sp3_predictRanges(this.__wbg_ptr, requests, options);
10797
+ if (ret[2]) {
10798
+ throw takeFromExternrefTable0(ret[1]);
10799
+ }
10800
+ return takeFromExternrefTable0(ret[0]);
10801
+ }
10731
10802
  /**
10732
10803
  * Satellite tokens present in the product (e.g. `"G01"`), ascending.
10733
10804
  * @returns {string[]}
@@ -15967,6 +16038,27 @@ export function pppCorrections(sp3, epochs, receiver_ecef_m, options) {
15967
16038
  return takeFromExternrefTable0(ret[0]);
15968
16039
  }
15969
16040
 
16041
+ /**
16042
+ * Build a sample-backed precise-ephemeris source from an array of samples.
16043
+ *
16044
+ * `samples` is an array of `{ sat, epoch, positionEcefM, clockS?, clockEvent? }`
16045
+ * objects (see the sample field docs). Samples are grouped by satellite in their
16046
+ * supplied order; each satellite needs at least two strictly time-increasing
16047
+ * samples. Throws a `TypeError` for a malformed object or bad satellite token
16048
+ * and a `RangeError` for a non-finite epoch or a source validation failure
16049
+ * (empty input, a single-sample satellite, non-monotonic epochs, a non-finite
16050
+ * sample). Delegates to `sidereon_core::sp3::PreciseEphemerisSamples::from_samples`.
16051
+ * @param {any} samples
16052
+ * @returns {PreciseEphemerisSampleSource}
16053
+ */
16054
+ export function preciseEphemerisSamplesFromSamples(samples) {
16055
+ const ret = wasm.preciseEphemerisSamplesFromSamples(samples);
16056
+ if (ret[2]) {
16057
+ throw takeFromExternrefTable0(ret[1]);
16058
+ }
16059
+ return PreciseEphemerisSampleSource.__wrap(ret[0]);
16060
+ }
16061
+
15970
16062
  /**
15971
16063
  * Predict observables for many `(satellite, receiver, epoch)` requests from a
15972
16064
  * broadcast ephemeris store, serially. See [`predictBatchSp3`] for the argument
@@ -16909,6 +17001,29 @@ export function solveWithFallback(precise, broadcast, request, policy) {
16909
17001
  return SourcedSolution.__wrap(ret[0]);
16910
17002
  }
16911
17003
 
17004
+ /**
17005
+ * Extract a parsed SP3 product as the canonical precise-ephemeris samples, one
17006
+ * per real position record in ascending epoch order.
17007
+ *
17008
+ * Returns an array of `{ sat, epoch, positionEcefM, clockS, clockEvent }`
17009
+ * objects. Round-tripping the result back through
17010
+ * [`preciseEphemerisSamplesFromSamples`] rebuilds an interpolatable source that
17011
+ * reproduces the SP3-parsed source's interpolated states and predicted ranges
17012
+ * to the documented round-trip precision (byte-identical for samples whose
17013
+ * meters are the faithful image of the fit nodes; see the core module docs).
17014
+ * Delegates to `sidereon_core::sp3::Sp3::precise_ephemeris_samples`.
17015
+ * @param {Sp3} sp3
17016
+ * @returns {any}
17017
+ */
17018
+ export function sp3PreciseEphemerisSamples(sp3) {
17019
+ _assertClass(sp3, Sp3);
17020
+ const ret = wasm.sp3PreciseEphemerisSamples(sp3.__wbg_ptr);
17021
+ if (ret[2]) {
17022
+ throw takeFromExternrefTable0(ret[1]);
17023
+ }
17024
+ return takeFromExternrefTable0(ret[0]);
17025
+ }
17026
+
16912
17027
  /**
16913
17028
  * Continuous seconds since J2000 for a split Julian date.
16914
17029
  * @param {number} jd_whole
@@ -18135,6 +18250,9 @@ const PppFixedSolutionFinalization = (typeof FinalizationRegistry === 'undefined
18135
18250
  const PppFloatSolutionFinalization = (typeof FinalizationRegistry === 'undefined')
18136
18251
  ? { register: () => {}, unregister: () => {} }
18137
18252
  : new FinalizationRegistry(ptr => wasm.__wbg_pppfloatsolution_free(ptr, 1));
18253
+ const PreciseEphemerisSampleSourceFinalization = (typeof FinalizationRegistry === 'undefined')
18254
+ ? { register: () => {}, unregister: () => {} }
18255
+ : new FinalizationRegistry(ptr => wasm.__wbg_preciseephemerissamplesource_free(ptr, 1));
18138
18256
  const PredictBatchFinalization = (typeof FinalizationRegistry === 'undefined')
18139
18257
  ? { register: () => {}, unregister: () => {} }
18140
18258
  : new FinalizationRegistry(ptr => wasm.__wbg_predictbatch_free(ptr, 1));
Binary file