siderust-js 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (272) hide show
  1. package/.github/workflows/ci.yml +166 -0
  2. package/.gitmodules +9 -0
  3. package/CHANGELOG.md +26 -0
  4. package/LICENSE +661 -0
  5. package/README.md +138 -0
  6. package/package.json +12 -0
  7. package/qtty-js/.github/workflows/ci.yml +151 -0
  8. package/qtty-js/.gitmodules +3 -0
  9. package/qtty-js/CHANGELOG.md +31 -0
  10. package/qtty-js/LICENSE +661 -0
  11. package/qtty-js/README.md +132 -0
  12. package/qtty-js/package.json +20 -0
  13. package/qtty-js/qtty/.github/workflows/ci.yml +155 -0
  14. package/qtty-js/qtty/CHANGELOG.md +120 -0
  15. package/qtty-js/qtty/Cargo.lock +1462 -0
  16. package/qtty-js/qtty/Cargo.toml +12 -0
  17. package/qtty-js/qtty/LICENSE +661 -0
  18. package/qtty-js/qtty/README.md +9 -0
  19. package/qtty-js/qtty/qtty/Cargo.toml +41 -0
  20. package/qtty-js/qtty/qtty/README.md +8 -0
  21. package/qtty-js/qtty/qtty/examples/angles.rs +14 -0
  22. package/qtty-js/qtty/qtty/examples/astronomy.rs +17 -0
  23. package/qtty-js/qtty/qtty/examples/dimensional_arithmetic.rs +83 -0
  24. package/qtty-js/qtty/qtty/examples/python_integration.rs +61 -0
  25. package/qtty-js/qtty/qtty/examples/quickstart.rs +15 -0
  26. package/qtty-js/qtty/qtty/examples/ratios.rs +12 -0
  27. package/qtty-js/qtty/qtty/examples/serde_with_unit.rs +234 -0
  28. package/qtty-js/qtty/qtty/examples/serialization.rs +141 -0
  29. package/qtty-js/qtty/qtty/examples/serialization_advanced.rs +155 -0
  30. package/qtty-js/qtty/qtty/src/f32.rs +108 -0
  31. package/qtty-js/qtty/qtty/src/f64.rs +30 -0
  32. package/qtty-js/qtty/qtty/src/i128.rs +111 -0
  33. package/qtty-js/qtty/qtty/src/i16.rs +111 -0
  34. package/qtty-js/qtty/qtty/src/i32.rs +111 -0
  35. package/qtty-js/qtty/qtty/src/i64.rs +111 -0
  36. package/qtty-js/qtty/qtty/src/i8.rs +111 -0
  37. package/qtty-js/qtty/qtty/src/lib.rs +238 -0
  38. package/qtty-js/qtty/qtty/tests/fixtures/qtty-vec-no-std/Cargo.lock +83 -0
  39. package/qtty-js/qtty/qtty/tests/fixtures/qtty-vec-no-std/Cargo.toml +10 -0
  40. package/qtty-js/qtty/qtty/tests/fixtures/qtty-vec-no-std/src/lib.rs +7 -0
  41. package/qtty-js/qtty/qtty/tests/fixtures/qtty-vec-no-std-alloc/Cargo.lock +83 -0
  42. package/qtty-js/qtty/qtty/tests/fixtures/qtty-vec-no-std-alloc/Cargo.toml +10 -0
  43. package/qtty-js/qtty/qtty/tests/fixtures/qtty-vec-no-std-alloc/src/lib.rs +7 -0
  44. package/qtty-js/qtty/qtty/tests/fixtures/qtty-vec-std/Cargo.lock +83 -0
  45. package/qtty-js/qtty/qtty/tests/fixtures/qtty-vec-std/Cargo.toml +10 -0
  46. package/qtty-js/qtty/qtty/tests/fixtures/qtty-vec-std/src/lib.rs +5 -0
  47. package/qtty-js/qtty/qtty/tests/integration_tests.rs +529 -0
  48. package/qtty-js/qtty/qtty/tests/qtty_vec_feature_matrix.rs +58 -0
  49. package/qtty-js/qtty/qtty-core/Cargo.toml +41 -0
  50. package/qtty-js/qtty/qtty-core/README.md +8 -0
  51. package/qtty-js/qtty/qtty-core/examples/diesel_integration.rs +145 -0
  52. package/qtty-js/qtty/qtty-core/examples/quantity_db_serde.rs +215 -0
  53. package/qtty-js/qtty/qtty-core/src/dimension.rs +249 -0
  54. package/qtty-js/qtty/qtty-core/src/feature_diesel.rs +318 -0
  55. package/qtty-js/qtty/qtty-core/src/feature_pyo3.rs +27 -0
  56. package/qtty-js/qtty/qtty-core/src/feature_serde.rs +203 -0
  57. package/qtty-js/qtty/qtty-core/src/feature_tiberius.rs +28 -0
  58. package/qtty-js/qtty/qtty-core/src/lib.rs +744 -0
  59. package/qtty-js/qtty/qtty-core/src/macros.rs +93 -0
  60. package/qtty-js/qtty/qtty-core/src/quantity.rs +810 -0
  61. package/qtty-js/qtty/qtty-core/src/scalar.rs +1742 -0
  62. package/qtty-js/qtty/qtty-core/src/unit.rs +332 -0
  63. package/qtty-js/qtty/qtty-core/src/units/angular.rs +1228 -0
  64. package/qtty-js/qtty/qtty-core/src/units/area.rs +243 -0
  65. package/qtty-js/qtty/qtty-core/src/units/frequency.rs +179 -0
  66. package/qtty-js/qtty/qtty-core/src/units/length.rs +1270 -0
  67. package/qtty-js/qtty/qtty-core/src/units/mass.rs +488 -0
  68. package/qtty-js/qtty/qtty-core/src/units/mod.rs +26 -0
  69. package/qtty-js/qtty/qtty-core/src/units/power.rs +324 -0
  70. package/qtty-js/qtty/qtty-core/src/units/time.rs +667 -0
  71. package/qtty-js/qtty/qtty-core/src/units/unitless.rs +212 -0
  72. package/qtty-js/qtty/qtty-core/src/units/velocity.rs +210 -0
  73. package/qtty-js/qtty/qtty-core/src/units/volume.rs +269 -0
  74. package/qtty-js/qtty/qtty-core/tests/core.rs +628 -0
  75. package/qtty-js/qtty/qtty-core/tests/diesel.rs +461 -0
  76. package/qtty-js/qtty/qtty-core/tests/integers.rs +632 -0
  77. package/qtty-js/qtty/qtty-core/tests/no_cross_unit_ops.rs +35 -0
  78. package/qtty-js/qtty/qtty-core/tests/pyo3.rs +334 -0
  79. package/qtty-js/qtty/qtty-core/tests/quantity_f32.rs +276 -0
  80. package/qtty-js/qtty/qtty-core/tests/scalar_decimal.rs +258 -0
  81. package/qtty-js/qtty/qtty-core/tests/scalar_f32.rs +286 -0
  82. package/qtty-js/qtty/qtty-core/tests/scalar_f64_real.rs +287 -0
  83. package/qtty-js/qtty/qtty-core/tests/scalar_rational.rs +260 -0
  84. package/qtty-js/qtty/qtty-core/tests/serde.rs +256 -0
  85. package/qtty-js/qtty/qtty-core/tests/tiberius.rs +208 -0
  86. package/qtty-js/qtty/qtty-derive/Cargo.toml +23 -0
  87. package/qtty-js/qtty/qtty-derive/README.md +8 -0
  88. package/qtty-js/qtty/qtty-derive/src/lib.rs +340 -0
  89. package/qtty-js/qtty/qtty-ffi/ARCHITECTURE.md +3 -0
  90. package/qtty-js/qtty/qtty-ffi/Cargo.toml +31 -0
  91. package/qtty-js/qtty/qtty-ffi/README.md +9 -0
  92. package/qtty-js/qtty/qtty-ffi/build.rs +326 -0
  93. package/qtty-js/qtty/qtty-ffi/cbindgen.toml +105 -0
  94. package/qtty-js/qtty/qtty-ffi/include/qtty_ffi.h +1126 -0
  95. package/qtty-js/qtty/qtty-ffi/src/ffi.rs +1251 -0
  96. package/qtty-js/qtty/qtty-ffi/src/ffi_serde.rs +294 -0
  97. package/qtty-js/qtty/qtty-ffi/src/helpers.rs +310 -0
  98. package/qtty-js/qtty/qtty-ffi/src/lib.rs +229 -0
  99. package/qtty-js/qtty/qtty-ffi/src/macros.rs +121 -0
  100. package/qtty-js/qtty/qtty-ffi/src/registry.rs +274 -0
  101. package/qtty-js/qtty/qtty-ffi/src/types.rs +620 -0
  102. package/qtty-js/qtty/qtty-ffi/tests/integration_tests.rs +842 -0
  103. package/qtty-js/qtty/qtty-ffi/units.csv +156 -0
  104. package/qtty-js/qtty/qtty-ffi/units.csv.md +3 -0
  105. package/qtty-js/qtty-node/.prettierignore +6 -0
  106. package/qtty-js/qtty-node/.prettierrc.json +6 -0
  107. package/qtty-js/qtty-node/README.md +250 -0
  108. package/qtty-js/qtty-node/c8.config.json +11 -0
  109. package/qtty-js/qtty-node/eslint.config.js +31 -0
  110. package/qtty-js/qtty-node/examples/arithmetic.mjs +64 -0
  111. package/qtty-js/qtty-node/examples/astronomy.mjs +90 -0
  112. package/qtty-js/qtty-node/examples/quickstart.mjs +36 -0
  113. package/qtty-js/qtty-node/examples/serialization.mjs +125 -0
  114. package/qtty-js/qtty-node/examples/unit_factories.mjs +74 -0
  115. package/qtty-js/qtty-node/index.d.ts +219 -0
  116. package/qtty-js/qtty-node/index.js +323 -0
  117. package/qtty-js/qtty-node/lib/DerivedQuantity.js +122 -0
  118. package/qtty-js/qtty-node/lib/Quantity.js +151 -0
  119. package/qtty-js/qtty-node/lib/backend.js +25 -0
  120. package/qtty-js/qtty-node/native.cjs +306 -0
  121. package/qtty-js/qtty-node/package-lock.json +3223 -0
  122. package/qtty-js/qtty-node/package.json +70 -0
  123. package/qtty-js/qtty-node/units.d.ts +299 -0
  124. package/qtty-js/qtty-node/units.js +210 -0
  125. package/qtty-js/qtty-web/Cargo.lock +767 -0
  126. package/qtty-js/qtty-web/Cargo.toml +21 -0
  127. package/qtty-js/qtty-web/index.d.ts +140 -0
  128. package/qtty-js/qtty-web/index.js +20 -0
  129. package/qtty-js/qtty-web/lib/DerivedQuantity.js +58 -0
  130. package/qtty-js/qtty-web/lib/Quantity.js +75 -0
  131. package/qtty-js/qtty-web/lib/backend.js +80 -0
  132. package/qtty-js/qtty-web/package.json +45 -0
  133. package/qtty-js/qtty-web/src/lib.rs +111 -0
  134. package/qtty-js/scripts/ci.sh +73 -0
  135. package/scripts/ci.sh +123 -0
  136. package/siderust-core/Cargo.lock +787 -0
  137. package/siderust-core/Cargo.toml +18 -0
  138. package/siderust-core/DEDUPLICATION.md +124 -0
  139. package/siderust-core/src/body.rs +120 -0
  140. package/siderust-core/src/events.rs +184 -0
  141. package/siderust-core/src/lib.rs +20 -0
  142. package/siderust-core/src/observer.rs +55 -0
  143. package/siderust-core/src/position.rs +213 -0
  144. package/siderust-node/.prettierignore +7 -0
  145. package/siderust-node/.prettierrc.json +6 -0
  146. package/siderust-node/Cargo.lock +906 -0
  147. package/siderust-node/Cargo.toml +29 -0
  148. package/siderust-node/README.md +109 -0
  149. package/siderust-node/__test__/index.test.mjs +248 -0
  150. package/siderust-node/build.rs +5 -0
  151. package/siderust-node/c8.config.json +3 -0
  152. package/siderust-node/eslint.config.js +31 -0
  153. package/siderust-node/examples/01_basic_coordinates.mjs +24 -0
  154. package/siderust-node/examples/02_coordinate_transformations.mjs +25 -0
  155. package/siderust-node/examples/03_all_frames_conversions.mjs +26 -0
  156. package/siderust-node/examples/04_all_center_conversions.mjs +24 -0
  157. package/siderust-node/examples/05_target_tracking.mjs +22 -0
  158. package/siderust-node/examples/06_night_events.mjs +18 -0
  159. package/siderust-node/examples/07_moon_properties.mjs +21 -0
  160. package/siderust-node/examples/08_solar_system.mjs +19 -0
  161. package/siderust-node/examples/09_star_observability.mjs +22 -0
  162. package/siderust-node/examples/10_time_periods.mjs +9 -0
  163. package/siderust-node/examples/11_serialization.mjs +31 -0
  164. package/siderust-node/examples/12_runtime_ephemeris.mjs +27 -0
  165. package/siderust-node/examples/13_coordinate_operations.mjs +20 -0
  166. package/siderust-node/index.d.ts +623 -0
  167. package/siderust-node/index.js +79 -0
  168. package/siderust-node/lib/Observer.js +112 -0
  169. package/siderust-node/lib/Star.js +118 -0
  170. package/siderust-node/lib/backend.js +63 -0
  171. package/siderust-node/lib/wrappers.js +566 -0
  172. package/siderust-node/main.js +20 -0
  173. package/siderust-node/native.cjs +360 -0
  174. package/siderust-node/package-lock.json +3261 -0
  175. package/siderust-node/package.json +71 -0
  176. package/siderust-node/src/body.rs +74 -0
  177. package/siderust-node/src/coordinates.rs +372 -0
  178. package/siderust-node/src/ephemeris.rs +462 -0
  179. package/siderust-node/src/events.rs +577 -0
  180. package/siderust-node/src/lib.rs +43 -0
  181. package/siderust-node/src/observer.rs +132 -0
  182. package/siderust-node/src/phase.rs +218 -0
  183. package/siderust-node/src/position.rs +292 -0
  184. package/siderust-node/src/star.rs +200 -0
  185. package/siderust-web/Cargo.lock +855 -0
  186. package/siderust-web/Cargo.toml +34 -0
  187. package/siderust-web/README.md +100 -0
  188. package/siderust-web/__test__/index.test.mjs +118 -0
  189. package/siderust-web/examples/github-pages/README.md +31 -0
  190. package/siderust-web/examples/github-pages/index.html +135 -0
  191. package/siderust-web/index.d.ts +311 -0
  192. package/siderust-web/index.js +66 -0
  193. package/siderust-web/lib/Observer.js +103 -0
  194. package/siderust-web/lib/Star.js +116 -0
  195. package/siderust-web/lib/backend.js +400 -0
  196. package/siderust-web/lib/wrappers.js +512 -0
  197. package/siderust-web/package.json +55 -0
  198. package/siderust-web/src/body.rs +69 -0
  199. package/siderust-web/src/coordinates.rs +302 -0
  200. package/siderust-web/src/ephemeris.rs +456 -0
  201. package/siderust-web/src/events.rs +520 -0
  202. package/siderust-web/src/lib.rs +51 -0
  203. package/siderust-web/src/observer.rs +117 -0
  204. package/siderust-web/src/phase.rs +190 -0
  205. package/siderust-web/src/position.rs +291 -0
  206. package/siderust-web/src/star.rs +178 -0
  207. package/tempoch-js/.github/workflows/ci.yml +142 -0
  208. package/tempoch-js/.gitmodules +3 -0
  209. package/tempoch-js/CHANGELOG.md +25 -0
  210. package/tempoch-js/LICENSE +661 -0
  211. package/tempoch-js/README.md +126 -0
  212. package/tempoch-js/package.json +20 -0
  213. package/tempoch-js/scripts/ci.sh +73 -0
  214. package/tempoch-js/tempoch/.github/workflows/ci.yml +113 -0
  215. package/tempoch-js/tempoch/CHANGELOG.md +82 -0
  216. package/tempoch-js/tempoch/Cargo.lock +947 -0
  217. package/tempoch-js/tempoch/Cargo.toml +3 -0
  218. package/tempoch-js/tempoch/LICENSE +661 -0
  219. package/tempoch-js/tempoch/README.md +76 -0
  220. package/tempoch-js/tempoch/tempoch/Cargo.toml +27 -0
  221. package/tempoch-js/tempoch/tempoch/examples/periods.rs +45 -0
  222. package/tempoch-js/tempoch/tempoch/examples/quickstart.rs +13 -0
  223. package/tempoch-js/tempoch/tempoch/src/lib.rs +49 -0
  224. package/tempoch-js/tempoch/tempoch/tests/integration.rs +57 -0
  225. package/tempoch-js/tempoch/tempoch-core/Cargo.toml +24 -0
  226. package/tempoch-js/tempoch/tempoch-core/src/delta_t.rs +345 -0
  227. package/tempoch-js/tempoch/tempoch-core/src/instant.rs +811 -0
  228. package/tempoch-js/tempoch/tempoch-core/src/julian_date_ext.rs +142 -0
  229. package/tempoch-js/tempoch/tempoch-core/src/lib.rs +81 -0
  230. package/tempoch-js/tempoch/tempoch-core/src/period.rs +1168 -0
  231. package/tempoch-js/tempoch/tempoch-core/src/scales.rs +779 -0
  232. package/tempoch-js/tempoch/tempoch-ffi/Cargo.lock +889 -0
  233. package/tempoch-js/tempoch/tempoch-ffi/Cargo.toml +26 -0
  234. package/tempoch-js/tempoch/tempoch-ffi/build.rs +24 -0
  235. package/tempoch-js/tempoch/tempoch-ffi/cbindgen.toml +30 -0
  236. package/tempoch-js/tempoch/tempoch-ffi/src/error.rs +19 -0
  237. package/tempoch-js/tempoch/tempoch-ffi/src/lib.rs +82 -0
  238. package/tempoch-js/tempoch/tempoch-ffi/src/period.rs +101 -0
  239. package/tempoch-js/tempoch/tempoch-ffi/src/time.rs +711 -0
  240. package/tempoch-js/tempoch/tempoch-ffi/tests/ffi.rs +265 -0
  241. package/tempoch-js/tempoch-node/.prettierignore +6 -0
  242. package/tempoch-js/tempoch-node/.prettierrc.json +6 -0
  243. package/tempoch-js/tempoch-node/Cargo.lock +496 -0
  244. package/tempoch-js/tempoch-node/Cargo.toml +29 -0
  245. package/tempoch-js/tempoch-node/README.md +265 -0
  246. package/tempoch-js/tempoch-node/__test__/index.test.mjs +598 -0
  247. package/tempoch-js/tempoch-node/build.rs +5 -0
  248. package/tempoch-js/tempoch-node/c8.config.json +3 -0
  249. package/tempoch-js/tempoch-node/eslint.config.js +31 -0
  250. package/tempoch-js/tempoch-node/examples/periods.mjs +79 -0
  251. package/tempoch-js/tempoch-node/examples/quickstart.mjs +71 -0
  252. package/tempoch-js/tempoch-node/examples/timescales.mjs +92 -0
  253. package/tempoch-js/tempoch-node/index.d.ts +280 -0
  254. package/tempoch-js/tempoch-node/index.js +32 -0
  255. package/tempoch-js/tempoch-node/lib/JulianDate.js +176 -0
  256. package/tempoch-js/tempoch-node/lib/ModifiedJulianDate.js +156 -0
  257. package/tempoch-js/tempoch-node/lib/Period.js +133 -0
  258. package/tempoch-js/tempoch-node/lib/backend.js +38 -0
  259. package/tempoch-js/tempoch-node/lib/qttyCompat.js +92 -0
  260. package/tempoch-js/tempoch-node/native.cjs +317 -0
  261. package/tempoch-js/tempoch-node/package-lock.json +3223 -0
  262. package/tempoch-js/tempoch-node/package.json +56 -0
  263. package/tempoch-js/tempoch-node/src/lib.rs +573 -0
  264. package/tempoch-js/tempoch-web/Cargo.toml +23 -0
  265. package/tempoch-js/tempoch-web/index.d.ts +95 -0
  266. package/tempoch-js/tempoch-web/index.js +27 -0
  267. package/tempoch-js/tempoch-web/lib/JulianDate.js +170 -0
  268. package/tempoch-js/tempoch-web/lib/ModifiedJulianDate.js +145 -0
  269. package/tempoch-js/tempoch-web/lib/Period.js +121 -0
  270. package/tempoch-js/tempoch-web/lib/backend.js +118 -0
  271. package/tempoch-js/tempoch-web/package.json +46 -0
  272. package/tempoch-js/tempoch-web/src/lib.rs +184 -0
@@ -0,0 +1,400 @@
1
+ /**
2
+ * @siderust/siderust-web — Internal WASM backend abstraction.
3
+ *
4
+ * Loads the wasm-bindgen generated module and re-exports the native
5
+ * WASM classes and free functions that the JS façade layer needs.
6
+ *
7
+ * @module @siderust/siderust-web/lib/backend
8
+ * @private
9
+ */
10
+
11
+ import { init as initQtty, unitDimension } from "@siderust/qtty-web";
12
+ import {
13
+ init as initTempoch,
14
+ version as tempochVersion,
15
+ } from "@siderust/tempoch-web";
16
+
17
+ let wasm = null;
18
+
19
+ /**
20
+ * Initialise the WASM module. Must be called before any other function.
21
+ * @param {RequestInfo | URL | Response | BufferSource | WebAssembly.Module} [module_or_path]
22
+ */
23
+ export async function init(module_or_path) {
24
+ if (!_qttyReady()) {
25
+ await initQtty();
26
+ }
27
+ if (!_tempochReady()) {
28
+ await initTempoch();
29
+ }
30
+ const mod = await import("../pkg/siderust_web.js");
31
+ await mod.default(module_or_path);
32
+ wasm = mod;
33
+ }
34
+
35
+ function _qttyReady() {
36
+ try {
37
+ unitDimension("Meter");
38
+ return true;
39
+ } catch {
40
+ return false;
41
+ }
42
+ }
43
+
44
+ function _tempochReady() {
45
+ try {
46
+ tempochVersion();
47
+ return true;
48
+ } catch {
49
+ return false;
50
+ }
51
+ }
52
+
53
+ export function ensureInit() {
54
+ if (!wasm) {
55
+ throw new Error(
56
+ "@siderust/siderust-web: call init() before using any function",
57
+ );
58
+ }
59
+ }
60
+
61
+ // ── Native WASM classes (used internally by wrappers.js) ─────────
62
+
63
+ export function NativeObserver(lonDeg, latDeg, heightM) {
64
+ ensureInit();
65
+ return new wasm.Observer(lonDeg, latDeg, heightM);
66
+ }
67
+
68
+ /** Access native Observer static presets */
69
+ NativeObserver.roqueDeLasMuchachos = () => {
70
+ ensureInit();
71
+ return wasm.Observer.roqueDeLasMuchachos();
72
+ };
73
+ NativeObserver.elParanal = () => {
74
+ ensureInit();
75
+ return wasm.Observer.elParanal();
76
+ };
77
+ NativeObserver.maunaKea = () => {
78
+ ensureInit();
79
+ return wasm.Observer.maunaKea();
80
+ };
81
+ NativeObserver.laSilla = () => {
82
+ ensureInit();
83
+ return wasm.Observer.laSilla();
84
+ };
85
+
86
+ export function NativeStar(
87
+ name,
88
+ distanceLy,
89
+ massSolar,
90
+ radiusSolar,
91
+ luminositySolar,
92
+ raDeg,
93
+ decDeg,
94
+ ) {
95
+ ensureInit();
96
+ return new wasm.Star(
97
+ name,
98
+ distanceLy,
99
+ massSolar,
100
+ radiusSolar,
101
+ luminositySolar,
102
+ raDeg,
103
+ decDeg,
104
+ );
105
+ }
106
+
107
+ NativeStar.catalog = (name) => {
108
+ ensureInit();
109
+ return wasm.Star.catalog(name);
110
+ };
111
+
112
+ // ── Bodies / Stars ────────────────────────────────────────────────
113
+
114
+ export function getPlanet(name) {
115
+ ensureInit();
116
+ return wasm.getPlanet(name);
117
+ }
118
+ export function listBodies() {
119
+ ensureInit();
120
+ return wasm.listBodies();
121
+ }
122
+ export function listCatalogStars() {
123
+ ensureInit();
124
+ return wasm.listCatalogStars();
125
+ }
126
+
127
+ // ── Coordinates ───────────────────────────────────────────────────
128
+
129
+ export function transformDirection(
130
+ polarDeg,
131
+ azimuthDeg,
132
+ srcFrame,
133
+ dstFrame,
134
+ jd,
135
+ ) {
136
+ ensureInit();
137
+ return wasm.transformDirection(polarDeg, azimuthDeg, srcFrame, dstFrame, jd);
138
+ }
139
+ export function directionToHorizontal(
140
+ polarDeg,
141
+ azimuthDeg,
142
+ srcFrame,
143
+ jd,
144
+ observer,
145
+ ) {
146
+ ensureInit();
147
+ return wasm.directionToHorizontal(
148
+ polarDeg,
149
+ azimuthDeg,
150
+ srcFrame,
151
+ jd,
152
+ observer,
153
+ );
154
+ }
155
+ export function geodeticToEcef(observer) {
156
+ ensureInit();
157
+ return wasm.geodeticToEcef(observer);
158
+ }
159
+ export function angularSeparation(p1, a1, p2, a2, frame) {
160
+ ensureInit();
161
+ return wasm.angularSeparation(p1, a1, p2, a2, frame);
162
+ }
163
+ export function cartesianDistance(x1, y1, z1, x2, y2, z2) {
164
+ ensureInit();
165
+ return wasm.cartesianDistance(x1, y1, z1, x2, y2, z2);
166
+ }
167
+ export function cartesianMagnitude(x, y, z) {
168
+ ensureInit();
169
+ return wasm.cartesianMagnitude(x, y, z);
170
+ }
171
+ export function dotProduct(x1, y1, z1, x2, y2, z2) {
172
+ ensureInit();
173
+ return wasm.dotProduct(x1, y1, z1, x2, y2, z2);
174
+ }
175
+ export function directionToCartesian(polarDeg, azimuthDeg) {
176
+ ensureInit();
177
+ return wasm.directionToCartesian(polarDeg, azimuthDeg);
178
+ }
179
+
180
+ // ── Ephemeris ─────────────────────────────────────────────────────
181
+
182
+ export function vsop87Heliocentric(body, jd) {
183
+ ensureInit();
184
+ return wasm.vsop87Heliocentric(body, jd);
185
+ }
186
+ export function vsop87Barycentric(body, jd) {
187
+ ensureInit();
188
+ return wasm.vsop87Barycentric(body, jd);
189
+ }
190
+ export function vsop87SunBarycentric(jd) {
191
+ ensureInit();
192
+ return wasm.vsop87SunBarycentric(jd);
193
+ }
194
+ export function vsop87EarthBarycentric(jd) {
195
+ ensureInit();
196
+ return wasm.vsop87EarthBarycentric(jd);
197
+ }
198
+ export function vsop87EarthHeliocentric(jd) {
199
+ ensureInit();
200
+ return wasm.vsop87EarthHeliocentric(jd);
201
+ }
202
+ export function vsop87MoonGeocentric(jd) {
203
+ ensureInit();
204
+ return wasm.vsop87MoonGeocentric(jd);
205
+ }
206
+ export function transformPositionCenter(x, y, z, srcCenter, dstCenter, jd) {
207
+ ensureInit();
208
+ return wasm.transformPositionCenter(x, y, z, srcCenter, dstCenter, jd);
209
+ }
210
+ export function transformPositionFrame(x, y, z, srcFrame, dstFrame, jd) {
211
+ ensureInit();
212
+ return wasm.transformPositionFrame(x, y, z, srcFrame, dstFrame, jd);
213
+ }
214
+ export function orbitalPeriodDays(name) {
215
+ ensureInit();
216
+ return wasm.orbitalPeriodDays(name);
217
+ }
218
+
219
+ // ── Body events ───────────────────────────────────────────────────
220
+
221
+ export function bodyAltitudeAt(body, observer, mjd) {
222
+ ensureInit();
223
+ return wasm.bodyAltitudeAt(body, observer, mjd);
224
+ }
225
+ export function bodyAzimuthAt(body, observer, mjd) {
226
+ ensureInit();
227
+ return wasm.bodyAzimuthAt(body, observer, mjd);
228
+ }
229
+ export function bodyCrossings(body, observer, startMjd, endMjd, thresholdDeg) {
230
+ ensureInit();
231
+ return wasm.bodyCrossings(body, observer, startMjd, endMjd, thresholdDeg);
232
+ }
233
+ export function bodyCulminations(body, observer, startMjd, endMjd) {
234
+ ensureInit();
235
+ return wasm.bodyCulminations(body, observer, startMjd, endMjd);
236
+ }
237
+ export function bodyAboveThreshold(
238
+ body,
239
+ observer,
240
+ startMjd,
241
+ endMjd,
242
+ thresholdDeg,
243
+ ) {
244
+ ensureInit();
245
+ return wasm.bodyAboveThreshold(
246
+ body,
247
+ observer,
248
+ startMjd,
249
+ endMjd,
250
+ thresholdDeg,
251
+ );
252
+ }
253
+ export function bodyBelowThreshold(
254
+ body,
255
+ observer,
256
+ startMjd,
257
+ endMjd,
258
+ thresholdDeg,
259
+ ) {
260
+ ensureInit();
261
+ return wasm.bodyBelowThreshold(
262
+ body,
263
+ observer,
264
+ startMjd,
265
+ endMjd,
266
+ thresholdDeg,
267
+ );
268
+ }
269
+ export function bodyAzimuthCrossings(
270
+ body,
271
+ observer,
272
+ startMjd,
273
+ endMjd,
274
+ bearingDeg,
275
+ ) {
276
+ ensureInit();
277
+ return wasm.bodyAzimuthCrossings(
278
+ body,
279
+ observer,
280
+ startMjd,
281
+ endMjd,
282
+ bearingDeg,
283
+ );
284
+ }
285
+ export function bodyAzimuthExtrema(body, observer, startMjd, endMjd) {
286
+ ensureInit();
287
+ return wasm.bodyAzimuthExtrema(body, observer, startMjd, endMjd);
288
+ }
289
+
290
+ // ── Star events ───────────────────────────────────────────────────
291
+
292
+ export function starAltitudeAt(star, observer, mjd) {
293
+ ensureInit();
294
+ return wasm.starAltitudeAt(star, observer, mjd);
295
+ }
296
+ export function starAzimuthAt(star, observer, mjd) {
297
+ ensureInit();
298
+ return wasm.starAzimuthAt(star, observer, mjd);
299
+ }
300
+ export function starCrossings(star, observer, startMjd, endMjd, thresholdDeg) {
301
+ ensureInit();
302
+ return wasm.starCrossings(star, observer, startMjd, endMjd, thresholdDeg);
303
+ }
304
+ export function starCulminations(star, observer, startMjd, endMjd) {
305
+ ensureInit();
306
+ return wasm.starCulminations(star, observer, startMjd, endMjd);
307
+ }
308
+ export function starAboveThreshold(
309
+ star,
310
+ observer,
311
+ startMjd,
312
+ endMjd,
313
+ thresholdDeg,
314
+ ) {
315
+ ensureInit();
316
+ return wasm.starAboveThreshold(
317
+ star,
318
+ observer,
319
+ startMjd,
320
+ endMjd,
321
+ thresholdDeg,
322
+ );
323
+ }
324
+ export function starBelowThreshold(
325
+ star,
326
+ observer,
327
+ startMjd,
328
+ endMjd,
329
+ thresholdDeg,
330
+ ) {
331
+ ensureInit();
332
+ return wasm.starBelowThreshold(
333
+ star,
334
+ observer,
335
+ startMjd,
336
+ endMjd,
337
+ thresholdDeg,
338
+ );
339
+ }
340
+ export function starAzimuthCrossings(
341
+ star,
342
+ observer,
343
+ startMjd,
344
+ endMjd,
345
+ bearingDeg,
346
+ ) {
347
+ ensureInit();
348
+ return wasm.starAzimuthCrossings(
349
+ star,
350
+ observer,
351
+ startMjd,
352
+ endMjd,
353
+ bearingDeg,
354
+ );
355
+ }
356
+ export function starAzimuthExtrema(star, observer, startMjd, endMjd) {
357
+ ensureInit();
358
+ return wasm.starAzimuthExtrema(star, observer, startMjd, endMjd);
359
+ }
360
+
361
+ // ── Periods ───────────────────────────────────────────────────────
362
+
363
+ export function intersectPeriods(periods1, periods2) {
364
+ ensureInit();
365
+ return wasm.intersectPeriods(periods1, periods2);
366
+ }
367
+
368
+ // ── Moon ──────────────────────────────────────────────────────────
369
+
370
+ export function moonPhase(jd) {
371
+ ensureInit();
372
+ return wasm.moonPhase(jd);
373
+ }
374
+ export function moonPhaseTopocentric(jd, observer) {
375
+ ensureInit();
376
+ return wasm.moonPhaseTopocentric(jd, observer);
377
+ }
378
+ export function findPhaseEvents(startMjd, endMjd) {
379
+ ensureInit();
380
+ return wasm.findPhaseEvents(startMjd, endMjd);
381
+ }
382
+ export function moonIlluminationAbove(startMjd, endMjd, kMin) {
383
+ ensureInit();
384
+ return wasm.moonIlluminationAbove(startMjd, endMjd, kMin);
385
+ }
386
+ export function moonIlluminationBelow(startMjd, endMjd, kMax) {
387
+ ensureInit();
388
+ return wasm.moonIlluminationBelow(startMjd, endMjd, kMax);
389
+ }
390
+ export function moonIlluminationRange(startMjd, endMjd, kMin, kMax) {
391
+ ensureInit();
392
+ return wasm.moonIlluminationRange(startMjd, endMjd, kMin, kMax);
393
+ }
394
+
395
+ // ── Meta ──────────────────────────────────────────────────────────
396
+
397
+ export function version() {
398
+ ensureInit();
399
+ return wasm.version();
400
+ }