@rybosome/tspice 0.0.3 → 0.0.8

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 (221) hide show
  1. package/README.md +145 -84
  2. package/backend-contract/dist/.tsbuildinfo +1 -1
  3. package/backend-contract/dist/domains/cells-windows.d.ts +94 -0
  4. package/backend-contract/dist/domains/cells-windows.js +10 -0
  5. package/backend-contract/dist/domains/coords-vectors.d.ts +53 -3
  6. package/backend-contract/dist/domains/dsk.d.ts +49 -0
  7. package/backend-contract/dist/domains/dsk.js +2 -0
  8. package/backend-contract/dist/domains/ek.d.ts +186 -0
  9. package/backend-contract/dist/domains/ek.js +8 -0
  10. package/backend-contract/dist/domains/ephemeris.d.ts +141 -3
  11. package/backend-contract/dist/domains/error.d.ts +42 -0
  12. package/backend-contract/dist/domains/error.js +33 -0
  13. package/backend-contract/dist/domains/file-io.d.ts +114 -0
  14. package/backend-contract/dist/domains/file-io.js +8 -0
  15. package/backend-contract/dist/domains/frames.d.ts +44 -4
  16. package/backend-contract/dist/domains/geometry-gf.d.ts +44 -0
  17. package/backend-contract/dist/domains/geometry-gf.js +14 -0
  18. package/backend-contract/dist/domains/geometry.d.ts +21 -1
  19. package/backend-contract/dist/domains/ids-names-normalize.d.ts +3 -0
  20. package/backend-contract/dist/domains/ids-names-normalize.js +74 -0
  21. package/backend-contract/dist/domains/ids-names.d.ts +37 -0
  22. package/backend-contract/dist/domains/kernel-pool.d.ts +134 -0
  23. package/backend-contract/dist/domains/kernel-pool.js +2 -0
  24. package/backend-contract/dist/domains/kernels-utils.d.ts +44 -0
  25. package/backend-contract/dist/domains/kernels-utils.js +265 -0
  26. package/backend-contract/dist/domains/kernels.d.ts +39 -3
  27. package/backend-contract/dist/domains/time.d.ts +102 -0
  28. package/backend-contract/dist/index.d.ts +34 -15
  29. package/backend-contract/dist/index.js +15 -1
  30. package/backend-contract/dist/shared/errors.d.ts +6 -0
  31. package/backend-contract/dist/shared/errors.js +8 -0
  32. package/backend-contract/dist/shared/mat3.d.ts +52 -0
  33. package/backend-contract/dist/shared/mat3.js +150 -0
  34. package/backend-contract/dist/shared/mat6.d.ts +34 -0
  35. package/backend-contract/dist/shared/mat6.js +116 -0
  36. package/backend-contract/dist/shared/spice-handles.d.ts +20 -0
  37. package/backend-contract/dist/shared/spice-handles.js +82 -0
  38. package/backend-contract/dist/shared/spice-int.d.ts +32 -0
  39. package/backend-contract/dist/shared/spice-int.js +41 -0
  40. package/backend-contract/dist/shared/types.d.ts +136 -5
  41. package/backend-contract/dist/shared/types.js +1 -1
  42. package/backend-contract/dist/shared/vec.d.ts +54 -0
  43. package/backend-contract/dist/shared/vec.js +162 -0
  44. package/backend-fake/dist/.tsbuildinfo +1 -1
  45. package/backend-fake/dist/index.d.ts +21 -1
  46. package/backend-fake/dist/index.js +1112 -33
  47. package/backend-node/dist/.tsbuildinfo +1 -1
  48. package/backend-node/dist/codec/arrays.d.ts +9 -0
  49. package/backend-node/dist/codec/arrays.js +36 -0
  50. package/backend-node/dist/codec/errors.d.ts +6 -6
  51. package/backend-node/dist/codec/errors.js +6 -6
  52. package/backend-node/dist/domains/cells-windows.d.ts +5 -0
  53. package/backend-node/dist/domains/cells-windows.js +112 -0
  54. package/backend-node/dist/domains/coords-vectors.d.ts +1 -0
  55. package/backend-node/dist/domains/coords-vectors.js +66 -0
  56. package/backend-node/dist/domains/dsk.d.ts +6 -0
  57. package/backend-node/dist/domains/dsk.js +108 -0
  58. package/backend-node/dist/domains/ek.d.ts +10 -0
  59. package/backend-node/dist/domains/ek.js +100 -0
  60. package/backend-node/dist/domains/ephemeris.d.ts +5 -1
  61. package/backend-node/dist/domains/ephemeris.js +150 -1
  62. package/backend-node/dist/domains/error.d.ts +5 -0
  63. package/backend-node/dist/domains/error.js +34 -0
  64. package/backend-node/dist/domains/file-io.d.ts +7 -0
  65. package/backend-node/dist/domains/file-io.js +105 -0
  66. package/backend-node/dist/domains/frames.d.ts +1 -0
  67. package/backend-node/dist/domains/frames.js +58 -6
  68. package/backend-node/dist/domains/geometry-gf.d.ts +5 -0
  69. package/backend-node/dist/domains/geometry-gf.js +74 -0
  70. package/backend-node/dist/domains/geometry.d.ts +1 -0
  71. package/backend-node/dist/domains/geometry.js +62 -0
  72. package/backend-node/dist/domains/ids-names.d.ts +2 -1
  73. package/backend-node/dist/domains/ids-names.js +30 -0
  74. package/backend-node/dist/domains/kernel-pool.d.ts +5 -0
  75. package/backend-node/dist/domains/kernel-pool.js +74 -0
  76. package/backend-node/dist/domains/kernels.d.ts +1 -0
  77. package/backend-node/dist/domains/kernels.js +100 -13
  78. package/backend-node/dist/domains/time.d.ts +1 -0
  79. package/backend-node/dist/domains/time.js +75 -1
  80. package/backend-node/dist/index.d.ts +5 -1
  81. package/backend-node/dist/index.js +62 -1
  82. package/backend-node/dist/lowlevel/binding.d.ts +3 -0
  83. package/backend-node/dist/lowlevel/binding.js +115 -0
  84. package/backend-node/dist/runtime/addon.d.ts +273 -2
  85. package/backend-node/dist/runtime/addon.js +3 -0
  86. package/backend-node/dist/runtime/kernel-staging.d.ts +17 -0
  87. package/backend-node/dist/runtime/kernel-staging.js +80 -7
  88. package/backend-node/dist/runtime/spice-handles.d.ts +3 -0
  89. package/backend-node/dist/runtime/spice-handles.js +2 -0
  90. package/backend-node/dist/runtime/virtual-output-staging.d.ts +16 -0
  91. package/backend-node/dist/runtime/virtual-output-staging.js +148 -0
  92. package/backend-wasm/dist/.tsbuildinfo +1 -1
  93. package/backend-wasm/dist/codec/alloc.d.ts +19 -0
  94. package/backend-wasm/dist/codec/alloc.js +64 -0
  95. package/backend-wasm/dist/codec/calls.d.ts +2 -0
  96. package/backend-wasm/dist/codec/calls.js +13 -24
  97. package/backend-wasm/dist/codec/errors.d.ts +6 -0
  98. package/backend-wasm/dist/codec/errors.js +34 -2
  99. package/backend-wasm/dist/codec/found.d.ts +2 -0
  100. package/backend-wasm/dist/codec/found.js +20 -43
  101. package/backend-wasm/dist/codec/strings.d.ts +31 -1
  102. package/backend-wasm/dist/codec/strings.js +93 -6
  103. package/backend-wasm/dist/domains/cells-windows.d.ts +9 -0
  104. package/backend-wasm/dist/domains/cells-windows.js +392 -0
  105. package/backend-wasm/dist/domains/coords-vectors.d.ts +1 -0
  106. package/backend-wasm/dist/domains/coords-vectors.js +377 -184
  107. package/backend-wasm/dist/domains/dsk.d.ts +6 -0
  108. package/backend-wasm/dist/domains/dsk.js +179 -0
  109. package/backend-wasm/dist/domains/ek.d.ts +6 -0
  110. package/backend-wasm/dist/domains/ek.js +543 -0
  111. package/backend-wasm/dist/domains/ephemeris.d.ts +4 -1
  112. package/backend-wasm/dist/domains/ephemeris.js +405 -46
  113. package/backend-wasm/dist/domains/error.d.ts +5 -0
  114. package/backend-wasm/dist/domains/error.js +109 -0
  115. package/backend-wasm/dist/domains/file-io.d.ts +7 -0
  116. package/backend-wasm/dist/domains/file-io.js +462 -0
  117. package/backend-wasm/dist/domains/frames.d.ts +1 -0
  118. package/backend-wasm/dist/domains/frames.js +139 -6
  119. package/backend-wasm/dist/domains/geometry-gf.d.ts +5 -0
  120. package/backend-wasm/dist/domains/geometry-gf.js +178 -0
  121. package/backend-wasm/dist/domains/geometry.d.ts +1 -0
  122. package/backend-wasm/dist/domains/geometry.js +210 -0
  123. package/backend-wasm/dist/domains/ids-names.d.ts +2 -1
  124. package/backend-wasm/dist/domains/ids-names.js +89 -0
  125. package/backend-wasm/dist/domains/kernel-pool.d.ts +5 -0
  126. package/backend-wasm/dist/domains/kernel-pool.js +357 -0
  127. package/backend-wasm/dist/domains/kernels.d.ts +1 -0
  128. package/backend-wasm/dist/domains/kernels.js +108 -4
  129. package/backend-wasm/dist/domains/time.d.ts +2 -0
  130. package/backend-wasm/dist/domains/time.js +235 -133
  131. package/backend-wasm/dist/index.d.ts +4 -2
  132. package/backend-wasm/dist/lowlevel/exports.d.ts +215 -1
  133. package/backend-wasm/dist/lowlevel/exports.js +217 -38
  134. package/backend-wasm/dist/runtime/create-backend-options.d.ts +21 -0
  135. package/backend-wasm/dist/runtime/create-backend.node.d.ts +11 -2
  136. package/backend-wasm/dist/runtime/create-backend.node.js +283 -14
  137. package/backend-wasm/dist/runtime/create-backend.web.d.ts +5 -2
  138. package/backend-wasm/dist/runtime/create-backend.web.js +40 -6
  139. package/backend-wasm/dist/runtime/fs.d.ts +6 -0
  140. package/backend-wasm/dist/runtime/fs.js +29 -3
  141. package/backend-wasm/dist/runtime/spice-handles.d.ts +3 -0
  142. package/backend-wasm/dist/runtime/spice-handles.js +2 -0
  143. package/backend-wasm/dist/runtime/virtual-outputs.d.ts +16 -0
  144. package/backend-wasm/dist/runtime/virtual-outputs.js +35 -0
  145. package/backend-wasm/dist/tspice_backend_wasm.node.js +3 -3
  146. package/backend-wasm/dist/tspice_backend_wasm.wasm +0 -0
  147. package/backend-wasm/dist/tspice_backend_wasm.web.js +1 -1
  148. package/core/dist/.tsbuildinfo +1 -1
  149. package/core/dist/index.d.ts +21 -0
  150. package/core/dist/index.js +57 -0
  151. package/dist/.tsbuildinfo +1 -1
  152. package/dist/backend.d.ts +15 -6
  153. package/dist/backend.js +3 -6
  154. package/dist/clients/createSpiceAsyncFromTransport.d.ts +5 -0
  155. package/dist/clients/createSpiceAsyncFromTransport.js +90 -0
  156. package/dist/clients/createSpiceSyncFromTransport.d.ts +5 -0
  157. package/dist/clients/createSpiceSyncFromTransport.js +88 -0
  158. package/dist/clients/spiceClients.d.ts +59 -0
  159. package/dist/clients/spiceClients.js +292 -0
  160. package/dist/errors.d.ts +4 -0
  161. package/dist/errors.js +4 -0
  162. package/dist/index.d.ts +12 -7
  163. package/dist/index.js +5 -2
  164. package/dist/kernels/defaultKernelPathFromUrl.d.ts +8 -0
  165. package/dist/kernels/defaultKernelPathFromUrl.js +32 -0
  166. package/dist/kernels/kernelPack.d.ts +88 -0
  167. package/dist/kernels/kernelPack.js +122 -0
  168. package/dist/kernels/kernels.d.ts +98 -0
  169. package/dist/kernels/kernels.js +217 -0
  170. package/dist/kernels/naifKernelId.d.ts +2 -0
  171. package/dist/kernels/naifKernelId.js +2 -0
  172. package/dist/kit/index.d.ts +4 -0
  173. package/dist/kit/index.js +3 -0
  174. package/dist/kit/math/mat3.d.ts +31 -0
  175. package/dist/kit/math/mat3.js +82 -0
  176. package/dist/kit/spice/create-kit.d.ts +12 -0
  177. package/dist/kit/spice/create-kit.js +23 -0
  178. package/dist/kit/spice/frames.d.ts +8 -0
  179. package/dist/kit/spice/frames.js +16 -0
  180. package/dist/kit/spice/kernels.d.ts +14 -0
  181. package/dist/kit/spice/kernels.js +39 -0
  182. package/dist/kit/spice/state.d.ts +7 -0
  183. package/dist/kit/spice/state.js +36 -0
  184. package/dist/kit/spice/time.d.ts +9 -0
  185. package/dist/kit/spice/time.js +31 -0
  186. package/dist/kit/types/spice-types.d.ts +51 -0
  187. package/dist/spice.d.ts +10 -1
  188. package/dist/spice.js +84 -72
  189. package/dist/transport/caching/policy.d.ts +16 -0
  190. package/dist/transport/caching/policy.js +77 -0
  191. package/dist/transport/caching/withCaching.d.ts +125 -0
  192. package/dist/transport/caching/withCaching.js +335 -0
  193. package/dist/transport/caching/withCachingSync.d.ts +24 -0
  194. package/dist/transport/caching/withCachingSync.js +161 -0
  195. package/dist/transport/rpc/protocol.d.ts +35 -0
  196. package/dist/transport/rpc/protocol.js +56 -0
  197. package/dist/transport/rpc/taskScheduling.d.ts +20 -0
  198. package/dist/transport/rpc/taskScheduling.js +98 -0
  199. package/dist/transport/rpc/valueCodec.d.ts +5 -0
  200. package/dist/transport/rpc/valueCodec.js +106 -0
  201. package/dist/transport/types.d.ts +7 -0
  202. package/dist/transport/types.js +2 -0
  203. package/dist/types.d.ts +8 -17
  204. package/dist/types.js +2 -1
  205. package/dist/worker/browser/createSpiceWorker.d.ts +22 -0
  206. package/dist/worker/browser/createSpiceWorker.js +41 -0
  207. package/dist/worker/browser/createSpiceWorkerClient.d.ts +40 -0
  208. package/dist/worker/browser/createSpiceWorkerClient.js +99 -0
  209. package/dist/worker/browser/spiceWorkerEntry.d.ts +2 -0
  210. package/dist/worker/browser/spiceWorkerEntry.js +129 -0
  211. package/dist/worker/browser/spiceWorkerInlineSource.d.ts +2 -0
  212. package/dist/worker/browser/spiceWorkerInlineSource.js +4 -0
  213. package/dist/worker/index.d.ts +10 -0
  214. package/dist/worker/index.js +7 -0
  215. package/dist/worker/transport/createWorkerTransport.d.ts +69 -0
  216. package/dist/worker/transport/createWorkerTransport.js +398 -0
  217. package/dist/worker/transport/exposeTransportToWorker.d.ts +51 -0
  218. package/dist/worker/transport/exposeTransportToWorker.js +196 -0
  219. package/package.json +4 -4
  220. package/dist/spice-types.d.ts +0 -36
  221. /package/dist/{spice-types.js → kit/types/spice-types.js} +0 -0
@@ -0,0 +1,5 @@
1
+ import type { GeometryGfApi } from "#backend-contract";
2
+ import type { EmscriptenModule } from "../lowlevel/exports.js";
3
+ /** Create a {@link GeometryGfApi} implementation backed by a WASM Emscripten module. */
4
+ export declare function createGeometryGfApi(module: EmscriptenModule): GeometryGfApi;
5
+ //# sourceMappingURL=geometry-gf.d.ts.map
@@ -0,0 +1,178 @@
1
+ import { assertSpiceInt32 } from "#backend-contract";
2
+ import { withAllocs, withMalloc, WASM_ERR_MAX_BYTES } from "../codec/alloc.js";
3
+ import { throwWasmSpiceError } from "../codec/errors.js";
4
+ import { writeUtf8CString } from "../codec/strings.js";
5
+ import { assertWasmOwnedWindowHandle } from "./cells-windows.js";
6
+ function assertFiniteNumber(value, context) {
7
+ if (typeof value !== "number" || !Number.isFinite(value)) {
8
+ throw new RangeError(`${context}: expected a finite number (got ${value})`);
9
+ }
10
+ }
11
+ function tspiceCallGfsstp(module, step) {
12
+ withMalloc(module, WASM_ERR_MAX_BYTES, (errPtr) => {
13
+ const result = module._tspice_gfsstp(step, errPtr, WASM_ERR_MAX_BYTES);
14
+ if (result !== 0) {
15
+ throwWasmSpiceError(module, errPtr, WASM_ERR_MAX_BYTES, result);
16
+ }
17
+ });
18
+ }
19
+ function tspiceCallGfstep(module, time) {
20
+ return withAllocs(module, [WASM_ERR_MAX_BYTES, 8], (errPtr, outStepPtr) => {
21
+ module.HEAPF64[outStepPtr >> 3] = 0;
22
+ const result = module._tspice_gfstep(time, outStepPtr, errPtr, WASM_ERR_MAX_BYTES);
23
+ if (result !== 0) {
24
+ throwWasmSpiceError(module, errPtr, WASM_ERR_MAX_BYTES, result);
25
+ }
26
+ const out = module.HEAPF64[outStepPtr >> 3];
27
+ assertFiniteNumber(out, "gfstep(): return value");
28
+ return out;
29
+ });
30
+ }
31
+ function tspiceCallGfstol(module, value) {
32
+ withMalloc(module, WASM_ERR_MAX_BYTES, (errPtr) => {
33
+ const result = module._tspice_gfstol(value, errPtr, WASM_ERR_MAX_BYTES);
34
+ if (result !== 0) {
35
+ throwWasmSpiceError(module, errPtr, WASM_ERR_MAX_BYTES, result);
36
+ }
37
+ });
38
+ }
39
+ function tspiceCallGfrefn(module, t1, t2, s1, s2) {
40
+ return withAllocs(module, [WASM_ERR_MAX_BYTES, 8], (errPtr, outTPtr) => {
41
+ module.HEAPF64[outTPtr >> 3] = 0;
42
+ const result = module._tspice_gfrefn(t1, t2, s1 ? 1 : 0, s2 ? 1 : 0, outTPtr, errPtr, WASM_ERR_MAX_BYTES);
43
+ if (result !== 0) {
44
+ throwWasmSpiceError(module, errPtr, WASM_ERR_MAX_BYTES, result);
45
+ }
46
+ const out = module.HEAPF64[outTPtr >> 3];
47
+ assertFiniteNumber(out, "gfrefn(): return value");
48
+ return out;
49
+ });
50
+ }
51
+ function tspiceCallGfrepi(module, window, begmss, endmss) {
52
+ withMalloc(module, WASM_ERR_MAX_BYTES, (errPtr) => {
53
+ const begmssPtr = writeUtf8CString(module, begmss);
54
+ const endmssPtr = writeUtf8CString(module, endmss);
55
+ if (!begmssPtr || !endmssPtr) {
56
+ if (endmssPtr)
57
+ module._free(endmssPtr);
58
+ if (begmssPtr)
59
+ module._free(begmssPtr);
60
+ throw new Error("WASM malloc failed");
61
+ }
62
+ try {
63
+ const result = module._tspice_gfrepi(window, begmssPtr, endmssPtr, errPtr, WASM_ERR_MAX_BYTES);
64
+ if (result !== 0) {
65
+ throwWasmSpiceError(module, errPtr, WASM_ERR_MAX_BYTES, result);
66
+ }
67
+ }
68
+ finally {
69
+ module._free(endmssPtr);
70
+ module._free(begmssPtr);
71
+ }
72
+ });
73
+ }
74
+ function tspiceCallGfrepf(module) {
75
+ withMalloc(module, WASM_ERR_MAX_BYTES, (errPtr) => {
76
+ const result = module._tspice_gfrepf(errPtr, WASM_ERR_MAX_BYTES);
77
+ if (result !== 0) {
78
+ throwWasmSpiceError(module, errPtr, WASM_ERR_MAX_BYTES, result);
79
+ }
80
+ });
81
+ }
82
+ function tspiceCallGfsep(module, targ1, shape1, frame1, targ2, shape2, frame2, abcorr, obsrvr, relate, refval, adjust, step, nintvls, cnfine, resultWindow) {
83
+ withMalloc(module, WASM_ERR_MAX_BYTES, (errPtr) => {
84
+ const targ1Ptr = writeUtf8CString(module, targ1);
85
+ const shape1Ptr = writeUtf8CString(module, shape1);
86
+ const frame1Ptr = writeUtf8CString(module, frame1);
87
+ const targ2Ptr = writeUtf8CString(module, targ2);
88
+ const shape2Ptr = writeUtf8CString(module, shape2);
89
+ const frame2Ptr = writeUtf8CString(module, frame2);
90
+ const abcorrPtr = writeUtf8CString(module, abcorr);
91
+ const obsrvrPtr = writeUtf8CString(module, obsrvr);
92
+ const relatePtr = writeUtf8CString(module, relate);
93
+ if (!targ1Ptr || !shape1Ptr || !frame1Ptr || !targ2Ptr || !shape2Ptr || !frame2Ptr || !abcorrPtr || !obsrvrPtr || !relatePtr) {
94
+ for (const ptr of [relatePtr, obsrvrPtr, abcorrPtr, frame2Ptr, shape2Ptr, targ2Ptr, frame1Ptr, shape1Ptr, targ1Ptr]) {
95
+ if (ptr)
96
+ module._free(ptr);
97
+ }
98
+ throw new Error("WASM malloc failed");
99
+ }
100
+ try {
101
+ const out = module._tspice_gfsep(targ1Ptr, shape1Ptr, frame1Ptr, targ2Ptr, shape2Ptr, frame2Ptr, abcorrPtr, obsrvrPtr, relatePtr, refval, adjust, step, nintvls, cnfine, resultWindow, errPtr, WASM_ERR_MAX_BYTES);
102
+ if (out !== 0) {
103
+ throwWasmSpiceError(module, errPtr, WASM_ERR_MAX_BYTES, out);
104
+ }
105
+ }
106
+ finally {
107
+ module._free(relatePtr);
108
+ module._free(obsrvrPtr);
109
+ module._free(abcorrPtr);
110
+ module._free(frame2Ptr);
111
+ module._free(shape2Ptr);
112
+ module._free(targ2Ptr);
113
+ module._free(frame1Ptr);
114
+ module._free(shape1Ptr);
115
+ module._free(targ1Ptr);
116
+ }
117
+ });
118
+ }
119
+ function tspiceCallGfdist(module, target, abcorr, obsrvr, relate, refval, adjust, step, nintvls, cnfine, resultWindow) {
120
+ withMalloc(module, WASM_ERR_MAX_BYTES, (errPtr) => {
121
+ const targetPtr = writeUtf8CString(module, target);
122
+ const abcorrPtr = writeUtf8CString(module, abcorr);
123
+ const obsrvrPtr = writeUtf8CString(module, obsrvr);
124
+ const relatePtr = writeUtf8CString(module, relate);
125
+ if (!targetPtr || !abcorrPtr || !obsrvrPtr || !relatePtr) {
126
+ for (const ptr of [relatePtr, obsrvrPtr, abcorrPtr, targetPtr]) {
127
+ if (ptr)
128
+ module._free(ptr);
129
+ }
130
+ throw new Error("WASM malloc failed");
131
+ }
132
+ try {
133
+ const out = module._tspice_gfdist(targetPtr, abcorrPtr, obsrvrPtr, relatePtr, refval, adjust, step, nintvls, cnfine, resultWindow, errPtr, WASM_ERR_MAX_BYTES);
134
+ if (out !== 0) {
135
+ throwWasmSpiceError(module, errPtr, WASM_ERR_MAX_BYTES, out);
136
+ }
137
+ }
138
+ finally {
139
+ module._free(relatePtr);
140
+ module._free(obsrvrPtr);
141
+ module._free(abcorrPtr);
142
+ module._free(targetPtr);
143
+ }
144
+ });
145
+ }
146
+ /** Create a {@link GeometryGfApi} implementation backed by a WASM Emscripten module. */
147
+ export function createGeometryGfApi(module) {
148
+ return {
149
+ gfsstp: (step) => tspiceCallGfsstp(module, step),
150
+ gfstep: (time) => tspiceCallGfstep(module, time),
151
+ gfstol: (value) => tspiceCallGfstol(module, value),
152
+ gfrefn: (t1, t2, s1, s2) => tspiceCallGfrefn(module, t1, t2, s1, s2),
153
+ gfrepi: (window, begmss, endmss) => {
154
+ assertWasmOwnedWindowHandle(module, window, "gfrepi(window)");
155
+ tspiceCallGfrepi(module, window, begmss, endmss);
156
+ },
157
+ gfrepf: () => tspiceCallGfrepf(module),
158
+ gfsep: (targ1, shape1, frame1, targ2, shape2, frame2, abcorr, obsrvr, relate, refval, adjust, step, nintvls, cnfine, result) => {
159
+ assertSpiceInt32(nintvls, "gfsep(nintvls)", { min: 1 });
160
+ assertFiniteNumber(refval, "gfsep(refval)");
161
+ assertFiniteNumber(adjust, "gfsep(adjust)");
162
+ assertFiniteNumber(step, "gfsep(step)");
163
+ assertWasmOwnedWindowHandle(module, cnfine, "gfsep(cnfine)");
164
+ assertWasmOwnedWindowHandle(module, result, "gfsep(result)");
165
+ tspiceCallGfsep(module, targ1, shape1, frame1, targ2, shape2, frame2, abcorr, obsrvr, relate, refval, adjust, step, nintvls, cnfine, result);
166
+ },
167
+ gfdist: (target, abcorr, obsrvr, relate, refval, adjust, step, nintvls, cnfine, result) => {
168
+ assertSpiceInt32(nintvls, "gfdist(nintvls)", { min: 1 });
169
+ assertFiniteNumber(refval, "gfdist(refval)");
170
+ assertFiniteNumber(adjust, "gfdist(adjust)");
171
+ assertFiniteNumber(step, "gfdist(step)");
172
+ assertWasmOwnedWindowHandle(module, cnfine, "gfdist(cnfine)");
173
+ assertWasmOwnedWindowHandle(module, result, "gfdist(result)");
174
+ tspiceCallGfdist(module, target, abcorr, obsrvr, relate, refval, adjust, step, nintvls, cnfine, result);
175
+ },
176
+ };
177
+ }
178
+ //# sourceMappingURL=geometry-gf.js.map
@@ -1,4 +1,5 @@
1
1
  import type { GeometryApi } from "#backend-contract";
2
2
  import type { EmscriptenModule } from "../lowlevel/exports.js";
3
+ /** Create a {@link GeometryApi} implementation backed by a WASM Emscripten module. */
3
4
  export declare function createGeometryApi(module: EmscriptenModule): GeometryApi;
4
5
  //# sourceMappingURL=geometry.d.ts.map
@@ -188,6 +188,181 @@ function tspiceCallIlumin(module, method, target, et, fixref, abcorr, observer,
188
188
  module._free(errPtr);
189
189
  }
190
190
  }
191
+ function tspiceCallIllumg(module, method, target, ilusrc, et, fixref, abcorr, observer, spoint) {
192
+ const errMaxBytes = 2048;
193
+ const errPtr = module._malloc(errMaxBytes);
194
+ const methodPtr = writeUtf8CString(module, method);
195
+ const targetPtr = writeUtf8CString(module, target);
196
+ const ilusrcPtr = writeUtf8CString(module, ilusrc);
197
+ const fixrefPtr = writeUtf8CString(module, fixref);
198
+ const abcorrPtr = writeUtf8CString(module, abcorr);
199
+ const observerPtr = writeUtf8CString(module, observer);
200
+ const spointPtr = module._malloc(3 * 8);
201
+ const outTrgepcPtr = module._malloc(8);
202
+ const outSrfvecPtr = module._malloc(3 * 8);
203
+ const outPhasePtr = module._malloc(8);
204
+ const outIncdncPtr = module._malloc(8);
205
+ const outEmissnPtr = module._malloc(8);
206
+ if (!errPtr || !methodPtr || !targetPtr || !ilusrcPtr || !fixrefPtr || !abcorrPtr || !observerPtr || !spointPtr || !outTrgepcPtr || !outSrfvecPtr || !outPhasePtr || !outIncdncPtr || !outEmissnPtr) {
207
+ for (const ptr of [outEmissnPtr, outIncdncPtr, outPhasePtr, outSrfvecPtr, outTrgepcPtr, spointPtr, observerPtr, abcorrPtr, fixrefPtr, ilusrcPtr, targetPtr, methodPtr, errPtr]) {
208
+ if (ptr)
209
+ module._free(ptr);
210
+ }
211
+ throw new Error("WASM malloc failed");
212
+ }
213
+ try {
214
+ module.HEAPF64.set(spoint, spointPtr >> 3);
215
+ module.HEAPF64[outTrgepcPtr >> 3] = 0;
216
+ module.HEAPF64[outPhasePtr >> 3] = 0;
217
+ module.HEAPF64[outIncdncPtr >> 3] = 0;
218
+ module.HEAPF64[outEmissnPtr >> 3] = 0;
219
+ const result = module._tspice_illumg(methodPtr, targetPtr, ilusrcPtr, et, fixrefPtr, abcorrPtr, observerPtr, spointPtr, outTrgepcPtr, outSrfvecPtr, outPhasePtr, outIncdncPtr, outEmissnPtr, errPtr, errMaxBytes);
220
+ if (result !== 0) {
221
+ throwWasmSpiceError(module, errPtr, errMaxBytes, result);
222
+ }
223
+ const trgepc = module.HEAPF64[outTrgepcPtr >> 3] ?? 0;
224
+ const srfvec = Array.from(module.HEAPF64.subarray(outSrfvecPtr >> 3, (outSrfvecPtr >> 3) + 3));
225
+ const phase = module.HEAPF64[outPhasePtr >> 3] ?? 0;
226
+ const incdnc = module.HEAPF64[outIncdncPtr >> 3] ?? 0;
227
+ const emissn = module.HEAPF64[outEmissnPtr >> 3] ?? 0;
228
+ return { trgepc, srfvec, phase, incdnc, emissn };
229
+ }
230
+ finally {
231
+ module._free(outEmissnPtr);
232
+ module._free(outIncdncPtr);
233
+ module._free(outPhasePtr);
234
+ module._free(outSrfvecPtr);
235
+ module._free(outTrgepcPtr);
236
+ module._free(spointPtr);
237
+ module._free(observerPtr);
238
+ module._free(abcorrPtr);
239
+ module._free(fixrefPtr);
240
+ module._free(ilusrcPtr);
241
+ module._free(targetPtr);
242
+ module._free(methodPtr);
243
+ module._free(errPtr);
244
+ }
245
+ }
246
+ function tspiceCallIllumf(module, method, target, ilusrc, et, fixref, abcorr, observer, spoint) {
247
+ const errMaxBytes = 2048;
248
+ const errPtr = module._malloc(errMaxBytes);
249
+ const methodPtr = writeUtf8CString(module, method);
250
+ const targetPtr = writeUtf8CString(module, target);
251
+ const ilusrcPtr = writeUtf8CString(module, ilusrc);
252
+ const fixrefPtr = writeUtf8CString(module, fixref);
253
+ const abcorrPtr = writeUtf8CString(module, abcorr);
254
+ const observerPtr = writeUtf8CString(module, observer);
255
+ const spointPtr = module._malloc(3 * 8);
256
+ const outTrgepcPtr = module._malloc(8);
257
+ const outSrfvecPtr = module._malloc(3 * 8);
258
+ const outPhasePtr = module._malloc(8);
259
+ const outIncdncPtr = module._malloc(8);
260
+ const outEmissnPtr = module._malloc(8);
261
+ const outVisiblPtr = module._malloc(4);
262
+ const outLitPtr = module._malloc(4);
263
+ if (!errPtr || !methodPtr || !targetPtr || !ilusrcPtr || !fixrefPtr || !abcorrPtr || !observerPtr || !spointPtr || !outTrgepcPtr || !outSrfvecPtr || !outPhasePtr || !outIncdncPtr || !outEmissnPtr || !outVisiblPtr || !outLitPtr) {
264
+ for (const ptr of [outLitPtr, outVisiblPtr, outEmissnPtr, outIncdncPtr, outPhasePtr, outSrfvecPtr, outTrgepcPtr, spointPtr, observerPtr, abcorrPtr, fixrefPtr, ilusrcPtr, targetPtr, methodPtr, errPtr]) {
265
+ if (ptr)
266
+ module._free(ptr);
267
+ }
268
+ throw new Error("WASM malloc failed");
269
+ }
270
+ try {
271
+ module.HEAPF64.set(spoint, spointPtr >> 3);
272
+ module.HEAPF64[outTrgepcPtr >> 3] = 0;
273
+ module.HEAPF64[outPhasePtr >> 3] = 0;
274
+ module.HEAPF64[outIncdncPtr >> 3] = 0;
275
+ module.HEAPF64[outEmissnPtr >> 3] = 0;
276
+ module.HEAP32[outVisiblPtr >> 2] = 0;
277
+ module.HEAP32[outLitPtr >> 2] = 0;
278
+ const result = module._tspice_illumf(methodPtr, targetPtr, ilusrcPtr, et, fixrefPtr, abcorrPtr, observerPtr, spointPtr, outTrgepcPtr, outSrfvecPtr, outPhasePtr, outIncdncPtr, outEmissnPtr, outVisiblPtr, outLitPtr, errPtr, errMaxBytes);
279
+ if (result !== 0) {
280
+ throwWasmSpiceError(module, errPtr, errMaxBytes, result);
281
+ }
282
+ const trgepc = module.HEAPF64[outTrgepcPtr >> 3] ?? 0;
283
+ const srfvec = Array.from(module.HEAPF64.subarray(outSrfvecPtr >> 3, (outSrfvecPtr >> 3) + 3));
284
+ const phase = module.HEAPF64[outPhasePtr >> 3] ?? 0;
285
+ const incdnc = module.HEAPF64[outIncdncPtr >> 3] ?? 0;
286
+ const emissn = module.HEAPF64[outEmissnPtr >> 3] ?? 0;
287
+ const visibl = module.HEAP32[outVisiblPtr >> 2] ?? 0;
288
+ const lit = module.HEAP32[outLitPtr >> 2] ?? 0;
289
+ return { trgepc, srfvec, phase, incdnc, emissn, visibl: Boolean(visibl), lit: Boolean(lit) };
290
+ }
291
+ finally {
292
+ module._free(outLitPtr);
293
+ module._free(outVisiblPtr);
294
+ module._free(outEmissnPtr);
295
+ module._free(outIncdncPtr);
296
+ module._free(outPhasePtr);
297
+ module._free(outSrfvecPtr);
298
+ module._free(outTrgepcPtr);
299
+ module._free(spointPtr);
300
+ module._free(observerPtr);
301
+ module._free(abcorrPtr);
302
+ module._free(fixrefPtr);
303
+ module._free(ilusrcPtr);
304
+ module._free(targetPtr);
305
+ module._free(methodPtr);
306
+ module._free(errPtr);
307
+ }
308
+ }
309
+ function tspiceCallNvc2pl(module, normal, konst) {
310
+ const errMaxBytes = 2048;
311
+ const errPtr = module._malloc(errMaxBytes);
312
+ const normalPtr = module._malloc(3 * 8);
313
+ const outPlanePtr = module._malloc(4 * 8);
314
+ if (!errPtr || !normalPtr || !outPlanePtr) {
315
+ for (const ptr of [outPlanePtr, normalPtr, errPtr]) {
316
+ if (ptr)
317
+ module._free(ptr);
318
+ }
319
+ throw new Error("WASM malloc failed");
320
+ }
321
+ try {
322
+ module.HEAPF64.set(normal, normalPtr >> 3);
323
+ const result = module._tspice_nvc2pl(normalPtr, konst, outPlanePtr, errPtr, errMaxBytes);
324
+ if (result !== 0) {
325
+ throwWasmSpiceError(module, errPtr, errMaxBytes, result);
326
+ }
327
+ return Array.from(module.HEAPF64.subarray(outPlanePtr >> 3, (outPlanePtr >> 3) + 4));
328
+ }
329
+ finally {
330
+ module._free(outPlanePtr);
331
+ module._free(normalPtr);
332
+ module._free(errPtr);
333
+ }
334
+ }
335
+ function tspiceCallPl2nvc(module, plane) {
336
+ const errMaxBytes = 2048;
337
+ const errPtr = module._malloc(errMaxBytes);
338
+ const planePtr = module._malloc(4 * 8);
339
+ const outNormalPtr = module._malloc(3 * 8);
340
+ const outKonstPtr = module._malloc(8);
341
+ if (!errPtr || !planePtr || !outNormalPtr || !outKonstPtr) {
342
+ for (const ptr of [outKonstPtr, outNormalPtr, planePtr, errPtr]) {
343
+ if (ptr)
344
+ module._free(ptr);
345
+ }
346
+ throw new Error("WASM malloc failed");
347
+ }
348
+ try {
349
+ module.HEAPF64.set(plane, planePtr >> 3);
350
+ module.HEAPF64[outKonstPtr >> 3] = 0;
351
+ const result = module._tspice_pl2nvc(planePtr, outNormalPtr, outKonstPtr, errPtr, errMaxBytes);
352
+ if (result !== 0) {
353
+ throwWasmSpiceError(module, errPtr, errMaxBytes, result);
354
+ }
355
+ const normal = Array.from(module.HEAPF64.subarray(outNormalPtr >> 3, (outNormalPtr >> 3) + 3));
356
+ const konst = module.HEAPF64[outKonstPtr >> 3] ?? 0;
357
+ return { normal, konst };
358
+ }
359
+ finally {
360
+ module._free(outKonstPtr);
361
+ module._free(outNormalPtr);
362
+ module._free(planePtr);
363
+ module._free(errPtr);
364
+ }
365
+ }
191
366
  function tspiceCallOccult(module, targ1, shape1, frame1, targ2, shape2, frame2, abcorr, observer, et) {
192
367
  const errMaxBytes = 2048;
193
368
  const errPtr = module._malloc(errMaxBytes);
@@ -228,13 +403,48 @@ function tspiceCallOccult(module, targ1, shape1, frame1, targ2, shape2, frame2,
228
403
  module._free(errPtr);
229
404
  }
230
405
  }
406
+ function assertFiniteNumberArrayFixed(value, expectedLength, label) {
407
+ if (!Array.isArray(value) || value.length !== expectedLength) {
408
+ throw new TypeError(`${label}: expected a length-${expectedLength} array`);
409
+ }
410
+ for (let i = 0; i < expectedLength; i++) {
411
+ const v = value[i];
412
+ if (typeof v !== "number") {
413
+ throw new TypeError(`${label}[${i}]: expected a number`);
414
+ }
415
+ if (!Number.isFinite(v)) {
416
+ throw new RangeError(`${label}[${i}]: expected a finite number`);
417
+ }
418
+ }
419
+ }
420
+ /** Create a {@link GeometryApi} implementation backed by a WASM Emscripten module. */
231
421
  export function createGeometryApi(module) {
232
422
  return {
233
423
  subpnt: (method, target, et, fixref, abcorr, observer) => tspiceCallSubpnt(module, method, target, et, fixref, abcorr, observer),
234
424
  subslr: (method, target, et, fixref, abcorr, observer) => tspiceCallSubslr(module, method, target, et, fixref, abcorr, observer),
235
425
  sincpt: (method, target, et, fixref, abcorr, observer, dref, dvec) => tspiceCallSincpt(module, method, target, et, fixref, abcorr, observer, dref, dvec),
236
426
  ilumin: (method, target, et, fixref, abcorr, observer, spoint) => tspiceCallIlumin(module, method, target, et, fixref, abcorr, observer, spoint),
427
+ illumg: (method, target, ilusrc, et, fixref, abcorr, observer, spoint) => tspiceCallIllumg(module, method, target, ilusrc, et, fixref, abcorr, observer, spoint),
428
+ illumf: (method, target, ilusrc, et, fixref, abcorr, observer, spoint) => tspiceCallIllumf(module, method, target, ilusrc, et, fixref, abcorr, observer, spoint),
237
429
  occult: (targ1, shape1, frame1, targ2, shape2, frame2, abcorr, observer, et) => tspiceCallOccult(module, targ1, shape1, frame1, targ2, shape2, frame2, abcorr, observer, et),
430
+ nvc2pl: (normal, konst) => {
431
+ assertFiniteNumberArrayFixed(normal, 3, "nvc2pl(): normal");
432
+ if (!Number.isFinite(konst)) {
433
+ throw new RangeError("nvc2pl(): konst must be a finite number");
434
+ }
435
+ const out = tspiceCallNvc2pl(module, normal, konst);
436
+ assertFiniteNumberArrayFixed(out, 4, "nvc2pl(): result");
437
+ return out;
438
+ },
439
+ pl2nvc: (plane) => {
440
+ assertFiniteNumberArrayFixed(plane, 4, "pl2nvc(): plane");
441
+ const out = tspiceCallPl2nvc(module, plane);
442
+ assertFiniteNumberArrayFixed(out.normal, 3, "pl2nvc(): normal");
443
+ if (!Number.isFinite(out.konst)) {
444
+ throw new RangeError("pl2nvc(): konst must be a finite number");
445
+ }
446
+ return out;
447
+ },
238
448
  };
239
449
  }
240
450
  //# sourceMappingURL=geometry.js.map
@@ -1,4 +1,5 @@
1
- import type { IdsNamesApi } from "#backend-contract";
1
+ import { type IdsNamesApi } from "#backend-contract";
2
2
  import type { EmscriptenModule } from "../lowlevel/exports.js";
3
+ /** Create an {@link IdsNamesApi} implementation backed by a WASM Emscripten module. */
3
4
  export declare function createIdsNamesApi(module: EmscriptenModule): IdsNamesApi;
4
5
  //# sourceMappingURL=ids-names.d.ts.map
@@ -1,4 +1,83 @@
1
+ import { normalizeBodItem } from "#backend-contract";
2
+ import { WASM_ERR_MAX_BYTES, withAllocs } from "../codec/alloc.js";
3
+ import { throwWasmSpiceError } from "../codec/errors.js";
4
+ import { readFixedWidthCString, writeUtf8CString } from "../codec/strings.js";
1
5
  import { tspiceCallFoundInt, tspiceCallFoundString } from "../codec/found.js";
6
+ const BODY_NAME_MAX_BYTES = 256;
7
+ const BODY_CONST_MAX_VALUES = 1024;
8
+ function tspiceCallBodc2s(module, code) {
9
+ return withAllocs(module, [WASM_ERR_MAX_BYTES, BODY_NAME_MAX_BYTES], (errPtr, outPtr) => {
10
+ module.HEAPU8[outPtr] = 0;
11
+ const result = module._tspice_bodc2s(code, outPtr, BODY_NAME_MAX_BYTES, errPtr, WASM_ERR_MAX_BYTES);
12
+ if (result !== 0) {
13
+ throwWasmSpiceError(module, errPtr, WASM_ERR_MAX_BYTES, result);
14
+ }
15
+ return readFixedWidthCString(module, outPtr, BODY_NAME_MAX_BYTES);
16
+ });
17
+ }
18
+ function tspiceCallBoddef(module, name, code) {
19
+ const namePtr = writeUtf8CString(module, name);
20
+ try {
21
+ return withAllocs(module, [WASM_ERR_MAX_BYTES], (errPtr) => {
22
+ const result = module._tspice_boddef(namePtr, code, errPtr, WASM_ERR_MAX_BYTES);
23
+ if (result !== 0) {
24
+ throwWasmSpiceError(module, errPtr, WASM_ERR_MAX_BYTES, result);
25
+ }
26
+ });
27
+ }
28
+ finally {
29
+ module._free(namePtr);
30
+ }
31
+ }
32
+ function tspiceCallBodfnd(module, body, item) {
33
+ // `bodfnd_c()` is an existence check: it returns true even when the pool var
34
+ // exists but is character-typed ('C') vs numeric ('N').
35
+ //
36
+ // IMPORTANT: NAIF `expool_c()` only reports numeric ('N') variables, so use
37
+ // `dtpool_c()` to check for existence regardless of type.
38
+ const bodyI = body | 0;
39
+ const poolVar = `BODY${bodyI}_${item}`;
40
+ const poolVarPtr = writeUtf8CString(module, poolVar);
41
+ const outTypeMaxBytes = 2;
42
+ try {
43
+ return withAllocs(module, [WASM_ERR_MAX_BYTES, 4, 4, outTypeMaxBytes], (errPtr, foundPtr, outNPtr, outTypePtr) => {
44
+ module.HEAP32[foundPtr >> 2] = 0;
45
+ module.HEAP32[outNPtr >> 2] = 0;
46
+ module.HEAPU8[outTypePtr] = 0;
47
+ const result = module._tspice_dtpool(poolVarPtr, foundPtr, outNPtr, outTypePtr, outTypeMaxBytes, errPtr, WASM_ERR_MAX_BYTES);
48
+ if (result !== 0) {
49
+ throwWasmSpiceError(module, errPtr, WASM_ERR_MAX_BYTES, result);
50
+ }
51
+ return (module.HEAP32[foundPtr >> 2] ?? 0) !== 0;
52
+ });
53
+ }
54
+ finally {
55
+ module._free(poolVarPtr);
56
+ }
57
+ }
58
+ function tspiceCallBodvar(module, body, item) {
59
+ const itemPtr = writeUtf8CString(module, item);
60
+ const maxn = BODY_CONST_MAX_VALUES;
61
+ try {
62
+ const valuesBytes = Math.max(8, maxn * 8);
63
+ return withAllocs(module, [WASM_ERR_MAX_BYTES, 4, valuesBytes + 7], (errPtr, outDimPtr, rawValuesPtr) => {
64
+ module.HEAP32[outDimPtr >> 2] = 0;
65
+ // Ensure 8-byte alignment for `HEAPF64` reads.
66
+ const valuesPtr = (rawValuesPtr + 7) & ~7;
67
+ const result = module._tspice_bodvar(body, itemPtr, maxn, outDimPtr, valuesPtr, errPtr, WASM_ERR_MAX_BYTES);
68
+ if (result !== 0) {
69
+ throwWasmSpiceError(module, errPtr, WASM_ERR_MAX_BYTES, result);
70
+ }
71
+ const dimRaw = module.HEAP32[outDimPtr >> 2] ?? 0;
72
+ const dim = Math.min(maxn, Math.max(0, dimRaw));
73
+ return Array.from(module.HEAPF64.subarray(valuesPtr >> 3, (valuesPtr >> 3) + dim));
74
+ });
75
+ }
76
+ finally {
77
+ module._free(itemPtr);
78
+ }
79
+ }
80
+ /** Create an {@link IdsNamesApi} implementation backed by a WASM Emscripten module. */
2
81
  export function createIdsNamesApi(module) {
3
82
  return {
4
83
  bodn2c: (name) => {
@@ -13,6 +92,16 @@ export function createIdsNamesApi(module) {
13
92
  return { found: false };
14
93
  return { found: true, name: out.value };
15
94
  },
95
+ bodc2s: (code) => tspiceCallBodc2s(module, code),
96
+ bods2c: (name) => {
97
+ const out = tspiceCallFoundInt(module, module._tspice_bods2c, name);
98
+ if (!out.found)
99
+ return { found: false };
100
+ return { found: true, code: out.value };
101
+ },
102
+ boddef: (name, code) => tspiceCallBoddef(module, name, code),
103
+ bodfnd: (body, item) => tspiceCallBodfnd(module, body, normalizeBodItem(item)),
104
+ bodvar: (body, item) => tspiceCallBodvar(module, body, normalizeBodItem(item)),
16
105
  };
17
106
  }
18
107
  //# sourceMappingURL=ids-names.js.map
@@ -0,0 +1,5 @@
1
+ import type { KernelPoolApi } from "#backend-contract";
2
+ import type { EmscriptenModule } from "../lowlevel/exports.js";
3
+ /** Create a {@link KernelPoolApi} implementation backed by a WASM Emscripten module. */
4
+ export declare function createKernelPoolApi(module: EmscriptenModule): KernelPoolApi;
5
+ //# sourceMappingURL=kernel-pool.d.ts.map