@ksp-gonogo/sitrep-sdk 0.0.1 → 0.2.0-rc.12
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/LICENSE +2 -2
- package/README.md +48 -8
- package/biome.shared.json +26 -0
- package/dist/__generated__/command-map.d.ts +480 -0
- package/dist/__generated__/command-map.d.ts.map +1 -0
- package/dist/__generated__/command-map.js +265 -0
- package/dist/__generated__/command-map.js.map +1 -0
- package/dist/__generated__/contract.d.ts +10271 -454
- package/dist/__generated__/contract.d.ts.map +1 -1
- package/dist/__generated__/contract.js +1163 -11
- package/dist/__generated__/contract.js.map +1 -1
- package/dist/__generated__/control-channels.d.ts +116 -0
- package/dist/__generated__/control-channels.d.ts.map +1 -0
- package/dist/__generated__/control-channels.js +29 -0
- package/dist/__generated__/control-channels.js.map +1 -0
- package/dist/__generated__/delay-roles.d.ts +17 -0
- package/dist/__generated__/delay-roles.d.ts.map +1 -0
- package/dist/__generated__/delay-roles.js +72 -0
- package/dist/__generated__/delay-roles.js.map +1 -0
- package/dist/__generated__/error-codes.d.ts +376 -0
- package/dist/__generated__/error-codes.d.ts.map +1 -0
- package/dist/__generated__/error-codes.js +688 -0
- package/dist/__generated__/error-codes.js.map +1 -0
- package/dist/__generated__/frames.d.ts +83 -0
- package/dist/__generated__/frames.d.ts.map +1 -0
- package/dist/__generated__/frames.js +44 -0
- package/dist/__generated__/frames.js.map +1 -0
- package/dist/__generated__/reckonability.d.ts +381 -0
- package/dist/__generated__/reckonability.d.ts.map +1 -0
- package/dist/__generated__/reckonability.js +49 -0
- package/dist/__generated__/reckonability.js.map +1 -0
- package/dist/__generated__/test-theme.d.ts +52 -0
- package/dist/__generated__/test-theme.d.ts.map +1 -0
- package/dist/__generated__/test-theme.js +70 -0
- package/dist/__generated__/test-theme.js.map +1 -0
- package/dist/__generated__/topic-map.d.ts +44 -12
- package/dist/__generated__/topic-map.d.ts.map +1 -1
- package/dist/__generated__/topic-map.js +84 -11
- package/dist/__generated__/topic-map.js.map +1 -1
- package/dist/__generated__/units.d.ts +97 -0
- package/dist/__generated__/units.d.ts.map +1 -0
- package/dist/__generated__/units.js +3302 -0
- package/dist/__generated__/units.js.map +1 -0
- package/dist/api/action-dispatch.d.ts +36 -0
- package/dist/api/action-dispatch.d.ts.map +1 -0
- package/dist/api/action-dispatch.js +79 -0
- package/dist/api/action-dispatch.js.map +1 -0
- package/dist/api/alarm-request.d.ts +118 -0
- package/dist/api/alarm-request.d.ts.map +1 -0
- package/dist/api/alarm-request.js +50 -0
- package/dist/api/alarm-request.js.map +1 -0
- package/dist/api/bodies.d.ts +68 -0
- package/dist/api/bodies.d.ts.map +1 -0
- package/dist/api/bodies.js +103 -0
- package/dist/api/bodies.js.map +1 -0
- package/dist/api/command-rejection.d.ts +104 -0
- package/dist/api/command-rejection.d.ts.map +1 -0
- package/dist/api/command-rejection.js +128 -0
- package/dist/api/command-rejection.js.map +1 -0
- package/dist/api/contribution-slots.d.ts +594 -0
- package/dist/api/contribution-slots.d.ts.map +1 -0
- package/dist/api/contribution-slots.js +43 -0
- package/dist/api/contribution-slots.js.map +1 -0
- package/dist/api/coverage/CoverageMaskCache.d.ts +52 -0
- package/dist/api/coverage/CoverageMaskCache.d.ts.map +1 -0
- package/dist/api/coverage/CoverageMaskCache.js +89 -0
- package/dist/api/coverage/CoverageMaskCache.js.map +1 -0
- package/dist/api/coverage/CoverageMaskContext.d.ts +35 -0
- package/dist/api/coverage/CoverageMaskContext.d.ts.map +1 -0
- package/dist/api/coverage/CoverageMaskContext.js +53 -0
- package/dist/api/coverage/CoverageMaskContext.js.map +1 -0
- package/dist/api/coverage-source.d.ts +42 -0
- package/dist/api/coverage-source.d.ts.map +1 -0
- package/dist/api/coverage-source.js +118 -0
- package/dist/api/coverage-source.js.map +1 -0
- package/dist/api/error-codes.d.ts +32 -0
- package/dist/api/error-codes.d.ts.map +1 -0
- package/dist/api/error-codes.js +77 -0
- package/dist/api/error-codes.js.map +1 -0
- package/dist/api/event-reveal.d.ts +56 -0
- package/dist/api/event-reveal.d.ts.map +1 -0
- package/dist/api/event-reveal.js +53 -0
- package/dist/api/event-reveal.js.map +1 -0
- package/dist/api/host.d.ts +130 -0
- package/dist/api/host.d.ts.map +1 -0
- package/dist/api/host.js +57 -0
- package/dist/api/host.js.map +1 -0
- package/dist/api/index.d.ts +604 -0
- package/dist/api/index.d.ts.map +1 -0
- package/dist/api/index.js +671 -0
- package/dist/api/index.js.map +1 -0
- package/dist/api/localStorageStore.d.ts +50 -0
- package/dist/api/localStorageStore.d.ts.map +1 -0
- package/dist/api/localStorageStore.js +151 -0
- package/dist/api/localStorageStore.js.map +1 -0
- package/dist/api/logger-contract.d.ts +37 -0
- package/dist/api/logger-contract.d.ts.map +1 -0
- package/dist/api/logger-contract.js +2 -0
- package/dist/api/logger-contract.js.map +1 -0
- package/dist/api/logger.d.ts +9 -0
- package/dist/api/logger.d.ts.map +1 -0
- package/dist/api/logger.js +16 -0
- package/dist/api/logger.js.map +1 -0
- package/dist/api/map-poi.d.ts +28 -0
- package/dist/api/map-poi.d.ts.map +1 -0
- package/dist/api/map-poi.js +82 -0
- package/dist/api/map-poi.js.map +1 -0
- package/dist/api/plot-layers.d.ts +240 -0
- package/dist/api/plot-layers.d.ts.map +1 -0
- package/dist/api/plot-layers.js +35 -0
- package/dist/api/plot-layers.js.map +1 -0
- package/dist/api/plots.d.ts +127 -0
- package/dist/api/plots.d.ts.map +1 -0
- package/dist/api/plots.js +39 -0
- package/dist/api/plots.js.map +1 -0
- package/dist/api/registry.d.ts +106 -0
- package/dist/api/registry.d.ts.map +1 -0
- package/dist/api/registry.js +267 -0
- package/dist/api/registry.js.map +1 -0
- package/dist/api/root-providers.d.ts +63 -0
- package/dist/api/root-providers.d.ts.map +1 -0
- package/dist/api/root-providers.js +76 -0
- package/dist/api/root-providers.js.map +1 -0
- package/dist/api/safe-random-uuid.d.ts +8 -0
- package/dist/api/safe-random-uuid.d.ts.map +1 -0
- package/dist/api/safe-random-uuid.js +19 -0
- package/dist/api/safe-random-uuid.js.map +1 -0
- package/dist/api/settings/SettingsContext.d.ts +32 -0
- package/dist/api/settings/SettingsContext.d.ts.map +1 -0
- package/dist/api/settings/SettingsContext.js +46 -0
- package/dist/api/settings/SettingsContext.js.map +1 -0
- package/dist/api/settings/SettingsService.d.ts +36 -0
- package/dist/api/settings/SettingsService.d.ts.map +1 -0
- package/dist/api/settings/SettingsService.js +139 -0
- package/dist/api/settings/SettingsService.js.map +1 -0
- package/dist/api/settings/store.d.ts +67 -0
- package/dist/api/settings/store.d.ts.map +1 -0
- package/dist/api/settings/store.js +160 -0
- package/dist/api/settings/store.js.map +1 -0
- package/dist/api/slots.d.ts +870 -0
- package/dist/api/slots.d.ts.map +1 -0
- package/dist/api/slots.js +45 -0
- package/dist/api/slots.js.map +1 -0
- package/dist/api/station-brokers.d.ts +48 -0
- package/dist/api/station-brokers.d.ts.map +1 -0
- package/dist/api/station-brokers.js +74 -0
- package/dist/api/station-brokers.js.map +1 -0
- package/dist/api/stock-bodies.d.ts +20 -0
- package/dist/api/stock-bodies.d.ts.map +1 -0
- package/dist/api/stock-bodies.js +263 -0
- package/dist/api/stock-bodies.js.map +1 -0
- package/dist/api/tiny-size.d.ts +13 -0
- package/dist/api/tiny-size.d.ts.map +1 -0
- package/dist/api/tiny-size.js +10 -0
- package/dist/api/tiny-size.js.map +1 -0
- package/dist/api/tone.d.ts +25 -0
- package/dist/api/tone.d.ts.map +1 -0
- package/dist/api/tone.js +15 -0
- package/dist/api/tone.js.map +1 -0
- package/dist/api/transport.d.ts +83 -0
- package/dist/api/transport.d.ts.map +1 -0
- package/dist/api/transport.js +2 -0
- package/dist/api/transport.js.map +1 -0
- package/dist/api/types.d.ts +1604 -0
- package/dist/api/types.d.ts.map +1 -0
- package/dist/api/types.js +19 -0
- package/dist/api/types.js.map +1 -0
- package/dist/api/uplink-handles.d.ts +40 -0
- package/dist/api/uplink-handles.d.ts.map +1 -0
- package/dist/api/uplink-handles.js +59 -0
- package/dist/api/uplink-handles.js.map +1 -0
- package/dist/binary-frame.d.ts +116 -0
- package/dist/binary-frame.d.ts.map +1 -0
- package/dist/binary-frame.js +188 -0
- package/dist/binary-frame.js.map +1 -0
- package/dist/burn-clock.d.ts +61 -0
- package/dist/burn-clock.d.ts.map +1 -0
- package/dist/burn-clock.js +82 -0
- package/dist/burn-clock.js.map +1 -0
- package/dist/client.d.ts +8 -1
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +39 -7
- package/dist/client.js.map +1 -1
- package/dist/combine-readings.d.ts +84 -0
- package/dist/combine-readings.d.ts.map +1 -0
- package/dist/combine-readings.js +197 -0
- package/dist/combine-readings.js.map +1 -0
- package/dist/command-delay.d.ts +211 -0
- package/dist/command-delay.d.ts.map +1 -0
- package/dist/command-delay.js +194 -0
- package/dist/command-delay.js.map +1 -0
- package/dist/command-reply-units.d.ts +14 -0
- package/dist/command-reply-units.d.ts.map +1 -0
- package/dist/command-reply-units.js +46 -0
- package/dist/command-reply-units.js.map +1 -0
- package/dist/commands.d.ts +143 -0
- package/dist/commands.d.ts.map +1 -0
- package/dist/commands.js +113 -0
- package/dist/commands.js.map +1 -0
- package/dist/comms-degrade.d.ts +43 -0
- package/dist/comms-degrade.d.ts.map +1 -0
- package/dist/comms-degrade.js +45 -0
- package/dist/comms-degrade.js.map +1 -0
- package/dist/compat-versions.d.ts +42 -0
- package/dist/compat-versions.d.ts.map +1 -0
- package/dist/compat-versions.js +42 -0
- package/dist/compat-versions.js.map +1 -0
- package/dist/contract-enum-names.d.ts +89 -0
- package/dist/contract-enum-names.d.ts.map +1 -0
- package/dist/contract-enum-names.js +90 -0
- package/dist/contract-enum-names.js.map +1 -0
- package/dist/control-channels.d.ts +46 -0
- package/dist/control-channels.d.ts.map +1 -0
- package/dist/control-channels.js +49 -0
- package/dist/control-channels.js.map +1 -0
- package/dist/crew-standing.d.ts +69 -0
- package/dist/crew-standing.d.ts.map +1 -0
- package/dist/crew-standing.js +105 -0
- package/dist/crew-standing.js.map +1 -0
- package/dist/delay-roles.d.ts +96 -0
- package/dist/delay-roles.d.ts.map +1 -0
- package/dist/delay-roles.js +114 -0
- package/dist/delay-roles.js.map +1 -0
- package/dist/descent.d.ts +89 -0
- package/dist/descent.d.ts.map +1 -0
- package/dist/descent.js +96 -0
- package/dist/descent.js.map +1 -0
- package/dist/enum-names.d.ts +18 -0
- package/dist/enum-names.d.ts.map +1 -0
- package/dist/enum-names.js +35 -0
- package/dist/enum-names.js.map +1 -0
- package/dist/envelope.d.ts +15 -3
- package/dist/envelope.d.ts.map +1 -1
- package/dist/envelope.js +1 -0
- package/dist/envelope.js.map +1 -1
- package/dist/event-timeline.d.ts +112 -0
- package/dist/event-timeline.d.ts.map +1 -0
- package/dist/event-timeline.js +120 -0
- package/dist/event-timeline.js.map +1 -0
- package/dist/extensions.d.ts +28 -0
- package/dist/extensions.d.ts.map +1 -0
- package/dist/extensions.js +36 -0
- package/dist/extensions.js.map +1 -0
- package/dist/field-frames.d.ts +32 -0
- package/dist/field-frames.d.ts.map +1 -0
- package/dist/field-frames.js +41 -0
- package/dist/field-frames.js.map +1 -0
- package/dist/flight/BufferedDataSource.d.ts +260 -0
- package/dist/flight/BufferedDataSource.d.ts.map +1 -0
- package/dist/flight/BufferedDataSource.js +790 -0
- package/dist/flight/BufferedDataSource.js.map +1 -0
- package/dist/flight/DataSourceWrapper.d.ts +33 -0
- package/dist/flight/DataSourceWrapper.d.ts.map +1 -0
- package/dist/flight/DataSourceWrapper.js +55 -0
- package/dist/flight/DataSourceWrapper.js.map +1 -0
- package/dist/flight/ListenerSet.d.ts +28 -0
- package/dist/flight/ListenerSet.d.ts.map +1 -0
- package/dist/flight/ListenerSet.js +66 -0
- package/dist/flight/ListenerSet.js.map +1 -0
- package/dist/flight/debugFlight.d.ts +8 -0
- package/dist/flight/debugFlight.d.ts.map +1 -0
- package/dist/flight/debugFlight.js +14 -0
- package/dist/flight/debugFlight.js.map +1 -0
- package/dist/flight/derive.d.ts +45 -0
- package/dist/flight/derive.d.ts.map +1 -0
- package/dist/flight/derive.js +26 -0
- package/dist/flight/derive.js.map +1 -0
- package/dist/flight/fixtureIO.d.ts +103 -0
- package/dist/flight/fixtureIO.d.ts.map +1 -0
- package/dist/flight/fixtureIO.js +120 -0
- package/dist/flight/fixtureIO.js.map +1 -0
- package/dist/flight/flightAutoDelete.d.ts +33 -0
- package/dist/flight/flightAutoDelete.d.ts.map +1 -0
- package/dist/flight/flightAutoDelete.js +43 -0
- package/dist/flight/flightAutoDelete.js.map +1 -0
- package/dist/flight/flightDetector.d.ts +73 -0
- package/dist/flight/flightDetector.d.ts.map +1 -0
- package/dist/flight/flightDetector.js +167 -0
- package/dist/flight/flightDetector.js.map +1 -0
- package/dist/flight/storage/LocalStorageStore.d.ts +52 -0
- package/dist/flight/storage/LocalStorageStore.d.ts.map +1 -0
- package/dist/flight/storage/LocalStorageStore.js +127 -0
- package/dist/flight/storage/LocalStorageStore.js.map +1 -0
- package/dist/flight/storage/MemoryStore.d.ts +24 -0
- package/dist/flight/storage/MemoryStore.d.ts.map +1 -0
- package/dist/flight/storage/MemoryStore.js +90 -0
- package/dist/flight/storage/MemoryStore.js.map +1 -0
- package/dist/flight/storage/Store.d.ts +37 -0
- package/dist/flight/storage/Store.d.ts.map +1 -0
- package/dist/flight/storage/Store.js +8 -0
- package/dist/flight/storage/Store.js.map +1 -0
- package/dist/flight/types.d.ts +358 -0
- package/dist/flight/types.d.ts.map +1 -0
- package/dist/flight/types.js +10 -0
- package/dist/flight/types.js.map +1 -0
- package/dist/frame-qualifier.d.ts +61 -0
- package/dist/frame-qualifier.d.ts.map +1 -0
- package/dist/frame-qualifier.js +122 -0
- package/dist/frame-qualifier.js.map +1 -0
- package/dist/frames/index.d.ts +133 -0
- package/dist/frames/index.d.ts.map +1 -0
- package/dist/frames/index.js +128 -0
- package/dist/frames/index.js.map +1 -0
- package/dist/index.d.ts +76 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +191 -5
- package/dist/index.js.map +1 -1
- package/dist/ksp-enum-names.d.ts +127 -0
- package/dist/ksp-enum-names.d.ts.map +1 -0
- package/dist/ksp-enum-names.js +128 -0
- package/dist/ksp-enum-names.js.map +1 -0
- package/dist/locked.d.ts +20 -0
- package/dist/locked.d.ts.map +1 -0
- package/dist/locked.js +25 -0
- package/dist/locked.js.map +1 -0
- package/dist/magnitude.d.ts +37 -0
- package/dist/magnitude.d.ts.map +1 -0
- package/dist/magnitude.js +39 -0
- package/dist/magnitude.js.map +1 -0
- package/dist/maneuver-basis.d.ts +19 -0
- package/dist/maneuver-basis.d.ts.map +1 -0
- package/dist/maneuver-basis.js +37 -0
- package/dist/maneuver-basis.js.map +1 -0
- package/dist/media/capture-clock.d.ts +35 -0
- package/dist/media/capture-clock.d.ts.map +1 -0
- package/dist/media/capture-clock.js +26 -0
- package/dist/media/capture-clock.js.map +1 -0
- package/dist/media/delayed-playout-buffer.d.ts +169 -0
- package/dist/media/delayed-playout-buffer.d.ts.map +1 -0
- package/dist/media/delayed-playout-buffer.js +166 -0
- package/dist/media/delayed-playout-buffer.js.map +1 -0
- package/dist/media/encoded-frame-delay.d.ts +115 -0
- package/dist/media/encoded-frame-delay.d.ts.map +1 -0
- package/dist/media/encoded-frame-delay.js +85 -0
- package/dist/media/encoded-frame-delay.js.map +1 -0
- package/dist/media/frame-delay.d.ts +204 -0
- package/dist/media/frame-delay.d.ts.map +1 -0
- package/dist/media/frame-delay.js +237 -0
- package/dist/media/frame-delay.js.map +1 -0
- package/dist/media/index.d.ts +17 -0
- package/dist/media/index.d.ts.map +1 -0
- package/dist/media/index.js +21 -0
- package/dist/media/index.js.map +1 -0
- package/dist/media/radio-support.d.ts +98 -0
- package/dist/media/radio-support.d.ts.map +1 -0
- package/dist/media/radio-support.js +99 -0
- package/dist/media/radio-support.js.map +1 -0
- package/dist/media/shared-delayed-streams.d.ts +119 -0
- package/dist/media/shared-delayed-streams.d.ts.map +1 -0
- package/dist/media/shared-delayed-streams.js +167 -0
- package/dist/media/shared-delayed-streams.js.map +1 -0
- package/dist/media/worker/delay-worker-client.d.ts +106 -0
- package/dist/media/worker/delay-worker-client.d.ts.map +1 -0
- package/dist/media/worker/delay-worker-client.js +207 -0
- package/dist/media/worker/delay-worker-client.js.map +1 -0
- package/dist/media/worker/delay-worker.d.ts +107 -0
- package/dist/media/worker/delay-worker.d.ts.map +1 -0
- package/dist/media/worker/delay-worker.js +604 -0
- package/dist/media/worker/delay-worker.js.map +7 -0
- package/dist/media/worker/presentation-pacer.d.ts +156 -0
- package/dist/media/worker/presentation-pacer.d.ts.map +1 -0
- package/dist/media/worker/presentation-pacer.js +200 -0
- package/dist/media/worker/presentation-pacer.js.map +1 -0
- package/dist/media/worker/time-base.d.ts +44 -0
- package/dist/media/worker/time-base.d.ts.map +1 -0
- package/dist/media/worker/time-base.js +48 -0
- package/dist/media/worker/time-base.js.map +1 -0
- package/dist/media/worker/worker-delay-clock.d.ts +59 -0
- package/dist/media/worker/worker-delay-clock.d.ts.map +1 -0
- package/dist/media/worker/worker-delay-clock.js +89 -0
- package/dist/media/worker/worker-delay-clock.js.map +1 -0
- package/dist/perf/PerfBudget.d.ts +116 -0
- package/dist/perf/PerfBudget.d.ts.map +1 -0
- package/dist/perf/PerfBudget.js +221 -0
- package/dist/perf/PerfBudget.js.map +1 -0
- package/dist/rail-tags.d.ts +156 -0
- package/dist/rail-tags.d.ts.map +1 -0
- package/dist/rail-tags.js +131 -0
- package/dist/rail-tags.js.map +1 -0
- package/dist/raw-field-split.d.ts +32 -0
- package/dist/raw-field-split.d.ts.map +1 -0
- package/dist/raw-field-split.js +46 -0
- package/dist/raw-field-split.js.map +1 -0
- package/dist/reading.d.ts +960 -0
- package/dist/reading.d.ts.map +1 -0
- package/dist/reading.js +529 -0
- package/dist/reading.js.map +1 -0
- package/dist/reckonability.d.ts +52 -0
- package/dist/reckonability.d.ts.map +1 -0
- package/dist/reckonability.js +79 -0
- package/dist/reckonability.js.map +1 -0
- package/dist/registry/index.d.ts +7 -0
- package/dist/registry/index.d.ts.map +1 -0
- package/dist/registry/index.js +26 -0
- package/dist/registry/index.js.map +1 -0
- package/dist/runtime-topic-registry.d.ts +99 -0
- package/dist/runtime-topic-registry.d.ts.map +1 -0
- package/dist/runtime-topic-registry.js +182 -0
- package/dist/runtime-topic-registry.js.map +1 -0
- package/dist/spine/arrival-deadline.d.ts +19 -0
- package/dist/spine/arrival-deadline.d.ts.map +1 -0
- package/dist/spine/arrival-deadline.js +38 -0
- package/dist/spine/arrival-deadline.js.map +1 -0
- package/dist/spine/atmospheric-reckoning.d.ts +161 -0
- package/dist/spine/atmospheric-reckoning.d.ts.map +1 -0
- package/dist/spine/atmospheric-reckoning.js +421 -0
- package/dist/spine/atmospheric-reckoning.js.map +1 -0
- package/dist/spine/body-derivations.d.ts +28 -0
- package/dist/spine/body-derivations.d.ts.map +1 -0
- package/dist/spine/body-derivations.js +73 -0
- package/dist/spine/body-derivations.js.map +1 -0
- package/dist/spine/capability-lock.d.ts +43 -0
- package/dist/spine/capability-lock.d.ts.map +1 -0
- package/dist/spine/capability-lock.js +153 -0
- package/dist/spine/capability-lock.js.map +1 -0
- package/dist/spine/celestial-facts.d.ts +181 -0
- package/dist/spine/celestial-facts.d.ts.map +1 -0
- package/dist/spine/celestial-facts.js +212 -0
- package/dist/spine/celestial-facts.js.map +1 -0
- package/dist/spine/channel-error-warning.d.ts +24 -0
- package/dist/spine/channel-error-warning.d.ts.map +1 -0
- package/dist/spine/channel-error-warning.js +51 -0
- package/dist/spine/channel-error-warning.js.map +1 -0
- package/dist/spine/client-reading.d.ts +70 -0
- package/dist/spine/client-reading.d.ts.map +1 -0
- package/dist/spine/client-reading.js +123 -0
- package/dist/spine/client-reading.js.map +1 -0
- package/dist/spine/client-timeline.d.ts +130 -0
- package/dist/spine/client-timeline.d.ts.map +1 -0
- package/dist/spine/client-timeline.js +174 -0
- package/dist/spine/client-timeline.js.map +1 -0
- package/dist/spine/client.d.ts +454 -0
- package/dist/spine/client.d.ts.map +1 -0
- package/dist/spine/client.js +1138 -0
- package/dist/spine/client.js.map +1 -0
- package/dist/spine/clock.d.ts +48 -0
- package/dist/spine/clock.d.ts.map +1 -0
- package/dist/spine/clock.js +22 -0
- package/dist/spine/clock.js.map +1 -0
- package/dist/spine/command-gate.d.ts +89 -0
- package/dist/spine/command-gate.d.ts.map +1 -0
- package/dist/spine/command-gate.js +56 -0
- package/dist/spine/command-gate.js.map +1 -0
- package/dist/spine/comms-delay-reckoning.d.ts +123 -0
- package/dist/spine/comms-delay-reckoning.d.ts.map +1 -0
- package/dist/spine/comms-delay-reckoning.js +166 -0
- package/dist/spine/comms-delay-reckoning.js.map +1 -0
- package/dist/spine/comms-journey.d.ts +74 -0
- package/dist/spine/comms-journey.d.ts.map +1 -0
- package/dist/spine/comms-journey.js +180 -0
- package/dist/spine/comms-journey.js.map +1 -0
- package/dist/spine/comms-path-geometry.d.ts +128 -0
- package/dist/spine/comms-path-geometry.d.ts.map +1 -0
- package/dist/spine/comms-path-geometry.js +172 -0
- package/dist/spine/comms-path-geometry.js.map +1 -0
- package/dist/spine/comms-route.d.ts +52 -0
- package/dist/spine/comms-route.d.ts.map +1 -0
- package/dist/spine/comms-route.js +109 -0
- package/dist/spine/comms-route.js.map +1 -0
- package/dist/spine/connection-error-warning.d.ts +28 -0
- package/dist/spine/connection-error-warning.d.ts.map +1 -0
- package/dist/spine/connection-error-warning.js +49 -0
- package/dist/spine/connection-error-warning.js.map +1 -0
- package/dist/spine/connectivity-history.d.ts +35 -0
- package/dist/spine/connectivity-history.d.ts.map +1 -0
- package/dist/spine/connectivity-history.js +54 -0
- package/dist/spine/connectivity-history.js.map +1 -0
- package/dist/spine/context.d.ts +485 -0
- package/dist/spine/context.d.ts.map +1 -0
- package/dist/spine/context.js +1017 -0
- package/dist/spine/context.js.map +1 -0
- package/dist/spine/contributed-channels.d.ts +48 -0
- package/dist/spine/contributed-channels.d.ts.map +1 -0
- package/dist/spine/contributed-channels.js +104 -0
- package/dist/spine/contributed-channels.js.map +1 -0
- package/dist/spine/contribution-scope.d.ts +19 -0
- package/dist/spine/contribution-scope.d.ts.map +1 -0
- package/dist/spine/contribution-scope.js +62 -0
- package/dist/spine/contribution-scope.js.map +1 -0
- package/dist/spine/contributions.d.ts +77 -0
- package/dist/spine/contributions.d.ts.map +1 -0
- package/dist/spine/contributions.js +180 -0
- package/dist/spine/contributions.js.map +1 -0
- package/dist/spine/control-frame-to-read-frame.d.ts +43 -0
- package/dist/spine/control-frame-to-read-frame.d.ts.map +1 -0
- package/dist/spine/control-frame-to-read-frame.js +79 -0
- package/dist/spine/control-frame-to-read-frame.js.map +1 -0
- package/dist/spine/core-reckoners.d.ts +2 -0
- package/dist/spine/core-reckoners.d.ts.map +1 -0
- package/dist/spine/core-reckoners.js +894 -0
- package/dist/spine/core-reckoners.js.map +1 -0
- package/dist/spine/dashboard-item.d.ts +12 -0
- package/dist/spine/dashboard-item.d.ts.map +1 -0
- package/dist/spine/dashboard-item.js +16 -0
- package/dist/spine/dashboard-item.js.map +1 -0
- package/dist/spine/delay-authority.d.ts +204 -0
- package/dist/spine/delay-authority.d.ts.map +1 -0
- package/dist/spine/delay-authority.js +306 -0
- package/dist/spine/delay-authority.js.map +1 -0
- package/dist/spine/delta-v-budget.d.ts +121 -0
- package/dist/spine/delta-v-budget.d.ts.map +1 -0
- package/dist/spine/delta-v-budget.js +141 -0
- package/dist/spine/delta-v-budget.js.map +1 -0
- package/dist/spine/departure-reckoning.d.ts +37 -0
- package/dist/spine/departure-reckoning.d.ts.map +1 -0
- package/dist/spine/departure-reckoning.js +44 -0
- package/dist/spine/departure-reckoning.js.map +1 -0
- package/dist/spine/dv-stage-resources.d.ts +29 -0
- package/dist/spine/dv-stage-resources.d.ts.map +1 -0
- package/dist/spine/dv-stage-resources.js +95 -0
- package/dist/spine/dv-stage-resources.js.map +1 -0
- package/dist/spine/heartbeat-tracker.d.ts +116 -0
- package/dist/spine/heartbeat-tracker.d.ts.map +1 -0
- package/dist/spine/heartbeat-tracker.js +175 -0
- package/dist/spine/heartbeat-tracker.js.map +1 -0
- package/dist/spine/held-command-actions.d.ts +33 -0
- package/dist/spine/held-command-actions.d.ts.map +1 -0
- package/dist/spine/held-command-actions.js +75 -0
- package/dist/spine/held-command-actions.js.map +1 -0
- package/dist/spine/impact-point.d.ts +97 -0
- package/dist/spine/impact-point.d.ts.map +1 -0
- package/dist/spine/impact-point.js +299 -0
- package/dist/spine/impact-point.js.map +1 -0
- package/dist/spine/index.d.ts +84 -0
- package/dist/spine/index.d.ts.map +1 -0
- package/dist/spine/index.js +132 -0
- package/dist/spine/index.js.map +1 -0
- package/dist/spine/kepler-reckoning.d.ts +244 -0
- package/dist/spine/kepler-reckoning.d.ts.map +1 -0
- package/dist/spine/kepler-reckoning.js +377 -0
- package/dist/spine/kepler-reckoning.js.map +1 -0
- package/dist/spine/kepler.d.ts +296 -0
- package/dist/spine/kepler.d.ts.map +1 -0
- package/dist/spine/kepler.js +330 -0
- package/dist/spine/kepler.js.map +1 -0
- package/dist/spine/lagrange.d.ts +247 -0
- package/dist/spine/lagrange.d.ts.map +1 -0
- package/dist/spine/lagrange.js +379 -0
- package/dist/spine/lagrange.js.map +1 -0
- package/dist/spine/lifecycle.d.ts +244 -0
- package/dist/spine/lifecycle.d.ts.map +1 -0
- package/dist/spine/lifecycle.js +37 -0
- package/dist/spine/lifecycle.js.map +1 -0
- package/dist/spine/lock-scope.d.ts +23 -0
- package/dist/spine/lock-scope.d.ts.map +1 -0
- package/dist/spine/lock-scope.js +10 -0
- package/dist/spine/lock-scope.js.map +1 -0
- package/dist/spine/map-command.d.ts +29 -0
- package/dist/spine/map-command.d.ts.map +1 -0
- package/dist/spine/map-command.js +32 -0
- package/dist/spine/map-command.js.map +1 -0
- package/dist/spine/map-topic.d.ts +60 -0
- package/dist/spine/map-topic.d.ts.map +1 -0
- package/dist/spine/map-topic.js +151 -0
- package/dist/spine/map-topic.js.map +1 -0
- package/dist/spine/mod-settings.d.ts +22 -0
- package/dist/spine/mod-settings.d.ts.map +1 -0
- package/dist/spine/mod-settings.js +42 -0
- package/dist/spine/mod-settings.js.map +1 -0
- package/dist/spine/never-reckonable.d.ts +79 -0
- package/dist/spine/never-reckonable.d.ts.map +1 -0
- package/dist/spine/never-reckonable.js +168 -0
- package/dist/spine/never-reckonable.js.map +1 -0
- package/dist/spine/orbit-patches.d.ts +81 -0
- package/dist/spine/orbit-patches.d.ts.map +1 -0
- package/dist/spine/orbit-patches.js +111 -0
- package/dist/spine/orbit-patches.js.map +1 -0
- package/dist/spine/orbit-trajectory.d.ts +276 -0
- package/dist/spine/orbit-trajectory.d.ts.map +1 -0
- package/dist/spine/orbit-trajectory.js +382 -0
- package/dist/spine/orbit-trajectory.js.map +1 -0
- package/dist/spine/orbital-solve.d.ts +164 -0
- package/dist/spine/orbital-solve.d.ts.map +1 -0
- package/dist/spine/orbital-solve.js +239 -0
- package/dist/spine/orbital-solve.js.map +1 -0
- package/dist/spine/own-craft-vantage.d.ts +80 -0
- package/dist/spine/own-craft-vantage.d.ts.map +1 -0
- package/dist/spine/own-craft-vantage.js +136 -0
- package/dist/spine/own-craft-vantage.js.map +1 -0
- package/dist/spine/past-track.d.ts +46 -0
- package/dist/spine/past-track.d.ts.map +1 -0
- package/dist/spine/past-track.js +62 -0
- package/dist/spine/past-track.js.map +1 -0
- package/dist/spine/powered-reckoning.d.ts +164 -0
- package/dist/spine/powered-reckoning.d.ts.map +1 -0
- package/dist/spine/powered-reckoning.js +514 -0
- package/dist/spine/powered-reckoning.js.map +1 -0
- package/dist/spine/processorEvaluator.d.ts +110 -0
- package/dist/spine/processorEvaluator.d.ts.map +1 -0
- package/dist/spine/processorEvaluator.js +608 -0
- package/dist/spine/processorEvaluator.js.map +1 -0
- package/dist/spine/processors.d.ts +242 -0
- package/dist/spine/processors.d.ts.map +1 -0
- package/dist/spine/processors.js +109 -0
- package/dist/spine/processors.js.map +1 -0
- package/dist/spine/propagation.d.ts +17 -0
- package/dist/spine/propagation.d.ts.map +1 -0
- package/dist/spine/propagation.js +22 -0
- package/dist/spine/propagation.js.map +1 -0
- package/dist/spine/rail-registry.d.ts +21 -0
- package/dist/spine/rail-registry.d.ts.map +1 -0
- package/dist/spine/rail-registry.js +7 -0
- package/dist/spine/rail-registry.js.map +1 -0
- package/dist/spine/reckoners.d.ts +133 -0
- package/dist/spine/reckoners.d.ts.map +1 -0
- package/dist/spine/reckoners.js +245 -0
- package/dist/spine/reckoners.js.map +1 -0
- package/dist/spine/reference-frame.d.ts +286 -0
- package/dist/spine/reference-frame.d.ts.map +1 -0
- package/dist/spine/reference-frame.js +605 -0
- package/dist/spine/reference-frame.js.map +1 -0
- package/dist/spine/replay-recorder.d.ts +72 -0
- package/dist/spine/replay-recorder.d.ts.map +1 -0
- package/dist/spine/replay-recorder.js +101 -0
- package/dist/spine/replay-recorder.js.map +1 -0
- package/dist/spine/replay-session-controller.d.ts +65 -0
- package/dist/spine/replay-session-controller.d.ts.map +1 -0
- package/dist/spine/replay-session-controller.js +220 -0
- package/dist/spine/replay-session-controller.js.map +1 -0
- package/dist/spine/replay-session.d.ts +20 -0
- package/dist/spine/replay-session.d.ts.map +1 -0
- package/dist/spine/replay-session.js +31 -0
- package/dist/spine/replay-session.js.map +1 -0
- package/dist/spine/replay-transport.d.ts +83 -0
- package/dist/spine/replay-transport.d.ts.map +1 -0
- package/dist/spine/replay-transport.js +95 -0
- package/dist/spine/replay-transport.js.map +1 -0
- package/dist/spine/screen.d.ts +46 -0
- package/dist/spine/screen.d.ts.map +1 -0
- package/dist/spine/screen.js +41 -0
- package/dist/spine/screen.js.map +1 -0
- package/dist/spine/settings-registry.d.ts +222 -0
- package/dist/spine/settings-registry.d.ts.map +1 -0
- package/dist/spine/settings-registry.js +43 -0
- package/dist/spine/settings-registry.js.map +1 -0
- package/dist/spine/settings-tabs.d.ts +39 -0
- package/dist/spine/settings-tabs.d.ts.map +1 -0
- package/dist/spine/settings-tabs.js +18 -0
- package/dist/spine/settings-tabs.js.map +1 -0
- package/dist/spine/share-equal.d.ts +11 -0
- package/dist/spine/share-equal.d.ts.map +1 -0
- package/dist/spine/share-equal.js +57 -0
- package/dist/spine/share-equal.js.map +1 -0
- package/dist/spine/size-delta.d.ts +9 -0
- package/dist/spine/size-delta.d.ts.map +1 -0
- package/dist/spine/size-delta.js +19 -0
- package/dist/spine/size-delta.js.map +1 -0
- package/dist/spine/space-center-state.d.ts +44 -0
- package/dist/spine/space-center-state.d.ts.map +1 -0
- package/dist/spine/space-center-state.js +51 -0
- package/dist/spine/space-center-state.js.map +1 -0
- package/dist/spine/stream-status.d.ts +21 -0
- package/dist/spine/stream-status.d.ts.map +1 -0
- package/dist/spine/stream-status.js +48 -0
- package/dist/spine/stream-status.js.map +1 -0
- package/dist/spine/subscribe-read.d.ts +51 -0
- package/dist/spine/subscribe-read.d.ts.map +1 -0
- package/dist/spine/subscribe-read.js +66 -0
- package/dist/spine/subscribe-read.js.map +1 -0
- package/dist/spine/subscriber-identity.d.ts +12 -0
- package/dist/spine/subscriber-identity.d.ts.map +1 -0
- package/dist/spine/subscriber-identity.js +33 -0
- package/dist/spine/subscriber-identity.js.map +1 -0
- package/dist/spine/system-state.d.ts +29 -0
- package/dist/spine/system-state.d.ts.map +1 -0
- package/dist/spine/system-state.js +25 -0
- package/dist/spine/system-state.js.map +1 -0
- package/dist/spine/target-range-reckoning.d.ts +33 -0
- package/dist/spine/target-range-reckoning.d.ts.map +1 -0
- package/dist/spine/target-range-reckoning.js +78 -0
- package/dist/spine/target-range-reckoning.js.map +1 -0
- package/dist/spine/timeline-store.d.ts +1336 -0
- package/dist/spine/timeline-store.d.ts.map +1 -0
- package/dist/spine/timeline-store.js +2893 -0
- package/dist/spine/timeline-store.js.map +1 -0
- package/dist/spine/topic-ownership.d.ts +138 -0
- package/dist/spine/topic-ownership.d.ts.map +1 -0
- package/dist/spine/topic-ownership.js +194 -0
- package/dist/spine/topic-ownership.js.map +1 -0
- package/dist/spine/unowned-warning.d.ts +25 -0
- package/dist/spine/unowned-warning.d.ts.map +1 -0
- package/dist/spine/unowned-warning.js +55 -0
- package/dist/spine/unowned-warning.js.map +1 -0
- package/dist/spine/uplink-clients.d.ts +135 -0
- package/dist/spine/uplink-clients.d.ts.map +1 -0
- package/dist/spine/uplink-clients.js +79 -0
- package/dist/spine/uplink-clients.js.map +1 -0
- package/dist/spine/uplink-health.d.ts +123 -0
- package/dist/spine/uplink-health.d.ts.map +1 -0
- package/dist/spine/uplink-health.js +75 -0
- package/dist/spine/uplink-health.js.map +1 -0
- package/dist/spine/use-action-input.d.ts +3 -0
- package/dist/spine/use-action-input.d.ts.map +1 -0
- package/dist/spine/use-action-input.js +76 -0
- package/dist/spine/use-action-input.js.map +1 -0
- package/dist/spine/use-body-states.d.ts +34 -0
- package/dist/spine/use-body-states.d.ts.map +1 -0
- package/dist/spine/use-body-states.js +23 -0
- package/dist/spine/use-body-states.js.map +1 -0
- package/dist/spine/use-command.d.ts +259 -0
- package/dist/spine/use-command.d.ts.map +1 -0
- package/dist/spine/use-command.js +626 -0
- package/dist/spine/use-command.js.map +1 -0
- package/dist/spine/use-data-sources.d.ts +7 -0
- package/dist/spine/use-data-sources.d.ts.map +1 -0
- package/dist/spine/use-data-sources.js +27 -0
- package/dist/spine/use-data-sources.js.map +1 -0
- package/dist/spine/use-late-telemetry-subscribe.d.ts +59 -0
- package/dist/spine/use-late-telemetry-subscribe.d.ts.map +1 -0
- package/dist/spine/use-late-telemetry-subscribe.js +81 -0
- package/dist/spine/use-late-telemetry-subscribe.js.map +1 -0
- package/dist/spine/use-orbit-trajectory.d.ts +25 -0
- package/dist/spine/use-orbit-trajectory.d.ts.map +1 -0
- package/dist/spine/use-orbit-trajectory.js +45 -0
- package/dist/spine/use-orbit-trajectory.js.map +1 -0
- package/dist/spine/use-processor.d.ts +30 -0
- package/dist/spine/use-processor.d.ts.map +1 -0
- package/dist/spine/use-processor.js +36 -0
- package/dist/spine/use-processor.js.map +1 -0
- package/dist/spine/use-route-commands.d.ts +28 -0
- package/dist/spine/use-route-commands.d.ts.map +1 -0
- package/dist/spine/use-route-commands.js +32 -0
- package/dist/spine/use-route-commands.js.map +1 -0
- package/dist/spine/use-selected-vantage.d.ts +12 -0
- package/dist/spine/use-selected-vantage.d.ts.map +1 -0
- package/dist/spine/use-selected-vantage.js +19 -0
- package/dist/spine/use-selected-vantage.js.map +1 -0
- package/dist/spine/use-stream-event.d.ts +28 -0
- package/dist/spine/use-stream-event.d.ts.map +1 -0
- package/dist/spine/use-stream-event.js +52 -0
- package/dist/spine/use-stream-event.js.map +1 -0
- package/dist/spine/use-stream.d.ts +79 -0
- package/dist/spine/use-stream.d.ts.map +1 -0
- package/dist/spine/use-stream.js +124 -0
- package/dist/spine/use-stream.js.map +1 -0
- package/dist/spine/use-telemetry.d.ts +79 -0
- package/dist/spine/use-telemetry.d.ts.map +1 -0
- package/dist/spine/use-telemetry.js +39 -0
- package/dist/spine/use-telemetry.js.map +1 -0
- package/dist/spine/use-transmissions.d.ts +36 -0
- package/dist/spine/use-transmissions.d.ts.map +1 -0
- package/dist/spine/use-transmissions.js +63 -0
- package/dist/spine/use-transmissions.js.map +1 -0
- package/dist/spine/vantage.d.ts +16 -0
- package/dist/spine/vantage.d.ts.map +1 -0
- package/dist/spine/vantage.js +16 -0
- package/dist/spine/vantage.js.map +1 -0
- package/dist/spine/view-clock.d.ts +232 -0
- package/dist/spine/view-clock.d.ts.map +1 -0
- package/dist/spine/view-clock.js +348 -0
- package/dist/spine/view-clock.js.map +1 -0
- package/dist/spine/wire-payloads.d.ts +232 -0
- package/dist/spine/wire-payloads.d.ts.map +1 -0
- package/dist/spine/wire-payloads.js +2 -0
- package/dist/spine/wire-payloads.js.map +1 -0
- package/dist/testing/console-logger.d.ts +10 -0
- package/dist/testing/console-logger.d.ts.map +1 -0
- package/dist/testing/console-logger.js +23 -0
- package/dist/testing/console-logger.js.map +1 -0
- package/dist/testing/create-test-telemetry-client.d.ts +13 -0
- package/dist/testing/create-test-telemetry-client.d.ts.map +1 -0
- package/dist/testing/create-test-telemetry-client.js +14 -0
- package/dist/testing/create-test-telemetry-client.js.map +1 -0
- package/dist/testing/fake-wall-clock.d.ts +19 -0
- package/dist/testing/fake-wall-clock.d.ts.map +1 -0
- package/dist/testing/fake-wall-clock.js +17 -0
- package/dist/testing/fake-wall-clock.js.map +1 -0
- package/dist/testing/index.d.ts +30 -0
- package/dist/testing/index.d.ts.map +1 -0
- package/dist/testing/index.js +99 -0
- package/dist/testing/index.js.map +1 -0
- package/dist/testing/install-act-gate-stretch.d.ts +24 -0
- package/dist/testing/install-act-gate-stretch.d.ts.map +1 -0
- package/dist/testing/install-act-gate-stretch.js +67 -0
- package/dist/testing/install-act-gate-stretch.js.map +1 -0
- package/dist/testing/install-dom-stubs.d.ts +9 -0
- package/dist/testing/install-dom-stubs.d.ts.map +1 -0
- package/dist/testing/install-dom-stubs.js +121 -0
- package/dist/testing/install-dom-stubs.js.map +1 -0
- package/dist/testing/install-real-test-host.d.ts +51 -0
- package/dist/testing/install-real-test-host.d.ts.map +1 -0
- package/dist/testing/install-real-test-host.js +111 -0
- package/dist/testing/install-real-test-host.js.map +1 -0
- package/dist/testing/install-test-host.d.ts +18 -0
- package/dist/testing/install-test-host.d.ts.map +1 -0
- package/dist/testing/install-test-host.js +23 -0
- package/dist/testing/install-test-host.js.map +1 -0
- package/dist/testing/memory-storage.d.ts +10 -0
- package/dist/testing/memory-storage.d.ts.map +1 -0
- package/dist/testing/memory-storage.js +26 -0
- package/dist/testing/memory-storage.js.map +1 -0
- package/dist/testing/mock-data-source.d.ts +46 -0
- package/dist/testing/mock-data-source.d.ts.map +1 -0
- package/dist/testing/mock-data-source.js +74 -0
- package/dist/testing/mock-data-source.js.map +1 -0
- package/dist/testing/recorded-alarm-requests.d.ts +28 -0
- package/dist/testing/recorded-alarm-requests.d.ts.map +1 -0
- package/dist/testing/recorded-alarm-requests.js +24 -0
- package/dist/testing/recorded-alarm-requests.js.map +1 -0
- package/dist/testing/render.d.ts +29 -0
- package/dist/testing/render.d.ts.map +1 -0
- package/dist/testing/render.js +52 -0
- package/dist/testing/render.js.map +1 -0
- package/dist/testing/stream-fixture.d.ts +71 -0
- package/dist/testing/stream-fixture.d.ts.map +1 -0
- package/dist/testing/stream-fixture.js +61 -0
- package/dist/testing/stream-fixture.js.map +1 -0
- package/dist/testing/stub-transport.d.ts +124 -0
- package/dist/testing/stub-transport.d.ts.map +1 -0
- package/dist/testing/stub-transport.js +229 -0
- package/dist/testing/stub-transport.js.map +1 -0
- package/dist/testing/theme.d.ts +59 -0
- package/dist/testing/theme.d.ts.map +1 -0
- package/dist/testing/theme.js +11 -0
- package/dist/testing/theme.js.map +1 -0
- package/dist/timeline.d.ts +63 -0
- package/dist/timeline.d.ts.map +1 -0
- package/dist/timeline.js +2 -0
- package/dist/timeline.js.map +1 -0
- package/dist/topic-fields.d.ts +55 -0
- package/dist/topic-fields.d.ts.map +1 -0
- package/dist/topic-fields.js +102 -0
- package/dist/topic-fields.js.map +1 -0
- package/dist/topics.d.ts +335 -30
- package/dist/topics.d.ts.map +1 -1
- package/dist/topics.js +183 -28
- package/dist/topics.js.map +1 -1
- package/dist/unit-system/algebra.d.ts +305 -0
- package/dist/unit-system/algebra.d.ts.map +1 -0
- package/dist/unit-system/algebra.js +2 -0
- package/dist/unit-system/algebra.js.map +1 -0
- package/dist/unit-system/calendar.d.ts +74 -0
- package/dist/unit-system/calendar.d.ts.map +1 -0
- package/dist/unit-system/calendar.js +107 -0
- package/dist/unit-system/calendar.js.map +1 -0
- package/dist/unit-system/declarations.d.ts +87 -0
- package/dist/unit-system/declarations.d.ts.map +1 -0
- package/dist/unit-system/declarations.js +2 -0
- package/dist/unit-system/declarations.js.map +1 -0
- package/dist/unit-system/definitions.d.ts +639 -0
- package/dist/unit-system/definitions.d.ts.map +1 -0
- package/dist/unit-system/definitions.js +326 -0
- package/dist/unit-system/definitions.js.map +1 -0
- package/dist/unit-system/dimension.d.ts +29 -0
- package/dist/unit-system/dimension.d.ts.map +1 -0
- package/dist/unit-system/dimension.js +88 -0
- package/dist/unit-system/dimension.js.map +1 -0
- package/dist/unit-system/guards.d.ts +58 -0
- package/dist/unit-system/guards.d.ts.map +1 -0
- package/dist/unit-system/guards.js +73 -0
- package/dist/unit-system/guards.js.map +1 -0
- package/dist/unit-system/index.d.ts +16 -0
- package/dist/unit-system/index.d.ts.map +1 -0
- package/dist/unit-system/index.js +14 -0
- package/dist/unit-system/index.js.map +1 -0
- package/dist/unit-system/registry.d.ts +160 -0
- package/dist/unit-system/registry.d.ts.map +1 -0
- package/dist/unit-system/registry.js +267 -0
- package/dist/unit-system/registry.js.map +1 -0
- package/dist/unit-system/value.d.ts +437 -0
- package/dist/unit-system/value.d.ts.map +1 -0
- package/dist/unit-system/value.js +387 -0
- package/dist/unit-system/value.js.map +1 -0
- package/dist/units.d.ts +159 -0
- package/dist/units.d.ts.map +1 -0
- package/dist/units.js +385 -0
- package/dist/units.js.map +1 -0
- package/dist/uplink-externals.d.ts +65 -0
- package/dist/uplink-externals.d.ts.map +1 -0
- package/dist/uplink-externals.js +87 -0
- package/dist/uplink-externals.js.map +1 -0
- package/dist/uplink-manifest.d.ts +180 -0
- package/dist/uplink-manifest.d.ts.map +1 -0
- package/dist/uplink-manifest.js +214 -0
- package/dist/uplink-manifest.js.map +1 -0
- package/dist/value.d.ts +13 -0
- package/dist/value.d.ts.map +1 -0
- package/dist/value.js +2 -0
- package/dist/value.js.map +1 -0
- package/dist/version.generated.d.ts +7 -0
- package/dist/version.generated.d.ts.map +1 -0
- package/dist/version.generated.js +11 -0
- package/dist/version.generated.js.map +1 -0
- package/dist/view-clock-formula.d.ts +52 -0
- package/dist/view-clock-formula.d.ts.map +1 -0
- package/dist/view-clock-formula.js +46 -0
- package/dist/view-clock-formula.js.map +1 -0
- package/dist/wrap-units.d.ts +55 -0
- package/dist/wrap-units.d.ts.map +1 -0
- package/dist/wrap-units.js +256 -0
- package/dist/wrap-units.js.map +1 -0
- package/package.json +73 -11
- package/src/__generated__/command-map.ts +465 -0
- package/src/__generated__/contract.ts +10986 -0
- package/src/__generated__/control-channels.ts +41 -0
- package/src/__generated__/delay-roles.ts +82 -0
- package/src/__generated__/error-codes.ts +712 -0
- package/src/__generated__/frames.ts +52 -0
- package/src/__generated__/reckonability.ts +86 -0
- package/src/__generated__/test-theme.ts +70 -0
- package/src/__generated__/topic-map.ts +314 -0
- package/src/__generated__/units.json +2755 -0
- package/src/__generated__/units.ts +3398 -0
- package/src/api/action-dispatch.ts +105 -0
- package/src/api/alarm-request.ts +153 -0
- package/src/api/bodies.ts +116 -0
- package/src/api/command-rejection.ts +194 -0
- package/src/api/contribution-slots.ts +666 -0
- package/src/api/coverage/CoverageMaskCache.ts +112 -0
- package/src/api/coverage/CoverageMaskContext.tsx +79 -0
- package/src/api/coverage-source.ts +137 -0
- package/src/api/error-codes.ts +87 -0
- package/src/api/event-reveal.ts +96 -0
- package/src/api/host.ts +213 -0
- package/src/api/index.ts +1170 -0
- package/src/api/localStorageStore.ts +180 -0
- package/src/api/logger-contract.ts +38 -0
- package/src/api/logger.ts +17 -0
- package/src/api/map-poi.ts +98 -0
- package/src/api/plot-layers.ts +257 -0
- package/src/api/plots.ts +169 -0
- package/src/api/registry.ts +324 -0
- package/src/api/root-providers.tsx +136 -0
- package/src/api/safe-random-uuid.ts +22 -0
- package/src/api/settings/SettingsContext.tsx +79 -0
- package/src/api/settings/SettingsService.ts +142 -0
- package/src/api/settings/store.ts +180 -0
- package/src/api/slots.ts +1041 -0
- package/src/api/station-brokers.ts +94 -0
- package/src/api/stock-bodies.ts +281 -0
- package/src/api/tiny-size.ts +9 -0
- package/src/api/tone.ts +41 -0
- package/src/api/transport.ts +98 -0
- package/src/api/types.ts +1903 -0
- package/src/api/uplink-handles.ts +71 -0
- package/src/binary-frame.ts +250 -0
- package/src/burn-clock.ts +115 -0
- package/src/client.ts +56 -0
- package/src/combine-readings.ts +250 -0
- package/src/command-delay.ts +392 -0
- package/src/command-reply-units.ts +63 -0
- package/src/commands.ts +242 -0
- package/src/comms-degrade.ts +68 -0
- package/src/compat-versions.ts +44 -0
- package/src/contract-enum-names.ts +141 -0
- package/src/control-channels.ts +92 -0
- package/src/crew-standing.ts +131 -0
- package/src/delay-roles.ts +187 -0
- package/src/descent.ts +149 -0
- package/src/enum-names.ts +35 -0
- package/src/envelope.ts +45 -0
- package/src/event-timeline.ts +196 -0
- package/src/extensions.ts +58 -0
- package/src/field-frames.ts +70 -0
- package/src/flight/BufferedDataSource.ts +945 -0
- package/src/flight/DataSourceWrapper.ts +79 -0
- package/src/flight/ListenerSet.ts +73 -0
- package/src/flight/debugFlight.ts +16 -0
- package/src/flight/derive.ts +56 -0
- package/src/flight/fixtureIO.ts +197 -0
- package/src/flight/flightAutoDelete.ts +53 -0
- package/src/flight/flightDetector.ts +213 -0
- package/src/flight/storage/LocalStorageStore.ts +160 -0
- package/src/flight/storage/MemoryStore.ts +113 -0
- package/src/flight/storage/Store.ts +52 -0
- package/src/flight/types.ts +408 -0
- package/src/frame-qualifier.ts +153 -0
- package/src/frames/index.ts +177 -0
- package/src/index.ts +576 -0
- package/src/ksp-enum-names.ts +191 -0
- package/src/locked.ts +29 -0
- package/src/magnitude.ts +52 -0
- package/src/maneuver-basis.ts +49 -0
- package/src/media/capture-clock.ts +43 -0
- package/src/media/delayed-playout-buffer.ts +253 -0
- package/src/media/encoded-frame-delay.ts +153 -0
- package/src/media/frame-delay.ts +402 -0
- package/src/media/index.ts +83 -0
- package/src/media/radio-support.ts +132 -0
- package/src/media/shared-delayed-streams.ts +232 -0
- package/src/media/webcodecs-track-io.d.ts +99 -0
- package/src/media/worker/delay-worker-client.ts +312 -0
- package/src/media/worker/delay-worker.ts +433 -0
- package/src/media/worker/presentation-pacer.ts +249 -0
- package/src/media/worker/time-base.ts +55 -0
- package/src/media/worker/worker-delay-clock.ts +122 -0
- package/src/perf/PerfBudget.ts +267 -0
- package/src/rail-tags.ts +221 -0
- package/src/raw-field-split.ts +72 -0
- package/src/reading.ts +1565 -0
- package/src/reckonability.ts +117 -0
- package/src/registry/index.ts +36 -0
- package/src/runtime-topic-registry.ts +204 -0
- package/src/spine/arrival-deadline.ts +48 -0
- package/src/spine/atmospheric-reckoning.ts +540 -0
- package/src/spine/body-derivations.ts +103 -0
- package/src/spine/capability-lock.ts +210 -0
- package/src/spine/celestial-facts.ts +455 -0
- package/src/spine/channel-error-warning.ts +61 -0
- package/src/spine/client-reading.ts +282 -0
- package/src/spine/client-timeline.ts +234 -0
- package/src/spine/client.ts +1336 -0
- package/src/spine/clock.ts +57 -0
- package/src/spine/command-gate.ts +139 -0
- package/src/spine/comms-delay-reckoning.ts +217 -0
- package/src/spine/comms-journey.ts +256 -0
- package/src/spine/comms-path-geometry.ts +237 -0
- package/src/spine/comms-route.ts +142 -0
- package/src/spine/connection-error-warning.ts +54 -0
- package/src/spine/connectivity-history.ts +68 -0
- package/src/spine/context.tsx +1317 -0
- package/src/spine/contributed-channels.ts +126 -0
- package/src/spine/contribution-scope.ts +87 -0
- package/src/spine/contributions.ts +213 -0
- package/src/spine/control-frame-to-read-frame.ts +91 -0
- package/src/spine/core-reckoners.ts +1112 -0
- package/src/spine/dashboard-item.ts +25 -0
- package/src/spine/delay-authority.ts +337 -0
- package/src/spine/delta-v-budget.ts +311 -0
- package/src/spine/departure-reckoning.ts +69 -0
- package/src/spine/dv-stage-resources.ts +137 -0
- package/src/spine/heartbeat-tracker.ts +208 -0
- package/src/spine/held-command-actions.ts +119 -0
- package/src/spine/impact-point.ts +432 -0
- package/src/spine/index.ts +132 -0
- package/src/spine/kepler-reckoning.ts +572 -0
- package/src/spine/kepler.ts +576 -0
- package/src/spine/lagrange.ts +585 -0
- package/src/spine/lifecycle.ts +251 -0
- package/src/spine/lock-scope.ts +27 -0
- package/src/spine/map-command.ts +33 -0
- package/src/spine/map-topic.ts +163 -0
- package/src/spine/mod-settings.ts +47 -0
- package/src/spine/never-reckonable.ts +183 -0
- package/src/spine/orbit-patches.ts +213 -0
- package/src/spine/orbit-trajectory.ts +636 -0
- package/src/spine/orbital-solve.ts +393 -0
- package/src/spine/own-craft-vantage.tsx +161 -0
- package/src/spine/past-track.ts +93 -0
- package/src/spine/powered-reckoning.ts +866 -0
- package/src/spine/processorEvaluator.ts +688 -0
- package/src/spine/processors.ts +353 -0
- package/src/spine/propagation.ts +25 -0
- package/src/spine/rail-registry.ts +27 -0
- package/src/spine/reckoners.ts +317 -0
- package/src/spine/reference-frame.ts +816 -0
- package/src/spine/replay-recorder.ts +128 -0
- package/src/spine/replay-session-controller.ts +282 -0
- package/src/spine/replay-session.tsx +47 -0
- package/src/spine/replay-transport.ts +167 -0
- package/src/spine/screen.tsx +70 -0
- package/src/spine/settings-registry.ts +286 -0
- package/src/spine/settings-tabs.ts +57 -0
- package/src/spine/share-equal.ts +62 -0
- package/src/spine/size-delta.ts +23 -0
- package/src/spine/space-center-state.ts +101 -0
- package/src/spine/stream-status.ts +62 -0
- package/src/spine/subscribe-read.ts +88 -0
- package/src/spine/subscriber-identity.tsx +44 -0
- package/src/spine/system-state.ts +44 -0
- package/src/spine/target-range-reckoning.ts +127 -0
- package/src/spine/timeline-store.ts +3626 -0
- package/src/spine/topic-ownership.ts +211 -0
- package/src/spine/unowned-warning.ts +63 -0
- package/src/spine/uplink-clients.ts +265 -0
- package/src/spine/uplink-health.ts +256 -0
- package/src/spine/use-action-input.ts +87 -0
- package/src/spine/use-body-states.ts +52 -0
- package/src/spine/use-command.ts +1090 -0
- package/src/spine/use-data-sources.ts +43 -0
- package/src/spine/use-late-telemetry-subscribe.ts +111 -0
- package/src/spine/use-orbit-trajectory.ts +50 -0
- package/src/spine/use-processor.ts +56 -0
- package/src/spine/use-route-commands.ts +57 -0
- package/src/spine/use-selected-vantage.ts +23 -0
- package/src/spine/use-stream-event.ts +54 -0
- package/src/spine/use-stream.ts +137 -0
- package/src/spine/use-telemetry.ts +142 -0
- package/src/spine/use-transmissions.ts +100 -0
- package/src/spine/vantage.ts +15 -0
- package/src/spine/view-clock.ts +404 -0
- package/src/spine/wire-payloads.ts +242 -0
- package/src/testing/console-logger.ts +24 -0
- package/src/testing/create-test-telemetry-client.ts +17 -0
- package/src/testing/fake-wall-clock.ts +27 -0
- package/src/testing/index.ts +141 -0
- package/src/testing/install-act-gate-stretch.ts +83 -0
- package/src/testing/install-dom-stubs.ts +137 -0
- package/src/testing/install-real-test-host.ts +177 -0
- package/src/testing/install-test-host.ts +24 -0
- package/src/testing/memory-storage.ts +25 -0
- package/src/testing/mock-data-source.ts +109 -0
- package/src/testing/recorded-alarm-requests.ts +43 -0
- package/src/testing/render.tsx +78 -0
- package/src/testing/stream-fixture.tsx +130 -0
- package/src/testing/stub-transport.ts +289 -0
- package/src/testing/theme.ts +11 -0
- package/src/timeline.ts +68 -0
- package/src/topic-fields.ts +188 -0
- package/src/topics.ts +553 -0
- package/src/unit-system/algebra.ts +472 -0
- package/src/unit-system/calendar.ts +145 -0
- package/src/unit-system/declarations.ts +96 -0
- package/src/unit-system/definitions.ts +385 -0
- package/src/unit-system/dimension.ts +107 -0
- package/src/unit-system/guards.ts +82 -0
- package/src/unit-system/index.ts +68 -0
- package/src/unit-system/registry.ts +381 -0
- package/src/unit-system/value.ts +959 -0
- package/src/units.ts +462 -0
- package/src/uplink-externals.ts +91 -0
- package/src/uplink-manifest.ts +349 -0
- package/src/value.ts +15 -0
- package/src/version.generated.ts +10 -0
- package/src/view-clock-formula.ts +90 -0
- package/src/wrap-units.ts +361 -0
- package/tsconfig.base.json +16 -0
|
@@ -0,0 +1,276 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What a trajectory IS, as a drawable answer, decided from what the elected
|
|
3
|
+
* propagation provider said rather than from the elements alone.
|
|
4
|
+
*
|
|
5
|
+
* ## Why this is not a widget's decision
|
|
6
|
+
*
|
|
7
|
+
* `vessel.orbit` carries orbital elements and, riding with them, a
|
|
8
|
+
* `PropagationHorizon` whose two halves answer two different questions: `kind`
|
|
9
|
+
* answers REACH (how far may these be extrapolated) and `trajectoryKind`
|
|
10
|
+
* answers SHAPE (is a conic the right renderer at all). Neither implies the
|
|
11
|
+
* other, which is the whole reason both are on the wire: an integrating
|
|
12
|
+
* provider in a low-perturbation regime honestly reports an unbounded horizon,
|
|
13
|
+
* and a client reasoning "unbounded, therefore analytic, therefore an ellipse
|
|
14
|
+
* is fine" draws a closed conic for a path the craft will not fly.
|
|
15
|
+
*
|
|
16
|
+
* A widget holding `sma` and `ecc` can produce an ellipse without asking
|
|
17
|
+
* anything, and one that does has answered the shape question for itself. The
|
|
18
|
+
* provider then cannot be swapped, because electing a different one changes
|
|
19
|
+
* nothing the operator sees. This function is the one place the question is
|
|
20
|
+
* answered, so that swapping the provider moves the picture.
|
|
21
|
+
*
|
|
22
|
+
* ## What it hands back
|
|
23
|
+
*
|
|
24
|
+
* Three answers, and the caller renders whichever it gets. A conic answer says
|
|
25
|
+
* a conic renderer is exactly right, so the caller draws one from the elements
|
|
26
|
+
* it already holds: that is the provider's business, not a bypass, because the
|
|
27
|
+
* provider is what said so. An arc answer is a sampled polyline the caller
|
|
28
|
+
* draws as given. A withheld answer is a refusal with a reason the caller can
|
|
29
|
+
* put on screen; it is never an empty path, because "here is a trajectory with
|
|
30
|
+
* no points in it" and "there is no trajectory to draw" read identically on a
|
|
31
|
+
* diagram and mean opposite things.
|
|
32
|
+
*/
|
|
33
|
+
import type { CelestialFacts } from "./celestial-facts.js";
|
|
34
|
+
import { type PropagationHorizonLike, TrajectoryKindLike } from "./kepler.js";
|
|
35
|
+
import { type WireOrbitElements } from "./kepler-reckoning.js";
|
|
36
|
+
import { type ReadFrameChoice, type TrajectoryScaleConvention } from "./reference-frame.js";
|
|
37
|
+
/**
|
|
38
|
+
* A point on a drawable trajectory: where, and when.
|
|
39
|
+
*
|
|
40
|
+
* <b>Three dimensions and an instant, never a flat `{x, y}`.</b> A point in the
|
|
41
|
+
* orbit's own plane with periapsis on +x is what a sampled conic has, and a
|
|
42
|
+
* curve re-expressed in a read frame leaves that plane: in a rotating frame it
|
|
43
|
+
* has no central body to be measured from at all. `z` is the out-of-plane
|
|
44
|
+
* component and is zero exactly while the curve is still in its own plane.
|
|
45
|
+
* `ut` is on the point because a reader interpolating between two of them needs
|
|
46
|
+
* to know which side of a burn it is on.
|
|
47
|
+
*
|
|
48
|
+
* `x`/`y` stay first and stay in the same units and orientation, so a diagram
|
|
49
|
+
* that only knows how to draw a plane keeps working against it unedited.
|
|
50
|
+
*/
|
|
51
|
+
export interface TrajectoryPoint {
|
|
52
|
+
x: number;
|
|
53
|
+
y: number;
|
|
54
|
+
z: number;
|
|
55
|
+
ut: number;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Which frame a set of points is expressed in. A client-side vocabulary: the
|
|
59
|
+
* points are sampled and re-expressed here, never read off the wire.
|
|
60
|
+
*
|
|
61
|
+
* @category Frames of reference
|
|
62
|
+
*/
|
|
63
|
+
export declare const TrajectoryFrameKindLike: {
|
|
64
|
+
readonly Unspecified: 0;
|
|
65
|
+
readonly Perifocal: 1;
|
|
66
|
+
readonly BodyCentredInertial: 2;
|
|
67
|
+
readonly BodyCentredRotating: 3;
|
|
68
|
+
readonly BodyCentredParentDirection: 4;
|
|
69
|
+
readonly RotatingPulsating: 5;
|
|
70
|
+
};
|
|
71
|
+
export type TrajectoryFrameKindLike = (typeof TrajectoryFrameKindLike)[keyof typeof TrajectoryFrameKindLike];
|
|
72
|
+
/**
|
|
73
|
+
* The frame a drawn curve is in, carried on an arc so a widget names it rather
|
|
74
|
+
* than assuming it. Build one yourself for a frame your own drawing sets, and
|
|
75
|
+
* name it with {@link trajectoryFrameLabel}.
|
|
76
|
+
*
|
|
77
|
+
* @category Frames of reference
|
|
78
|
+
*/
|
|
79
|
+
export interface TrajectoryFrame {
|
|
80
|
+
kind: TrajectoryFrameKindLike;
|
|
81
|
+
/** Index into `system.bodies` of the frame's centre, when it has one. */
|
|
82
|
+
centreBodyIndex?: number;
|
|
83
|
+
/** True when the frame's lengths are not lengths, so a readout says so rather than showing a number. */
|
|
84
|
+
lengthsPulsate: boolean;
|
|
85
|
+
/**
|
|
86
|
+
* The two bodies the frame is named for, when it is named for a pair. The
|
|
87
|
+
* first is the one held at the far end of the first axis.
|
|
88
|
+
*/
|
|
89
|
+
primaryBodyIndex?: number;
|
|
90
|
+
secondaryBodyIndex?: number;
|
|
91
|
+
/**
|
|
92
|
+
* How to read a coordinate in this frame. Absent means metres; only a
|
|
93
|
+
* pulsating read frame says otherwise, and it says so rather than leaving a
|
|
94
|
+
* reader to infer it from `lengthsPulsate`.
|
|
95
|
+
*/
|
|
96
|
+
scaleConvention?: TrajectoryScaleConvention;
|
|
97
|
+
/**
|
|
98
|
+
* What a pulsating frame divided by at the view instant, metres. A caller
|
|
99
|
+
* wanting a length in metres-as-of-now multiplies by this; a caller quoting a
|
|
100
|
+
* coordinate as a distance without it is quoting a ratio.
|
|
101
|
+
*/
|
|
102
|
+
unitLength?: number;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Why a curve stops where it stops.
|
|
106
|
+
*
|
|
107
|
+
* Never absent, because the failure it prevents is that a prediction which stops
|
|
108
|
+
* short and a trajectory which ends look identical on a diagram. A renderer puts
|
|
109
|
+
* a visible MARK at the far end either way; this says which sentence goes with
|
|
110
|
+
* it, and the two are different: one is where our authority ran out, the other
|
|
111
|
+
* is a drawing convention that refuses to retrace a lap it cannot promise.
|
|
112
|
+
*/
|
|
113
|
+
export type ArcFarEnd =
|
|
114
|
+
/** The last instant the provider vouched for. */
|
|
115
|
+
"horizon"
|
|
116
|
+
/** One full revolution, past which a second lap would assert a closure osculating elements cannot promise. */
|
|
117
|
+
| "revolution";
|
|
118
|
+
/** Why nothing may be drawn. Each is a distinct sentence a readout can say; collapsing them would hide which one happened. */
|
|
119
|
+
export type TrajectoryWithheldReason =
|
|
120
|
+
/** No provider stated a horizon. Silence must not render as health. */
|
|
121
|
+
"no-horizon-stated"
|
|
122
|
+
/** The view instant is past the bound the provider named. */
|
|
123
|
+
| "past-horizon"
|
|
124
|
+
/** The provider stated reach but not shape, so a conic is not known to be right. */
|
|
125
|
+
| "shape-not-stated"
|
|
126
|
+
/** These osculating elements cannot be sampled into an arc. */
|
|
127
|
+
| "no-arc-available"
|
|
128
|
+
/**
|
|
129
|
+
* There is a curve, and the frame asked for could not be formed from the
|
|
130
|
+
* bodies the catalogue carries: a body it has not sent yet, a rotating frame
|
|
131
|
+
* asked for on the root star, or a pair whose separation is degenerate.
|
|
132
|
+
*
|
|
133
|
+
* Distinct from every reason above because the propagation is FINE. Drawing
|
|
134
|
+
* the curve in whatever frame it arrived in would answer a question nobody
|
|
135
|
+
* asked, and in a rotating frame the difference is the whole shape of the
|
|
136
|
+
* path rather than an offset.
|
|
137
|
+
*/
|
|
138
|
+
| "frame-unavailable";
|
|
139
|
+
/**
|
|
140
|
+
* How a craft's path may be drawn at the instant on screen, from
|
|
141
|
+
* {@link useOrbitTrajectory}: as a conic from its elements, as the sampled arc
|
|
142
|
+
* the provider vouched for, or not at all.
|
|
143
|
+
*
|
|
144
|
+
* A `withheld` answer carries its reason. Show it where the curve would be: it
|
|
145
|
+
* is a statement about what the provider vouched for, not a missing value.
|
|
146
|
+
*
|
|
147
|
+
* @category Frames of reference
|
|
148
|
+
*/
|
|
149
|
+
export type OrbitTrajectory = {
|
|
150
|
+
/**
|
|
151
|
+
* A closed-form conic. Draw one from the elements: they ARE the curve,
|
|
152
|
+
* for as long as the horizon allows.
|
|
153
|
+
*/
|
|
154
|
+
shape: "conic";
|
|
155
|
+
} | {
|
|
156
|
+
/**
|
|
157
|
+
* A sampled path. Draw the points and nothing beyond them: this is the
|
|
158
|
+
* span the provider vouched for, and extending it is inventing.
|
|
159
|
+
*/
|
|
160
|
+
shape: "arc";
|
|
161
|
+
points: readonly TrajectoryPoint[];
|
|
162
|
+
/** The window the arc spans, so a caller can say how far ahead it reaches. */
|
|
163
|
+
fromUt: number;
|
|
164
|
+
toUt: number;
|
|
165
|
+
/** Which frame `points` are in, so a widget can name it rather than assume it. */
|
|
166
|
+
frame: TrajectoryFrame;
|
|
167
|
+
/** What `toUt` is: see `ArcFarEnd`. */
|
|
168
|
+
farEnd: ArcFarEnd;
|
|
169
|
+
} | {
|
|
170
|
+
shape: "withheld";
|
|
171
|
+
reason: TrajectoryWithheldReason;
|
|
172
|
+
/**
|
|
173
|
+
* What kind of answer was refused, when the provider said. Present so a
|
|
174
|
+
* readout can distinguish an integrator that has not computed this far yet
|
|
175
|
+
* (which resolves on its own) from an analytic provider claiming a bound
|
|
176
|
+
* (which is a producer bug that does not).
|
|
177
|
+
*/
|
|
178
|
+
trajectoryKind?: TrajectoryKindLike;
|
|
179
|
+
};
|
|
180
|
+
/** The arc arm of {@link OrbitTrajectory}, named so the functions that only ever produce one can say so. */
|
|
181
|
+
export type TrajectoryArcAnswer = Extract<OrbitTrajectory, {
|
|
182
|
+
shape: "arc";
|
|
183
|
+
}>;
|
|
184
|
+
export interface OrbitTrajectoryInput {
|
|
185
|
+
/**
|
|
186
|
+
* The `vessel.orbit` reading, in wire units. Deliberately the whole sample
|
|
187
|
+
* rather than pre-normalized elements: the horizon and the elements it bounds
|
|
188
|
+
* share one `validAt`, and a caller that could pass them separately could
|
|
189
|
+
* pass one sample's elements with another's horizon and draw a curve
|
|
190
|
+
* authorised by the wrong sample, silently.
|
|
191
|
+
*/
|
|
192
|
+
orbit: WireOrbitElements & {
|
|
193
|
+
/** `undefined` only for a producer that dropped the field, which the gate refuses. */
|
|
194
|
+
horizon?: PropagationHorizonLike;
|
|
195
|
+
/**
|
|
196
|
+
* The `system.bodies` index the elements are measured against. Needed only
|
|
197
|
+
* to re-express the curve into a read frame, because that is the one thing
|
|
198
|
+
* here that has to know where the curve sits in the system rather than only
|
|
199
|
+
* its shape.
|
|
200
|
+
*/
|
|
201
|
+
referenceBodyIndex?: number;
|
|
202
|
+
};
|
|
203
|
+
/** The instant on screen, which is the instant the operator's question is about. */
|
|
204
|
+
viewUt: number;
|
|
205
|
+
/** Points along a sampled arc. Default 128, the same density the orbit patches use. */
|
|
206
|
+
samples?: number;
|
|
207
|
+
/**
|
|
208
|
+
* The frame the CALLER wants the curve in, and the catalogue to build it
|
|
209
|
+
* from. Absent leaves the curve in whatever frame it was computed in, which
|
|
210
|
+
* is what every caller did before read frames existed.
|
|
211
|
+
*
|
|
212
|
+
* A read frame is a coordinate change and nothing else: it cannot move
|
|
213
|
+
* anything in the game, so two widgets may pick different ones with no
|
|
214
|
+
* arbitration between them, and a station screen picking one changes nothing
|
|
215
|
+
* on the main screen.
|
|
216
|
+
*/
|
|
217
|
+
readFrame?: {
|
|
218
|
+
choice: ReadFrameChoice;
|
|
219
|
+
facts: CelestialFacts;
|
|
220
|
+
};
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* The provider's answer to "what is this trajectory", in a form that can be
|
|
224
|
+
* drawn.
|
|
225
|
+
*
|
|
226
|
+
* The window put to `canPropagate` is the view instant on both ends, matching
|
|
227
|
+
* the gate's other callers: the horizon is an absolute UT bound, so "can these
|
|
228
|
+
* elements answer for the moment I am looking at" is the whole question, and
|
|
229
|
+
* building one from `elements.epoch` would ask a different question in the same
|
|
230
|
+
* units (`epoch` is the mean-anomaly reference, not when the sample was taken).
|
|
231
|
+
*/
|
|
232
|
+
export declare function orbitTrajectory(input: OrbitTrajectoryInput): OrbitTrajectory;
|
|
233
|
+
/**
|
|
234
|
+
* The `TrajectoryFrame` kind a read-frame choice draws in.
|
|
235
|
+
*
|
|
236
|
+
* Exported because a widget that does its OWN framing still has to caption the
|
|
237
|
+
* frame it drew in, and building the same switch beside the caption is how two
|
|
238
|
+
* mappings of one enum drift apart.
|
|
239
|
+
*/
|
|
240
|
+
export declare function trajectoryFrameKindFor(kind: ReadFrameChoice["kind"]): TrajectoryFrameKindLike;
|
|
241
|
+
/**
|
|
242
|
+
* What frame a curve was drawn in, as a phrase to put beside it, in the words
|
|
243
|
+
* the game uses for its own frames.
|
|
244
|
+
*
|
|
245
|
+
* Name the frame on every drawing of a path: the same points are a different
|
|
246
|
+
* path in every frame. Use this rather than wording your own, so every widget
|
|
247
|
+
* names one frame the same way. Pass the catalogue for the body names; a body it
|
|
248
|
+
* has not named shows as its index.
|
|
249
|
+
*
|
|
250
|
+
* @category Frames of reference
|
|
251
|
+
*/
|
|
252
|
+
export declare function trajectoryFrameLabel(frame: TrajectoryFrame | null | undefined, names: Pick<CelestialFacts, "nameByIndex"> | undefined): string;
|
|
253
|
+
/**
|
|
254
|
+
* True when a coordinate in this frame must not be quoted as a distance.
|
|
255
|
+
*
|
|
256
|
+
* A pulsating frame's length unit is the pair's own separation, so a coordinate
|
|
257
|
+
* in it is a ratio. `unitLength` on the frame is what turns one back into
|
|
258
|
+
* metres, and a readout that has neither says so rather than printing the
|
|
259
|
+
* ratio with a metre sign after it.
|
|
260
|
+
*/
|
|
261
|
+
export declare function frameCoordinatesArePulsating(frame: TrajectoryFrame | null | undefined): boolean;
|
|
262
|
+
/**
|
|
263
|
+
* The frame a widget actually DREW in, which is not always a field on the
|
|
264
|
+
* answer.
|
|
265
|
+
*
|
|
266
|
+
* A conic answer carries no frame because it carries no points: the caller
|
|
267
|
+
* builds the ellipse itself from the elements, and the frame that lands in is
|
|
268
|
+
* the orbit's own plane about the body the elements are measured against. That
|
|
269
|
+
* is a real frame and it has to be nameable, or the widgets that draw a conic
|
|
270
|
+
* would be the only ones unable to say what they drew.
|
|
271
|
+
*
|
|
272
|
+
* Null for a refusal, because nothing was drawn and a frame named for an absent
|
|
273
|
+
* curve is a caption with no picture.
|
|
274
|
+
*/
|
|
275
|
+
export declare function drawnFrame(trajectory: OrbitTrajectory | null | undefined, centreBodyIndex?: number): TrajectoryFrame | null;
|
|
276
|
+
//# sourceMappingURL=orbit-trajectory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"orbit-trajectory.d.ts","sourceRoot":"","sources":["../../src/spine/orbit-trajectory.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAIL,KAAK,sBAAsB,EAG3B,kBAAkB,EAEnB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAiB,KAAK,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAE3E,OAAO,EAGL,KAAK,eAAe,EAGpB,KAAK,yBAAyB,EAE/B,MAAM,mBAAmB,CAAC;AAE3B;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,eAAe;IAC9B,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,EAAE,EAAE,MAAM,CAAC;CACZ;AAED;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB;;;;;;;CAO1B,CAAC;AACX,MAAM,MAAM,uBAAuB,GACjC,CAAC,OAAO,uBAAuB,CAAC,CAAC,MAAM,OAAO,uBAAuB,CAAC,CAAC;AAEzE;;;;;;GAMG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,uBAAuB,CAAC;IAC9B,yEAAyE;IACzE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,wGAAwG;IACxG,cAAc,EAAE,OAAO,CAAC;IACxB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B;;;;OAIG;IACH,eAAe,CAAC,EAAE,yBAAyB,CAAC;IAC5C;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;GAQG;AACH,MAAM,MAAM,SAAS;AACnB,iDAAiD;AAC/C,SAAS;AACX,8GAA8G;GAC5G,YAAY,CAAC;AAEjB,8HAA8H;AAC9H,MAAM,MAAM,wBAAwB;AAClC,uEAAuE;AACrE,mBAAmB;AACrB,6DAA6D;GAC3D,cAAc;AAChB,oFAAoF;GAClF,kBAAkB;AACpB,+DAA+D;GAC7D,kBAAkB;AACpB;;;;;;;;;GASG;GACD,mBAAmB,CAAC;AAExB;;;;;;;;;GASG;AACH,MAAM,MAAM,eAAe,GACvB;IACE;;;OAGG;IACH,KAAK,EAAE,OAAO,CAAC;CAChB,GACD;IACE;;;OAGG;IACH,KAAK,EAAE,KAAK,CAAC;IACb,MAAM,EAAE,SAAS,eAAe,EAAE,CAAC;IACnC,8EAA8E;IAC9E,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,kFAAkF;IAClF,KAAK,EAAE,eAAe,CAAC;IACvB,uCAAuC;IACvC,MAAM,EAAE,SAAS,CAAC;CACnB,GACD;IACE,KAAK,EAAE,UAAU,CAAC;IAClB,MAAM,EAAE,wBAAwB,CAAC;IACjC;;;;;OAKG;IACH,cAAc,CAAC,EAAE,kBAAkB,CAAC;CACrC,CAAC;AAEN,4GAA4G;AAC5G,MAAM,MAAM,mBAAmB,GAAG,OAAO,CAAC,eAAe,EAAE;IAAE,KAAK,EAAE,KAAK,CAAA;CAAE,CAAC,CAAC;AAE7E,MAAM,WAAW,oBAAoB;IACnC;;;;;;OAMG;IACH,KAAK,EAAE,iBAAiB,GAAG;QACzB,sFAAsF;QACtF,OAAO,CAAC,EAAE,sBAAsB,CAAC;QACjC;;;;;WAKG;QACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;KAC7B,CAAC;IACF,oFAAoF;IACpF,MAAM,EAAE,MAAM,CAAC;IACf,uFAAuF;IACvF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;;;;;;OASG;IACH,SAAS,CAAC,EAAE;QACV,MAAM,EAAE,eAAe,CAAC;QACxB,KAAK,EAAE,cAAc,CAAC;KACvB,CAAC;CACH;AAoBD;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,oBAAoB,GAAG,eAAe,CA+C5E;AA0ID;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,eAAe,CAAC,MAAM,CAAC,GAC5B,uBAAuB,CAezB;AAwDD;;;;;;;;;;GAUG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,eAAe,GAAG,IAAI,GAAG,SAAS,EACzC,KAAK,EAAE,IAAI,CAAC,cAAc,EAAE,aAAa,CAAC,GAAG,SAAS,GACrD,MAAM,CA6BR;AAED;;;;;;;GAOG;AACH,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,eAAe,GAAG,IAAI,GAAG,SAAS,GACxC,OAAO,CAMT;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,UAAU,CACxB,UAAU,EAAE,eAAe,GAAG,IAAI,GAAG,SAAS,EAC9C,eAAe,CAAC,EAAE,MAAM,GACvB,eAAe,GAAG,IAAI,CAWxB"}
|
|
@@ -0,0 +1,382 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What a trajectory IS, as a drawable answer, decided from what the elected
|
|
3
|
+
* propagation provider said rather than from the elements alone.
|
|
4
|
+
*
|
|
5
|
+
* ## Why this is not a widget's decision
|
|
6
|
+
*
|
|
7
|
+
* `vessel.orbit` carries orbital elements and, riding with them, a
|
|
8
|
+
* `PropagationHorizon` whose two halves answer two different questions: `kind`
|
|
9
|
+
* answers REACH (how far may these be extrapolated) and `trajectoryKind`
|
|
10
|
+
* answers SHAPE (is a conic the right renderer at all). Neither implies the
|
|
11
|
+
* other, which is the whole reason both are on the wire: an integrating
|
|
12
|
+
* provider in a low-perturbation regime honestly reports an unbounded horizon,
|
|
13
|
+
* and a client reasoning "unbounded, therefore analytic, therefore an ellipse
|
|
14
|
+
* is fine" draws a closed conic for a path the craft will not fly.
|
|
15
|
+
*
|
|
16
|
+
* A widget holding `sma` and `ecc` can produce an ellipse without asking
|
|
17
|
+
* anything, and one that does has answered the shape question for itself. The
|
|
18
|
+
* provider then cannot be swapped, because electing a different one changes
|
|
19
|
+
* nothing the operator sees. This function is the one place the question is
|
|
20
|
+
* answered, so that swapping the provider moves the picture.
|
|
21
|
+
*
|
|
22
|
+
* ## What it hands back
|
|
23
|
+
*
|
|
24
|
+
* Three answers, and the caller renders whichever it gets. A conic answer says
|
|
25
|
+
* a conic renderer is exactly right, so the caller draws one from the elements
|
|
26
|
+
* it already holds: that is the provider's business, not a bypass, because the
|
|
27
|
+
* provider is what said so. An arc answer is a sampled polyline the caller
|
|
28
|
+
* draws as given. A withheld answer is a refusal with a reason the caller can
|
|
29
|
+
* put on screen; it is never an empty path, because "here is a trajectory with
|
|
30
|
+
* no points in it" and "there is no trajectory to draw" read identically on a
|
|
31
|
+
* diagram and mean opposite things.
|
|
32
|
+
*/
|
|
33
|
+
import { PerfBudget } from "../perf/PerfBudget.js";
|
|
34
|
+
import { canPropagate, horizonUtOf, rotatePerifocalToInertial, solveAnomalies, TrajectoryKindLike, } from "./kepler.js";
|
|
35
|
+
import { buildElements } from "./kepler-reckoning.js";
|
|
36
|
+
import { orbitalPeriod } from "./propagation.js";
|
|
37
|
+
import { frameInstantAt, frameSides, systemInstantAt, TRAJECTORY_SCALE_CONVENTIONS, toFrame, } from "./reference-frame.js";
|
|
38
|
+
/**
|
|
39
|
+
* Which frame a set of points is expressed in. A client-side vocabulary: the
|
|
40
|
+
* points are sampled and re-expressed here, never read off the wire.
|
|
41
|
+
*
|
|
42
|
+
* @category Frames of reference
|
|
43
|
+
*/
|
|
44
|
+
export const TrajectoryFrameKindLike = {
|
|
45
|
+
Unspecified: 0,
|
|
46
|
+
Perifocal: 1,
|
|
47
|
+
BodyCentredInertial: 2,
|
|
48
|
+
BodyCentredRotating: 3,
|
|
49
|
+
BodyCentredParentDirection: 4,
|
|
50
|
+
RotatingPulsating: 5,
|
|
51
|
+
};
|
|
52
|
+
const DEFAULT_ARC_SAMPLES = 128;
|
|
53
|
+
/**
|
|
54
|
+
* Points put through the frame transform, per second.
|
|
55
|
+
*
|
|
56
|
+
* Steady state is four widgets reading a 256-point curve at 1 Hz, about 1,000/s.
|
|
57
|
+
* The regression this catches is a widget transforming on every render instead
|
|
58
|
+
* of on new data, which at 60 Hz is ~61,000/s. The threshold sits above steady
|
|
59
|
+
* state by the usual 3-5x and an order of magnitude below the regression, so it
|
|
60
|
+
* cannot read green through the thing it exists to see.
|
|
61
|
+
*/
|
|
62
|
+
const TRAJECTORY_TRANSFORM_BUDGET = new PerfBudget({
|
|
63
|
+
name: "Trajectory points transformed/sec",
|
|
64
|
+
threshold: 5_000,
|
|
65
|
+
windowMs: 1000,
|
|
66
|
+
unit: "points",
|
|
67
|
+
});
|
|
68
|
+
/**
|
|
69
|
+
* The provider's answer to "what is this trajectory", in a form that can be
|
|
70
|
+
* drawn.
|
|
71
|
+
*
|
|
72
|
+
* The window put to `canPropagate` is the view instant on both ends, matching
|
|
73
|
+
* the gate's other callers: the horizon is an absolute UT bound, so "can these
|
|
74
|
+
* elements answer for the moment I am looking at" is the whole question, and
|
|
75
|
+
* building one from `elements.epoch` would ask a different question in the same
|
|
76
|
+
* units (`epoch` is the mean-anomaly reference, not when the sample was taken).
|
|
77
|
+
*/
|
|
78
|
+
export function orbitTrajectory(input) {
|
|
79
|
+
const { orbit, viewUt } = input;
|
|
80
|
+
const horizon = orbit.horizon;
|
|
81
|
+
const trajectoryKind = horizon?.trajectoryKind;
|
|
82
|
+
const refusal = canPropagate(horizon, viewUt, viewUt);
|
|
83
|
+
if (!refusal.propagatable) {
|
|
84
|
+
return { shape: "withheld", reason: refusal.reason, trajectoryKind };
|
|
85
|
+
}
|
|
86
|
+
const reframing = wantsReframing(input.readFrame);
|
|
87
|
+
if (trajectoryKind === TrajectoryKindLike.Analytic) {
|
|
88
|
+
// A conic answer says "the elements ARE the curve", and in a rotating frame
|
|
89
|
+
// they are not: the ellipse is a shape in one frame and a rosette in
|
|
90
|
+
// another. So a caller that asked for a different frame gets the conic
|
|
91
|
+
// sampled and re-expressed, and never the instruction to draw an ellipse.
|
|
92
|
+
if (reframing === null)
|
|
93
|
+
return { shape: "conic" };
|
|
94
|
+
const sampled = sampleArc(buildElements(orbit), horizon, viewUt, input.samples);
|
|
95
|
+
if (sampled === null) {
|
|
96
|
+
return { shape: "withheld", reason: "no-arc-available", trajectoryKind };
|
|
97
|
+
}
|
|
98
|
+
return reframeArc(sampled, buildElements(orbit), orbit, reframing, viewUt);
|
|
99
|
+
}
|
|
100
|
+
if (trajectoryKind !== TrajectoryKindLike.Integrated) {
|
|
101
|
+
// `Unspecified`, or absent entirely. Both are what a producer that never
|
|
102
|
+
// stated a shape sends, and reading either as "conic" would restore the
|
|
103
|
+
// permissive default the enum's zero-value ordering exists to remove.
|
|
104
|
+
return { shape: "withheld", reason: "shape-not-stated", trajectoryKind };
|
|
105
|
+
}
|
|
106
|
+
// An integrating provider's elements are the conic the craft is tangent to
|
|
107
|
+
// at the sample instant, so what is drawn is that conic sampled forward and
|
|
108
|
+
// stopped at the provider's horizon: never a closed ellipse, which would
|
|
109
|
+
// claim a path the craft will not fly.
|
|
110
|
+
const elements = buildElements(orbit);
|
|
111
|
+
const arc = sampleArc(elements, horizon, viewUt, input.samples);
|
|
112
|
+
if (arc === null) {
|
|
113
|
+
return { shape: "withheld", reason: "no-arc-available", trajectoryKind };
|
|
114
|
+
}
|
|
115
|
+
if (reframing === null)
|
|
116
|
+
return arc;
|
|
117
|
+
return reframeArc(arc, elements, orbit, reframing, viewUt);
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* The concrete frame a caller asked for, or null when it asked for nothing and
|
|
121
|
+
* the curve stays where it was computed.
|
|
122
|
+
*
|
|
123
|
+
* `follow-control-frame` arriving here unresolved is null rather than a
|
|
124
|
+
* refusal: it means no control frame was observed, which is every stream with
|
|
125
|
+
* no n-body mod on it, and that is the ordinary case rather than a fault.
|
|
126
|
+
*/
|
|
127
|
+
function wantsReframing(readFrame) {
|
|
128
|
+
if (readFrame === undefined)
|
|
129
|
+
return null;
|
|
130
|
+
if (readFrame.choice.kind === "follow-control-frame")
|
|
131
|
+
return null;
|
|
132
|
+
return readFrame;
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* A curve moved into the frame the caller asked for.
|
|
136
|
+
*
|
|
137
|
+
* The two steps are separate on purpose. First the points are lifted out of
|
|
138
|
+
* whatever frame they were computed in and into the system: perifocal points
|
|
139
|
+
* are un-rotated by the elements that built them, body-centred points already
|
|
140
|
+
* are, and the centre body's own position at each point's OWN instant is added.
|
|
141
|
+
* Only then does the frame transform run. A curve lifted at one instant and
|
|
142
|
+
* transformed at another is a curve that never existed.
|
|
143
|
+
*
|
|
144
|
+
* Refuses rather than approximates when the source frame is one it cannot lift
|
|
145
|
+
* from. A curve already in somebody's rotating frame would need that frame's
|
|
146
|
+
* own state to undo, and we do not have it.
|
|
147
|
+
*/
|
|
148
|
+
function reframeArc(arc, elements, orbit, readFrame, viewUt) {
|
|
149
|
+
const unavailable = {
|
|
150
|
+
shape: "withheld",
|
|
151
|
+
reason: "frame-unavailable",
|
|
152
|
+
};
|
|
153
|
+
const centreIndex = orbit.referenceBodyIndex ?? arc.frame.centreBodyIndex;
|
|
154
|
+
if (centreIndex === undefined)
|
|
155
|
+
return unavailable;
|
|
156
|
+
const sourceKind = arc.frame.kind;
|
|
157
|
+
if (sourceKind !== TrajectoryFrameKindLike.Perifocal &&
|
|
158
|
+
sourceKind !== TrajectoryFrameKindLike.BodyCentredInertial) {
|
|
159
|
+
return unavailable;
|
|
160
|
+
}
|
|
161
|
+
const sides = frameSides(readFrame.facts, readFrame.choice);
|
|
162
|
+
if (sides === null)
|
|
163
|
+
return unavailable;
|
|
164
|
+
const kind = trajectoryFrameKindFor(readFrame.choice.kind);
|
|
165
|
+
if (kind === TrajectoryFrameKindLike.Unspecified)
|
|
166
|
+
return unavailable;
|
|
167
|
+
// The perifocal frame's own axes in inertial components, built once rather
|
|
168
|
+
// than per point. The third is the orbit normal, which the two-dimensional
|
|
169
|
+
// rotation cannot give and which a point's out-of-plane component needs.
|
|
170
|
+
const pHat = rotatePerifocalToInertial(1, 0, elements.inc, elements.lan, elements.argPe);
|
|
171
|
+
const qHat = rotatePerifocalToInertial(0, 1, elements.inc, elements.lan, elements.argPe);
|
|
172
|
+
const wHat = [
|
|
173
|
+
pHat[1] * qHat[2] - pHat[2] * qHat[1],
|
|
174
|
+
pHat[2] * qHat[0] - pHat[0] * qHat[2],
|
|
175
|
+
pHat[0] * qHat[1] - pHat[1] * qHat[0],
|
|
176
|
+
];
|
|
177
|
+
const points = [];
|
|
178
|
+
let unitLengthAtView;
|
|
179
|
+
let scaleConvention = TRAJECTORY_SCALE_CONVENTIONS.metres;
|
|
180
|
+
for (const p of arc.points) {
|
|
181
|
+
const system = systemInstantAt(readFrame.facts, p.ut);
|
|
182
|
+
const centre = system.positionByIndex.get(centreIndex);
|
|
183
|
+
if (centre === undefined)
|
|
184
|
+
return unavailable;
|
|
185
|
+
const instant = frameInstantAt(readFrame.facts, readFrame.choice, p.ut, system);
|
|
186
|
+
if (instant === null)
|
|
187
|
+
return unavailable;
|
|
188
|
+
scaleConvention = instant.scaleConvention;
|
|
189
|
+
if (unitLengthAtView === undefined || p.ut <= viewUt) {
|
|
190
|
+
unitLengthAtView = instant.unitLength;
|
|
191
|
+
}
|
|
192
|
+
const local = sourceKind === TrajectoryFrameKindLike.Perifocal
|
|
193
|
+
? [
|
|
194
|
+
p.x * pHat[0] + p.y * qHat[0] + p.z * wHat[0],
|
|
195
|
+
p.x * pHat[1] + p.y * qHat[1] + p.z * wHat[1],
|
|
196
|
+
p.x * pHat[2] + p.y * qHat[2] + p.z * wHat[2],
|
|
197
|
+
]
|
|
198
|
+
: [p.x, p.y, p.z];
|
|
199
|
+
TRAJECTORY_TRANSFORM_BUDGET.record();
|
|
200
|
+
const moved = toFrame(instant, [
|
|
201
|
+
local[0] + centre[0],
|
|
202
|
+
local[1] + centre[1],
|
|
203
|
+
local[2] + centre[2],
|
|
204
|
+
]);
|
|
205
|
+
points.push({
|
|
206
|
+
x: moved.position[0],
|
|
207
|
+
y: moved.position[1],
|
|
208
|
+
z: moved.position[2],
|
|
209
|
+
ut: p.ut,
|
|
210
|
+
});
|
|
211
|
+
}
|
|
212
|
+
if (points.length < 2)
|
|
213
|
+
return unavailable;
|
|
214
|
+
const pulsating = readFrame.choice.kind === "rotating-pulsating";
|
|
215
|
+
return {
|
|
216
|
+
...arc,
|
|
217
|
+
points,
|
|
218
|
+
frame: {
|
|
219
|
+
kind,
|
|
220
|
+
centreBodyIndex: pulsating ? undefined : sides.primary[0],
|
|
221
|
+
primaryBodyIndex: sides.primary[0],
|
|
222
|
+
secondaryBodyIndex: sides.secondary[0],
|
|
223
|
+
lengthsPulsate: pulsating,
|
|
224
|
+
scaleConvention,
|
|
225
|
+
unitLength: unitLengthAtView,
|
|
226
|
+
},
|
|
227
|
+
};
|
|
228
|
+
}
|
|
229
|
+
/**
|
|
230
|
+
* The `TrajectoryFrame` kind a read-frame choice draws in.
|
|
231
|
+
*
|
|
232
|
+
* Exported because a widget that does its OWN framing still has to caption the
|
|
233
|
+
* frame it drew in, and building the same switch beside the caption is how two
|
|
234
|
+
* mappings of one enum drift apart.
|
|
235
|
+
*/
|
|
236
|
+
export function trajectoryFrameKindFor(kind) {
|
|
237
|
+
switch (kind) {
|
|
238
|
+
case "body-centred-inertial":
|
|
239
|
+
return TrajectoryFrameKindLike.BodyCentredInertial;
|
|
240
|
+
case "parent-direction":
|
|
241
|
+
return TrajectoryFrameKindLike.BodyCentredParentDirection;
|
|
242
|
+
case "rotating-pulsating":
|
|
243
|
+
return TrajectoryFrameKindLike.RotatingPulsating;
|
|
244
|
+
default:
|
|
245
|
+
// `follow-control-frame`, which never reaches here, and anything added
|
|
246
|
+
// later. Unspecified is refused by the caller rather than drawn, so a new
|
|
247
|
+
// member shows up as a frame that cannot be formed instead of as a curve
|
|
248
|
+
// in a frame nobody named.
|
|
249
|
+
return TrajectoryFrameKindLike.Unspecified;
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
/**
|
|
253
|
+
* The osculating conic sampled forward from the view instant, stopping at
|
|
254
|
+
* whichever comes first: the horizon the provider named, or one full revolution.
|
|
255
|
+
*
|
|
256
|
+
* Capped at a revolution because a second lap would retrace the first, and an
|
|
257
|
+
* integrated path does not retrace: drawing the overlap would assert a closure
|
|
258
|
+
* that is exactly what the osculating elements cannot promise. Where the
|
|
259
|
+
* provider's horizon is shorter, the horizon wins, which is the point of it.
|
|
260
|
+
*
|
|
261
|
+
* For a provider that integrates, this is the ellipse the craft is tangent to
|
|
262
|
+
* right now, bounded by the horizon that provider named.
|
|
263
|
+
*/
|
|
264
|
+
function sampleArc(elements, horizon, viewUt, samples) {
|
|
265
|
+
// `solveAnomalies` refuses outside `[0, 1)`, so an unbound osculating set has no arc rather than a thrown render.
|
|
266
|
+
if (!(elements.ecc >= 0 && elements.ecc < 1))
|
|
267
|
+
return null;
|
|
268
|
+
const period = orbitalPeriod(elements);
|
|
269
|
+
if (period === null)
|
|
270
|
+
return null;
|
|
271
|
+
const horizonUt = horizon === undefined ? undefined : horizonUtOf(horizon);
|
|
272
|
+
const revolutionUt = viewUt + period;
|
|
273
|
+
const toUt = Math.min(revolutionUt, horizonUt ?? Number.POSITIVE_INFINITY);
|
|
274
|
+
if (!(toUt > viewUt))
|
|
275
|
+
return null;
|
|
276
|
+
const count = Math.max(2, Math.floor(samples ?? DEFAULT_ARC_SAMPLES));
|
|
277
|
+
const points = [];
|
|
278
|
+
for (let i = 0; i < count; i++) {
|
|
279
|
+
const ut = viewUt + ((toUt - viewUt) * i) / (count - 1);
|
|
280
|
+
const { eccentricAnomaly, trueAnomaly } = solveAnomalies(elements, ut);
|
|
281
|
+
const radius = elements.sma * (1 - elements.ecc * Math.cos(eccentricAnomaly));
|
|
282
|
+
if (!Number.isFinite(radius))
|
|
283
|
+
return null;
|
|
284
|
+
points.push({
|
|
285
|
+
x: radius * Math.cos(trueAnomaly),
|
|
286
|
+
y: radius * Math.sin(trueAnomaly),
|
|
287
|
+
// A conic is flat in its own plane by construction, so the out-of-plane component is a real zero rather than an unfilled field.
|
|
288
|
+
z: 0,
|
|
289
|
+
ut,
|
|
290
|
+
});
|
|
291
|
+
}
|
|
292
|
+
return {
|
|
293
|
+
shape: "arc",
|
|
294
|
+
points,
|
|
295
|
+
fromUt: viewUt,
|
|
296
|
+
toUt,
|
|
297
|
+
frame: { kind: TrajectoryFrameKindLike.Perifocal, lengthsPulsate: false },
|
|
298
|
+
farEnd: toUt < revolutionUt ? "horizon" : "revolution",
|
|
299
|
+
};
|
|
300
|
+
}
|
|
301
|
+
/**
|
|
302
|
+
* What frame a curve was drawn in, as a phrase to put beside it, in the words
|
|
303
|
+
* the game uses for its own frames.
|
|
304
|
+
*
|
|
305
|
+
* Name the frame on every drawing of a path: the same points are a different
|
|
306
|
+
* path in every frame. Use this rather than wording your own, so every widget
|
|
307
|
+
* names one frame the same way. Pass the catalogue for the body names; a body it
|
|
308
|
+
* has not named shows as its index.
|
|
309
|
+
*
|
|
310
|
+
* @category Frames of reference
|
|
311
|
+
*/
|
|
312
|
+
export function trajectoryFrameLabel(frame, names) {
|
|
313
|
+
if (frame == null)
|
|
314
|
+
return "frame not stated";
|
|
315
|
+
const named = (index) => index === undefined
|
|
316
|
+
? "unnamed body"
|
|
317
|
+
: (names?.nameByIndex[index] ?? `body ${index}`);
|
|
318
|
+
// The producer's own wording. These are the names an operator selects the
|
|
319
|
+
// frame BY in the game's own interface, so renaming them here would make a
|
|
320
|
+
// reader hold two vocabularies for one thing.
|
|
321
|
+
switch (frame.kind) {
|
|
322
|
+
case TrajectoryFrameKindLike.Perifocal:
|
|
323
|
+
// Ours: the producer has no name for it, because it never draws in it.
|
|
324
|
+
return "orbit plane";
|
|
325
|
+
case TrajectoryFrameKindLike.BodyCentredInertial:
|
|
326
|
+
return `${named(frame.centreBodyIndex)}-Centred Inertial`;
|
|
327
|
+
case TrajectoryFrameKindLike.BodyCentredRotating: {
|
|
328
|
+
const centre = named(frame.centreBodyIndex);
|
|
329
|
+
return `${centre}-Centred ${centre}-Fixed`;
|
|
330
|
+
}
|
|
331
|
+
case TrajectoryFrameKindLike.BodyCentredParentDirection:
|
|
332
|
+
return `${named(frame.secondaryBodyIndex)}-${named(frame.primaryBodyIndex)}-Orbit`;
|
|
333
|
+
case TrajectoryFrameKindLike.RotatingPulsating:
|
|
334
|
+
return `${named(frame.primaryBodyIndex)}-${named(frame.secondaryBodyIndex)} Lagrange`;
|
|
335
|
+
default:
|
|
336
|
+
// A producer that named no frame, or one this build does not know. Both
|
|
337
|
+
// are states a reader must be able to see, because a curve drawn under a
|
|
338
|
+
// guessed frame reads exactly like a curve drawn under a known one.
|
|
339
|
+
return "frame not stated";
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
/**
|
|
343
|
+
* True when a coordinate in this frame must not be quoted as a distance.
|
|
344
|
+
*
|
|
345
|
+
* A pulsating frame's length unit is the pair's own separation, so a coordinate
|
|
346
|
+
* in it is a ratio. `unitLength` on the frame is what turns one back into
|
|
347
|
+
* metres, and a readout that has neither says so rather than printing the
|
|
348
|
+
* ratio with a metre sign after it.
|
|
349
|
+
*/
|
|
350
|
+
export function frameCoordinatesArePulsating(frame) {
|
|
351
|
+
return (frame?.lengthsPulsate === true ||
|
|
352
|
+
frame?.scaleConvention ===
|
|
353
|
+
TRAJECTORY_SCALE_CONVENTIONS.separationAtPointInstant);
|
|
354
|
+
}
|
|
355
|
+
/**
|
|
356
|
+
* The frame a widget actually DREW in, which is not always a field on the
|
|
357
|
+
* answer.
|
|
358
|
+
*
|
|
359
|
+
* A conic answer carries no frame because it carries no points: the caller
|
|
360
|
+
* builds the ellipse itself from the elements, and the frame that lands in is
|
|
361
|
+
* the orbit's own plane about the body the elements are measured against. That
|
|
362
|
+
* is a real frame and it has to be nameable, or the widgets that draw a conic
|
|
363
|
+
* would be the only ones unable to say what they drew.
|
|
364
|
+
*
|
|
365
|
+
* Null for a refusal, because nothing was drawn and a frame named for an absent
|
|
366
|
+
* curve is a caption with no picture.
|
|
367
|
+
*/
|
|
368
|
+
export function drawnFrame(trajectory, centreBodyIndex) {
|
|
369
|
+
if (trajectory == null)
|
|
370
|
+
return null;
|
|
371
|
+
if (trajectory.shape === "arc")
|
|
372
|
+
return trajectory.frame;
|
|
373
|
+
if (trajectory.shape === "conic") {
|
|
374
|
+
return {
|
|
375
|
+
kind: TrajectoryFrameKindLike.Perifocal,
|
|
376
|
+
centreBodyIndex,
|
|
377
|
+
lengthsPulsate: false,
|
|
378
|
+
};
|
|
379
|
+
}
|
|
380
|
+
return null;
|
|
381
|
+
}
|
|
382
|
+
//# sourceMappingURL=orbit-trajectory.js.map
|