@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.
Files changed (1117) hide show
  1. package/LICENSE +2 -2
  2. package/README.md +48 -8
  3. package/biome.shared.json +26 -0
  4. package/dist/__generated__/command-map.d.ts +480 -0
  5. package/dist/__generated__/command-map.d.ts.map +1 -0
  6. package/dist/__generated__/command-map.js +265 -0
  7. package/dist/__generated__/command-map.js.map +1 -0
  8. package/dist/__generated__/contract.d.ts +10271 -454
  9. package/dist/__generated__/contract.d.ts.map +1 -1
  10. package/dist/__generated__/contract.js +1163 -11
  11. package/dist/__generated__/contract.js.map +1 -1
  12. package/dist/__generated__/control-channels.d.ts +116 -0
  13. package/dist/__generated__/control-channels.d.ts.map +1 -0
  14. package/dist/__generated__/control-channels.js +29 -0
  15. package/dist/__generated__/control-channels.js.map +1 -0
  16. package/dist/__generated__/delay-roles.d.ts +17 -0
  17. package/dist/__generated__/delay-roles.d.ts.map +1 -0
  18. package/dist/__generated__/delay-roles.js +72 -0
  19. package/dist/__generated__/delay-roles.js.map +1 -0
  20. package/dist/__generated__/error-codes.d.ts +376 -0
  21. package/dist/__generated__/error-codes.d.ts.map +1 -0
  22. package/dist/__generated__/error-codes.js +688 -0
  23. package/dist/__generated__/error-codes.js.map +1 -0
  24. package/dist/__generated__/frames.d.ts +83 -0
  25. package/dist/__generated__/frames.d.ts.map +1 -0
  26. package/dist/__generated__/frames.js +44 -0
  27. package/dist/__generated__/frames.js.map +1 -0
  28. package/dist/__generated__/reckonability.d.ts +381 -0
  29. package/dist/__generated__/reckonability.d.ts.map +1 -0
  30. package/dist/__generated__/reckonability.js +49 -0
  31. package/dist/__generated__/reckonability.js.map +1 -0
  32. package/dist/__generated__/test-theme.d.ts +52 -0
  33. package/dist/__generated__/test-theme.d.ts.map +1 -0
  34. package/dist/__generated__/test-theme.js +70 -0
  35. package/dist/__generated__/test-theme.js.map +1 -0
  36. package/dist/__generated__/topic-map.d.ts +44 -12
  37. package/dist/__generated__/topic-map.d.ts.map +1 -1
  38. package/dist/__generated__/topic-map.js +84 -11
  39. package/dist/__generated__/topic-map.js.map +1 -1
  40. package/dist/__generated__/units.d.ts +97 -0
  41. package/dist/__generated__/units.d.ts.map +1 -0
  42. package/dist/__generated__/units.js +3302 -0
  43. package/dist/__generated__/units.js.map +1 -0
  44. package/dist/api/action-dispatch.d.ts +36 -0
  45. package/dist/api/action-dispatch.d.ts.map +1 -0
  46. package/dist/api/action-dispatch.js +79 -0
  47. package/dist/api/action-dispatch.js.map +1 -0
  48. package/dist/api/alarm-request.d.ts +118 -0
  49. package/dist/api/alarm-request.d.ts.map +1 -0
  50. package/dist/api/alarm-request.js +50 -0
  51. package/dist/api/alarm-request.js.map +1 -0
  52. package/dist/api/bodies.d.ts +68 -0
  53. package/dist/api/bodies.d.ts.map +1 -0
  54. package/dist/api/bodies.js +103 -0
  55. package/dist/api/bodies.js.map +1 -0
  56. package/dist/api/command-rejection.d.ts +104 -0
  57. package/dist/api/command-rejection.d.ts.map +1 -0
  58. package/dist/api/command-rejection.js +128 -0
  59. package/dist/api/command-rejection.js.map +1 -0
  60. package/dist/api/contribution-slots.d.ts +594 -0
  61. package/dist/api/contribution-slots.d.ts.map +1 -0
  62. package/dist/api/contribution-slots.js +43 -0
  63. package/dist/api/contribution-slots.js.map +1 -0
  64. package/dist/api/coverage/CoverageMaskCache.d.ts +52 -0
  65. package/dist/api/coverage/CoverageMaskCache.d.ts.map +1 -0
  66. package/dist/api/coverage/CoverageMaskCache.js +89 -0
  67. package/dist/api/coverage/CoverageMaskCache.js.map +1 -0
  68. package/dist/api/coverage/CoverageMaskContext.d.ts +35 -0
  69. package/dist/api/coverage/CoverageMaskContext.d.ts.map +1 -0
  70. package/dist/api/coverage/CoverageMaskContext.js +53 -0
  71. package/dist/api/coverage/CoverageMaskContext.js.map +1 -0
  72. package/dist/api/coverage-source.d.ts +42 -0
  73. package/dist/api/coverage-source.d.ts.map +1 -0
  74. package/dist/api/coverage-source.js +118 -0
  75. package/dist/api/coverage-source.js.map +1 -0
  76. package/dist/api/error-codes.d.ts +32 -0
  77. package/dist/api/error-codes.d.ts.map +1 -0
  78. package/dist/api/error-codes.js +77 -0
  79. package/dist/api/error-codes.js.map +1 -0
  80. package/dist/api/event-reveal.d.ts +56 -0
  81. package/dist/api/event-reveal.d.ts.map +1 -0
  82. package/dist/api/event-reveal.js +53 -0
  83. package/dist/api/event-reveal.js.map +1 -0
  84. package/dist/api/host.d.ts +130 -0
  85. package/dist/api/host.d.ts.map +1 -0
  86. package/dist/api/host.js +57 -0
  87. package/dist/api/host.js.map +1 -0
  88. package/dist/api/index.d.ts +604 -0
  89. package/dist/api/index.d.ts.map +1 -0
  90. package/dist/api/index.js +671 -0
  91. package/dist/api/index.js.map +1 -0
  92. package/dist/api/localStorageStore.d.ts +50 -0
  93. package/dist/api/localStorageStore.d.ts.map +1 -0
  94. package/dist/api/localStorageStore.js +151 -0
  95. package/dist/api/localStorageStore.js.map +1 -0
  96. package/dist/api/logger-contract.d.ts +37 -0
  97. package/dist/api/logger-contract.d.ts.map +1 -0
  98. package/dist/api/logger-contract.js +2 -0
  99. package/dist/api/logger-contract.js.map +1 -0
  100. package/dist/api/logger.d.ts +9 -0
  101. package/dist/api/logger.d.ts.map +1 -0
  102. package/dist/api/logger.js +16 -0
  103. package/dist/api/logger.js.map +1 -0
  104. package/dist/api/map-poi.d.ts +28 -0
  105. package/dist/api/map-poi.d.ts.map +1 -0
  106. package/dist/api/map-poi.js +82 -0
  107. package/dist/api/map-poi.js.map +1 -0
  108. package/dist/api/plot-layers.d.ts +240 -0
  109. package/dist/api/plot-layers.d.ts.map +1 -0
  110. package/dist/api/plot-layers.js +35 -0
  111. package/dist/api/plot-layers.js.map +1 -0
  112. package/dist/api/plots.d.ts +127 -0
  113. package/dist/api/plots.d.ts.map +1 -0
  114. package/dist/api/plots.js +39 -0
  115. package/dist/api/plots.js.map +1 -0
  116. package/dist/api/registry.d.ts +106 -0
  117. package/dist/api/registry.d.ts.map +1 -0
  118. package/dist/api/registry.js +267 -0
  119. package/dist/api/registry.js.map +1 -0
  120. package/dist/api/root-providers.d.ts +63 -0
  121. package/dist/api/root-providers.d.ts.map +1 -0
  122. package/dist/api/root-providers.js +76 -0
  123. package/dist/api/root-providers.js.map +1 -0
  124. package/dist/api/safe-random-uuid.d.ts +8 -0
  125. package/dist/api/safe-random-uuid.d.ts.map +1 -0
  126. package/dist/api/safe-random-uuid.js +19 -0
  127. package/dist/api/safe-random-uuid.js.map +1 -0
  128. package/dist/api/settings/SettingsContext.d.ts +32 -0
  129. package/dist/api/settings/SettingsContext.d.ts.map +1 -0
  130. package/dist/api/settings/SettingsContext.js +46 -0
  131. package/dist/api/settings/SettingsContext.js.map +1 -0
  132. package/dist/api/settings/SettingsService.d.ts +36 -0
  133. package/dist/api/settings/SettingsService.d.ts.map +1 -0
  134. package/dist/api/settings/SettingsService.js +139 -0
  135. package/dist/api/settings/SettingsService.js.map +1 -0
  136. package/dist/api/settings/store.d.ts +67 -0
  137. package/dist/api/settings/store.d.ts.map +1 -0
  138. package/dist/api/settings/store.js +160 -0
  139. package/dist/api/settings/store.js.map +1 -0
  140. package/dist/api/slots.d.ts +870 -0
  141. package/dist/api/slots.d.ts.map +1 -0
  142. package/dist/api/slots.js +45 -0
  143. package/dist/api/slots.js.map +1 -0
  144. package/dist/api/station-brokers.d.ts +48 -0
  145. package/dist/api/station-brokers.d.ts.map +1 -0
  146. package/dist/api/station-brokers.js +74 -0
  147. package/dist/api/station-brokers.js.map +1 -0
  148. package/dist/api/stock-bodies.d.ts +20 -0
  149. package/dist/api/stock-bodies.d.ts.map +1 -0
  150. package/dist/api/stock-bodies.js +263 -0
  151. package/dist/api/stock-bodies.js.map +1 -0
  152. package/dist/api/tiny-size.d.ts +13 -0
  153. package/dist/api/tiny-size.d.ts.map +1 -0
  154. package/dist/api/tiny-size.js +10 -0
  155. package/dist/api/tiny-size.js.map +1 -0
  156. package/dist/api/tone.d.ts +25 -0
  157. package/dist/api/tone.d.ts.map +1 -0
  158. package/dist/api/tone.js +15 -0
  159. package/dist/api/tone.js.map +1 -0
  160. package/dist/api/transport.d.ts +83 -0
  161. package/dist/api/transport.d.ts.map +1 -0
  162. package/dist/api/transport.js +2 -0
  163. package/dist/api/transport.js.map +1 -0
  164. package/dist/api/types.d.ts +1604 -0
  165. package/dist/api/types.d.ts.map +1 -0
  166. package/dist/api/types.js +19 -0
  167. package/dist/api/types.js.map +1 -0
  168. package/dist/api/uplink-handles.d.ts +40 -0
  169. package/dist/api/uplink-handles.d.ts.map +1 -0
  170. package/dist/api/uplink-handles.js +59 -0
  171. package/dist/api/uplink-handles.js.map +1 -0
  172. package/dist/binary-frame.d.ts +116 -0
  173. package/dist/binary-frame.d.ts.map +1 -0
  174. package/dist/binary-frame.js +188 -0
  175. package/dist/binary-frame.js.map +1 -0
  176. package/dist/burn-clock.d.ts +61 -0
  177. package/dist/burn-clock.d.ts.map +1 -0
  178. package/dist/burn-clock.js +82 -0
  179. package/dist/burn-clock.js.map +1 -0
  180. package/dist/client.d.ts +8 -1
  181. package/dist/client.d.ts.map +1 -1
  182. package/dist/client.js +39 -7
  183. package/dist/client.js.map +1 -1
  184. package/dist/combine-readings.d.ts +84 -0
  185. package/dist/combine-readings.d.ts.map +1 -0
  186. package/dist/combine-readings.js +197 -0
  187. package/dist/combine-readings.js.map +1 -0
  188. package/dist/command-delay.d.ts +211 -0
  189. package/dist/command-delay.d.ts.map +1 -0
  190. package/dist/command-delay.js +194 -0
  191. package/dist/command-delay.js.map +1 -0
  192. package/dist/command-reply-units.d.ts +14 -0
  193. package/dist/command-reply-units.d.ts.map +1 -0
  194. package/dist/command-reply-units.js +46 -0
  195. package/dist/command-reply-units.js.map +1 -0
  196. package/dist/commands.d.ts +143 -0
  197. package/dist/commands.d.ts.map +1 -0
  198. package/dist/commands.js +113 -0
  199. package/dist/commands.js.map +1 -0
  200. package/dist/comms-degrade.d.ts +43 -0
  201. package/dist/comms-degrade.d.ts.map +1 -0
  202. package/dist/comms-degrade.js +45 -0
  203. package/dist/comms-degrade.js.map +1 -0
  204. package/dist/compat-versions.d.ts +42 -0
  205. package/dist/compat-versions.d.ts.map +1 -0
  206. package/dist/compat-versions.js +42 -0
  207. package/dist/compat-versions.js.map +1 -0
  208. package/dist/contract-enum-names.d.ts +89 -0
  209. package/dist/contract-enum-names.d.ts.map +1 -0
  210. package/dist/contract-enum-names.js +90 -0
  211. package/dist/contract-enum-names.js.map +1 -0
  212. package/dist/control-channels.d.ts +46 -0
  213. package/dist/control-channels.d.ts.map +1 -0
  214. package/dist/control-channels.js +49 -0
  215. package/dist/control-channels.js.map +1 -0
  216. package/dist/crew-standing.d.ts +69 -0
  217. package/dist/crew-standing.d.ts.map +1 -0
  218. package/dist/crew-standing.js +105 -0
  219. package/dist/crew-standing.js.map +1 -0
  220. package/dist/delay-roles.d.ts +96 -0
  221. package/dist/delay-roles.d.ts.map +1 -0
  222. package/dist/delay-roles.js +114 -0
  223. package/dist/delay-roles.js.map +1 -0
  224. package/dist/descent.d.ts +89 -0
  225. package/dist/descent.d.ts.map +1 -0
  226. package/dist/descent.js +96 -0
  227. package/dist/descent.js.map +1 -0
  228. package/dist/enum-names.d.ts +18 -0
  229. package/dist/enum-names.d.ts.map +1 -0
  230. package/dist/enum-names.js +35 -0
  231. package/dist/enum-names.js.map +1 -0
  232. package/dist/envelope.d.ts +15 -3
  233. package/dist/envelope.d.ts.map +1 -1
  234. package/dist/envelope.js +1 -0
  235. package/dist/envelope.js.map +1 -1
  236. package/dist/event-timeline.d.ts +112 -0
  237. package/dist/event-timeline.d.ts.map +1 -0
  238. package/dist/event-timeline.js +120 -0
  239. package/dist/event-timeline.js.map +1 -0
  240. package/dist/extensions.d.ts +28 -0
  241. package/dist/extensions.d.ts.map +1 -0
  242. package/dist/extensions.js +36 -0
  243. package/dist/extensions.js.map +1 -0
  244. package/dist/field-frames.d.ts +32 -0
  245. package/dist/field-frames.d.ts.map +1 -0
  246. package/dist/field-frames.js +41 -0
  247. package/dist/field-frames.js.map +1 -0
  248. package/dist/flight/BufferedDataSource.d.ts +260 -0
  249. package/dist/flight/BufferedDataSource.d.ts.map +1 -0
  250. package/dist/flight/BufferedDataSource.js +790 -0
  251. package/dist/flight/BufferedDataSource.js.map +1 -0
  252. package/dist/flight/DataSourceWrapper.d.ts +33 -0
  253. package/dist/flight/DataSourceWrapper.d.ts.map +1 -0
  254. package/dist/flight/DataSourceWrapper.js +55 -0
  255. package/dist/flight/DataSourceWrapper.js.map +1 -0
  256. package/dist/flight/ListenerSet.d.ts +28 -0
  257. package/dist/flight/ListenerSet.d.ts.map +1 -0
  258. package/dist/flight/ListenerSet.js +66 -0
  259. package/dist/flight/ListenerSet.js.map +1 -0
  260. package/dist/flight/debugFlight.d.ts +8 -0
  261. package/dist/flight/debugFlight.d.ts.map +1 -0
  262. package/dist/flight/debugFlight.js +14 -0
  263. package/dist/flight/debugFlight.js.map +1 -0
  264. package/dist/flight/derive.d.ts +45 -0
  265. package/dist/flight/derive.d.ts.map +1 -0
  266. package/dist/flight/derive.js +26 -0
  267. package/dist/flight/derive.js.map +1 -0
  268. package/dist/flight/fixtureIO.d.ts +103 -0
  269. package/dist/flight/fixtureIO.d.ts.map +1 -0
  270. package/dist/flight/fixtureIO.js +120 -0
  271. package/dist/flight/fixtureIO.js.map +1 -0
  272. package/dist/flight/flightAutoDelete.d.ts +33 -0
  273. package/dist/flight/flightAutoDelete.d.ts.map +1 -0
  274. package/dist/flight/flightAutoDelete.js +43 -0
  275. package/dist/flight/flightAutoDelete.js.map +1 -0
  276. package/dist/flight/flightDetector.d.ts +73 -0
  277. package/dist/flight/flightDetector.d.ts.map +1 -0
  278. package/dist/flight/flightDetector.js +167 -0
  279. package/dist/flight/flightDetector.js.map +1 -0
  280. package/dist/flight/storage/LocalStorageStore.d.ts +52 -0
  281. package/dist/flight/storage/LocalStorageStore.d.ts.map +1 -0
  282. package/dist/flight/storage/LocalStorageStore.js +127 -0
  283. package/dist/flight/storage/LocalStorageStore.js.map +1 -0
  284. package/dist/flight/storage/MemoryStore.d.ts +24 -0
  285. package/dist/flight/storage/MemoryStore.d.ts.map +1 -0
  286. package/dist/flight/storage/MemoryStore.js +90 -0
  287. package/dist/flight/storage/MemoryStore.js.map +1 -0
  288. package/dist/flight/storage/Store.d.ts +37 -0
  289. package/dist/flight/storage/Store.d.ts.map +1 -0
  290. package/dist/flight/storage/Store.js +8 -0
  291. package/dist/flight/storage/Store.js.map +1 -0
  292. package/dist/flight/types.d.ts +358 -0
  293. package/dist/flight/types.d.ts.map +1 -0
  294. package/dist/flight/types.js +10 -0
  295. package/dist/flight/types.js.map +1 -0
  296. package/dist/frame-qualifier.d.ts +61 -0
  297. package/dist/frame-qualifier.d.ts.map +1 -0
  298. package/dist/frame-qualifier.js +122 -0
  299. package/dist/frame-qualifier.js.map +1 -0
  300. package/dist/frames/index.d.ts +133 -0
  301. package/dist/frames/index.d.ts.map +1 -0
  302. package/dist/frames/index.js +128 -0
  303. package/dist/frames/index.js.map +1 -0
  304. package/dist/index.d.ts +76 -5
  305. package/dist/index.d.ts.map +1 -1
  306. package/dist/index.js +191 -5
  307. package/dist/index.js.map +1 -1
  308. package/dist/ksp-enum-names.d.ts +127 -0
  309. package/dist/ksp-enum-names.d.ts.map +1 -0
  310. package/dist/ksp-enum-names.js +128 -0
  311. package/dist/ksp-enum-names.js.map +1 -0
  312. package/dist/locked.d.ts +20 -0
  313. package/dist/locked.d.ts.map +1 -0
  314. package/dist/locked.js +25 -0
  315. package/dist/locked.js.map +1 -0
  316. package/dist/magnitude.d.ts +37 -0
  317. package/dist/magnitude.d.ts.map +1 -0
  318. package/dist/magnitude.js +39 -0
  319. package/dist/magnitude.js.map +1 -0
  320. package/dist/maneuver-basis.d.ts +19 -0
  321. package/dist/maneuver-basis.d.ts.map +1 -0
  322. package/dist/maneuver-basis.js +37 -0
  323. package/dist/maneuver-basis.js.map +1 -0
  324. package/dist/media/capture-clock.d.ts +35 -0
  325. package/dist/media/capture-clock.d.ts.map +1 -0
  326. package/dist/media/capture-clock.js +26 -0
  327. package/dist/media/capture-clock.js.map +1 -0
  328. package/dist/media/delayed-playout-buffer.d.ts +169 -0
  329. package/dist/media/delayed-playout-buffer.d.ts.map +1 -0
  330. package/dist/media/delayed-playout-buffer.js +166 -0
  331. package/dist/media/delayed-playout-buffer.js.map +1 -0
  332. package/dist/media/encoded-frame-delay.d.ts +115 -0
  333. package/dist/media/encoded-frame-delay.d.ts.map +1 -0
  334. package/dist/media/encoded-frame-delay.js +85 -0
  335. package/dist/media/encoded-frame-delay.js.map +1 -0
  336. package/dist/media/frame-delay.d.ts +204 -0
  337. package/dist/media/frame-delay.d.ts.map +1 -0
  338. package/dist/media/frame-delay.js +237 -0
  339. package/dist/media/frame-delay.js.map +1 -0
  340. package/dist/media/index.d.ts +17 -0
  341. package/dist/media/index.d.ts.map +1 -0
  342. package/dist/media/index.js +21 -0
  343. package/dist/media/index.js.map +1 -0
  344. package/dist/media/radio-support.d.ts +98 -0
  345. package/dist/media/radio-support.d.ts.map +1 -0
  346. package/dist/media/radio-support.js +99 -0
  347. package/dist/media/radio-support.js.map +1 -0
  348. package/dist/media/shared-delayed-streams.d.ts +119 -0
  349. package/dist/media/shared-delayed-streams.d.ts.map +1 -0
  350. package/dist/media/shared-delayed-streams.js +167 -0
  351. package/dist/media/shared-delayed-streams.js.map +1 -0
  352. package/dist/media/worker/delay-worker-client.d.ts +106 -0
  353. package/dist/media/worker/delay-worker-client.d.ts.map +1 -0
  354. package/dist/media/worker/delay-worker-client.js +207 -0
  355. package/dist/media/worker/delay-worker-client.js.map +1 -0
  356. package/dist/media/worker/delay-worker.d.ts +107 -0
  357. package/dist/media/worker/delay-worker.d.ts.map +1 -0
  358. package/dist/media/worker/delay-worker.js +604 -0
  359. package/dist/media/worker/delay-worker.js.map +7 -0
  360. package/dist/media/worker/presentation-pacer.d.ts +156 -0
  361. package/dist/media/worker/presentation-pacer.d.ts.map +1 -0
  362. package/dist/media/worker/presentation-pacer.js +200 -0
  363. package/dist/media/worker/presentation-pacer.js.map +1 -0
  364. package/dist/media/worker/time-base.d.ts +44 -0
  365. package/dist/media/worker/time-base.d.ts.map +1 -0
  366. package/dist/media/worker/time-base.js +48 -0
  367. package/dist/media/worker/time-base.js.map +1 -0
  368. package/dist/media/worker/worker-delay-clock.d.ts +59 -0
  369. package/dist/media/worker/worker-delay-clock.d.ts.map +1 -0
  370. package/dist/media/worker/worker-delay-clock.js +89 -0
  371. package/dist/media/worker/worker-delay-clock.js.map +1 -0
  372. package/dist/perf/PerfBudget.d.ts +116 -0
  373. package/dist/perf/PerfBudget.d.ts.map +1 -0
  374. package/dist/perf/PerfBudget.js +221 -0
  375. package/dist/perf/PerfBudget.js.map +1 -0
  376. package/dist/rail-tags.d.ts +156 -0
  377. package/dist/rail-tags.d.ts.map +1 -0
  378. package/dist/rail-tags.js +131 -0
  379. package/dist/rail-tags.js.map +1 -0
  380. package/dist/raw-field-split.d.ts +32 -0
  381. package/dist/raw-field-split.d.ts.map +1 -0
  382. package/dist/raw-field-split.js +46 -0
  383. package/dist/raw-field-split.js.map +1 -0
  384. package/dist/reading.d.ts +960 -0
  385. package/dist/reading.d.ts.map +1 -0
  386. package/dist/reading.js +529 -0
  387. package/dist/reading.js.map +1 -0
  388. package/dist/reckonability.d.ts +52 -0
  389. package/dist/reckonability.d.ts.map +1 -0
  390. package/dist/reckonability.js +79 -0
  391. package/dist/reckonability.js.map +1 -0
  392. package/dist/registry/index.d.ts +7 -0
  393. package/dist/registry/index.d.ts.map +1 -0
  394. package/dist/registry/index.js +26 -0
  395. package/dist/registry/index.js.map +1 -0
  396. package/dist/runtime-topic-registry.d.ts +99 -0
  397. package/dist/runtime-topic-registry.d.ts.map +1 -0
  398. package/dist/runtime-topic-registry.js +182 -0
  399. package/dist/runtime-topic-registry.js.map +1 -0
  400. package/dist/spine/arrival-deadline.d.ts +19 -0
  401. package/dist/spine/arrival-deadline.d.ts.map +1 -0
  402. package/dist/spine/arrival-deadline.js +38 -0
  403. package/dist/spine/arrival-deadline.js.map +1 -0
  404. package/dist/spine/atmospheric-reckoning.d.ts +161 -0
  405. package/dist/spine/atmospheric-reckoning.d.ts.map +1 -0
  406. package/dist/spine/atmospheric-reckoning.js +421 -0
  407. package/dist/spine/atmospheric-reckoning.js.map +1 -0
  408. package/dist/spine/body-derivations.d.ts +28 -0
  409. package/dist/spine/body-derivations.d.ts.map +1 -0
  410. package/dist/spine/body-derivations.js +73 -0
  411. package/dist/spine/body-derivations.js.map +1 -0
  412. package/dist/spine/capability-lock.d.ts +43 -0
  413. package/dist/spine/capability-lock.d.ts.map +1 -0
  414. package/dist/spine/capability-lock.js +153 -0
  415. package/dist/spine/capability-lock.js.map +1 -0
  416. package/dist/spine/celestial-facts.d.ts +181 -0
  417. package/dist/spine/celestial-facts.d.ts.map +1 -0
  418. package/dist/spine/celestial-facts.js +212 -0
  419. package/dist/spine/celestial-facts.js.map +1 -0
  420. package/dist/spine/channel-error-warning.d.ts +24 -0
  421. package/dist/spine/channel-error-warning.d.ts.map +1 -0
  422. package/dist/spine/channel-error-warning.js +51 -0
  423. package/dist/spine/channel-error-warning.js.map +1 -0
  424. package/dist/spine/client-reading.d.ts +70 -0
  425. package/dist/spine/client-reading.d.ts.map +1 -0
  426. package/dist/spine/client-reading.js +123 -0
  427. package/dist/spine/client-reading.js.map +1 -0
  428. package/dist/spine/client-timeline.d.ts +130 -0
  429. package/dist/spine/client-timeline.d.ts.map +1 -0
  430. package/dist/spine/client-timeline.js +174 -0
  431. package/dist/spine/client-timeline.js.map +1 -0
  432. package/dist/spine/client.d.ts +454 -0
  433. package/dist/spine/client.d.ts.map +1 -0
  434. package/dist/spine/client.js +1138 -0
  435. package/dist/spine/client.js.map +1 -0
  436. package/dist/spine/clock.d.ts +48 -0
  437. package/dist/spine/clock.d.ts.map +1 -0
  438. package/dist/spine/clock.js +22 -0
  439. package/dist/spine/clock.js.map +1 -0
  440. package/dist/spine/command-gate.d.ts +89 -0
  441. package/dist/spine/command-gate.d.ts.map +1 -0
  442. package/dist/spine/command-gate.js +56 -0
  443. package/dist/spine/command-gate.js.map +1 -0
  444. package/dist/spine/comms-delay-reckoning.d.ts +123 -0
  445. package/dist/spine/comms-delay-reckoning.d.ts.map +1 -0
  446. package/dist/spine/comms-delay-reckoning.js +166 -0
  447. package/dist/spine/comms-delay-reckoning.js.map +1 -0
  448. package/dist/spine/comms-journey.d.ts +74 -0
  449. package/dist/spine/comms-journey.d.ts.map +1 -0
  450. package/dist/spine/comms-journey.js +180 -0
  451. package/dist/spine/comms-journey.js.map +1 -0
  452. package/dist/spine/comms-path-geometry.d.ts +128 -0
  453. package/dist/spine/comms-path-geometry.d.ts.map +1 -0
  454. package/dist/spine/comms-path-geometry.js +172 -0
  455. package/dist/spine/comms-path-geometry.js.map +1 -0
  456. package/dist/spine/comms-route.d.ts +52 -0
  457. package/dist/spine/comms-route.d.ts.map +1 -0
  458. package/dist/spine/comms-route.js +109 -0
  459. package/dist/spine/comms-route.js.map +1 -0
  460. package/dist/spine/connection-error-warning.d.ts +28 -0
  461. package/dist/spine/connection-error-warning.d.ts.map +1 -0
  462. package/dist/spine/connection-error-warning.js +49 -0
  463. package/dist/spine/connection-error-warning.js.map +1 -0
  464. package/dist/spine/connectivity-history.d.ts +35 -0
  465. package/dist/spine/connectivity-history.d.ts.map +1 -0
  466. package/dist/spine/connectivity-history.js +54 -0
  467. package/dist/spine/connectivity-history.js.map +1 -0
  468. package/dist/spine/context.d.ts +485 -0
  469. package/dist/spine/context.d.ts.map +1 -0
  470. package/dist/spine/context.js +1017 -0
  471. package/dist/spine/context.js.map +1 -0
  472. package/dist/spine/contributed-channels.d.ts +48 -0
  473. package/dist/spine/contributed-channels.d.ts.map +1 -0
  474. package/dist/spine/contributed-channels.js +104 -0
  475. package/dist/spine/contributed-channels.js.map +1 -0
  476. package/dist/spine/contribution-scope.d.ts +19 -0
  477. package/dist/spine/contribution-scope.d.ts.map +1 -0
  478. package/dist/spine/contribution-scope.js +62 -0
  479. package/dist/spine/contribution-scope.js.map +1 -0
  480. package/dist/spine/contributions.d.ts +77 -0
  481. package/dist/spine/contributions.d.ts.map +1 -0
  482. package/dist/spine/contributions.js +180 -0
  483. package/dist/spine/contributions.js.map +1 -0
  484. package/dist/spine/control-frame-to-read-frame.d.ts +43 -0
  485. package/dist/spine/control-frame-to-read-frame.d.ts.map +1 -0
  486. package/dist/spine/control-frame-to-read-frame.js +79 -0
  487. package/dist/spine/control-frame-to-read-frame.js.map +1 -0
  488. package/dist/spine/core-reckoners.d.ts +2 -0
  489. package/dist/spine/core-reckoners.d.ts.map +1 -0
  490. package/dist/spine/core-reckoners.js +894 -0
  491. package/dist/spine/core-reckoners.js.map +1 -0
  492. package/dist/spine/dashboard-item.d.ts +12 -0
  493. package/dist/spine/dashboard-item.d.ts.map +1 -0
  494. package/dist/spine/dashboard-item.js +16 -0
  495. package/dist/spine/dashboard-item.js.map +1 -0
  496. package/dist/spine/delay-authority.d.ts +204 -0
  497. package/dist/spine/delay-authority.d.ts.map +1 -0
  498. package/dist/spine/delay-authority.js +306 -0
  499. package/dist/spine/delay-authority.js.map +1 -0
  500. package/dist/spine/delta-v-budget.d.ts +121 -0
  501. package/dist/spine/delta-v-budget.d.ts.map +1 -0
  502. package/dist/spine/delta-v-budget.js +141 -0
  503. package/dist/spine/delta-v-budget.js.map +1 -0
  504. package/dist/spine/departure-reckoning.d.ts +37 -0
  505. package/dist/spine/departure-reckoning.d.ts.map +1 -0
  506. package/dist/spine/departure-reckoning.js +44 -0
  507. package/dist/spine/departure-reckoning.js.map +1 -0
  508. package/dist/spine/dv-stage-resources.d.ts +29 -0
  509. package/dist/spine/dv-stage-resources.d.ts.map +1 -0
  510. package/dist/spine/dv-stage-resources.js +95 -0
  511. package/dist/spine/dv-stage-resources.js.map +1 -0
  512. package/dist/spine/heartbeat-tracker.d.ts +116 -0
  513. package/dist/spine/heartbeat-tracker.d.ts.map +1 -0
  514. package/dist/spine/heartbeat-tracker.js +175 -0
  515. package/dist/spine/heartbeat-tracker.js.map +1 -0
  516. package/dist/spine/held-command-actions.d.ts +33 -0
  517. package/dist/spine/held-command-actions.d.ts.map +1 -0
  518. package/dist/spine/held-command-actions.js +75 -0
  519. package/dist/spine/held-command-actions.js.map +1 -0
  520. package/dist/spine/impact-point.d.ts +97 -0
  521. package/dist/spine/impact-point.d.ts.map +1 -0
  522. package/dist/spine/impact-point.js +299 -0
  523. package/dist/spine/impact-point.js.map +1 -0
  524. package/dist/spine/index.d.ts +84 -0
  525. package/dist/spine/index.d.ts.map +1 -0
  526. package/dist/spine/index.js +132 -0
  527. package/dist/spine/index.js.map +1 -0
  528. package/dist/spine/kepler-reckoning.d.ts +244 -0
  529. package/dist/spine/kepler-reckoning.d.ts.map +1 -0
  530. package/dist/spine/kepler-reckoning.js +377 -0
  531. package/dist/spine/kepler-reckoning.js.map +1 -0
  532. package/dist/spine/kepler.d.ts +296 -0
  533. package/dist/spine/kepler.d.ts.map +1 -0
  534. package/dist/spine/kepler.js +330 -0
  535. package/dist/spine/kepler.js.map +1 -0
  536. package/dist/spine/lagrange.d.ts +247 -0
  537. package/dist/spine/lagrange.d.ts.map +1 -0
  538. package/dist/spine/lagrange.js +379 -0
  539. package/dist/spine/lagrange.js.map +1 -0
  540. package/dist/spine/lifecycle.d.ts +244 -0
  541. package/dist/spine/lifecycle.d.ts.map +1 -0
  542. package/dist/spine/lifecycle.js +37 -0
  543. package/dist/spine/lifecycle.js.map +1 -0
  544. package/dist/spine/lock-scope.d.ts +23 -0
  545. package/dist/spine/lock-scope.d.ts.map +1 -0
  546. package/dist/spine/lock-scope.js +10 -0
  547. package/dist/spine/lock-scope.js.map +1 -0
  548. package/dist/spine/map-command.d.ts +29 -0
  549. package/dist/spine/map-command.d.ts.map +1 -0
  550. package/dist/spine/map-command.js +32 -0
  551. package/dist/spine/map-command.js.map +1 -0
  552. package/dist/spine/map-topic.d.ts +60 -0
  553. package/dist/spine/map-topic.d.ts.map +1 -0
  554. package/dist/spine/map-topic.js +151 -0
  555. package/dist/spine/map-topic.js.map +1 -0
  556. package/dist/spine/mod-settings.d.ts +22 -0
  557. package/dist/spine/mod-settings.d.ts.map +1 -0
  558. package/dist/spine/mod-settings.js +42 -0
  559. package/dist/spine/mod-settings.js.map +1 -0
  560. package/dist/spine/never-reckonable.d.ts +79 -0
  561. package/dist/spine/never-reckonable.d.ts.map +1 -0
  562. package/dist/spine/never-reckonable.js +168 -0
  563. package/dist/spine/never-reckonable.js.map +1 -0
  564. package/dist/spine/orbit-patches.d.ts +81 -0
  565. package/dist/spine/orbit-patches.d.ts.map +1 -0
  566. package/dist/spine/orbit-patches.js +111 -0
  567. package/dist/spine/orbit-patches.js.map +1 -0
  568. package/dist/spine/orbit-trajectory.d.ts +276 -0
  569. package/dist/spine/orbit-trajectory.d.ts.map +1 -0
  570. package/dist/spine/orbit-trajectory.js +382 -0
  571. package/dist/spine/orbit-trajectory.js.map +1 -0
  572. package/dist/spine/orbital-solve.d.ts +164 -0
  573. package/dist/spine/orbital-solve.d.ts.map +1 -0
  574. package/dist/spine/orbital-solve.js +239 -0
  575. package/dist/spine/orbital-solve.js.map +1 -0
  576. package/dist/spine/own-craft-vantage.d.ts +80 -0
  577. package/dist/spine/own-craft-vantage.d.ts.map +1 -0
  578. package/dist/spine/own-craft-vantage.js +136 -0
  579. package/dist/spine/own-craft-vantage.js.map +1 -0
  580. package/dist/spine/past-track.d.ts +46 -0
  581. package/dist/spine/past-track.d.ts.map +1 -0
  582. package/dist/spine/past-track.js +62 -0
  583. package/dist/spine/past-track.js.map +1 -0
  584. package/dist/spine/powered-reckoning.d.ts +164 -0
  585. package/dist/spine/powered-reckoning.d.ts.map +1 -0
  586. package/dist/spine/powered-reckoning.js +514 -0
  587. package/dist/spine/powered-reckoning.js.map +1 -0
  588. package/dist/spine/processorEvaluator.d.ts +110 -0
  589. package/dist/spine/processorEvaluator.d.ts.map +1 -0
  590. package/dist/spine/processorEvaluator.js +608 -0
  591. package/dist/spine/processorEvaluator.js.map +1 -0
  592. package/dist/spine/processors.d.ts +242 -0
  593. package/dist/spine/processors.d.ts.map +1 -0
  594. package/dist/spine/processors.js +109 -0
  595. package/dist/spine/processors.js.map +1 -0
  596. package/dist/spine/propagation.d.ts +17 -0
  597. package/dist/spine/propagation.d.ts.map +1 -0
  598. package/dist/spine/propagation.js +22 -0
  599. package/dist/spine/propagation.js.map +1 -0
  600. package/dist/spine/rail-registry.d.ts +21 -0
  601. package/dist/spine/rail-registry.d.ts.map +1 -0
  602. package/dist/spine/rail-registry.js +7 -0
  603. package/dist/spine/rail-registry.js.map +1 -0
  604. package/dist/spine/reckoners.d.ts +133 -0
  605. package/dist/spine/reckoners.d.ts.map +1 -0
  606. package/dist/spine/reckoners.js +245 -0
  607. package/dist/spine/reckoners.js.map +1 -0
  608. package/dist/spine/reference-frame.d.ts +286 -0
  609. package/dist/spine/reference-frame.d.ts.map +1 -0
  610. package/dist/spine/reference-frame.js +605 -0
  611. package/dist/spine/reference-frame.js.map +1 -0
  612. package/dist/spine/replay-recorder.d.ts +72 -0
  613. package/dist/spine/replay-recorder.d.ts.map +1 -0
  614. package/dist/spine/replay-recorder.js +101 -0
  615. package/dist/spine/replay-recorder.js.map +1 -0
  616. package/dist/spine/replay-session-controller.d.ts +65 -0
  617. package/dist/spine/replay-session-controller.d.ts.map +1 -0
  618. package/dist/spine/replay-session-controller.js +220 -0
  619. package/dist/spine/replay-session-controller.js.map +1 -0
  620. package/dist/spine/replay-session.d.ts +20 -0
  621. package/dist/spine/replay-session.d.ts.map +1 -0
  622. package/dist/spine/replay-session.js +31 -0
  623. package/dist/spine/replay-session.js.map +1 -0
  624. package/dist/spine/replay-transport.d.ts +83 -0
  625. package/dist/spine/replay-transport.d.ts.map +1 -0
  626. package/dist/spine/replay-transport.js +95 -0
  627. package/dist/spine/replay-transport.js.map +1 -0
  628. package/dist/spine/screen.d.ts +46 -0
  629. package/dist/spine/screen.d.ts.map +1 -0
  630. package/dist/spine/screen.js +41 -0
  631. package/dist/spine/screen.js.map +1 -0
  632. package/dist/spine/settings-registry.d.ts +222 -0
  633. package/dist/spine/settings-registry.d.ts.map +1 -0
  634. package/dist/spine/settings-registry.js +43 -0
  635. package/dist/spine/settings-registry.js.map +1 -0
  636. package/dist/spine/settings-tabs.d.ts +39 -0
  637. package/dist/spine/settings-tabs.d.ts.map +1 -0
  638. package/dist/spine/settings-tabs.js +18 -0
  639. package/dist/spine/settings-tabs.js.map +1 -0
  640. package/dist/spine/share-equal.d.ts +11 -0
  641. package/dist/spine/share-equal.d.ts.map +1 -0
  642. package/dist/spine/share-equal.js +57 -0
  643. package/dist/spine/share-equal.js.map +1 -0
  644. package/dist/spine/size-delta.d.ts +9 -0
  645. package/dist/spine/size-delta.d.ts.map +1 -0
  646. package/dist/spine/size-delta.js +19 -0
  647. package/dist/spine/size-delta.js.map +1 -0
  648. package/dist/spine/space-center-state.d.ts +44 -0
  649. package/dist/spine/space-center-state.d.ts.map +1 -0
  650. package/dist/spine/space-center-state.js +51 -0
  651. package/dist/spine/space-center-state.js.map +1 -0
  652. package/dist/spine/stream-status.d.ts +21 -0
  653. package/dist/spine/stream-status.d.ts.map +1 -0
  654. package/dist/spine/stream-status.js +48 -0
  655. package/dist/spine/stream-status.js.map +1 -0
  656. package/dist/spine/subscribe-read.d.ts +51 -0
  657. package/dist/spine/subscribe-read.d.ts.map +1 -0
  658. package/dist/spine/subscribe-read.js +66 -0
  659. package/dist/spine/subscribe-read.js.map +1 -0
  660. package/dist/spine/subscriber-identity.d.ts +12 -0
  661. package/dist/spine/subscriber-identity.d.ts.map +1 -0
  662. package/dist/spine/subscriber-identity.js +33 -0
  663. package/dist/spine/subscriber-identity.js.map +1 -0
  664. package/dist/spine/system-state.d.ts +29 -0
  665. package/dist/spine/system-state.d.ts.map +1 -0
  666. package/dist/spine/system-state.js +25 -0
  667. package/dist/spine/system-state.js.map +1 -0
  668. package/dist/spine/target-range-reckoning.d.ts +33 -0
  669. package/dist/spine/target-range-reckoning.d.ts.map +1 -0
  670. package/dist/spine/target-range-reckoning.js +78 -0
  671. package/dist/spine/target-range-reckoning.js.map +1 -0
  672. package/dist/spine/timeline-store.d.ts +1336 -0
  673. package/dist/spine/timeline-store.d.ts.map +1 -0
  674. package/dist/spine/timeline-store.js +2893 -0
  675. package/dist/spine/timeline-store.js.map +1 -0
  676. package/dist/spine/topic-ownership.d.ts +138 -0
  677. package/dist/spine/topic-ownership.d.ts.map +1 -0
  678. package/dist/spine/topic-ownership.js +194 -0
  679. package/dist/spine/topic-ownership.js.map +1 -0
  680. package/dist/spine/unowned-warning.d.ts +25 -0
  681. package/dist/spine/unowned-warning.d.ts.map +1 -0
  682. package/dist/spine/unowned-warning.js +55 -0
  683. package/dist/spine/unowned-warning.js.map +1 -0
  684. package/dist/spine/uplink-clients.d.ts +135 -0
  685. package/dist/spine/uplink-clients.d.ts.map +1 -0
  686. package/dist/spine/uplink-clients.js +79 -0
  687. package/dist/spine/uplink-clients.js.map +1 -0
  688. package/dist/spine/uplink-health.d.ts +123 -0
  689. package/dist/spine/uplink-health.d.ts.map +1 -0
  690. package/dist/spine/uplink-health.js +75 -0
  691. package/dist/spine/uplink-health.js.map +1 -0
  692. package/dist/spine/use-action-input.d.ts +3 -0
  693. package/dist/spine/use-action-input.d.ts.map +1 -0
  694. package/dist/spine/use-action-input.js +76 -0
  695. package/dist/spine/use-action-input.js.map +1 -0
  696. package/dist/spine/use-body-states.d.ts +34 -0
  697. package/dist/spine/use-body-states.d.ts.map +1 -0
  698. package/dist/spine/use-body-states.js +23 -0
  699. package/dist/spine/use-body-states.js.map +1 -0
  700. package/dist/spine/use-command.d.ts +259 -0
  701. package/dist/spine/use-command.d.ts.map +1 -0
  702. package/dist/spine/use-command.js +626 -0
  703. package/dist/spine/use-command.js.map +1 -0
  704. package/dist/spine/use-data-sources.d.ts +7 -0
  705. package/dist/spine/use-data-sources.d.ts.map +1 -0
  706. package/dist/spine/use-data-sources.js +27 -0
  707. package/dist/spine/use-data-sources.js.map +1 -0
  708. package/dist/spine/use-late-telemetry-subscribe.d.ts +59 -0
  709. package/dist/spine/use-late-telemetry-subscribe.d.ts.map +1 -0
  710. package/dist/spine/use-late-telemetry-subscribe.js +81 -0
  711. package/dist/spine/use-late-telemetry-subscribe.js.map +1 -0
  712. package/dist/spine/use-orbit-trajectory.d.ts +25 -0
  713. package/dist/spine/use-orbit-trajectory.d.ts.map +1 -0
  714. package/dist/spine/use-orbit-trajectory.js +45 -0
  715. package/dist/spine/use-orbit-trajectory.js.map +1 -0
  716. package/dist/spine/use-processor.d.ts +30 -0
  717. package/dist/spine/use-processor.d.ts.map +1 -0
  718. package/dist/spine/use-processor.js +36 -0
  719. package/dist/spine/use-processor.js.map +1 -0
  720. package/dist/spine/use-route-commands.d.ts +28 -0
  721. package/dist/spine/use-route-commands.d.ts.map +1 -0
  722. package/dist/spine/use-route-commands.js +32 -0
  723. package/dist/spine/use-route-commands.js.map +1 -0
  724. package/dist/spine/use-selected-vantage.d.ts +12 -0
  725. package/dist/spine/use-selected-vantage.d.ts.map +1 -0
  726. package/dist/spine/use-selected-vantage.js +19 -0
  727. package/dist/spine/use-selected-vantage.js.map +1 -0
  728. package/dist/spine/use-stream-event.d.ts +28 -0
  729. package/dist/spine/use-stream-event.d.ts.map +1 -0
  730. package/dist/spine/use-stream-event.js +52 -0
  731. package/dist/spine/use-stream-event.js.map +1 -0
  732. package/dist/spine/use-stream.d.ts +79 -0
  733. package/dist/spine/use-stream.d.ts.map +1 -0
  734. package/dist/spine/use-stream.js +124 -0
  735. package/dist/spine/use-stream.js.map +1 -0
  736. package/dist/spine/use-telemetry.d.ts +79 -0
  737. package/dist/spine/use-telemetry.d.ts.map +1 -0
  738. package/dist/spine/use-telemetry.js +39 -0
  739. package/dist/spine/use-telemetry.js.map +1 -0
  740. package/dist/spine/use-transmissions.d.ts +36 -0
  741. package/dist/spine/use-transmissions.d.ts.map +1 -0
  742. package/dist/spine/use-transmissions.js +63 -0
  743. package/dist/spine/use-transmissions.js.map +1 -0
  744. package/dist/spine/vantage.d.ts +16 -0
  745. package/dist/spine/vantage.d.ts.map +1 -0
  746. package/dist/spine/vantage.js +16 -0
  747. package/dist/spine/vantage.js.map +1 -0
  748. package/dist/spine/view-clock.d.ts +232 -0
  749. package/dist/spine/view-clock.d.ts.map +1 -0
  750. package/dist/spine/view-clock.js +348 -0
  751. package/dist/spine/view-clock.js.map +1 -0
  752. package/dist/spine/wire-payloads.d.ts +232 -0
  753. package/dist/spine/wire-payloads.d.ts.map +1 -0
  754. package/dist/spine/wire-payloads.js +2 -0
  755. package/dist/spine/wire-payloads.js.map +1 -0
  756. package/dist/testing/console-logger.d.ts +10 -0
  757. package/dist/testing/console-logger.d.ts.map +1 -0
  758. package/dist/testing/console-logger.js +23 -0
  759. package/dist/testing/console-logger.js.map +1 -0
  760. package/dist/testing/create-test-telemetry-client.d.ts +13 -0
  761. package/dist/testing/create-test-telemetry-client.d.ts.map +1 -0
  762. package/dist/testing/create-test-telemetry-client.js +14 -0
  763. package/dist/testing/create-test-telemetry-client.js.map +1 -0
  764. package/dist/testing/fake-wall-clock.d.ts +19 -0
  765. package/dist/testing/fake-wall-clock.d.ts.map +1 -0
  766. package/dist/testing/fake-wall-clock.js +17 -0
  767. package/dist/testing/fake-wall-clock.js.map +1 -0
  768. package/dist/testing/index.d.ts +30 -0
  769. package/dist/testing/index.d.ts.map +1 -0
  770. package/dist/testing/index.js +99 -0
  771. package/dist/testing/index.js.map +1 -0
  772. package/dist/testing/install-act-gate-stretch.d.ts +24 -0
  773. package/dist/testing/install-act-gate-stretch.d.ts.map +1 -0
  774. package/dist/testing/install-act-gate-stretch.js +67 -0
  775. package/dist/testing/install-act-gate-stretch.js.map +1 -0
  776. package/dist/testing/install-dom-stubs.d.ts +9 -0
  777. package/dist/testing/install-dom-stubs.d.ts.map +1 -0
  778. package/dist/testing/install-dom-stubs.js +121 -0
  779. package/dist/testing/install-dom-stubs.js.map +1 -0
  780. package/dist/testing/install-real-test-host.d.ts +51 -0
  781. package/dist/testing/install-real-test-host.d.ts.map +1 -0
  782. package/dist/testing/install-real-test-host.js +111 -0
  783. package/dist/testing/install-real-test-host.js.map +1 -0
  784. package/dist/testing/install-test-host.d.ts +18 -0
  785. package/dist/testing/install-test-host.d.ts.map +1 -0
  786. package/dist/testing/install-test-host.js +23 -0
  787. package/dist/testing/install-test-host.js.map +1 -0
  788. package/dist/testing/memory-storage.d.ts +10 -0
  789. package/dist/testing/memory-storage.d.ts.map +1 -0
  790. package/dist/testing/memory-storage.js +26 -0
  791. package/dist/testing/memory-storage.js.map +1 -0
  792. package/dist/testing/mock-data-source.d.ts +46 -0
  793. package/dist/testing/mock-data-source.d.ts.map +1 -0
  794. package/dist/testing/mock-data-source.js +74 -0
  795. package/dist/testing/mock-data-source.js.map +1 -0
  796. package/dist/testing/recorded-alarm-requests.d.ts +28 -0
  797. package/dist/testing/recorded-alarm-requests.d.ts.map +1 -0
  798. package/dist/testing/recorded-alarm-requests.js +24 -0
  799. package/dist/testing/recorded-alarm-requests.js.map +1 -0
  800. package/dist/testing/render.d.ts +29 -0
  801. package/dist/testing/render.d.ts.map +1 -0
  802. package/dist/testing/render.js +52 -0
  803. package/dist/testing/render.js.map +1 -0
  804. package/dist/testing/stream-fixture.d.ts +71 -0
  805. package/dist/testing/stream-fixture.d.ts.map +1 -0
  806. package/dist/testing/stream-fixture.js +61 -0
  807. package/dist/testing/stream-fixture.js.map +1 -0
  808. package/dist/testing/stub-transport.d.ts +124 -0
  809. package/dist/testing/stub-transport.d.ts.map +1 -0
  810. package/dist/testing/stub-transport.js +229 -0
  811. package/dist/testing/stub-transport.js.map +1 -0
  812. package/dist/testing/theme.d.ts +59 -0
  813. package/dist/testing/theme.d.ts.map +1 -0
  814. package/dist/testing/theme.js +11 -0
  815. package/dist/testing/theme.js.map +1 -0
  816. package/dist/timeline.d.ts +63 -0
  817. package/dist/timeline.d.ts.map +1 -0
  818. package/dist/timeline.js +2 -0
  819. package/dist/timeline.js.map +1 -0
  820. package/dist/topic-fields.d.ts +55 -0
  821. package/dist/topic-fields.d.ts.map +1 -0
  822. package/dist/topic-fields.js +102 -0
  823. package/dist/topic-fields.js.map +1 -0
  824. package/dist/topics.d.ts +335 -30
  825. package/dist/topics.d.ts.map +1 -1
  826. package/dist/topics.js +183 -28
  827. package/dist/topics.js.map +1 -1
  828. package/dist/unit-system/algebra.d.ts +305 -0
  829. package/dist/unit-system/algebra.d.ts.map +1 -0
  830. package/dist/unit-system/algebra.js +2 -0
  831. package/dist/unit-system/algebra.js.map +1 -0
  832. package/dist/unit-system/calendar.d.ts +74 -0
  833. package/dist/unit-system/calendar.d.ts.map +1 -0
  834. package/dist/unit-system/calendar.js +107 -0
  835. package/dist/unit-system/calendar.js.map +1 -0
  836. package/dist/unit-system/declarations.d.ts +87 -0
  837. package/dist/unit-system/declarations.d.ts.map +1 -0
  838. package/dist/unit-system/declarations.js +2 -0
  839. package/dist/unit-system/declarations.js.map +1 -0
  840. package/dist/unit-system/definitions.d.ts +639 -0
  841. package/dist/unit-system/definitions.d.ts.map +1 -0
  842. package/dist/unit-system/definitions.js +326 -0
  843. package/dist/unit-system/definitions.js.map +1 -0
  844. package/dist/unit-system/dimension.d.ts +29 -0
  845. package/dist/unit-system/dimension.d.ts.map +1 -0
  846. package/dist/unit-system/dimension.js +88 -0
  847. package/dist/unit-system/dimension.js.map +1 -0
  848. package/dist/unit-system/guards.d.ts +58 -0
  849. package/dist/unit-system/guards.d.ts.map +1 -0
  850. package/dist/unit-system/guards.js +73 -0
  851. package/dist/unit-system/guards.js.map +1 -0
  852. package/dist/unit-system/index.d.ts +16 -0
  853. package/dist/unit-system/index.d.ts.map +1 -0
  854. package/dist/unit-system/index.js +14 -0
  855. package/dist/unit-system/index.js.map +1 -0
  856. package/dist/unit-system/registry.d.ts +160 -0
  857. package/dist/unit-system/registry.d.ts.map +1 -0
  858. package/dist/unit-system/registry.js +267 -0
  859. package/dist/unit-system/registry.js.map +1 -0
  860. package/dist/unit-system/value.d.ts +437 -0
  861. package/dist/unit-system/value.d.ts.map +1 -0
  862. package/dist/unit-system/value.js +387 -0
  863. package/dist/unit-system/value.js.map +1 -0
  864. package/dist/units.d.ts +159 -0
  865. package/dist/units.d.ts.map +1 -0
  866. package/dist/units.js +385 -0
  867. package/dist/units.js.map +1 -0
  868. package/dist/uplink-externals.d.ts +65 -0
  869. package/dist/uplink-externals.d.ts.map +1 -0
  870. package/dist/uplink-externals.js +87 -0
  871. package/dist/uplink-externals.js.map +1 -0
  872. package/dist/uplink-manifest.d.ts +180 -0
  873. package/dist/uplink-manifest.d.ts.map +1 -0
  874. package/dist/uplink-manifest.js +214 -0
  875. package/dist/uplink-manifest.js.map +1 -0
  876. package/dist/value.d.ts +13 -0
  877. package/dist/value.d.ts.map +1 -0
  878. package/dist/value.js +2 -0
  879. package/dist/value.js.map +1 -0
  880. package/dist/version.generated.d.ts +7 -0
  881. package/dist/version.generated.d.ts.map +1 -0
  882. package/dist/version.generated.js +11 -0
  883. package/dist/version.generated.js.map +1 -0
  884. package/dist/view-clock-formula.d.ts +52 -0
  885. package/dist/view-clock-formula.d.ts.map +1 -0
  886. package/dist/view-clock-formula.js +46 -0
  887. package/dist/view-clock-formula.js.map +1 -0
  888. package/dist/wrap-units.d.ts +55 -0
  889. package/dist/wrap-units.d.ts.map +1 -0
  890. package/dist/wrap-units.js +256 -0
  891. package/dist/wrap-units.js.map +1 -0
  892. package/package.json +73 -11
  893. package/src/__generated__/command-map.ts +465 -0
  894. package/src/__generated__/contract.ts +10986 -0
  895. package/src/__generated__/control-channels.ts +41 -0
  896. package/src/__generated__/delay-roles.ts +82 -0
  897. package/src/__generated__/error-codes.ts +712 -0
  898. package/src/__generated__/frames.ts +52 -0
  899. package/src/__generated__/reckonability.ts +86 -0
  900. package/src/__generated__/test-theme.ts +70 -0
  901. package/src/__generated__/topic-map.ts +314 -0
  902. package/src/__generated__/units.json +2755 -0
  903. package/src/__generated__/units.ts +3398 -0
  904. package/src/api/action-dispatch.ts +105 -0
  905. package/src/api/alarm-request.ts +153 -0
  906. package/src/api/bodies.ts +116 -0
  907. package/src/api/command-rejection.ts +194 -0
  908. package/src/api/contribution-slots.ts +666 -0
  909. package/src/api/coverage/CoverageMaskCache.ts +112 -0
  910. package/src/api/coverage/CoverageMaskContext.tsx +79 -0
  911. package/src/api/coverage-source.ts +137 -0
  912. package/src/api/error-codes.ts +87 -0
  913. package/src/api/event-reveal.ts +96 -0
  914. package/src/api/host.ts +213 -0
  915. package/src/api/index.ts +1170 -0
  916. package/src/api/localStorageStore.ts +180 -0
  917. package/src/api/logger-contract.ts +38 -0
  918. package/src/api/logger.ts +17 -0
  919. package/src/api/map-poi.ts +98 -0
  920. package/src/api/plot-layers.ts +257 -0
  921. package/src/api/plots.ts +169 -0
  922. package/src/api/registry.ts +324 -0
  923. package/src/api/root-providers.tsx +136 -0
  924. package/src/api/safe-random-uuid.ts +22 -0
  925. package/src/api/settings/SettingsContext.tsx +79 -0
  926. package/src/api/settings/SettingsService.ts +142 -0
  927. package/src/api/settings/store.ts +180 -0
  928. package/src/api/slots.ts +1041 -0
  929. package/src/api/station-brokers.ts +94 -0
  930. package/src/api/stock-bodies.ts +281 -0
  931. package/src/api/tiny-size.ts +9 -0
  932. package/src/api/tone.ts +41 -0
  933. package/src/api/transport.ts +98 -0
  934. package/src/api/types.ts +1903 -0
  935. package/src/api/uplink-handles.ts +71 -0
  936. package/src/binary-frame.ts +250 -0
  937. package/src/burn-clock.ts +115 -0
  938. package/src/client.ts +56 -0
  939. package/src/combine-readings.ts +250 -0
  940. package/src/command-delay.ts +392 -0
  941. package/src/command-reply-units.ts +63 -0
  942. package/src/commands.ts +242 -0
  943. package/src/comms-degrade.ts +68 -0
  944. package/src/compat-versions.ts +44 -0
  945. package/src/contract-enum-names.ts +141 -0
  946. package/src/control-channels.ts +92 -0
  947. package/src/crew-standing.ts +131 -0
  948. package/src/delay-roles.ts +187 -0
  949. package/src/descent.ts +149 -0
  950. package/src/enum-names.ts +35 -0
  951. package/src/envelope.ts +45 -0
  952. package/src/event-timeline.ts +196 -0
  953. package/src/extensions.ts +58 -0
  954. package/src/field-frames.ts +70 -0
  955. package/src/flight/BufferedDataSource.ts +945 -0
  956. package/src/flight/DataSourceWrapper.ts +79 -0
  957. package/src/flight/ListenerSet.ts +73 -0
  958. package/src/flight/debugFlight.ts +16 -0
  959. package/src/flight/derive.ts +56 -0
  960. package/src/flight/fixtureIO.ts +197 -0
  961. package/src/flight/flightAutoDelete.ts +53 -0
  962. package/src/flight/flightDetector.ts +213 -0
  963. package/src/flight/storage/LocalStorageStore.ts +160 -0
  964. package/src/flight/storage/MemoryStore.ts +113 -0
  965. package/src/flight/storage/Store.ts +52 -0
  966. package/src/flight/types.ts +408 -0
  967. package/src/frame-qualifier.ts +153 -0
  968. package/src/frames/index.ts +177 -0
  969. package/src/index.ts +576 -0
  970. package/src/ksp-enum-names.ts +191 -0
  971. package/src/locked.ts +29 -0
  972. package/src/magnitude.ts +52 -0
  973. package/src/maneuver-basis.ts +49 -0
  974. package/src/media/capture-clock.ts +43 -0
  975. package/src/media/delayed-playout-buffer.ts +253 -0
  976. package/src/media/encoded-frame-delay.ts +153 -0
  977. package/src/media/frame-delay.ts +402 -0
  978. package/src/media/index.ts +83 -0
  979. package/src/media/radio-support.ts +132 -0
  980. package/src/media/shared-delayed-streams.ts +232 -0
  981. package/src/media/webcodecs-track-io.d.ts +99 -0
  982. package/src/media/worker/delay-worker-client.ts +312 -0
  983. package/src/media/worker/delay-worker.ts +433 -0
  984. package/src/media/worker/presentation-pacer.ts +249 -0
  985. package/src/media/worker/time-base.ts +55 -0
  986. package/src/media/worker/worker-delay-clock.ts +122 -0
  987. package/src/perf/PerfBudget.ts +267 -0
  988. package/src/rail-tags.ts +221 -0
  989. package/src/raw-field-split.ts +72 -0
  990. package/src/reading.ts +1565 -0
  991. package/src/reckonability.ts +117 -0
  992. package/src/registry/index.ts +36 -0
  993. package/src/runtime-topic-registry.ts +204 -0
  994. package/src/spine/arrival-deadline.ts +48 -0
  995. package/src/spine/atmospheric-reckoning.ts +540 -0
  996. package/src/spine/body-derivations.ts +103 -0
  997. package/src/spine/capability-lock.ts +210 -0
  998. package/src/spine/celestial-facts.ts +455 -0
  999. package/src/spine/channel-error-warning.ts +61 -0
  1000. package/src/spine/client-reading.ts +282 -0
  1001. package/src/spine/client-timeline.ts +234 -0
  1002. package/src/spine/client.ts +1336 -0
  1003. package/src/spine/clock.ts +57 -0
  1004. package/src/spine/command-gate.ts +139 -0
  1005. package/src/spine/comms-delay-reckoning.ts +217 -0
  1006. package/src/spine/comms-journey.ts +256 -0
  1007. package/src/spine/comms-path-geometry.ts +237 -0
  1008. package/src/spine/comms-route.ts +142 -0
  1009. package/src/spine/connection-error-warning.ts +54 -0
  1010. package/src/spine/connectivity-history.ts +68 -0
  1011. package/src/spine/context.tsx +1317 -0
  1012. package/src/spine/contributed-channels.ts +126 -0
  1013. package/src/spine/contribution-scope.ts +87 -0
  1014. package/src/spine/contributions.ts +213 -0
  1015. package/src/spine/control-frame-to-read-frame.ts +91 -0
  1016. package/src/spine/core-reckoners.ts +1112 -0
  1017. package/src/spine/dashboard-item.ts +25 -0
  1018. package/src/spine/delay-authority.ts +337 -0
  1019. package/src/spine/delta-v-budget.ts +311 -0
  1020. package/src/spine/departure-reckoning.ts +69 -0
  1021. package/src/spine/dv-stage-resources.ts +137 -0
  1022. package/src/spine/heartbeat-tracker.ts +208 -0
  1023. package/src/spine/held-command-actions.ts +119 -0
  1024. package/src/spine/impact-point.ts +432 -0
  1025. package/src/spine/index.ts +132 -0
  1026. package/src/spine/kepler-reckoning.ts +572 -0
  1027. package/src/spine/kepler.ts +576 -0
  1028. package/src/spine/lagrange.ts +585 -0
  1029. package/src/spine/lifecycle.ts +251 -0
  1030. package/src/spine/lock-scope.ts +27 -0
  1031. package/src/spine/map-command.ts +33 -0
  1032. package/src/spine/map-topic.ts +163 -0
  1033. package/src/spine/mod-settings.ts +47 -0
  1034. package/src/spine/never-reckonable.ts +183 -0
  1035. package/src/spine/orbit-patches.ts +213 -0
  1036. package/src/spine/orbit-trajectory.ts +636 -0
  1037. package/src/spine/orbital-solve.ts +393 -0
  1038. package/src/spine/own-craft-vantage.tsx +161 -0
  1039. package/src/spine/past-track.ts +93 -0
  1040. package/src/spine/powered-reckoning.ts +866 -0
  1041. package/src/spine/processorEvaluator.ts +688 -0
  1042. package/src/spine/processors.ts +353 -0
  1043. package/src/spine/propagation.ts +25 -0
  1044. package/src/spine/rail-registry.ts +27 -0
  1045. package/src/spine/reckoners.ts +317 -0
  1046. package/src/spine/reference-frame.ts +816 -0
  1047. package/src/spine/replay-recorder.ts +128 -0
  1048. package/src/spine/replay-session-controller.ts +282 -0
  1049. package/src/spine/replay-session.tsx +47 -0
  1050. package/src/spine/replay-transport.ts +167 -0
  1051. package/src/spine/screen.tsx +70 -0
  1052. package/src/spine/settings-registry.ts +286 -0
  1053. package/src/spine/settings-tabs.ts +57 -0
  1054. package/src/spine/share-equal.ts +62 -0
  1055. package/src/spine/size-delta.ts +23 -0
  1056. package/src/spine/space-center-state.ts +101 -0
  1057. package/src/spine/stream-status.ts +62 -0
  1058. package/src/spine/subscribe-read.ts +88 -0
  1059. package/src/spine/subscriber-identity.tsx +44 -0
  1060. package/src/spine/system-state.ts +44 -0
  1061. package/src/spine/target-range-reckoning.ts +127 -0
  1062. package/src/spine/timeline-store.ts +3626 -0
  1063. package/src/spine/topic-ownership.ts +211 -0
  1064. package/src/spine/unowned-warning.ts +63 -0
  1065. package/src/spine/uplink-clients.ts +265 -0
  1066. package/src/spine/uplink-health.ts +256 -0
  1067. package/src/spine/use-action-input.ts +87 -0
  1068. package/src/spine/use-body-states.ts +52 -0
  1069. package/src/spine/use-command.ts +1090 -0
  1070. package/src/spine/use-data-sources.ts +43 -0
  1071. package/src/spine/use-late-telemetry-subscribe.ts +111 -0
  1072. package/src/spine/use-orbit-trajectory.ts +50 -0
  1073. package/src/spine/use-processor.ts +56 -0
  1074. package/src/spine/use-route-commands.ts +57 -0
  1075. package/src/spine/use-selected-vantage.ts +23 -0
  1076. package/src/spine/use-stream-event.ts +54 -0
  1077. package/src/spine/use-stream.ts +137 -0
  1078. package/src/spine/use-telemetry.ts +142 -0
  1079. package/src/spine/use-transmissions.ts +100 -0
  1080. package/src/spine/vantage.ts +15 -0
  1081. package/src/spine/view-clock.ts +404 -0
  1082. package/src/spine/wire-payloads.ts +242 -0
  1083. package/src/testing/console-logger.ts +24 -0
  1084. package/src/testing/create-test-telemetry-client.ts +17 -0
  1085. package/src/testing/fake-wall-clock.ts +27 -0
  1086. package/src/testing/index.ts +141 -0
  1087. package/src/testing/install-act-gate-stretch.ts +83 -0
  1088. package/src/testing/install-dom-stubs.ts +137 -0
  1089. package/src/testing/install-real-test-host.ts +177 -0
  1090. package/src/testing/install-test-host.ts +24 -0
  1091. package/src/testing/memory-storage.ts +25 -0
  1092. package/src/testing/mock-data-source.ts +109 -0
  1093. package/src/testing/recorded-alarm-requests.ts +43 -0
  1094. package/src/testing/render.tsx +78 -0
  1095. package/src/testing/stream-fixture.tsx +130 -0
  1096. package/src/testing/stub-transport.ts +289 -0
  1097. package/src/testing/theme.ts +11 -0
  1098. package/src/timeline.ts +68 -0
  1099. package/src/topic-fields.ts +188 -0
  1100. package/src/topics.ts +553 -0
  1101. package/src/unit-system/algebra.ts +472 -0
  1102. package/src/unit-system/calendar.ts +145 -0
  1103. package/src/unit-system/declarations.ts +96 -0
  1104. package/src/unit-system/definitions.ts +385 -0
  1105. package/src/unit-system/dimension.ts +107 -0
  1106. package/src/unit-system/guards.ts +82 -0
  1107. package/src/unit-system/index.ts +68 -0
  1108. package/src/unit-system/registry.ts +381 -0
  1109. package/src/unit-system/value.ts +959 -0
  1110. package/src/units.ts +462 -0
  1111. package/src/uplink-externals.ts +91 -0
  1112. package/src/uplink-manifest.ts +349 -0
  1113. package/src/value.ts +15 -0
  1114. package/src/version.generated.ts +10 -0
  1115. package/src/view-clock-formula.ts +90 -0
  1116. package/src/wrap-units.ts +361 -0
  1117. 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