@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.
- package/README.md +145 -84
- package/backend-contract/dist/.tsbuildinfo +1 -1
- package/backend-contract/dist/domains/cells-windows.d.ts +94 -0
- package/backend-contract/dist/domains/cells-windows.js +10 -0
- package/backend-contract/dist/domains/coords-vectors.d.ts +53 -3
- package/backend-contract/dist/domains/dsk.d.ts +49 -0
- package/backend-contract/dist/domains/dsk.js +2 -0
- package/backend-contract/dist/domains/ek.d.ts +186 -0
- package/backend-contract/dist/domains/ek.js +8 -0
- package/backend-contract/dist/domains/ephemeris.d.ts +141 -3
- package/backend-contract/dist/domains/error.d.ts +42 -0
- package/backend-contract/dist/domains/error.js +33 -0
- package/backend-contract/dist/domains/file-io.d.ts +114 -0
- package/backend-contract/dist/domains/file-io.js +8 -0
- package/backend-contract/dist/domains/frames.d.ts +44 -4
- package/backend-contract/dist/domains/geometry-gf.d.ts +44 -0
- package/backend-contract/dist/domains/geometry-gf.js +14 -0
- package/backend-contract/dist/domains/geometry.d.ts +21 -1
- package/backend-contract/dist/domains/ids-names-normalize.d.ts +3 -0
- package/backend-contract/dist/domains/ids-names-normalize.js +74 -0
- package/backend-contract/dist/domains/ids-names.d.ts +37 -0
- package/backend-contract/dist/domains/kernel-pool.d.ts +134 -0
- package/backend-contract/dist/domains/kernel-pool.js +2 -0
- package/backend-contract/dist/domains/kernels-utils.d.ts +44 -0
- package/backend-contract/dist/domains/kernels-utils.js +265 -0
- package/backend-contract/dist/domains/kernels.d.ts +39 -3
- package/backend-contract/dist/domains/time.d.ts +102 -0
- package/backend-contract/dist/index.d.ts +34 -15
- package/backend-contract/dist/index.js +15 -1
- package/backend-contract/dist/shared/errors.d.ts +6 -0
- package/backend-contract/dist/shared/errors.js +8 -0
- package/backend-contract/dist/shared/mat3.d.ts +52 -0
- package/backend-contract/dist/shared/mat3.js +150 -0
- package/backend-contract/dist/shared/mat6.d.ts +34 -0
- package/backend-contract/dist/shared/mat6.js +116 -0
- package/backend-contract/dist/shared/spice-handles.d.ts +20 -0
- package/backend-contract/dist/shared/spice-handles.js +82 -0
- package/backend-contract/dist/shared/spice-int.d.ts +32 -0
- package/backend-contract/dist/shared/spice-int.js +41 -0
- package/backend-contract/dist/shared/types.d.ts +136 -5
- package/backend-contract/dist/shared/types.js +1 -1
- package/backend-contract/dist/shared/vec.d.ts +54 -0
- package/backend-contract/dist/shared/vec.js +162 -0
- package/backend-fake/dist/.tsbuildinfo +1 -1
- package/backend-fake/dist/index.d.ts +21 -1
- package/backend-fake/dist/index.js +1112 -33
- package/backend-node/dist/.tsbuildinfo +1 -1
- package/backend-node/dist/codec/arrays.d.ts +9 -0
- package/backend-node/dist/codec/arrays.js +36 -0
- package/backend-node/dist/codec/errors.d.ts +6 -6
- package/backend-node/dist/codec/errors.js +6 -6
- package/backend-node/dist/domains/cells-windows.d.ts +5 -0
- package/backend-node/dist/domains/cells-windows.js +112 -0
- package/backend-node/dist/domains/coords-vectors.d.ts +1 -0
- package/backend-node/dist/domains/coords-vectors.js +66 -0
- package/backend-node/dist/domains/dsk.d.ts +6 -0
- package/backend-node/dist/domains/dsk.js +108 -0
- package/backend-node/dist/domains/ek.d.ts +10 -0
- package/backend-node/dist/domains/ek.js +100 -0
- package/backend-node/dist/domains/ephemeris.d.ts +5 -1
- package/backend-node/dist/domains/ephemeris.js +150 -1
- package/backend-node/dist/domains/error.d.ts +5 -0
- package/backend-node/dist/domains/error.js +34 -0
- package/backend-node/dist/domains/file-io.d.ts +7 -0
- package/backend-node/dist/domains/file-io.js +105 -0
- package/backend-node/dist/domains/frames.d.ts +1 -0
- package/backend-node/dist/domains/frames.js +58 -6
- package/backend-node/dist/domains/geometry-gf.d.ts +5 -0
- package/backend-node/dist/domains/geometry-gf.js +74 -0
- package/backend-node/dist/domains/geometry.d.ts +1 -0
- package/backend-node/dist/domains/geometry.js +62 -0
- package/backend-node/dist/domains/ids-names.d.ts +2 -1
- package/backend-node/dist/domains/ids-names.js +30 -0
- package/backend-node/dist/domains/kernel-pool.d.ts +5 -0
- package/backend-node/dist/domains/kernel-pool.js +74 -0
- package/backend-node/dist/domains/kernels.d.ts +1 -0
- package/backend-node/dist/domains/kernels.js +100 -13
- package/backend-node/dist/domains/time.d.ts +1 -0
- package/backend-node/dist/domains/time.js +75 -1
- package/backend-node/dist/index.d.ts +5 -1
- package/backend-node/dist/index.js +62 -1
- package/backend-node/dist/lowlevel/binding.d.ts +3 -0
- package/backend-node/dist/lowlevel/binding.js +115 -0
- package/backend-node/dist/runtime/addon.d.ts +273 -2
- package/backend-node/dist/runtime/addon.js +3 -0
- package/backend-node/dist/runtime/kernel-staging.d.ts +17 -0
- package/backend-node/dist/runtime/kernel-staging.js +80 -7
- package/backend-node/dist/runtime/spice-handles.d.ts +3 -0
- package/backend-node/dist/runtime/spice-handles.js +2 -0
- package/backend-node/dist/runtime/virtual-output-staging.d.ts +16 -0
- package/backend-node/dist/runtime/virtual-output-staging.js +148 -0
- package/backend-wasm/dist/.tsbuildinfo +1 -1
- package/backend-wasm/dist/codec/alloc.d.ts +19 -0
- package/backend-wasm/dist/codec/alloc.js +64 -0
- package/backend-wasm/dist/codec/calls.d.ts +2 -0
- package/backend-wasm/dist/codec/calls.js +13 -24
- package/backend-wasm/dist/codec/errors.d.ts +6 -0
- package/backend-wasm/dist/codec/errors.js +34 -2
- package/backend-wasm/dist/codec/found.d.ts +2 -0
- package/backend-wasm/dist/codec/found.js +20 -43
- package/backend-wasm/dist/codec/strings.d.ts +31 -1
- package/backend-wasm/dist/codec/strings.js +93 -6
- package/backend-wasm/dist/domains/cells-windows.d.ts +9 -0
- package/backend-wasm/dist/domains/cells-windows.js +392 -0
- package/backend-wasm/dist/domains/coords-vectors.d.ts +1 -0
- package/backend-wasm/dist/domains/coords-vectors.js +377 -184
- package/backend-wasm/dist/domains/dsk.d.ts +6 -0
- package/backend-wasm/dist/domains/dsk.js +179 -0
- package/backend-wasm/dist/domains/ek.d.ts +6 -0
- package/backend-wasm/dist/domains/ek.js +543 -0
- package/backend-wasm/dist/domains/ephemeris.d.ts +4 -1
- package/backend-wasm/dist/domains/ephemeris.js +405 -46
- package/backend-wasm/dist/domains/error.d.ts +5 -0
- package/backend-wasm/dist/domains/error.js +109 -0
- package/backend-wasm/dist/domains/file-io.d.ts +7 -0
- package/backend-wasm/dist/domains/file-io.js +462 -0
- package/backend-wasm/dist/domains/frames.d.ts +1 -0
- package/backend-wasm/dist/domains/frames.js +139 -6
- package/backend-wasm/dist/domains/geometry-gf.d.ts +5 -0
- package/backend-wasm/dist/domains/geometry-gf.js +178 -0
- package/backend-wasm/dist/domains/geometry.d.ts +1 -0
- package/backend-wasm/dist/domains/geometry.js +210 -0
- package/backend-wasm/dist/domains/ids-names.d.ts +2 -1
- package/backend-wasm/dist/domains/ids-names.js +89 -0
- package/backend-wasm/dist/domains/kernel-pool.d.ts +5 -0
- package/backend-wasm/dist/domains/kernel-pool.js +357 -0
- package/backend-wasm/dist/domains/kernels.d.ts +1 -0
- package/backend-wasm/dist/domains/kernels.js +108 -4
- package/backend-wasm/dist/domains/time.d.ts +2 -0
- package/backend-wasm/dist/domains/time.js +235 -133
- package/backend-wasm/dist/index.d.ts +4 -2
- package/backend-wasm/dist/lowlevel/exports.d.ts +215 -1
- package/backend-wasm/dist/lowlevel/exports.js +217 -38
- package/backend-wasm/dist/runtime/create-backend-options.d.ts +21 -0
- package/backend-wasm/dist/runtime/create-backend.node.d.ts +11 -2
- package/backend-wasm/dist/runtime/create-backend.node.js +283 -14
- package/backend-wasm/dist/runtime/create-backend.web.d.ts +5 -2
- package/backend-wasm/dist/runtime/create-backend.web.js +40 -6
- package/backend-wasm/dist/runtime/fs.d.ts +6 -0
- package/backend-wasm/dist/runtime/fs.js +29 -3
- package/backend-wasm/dist/runtime/spice-handles.d.ts +3 -0
- package/backend-wasm/dist/runtime/spice-handles.js +2 -0
- package/backend-wasm/dist/runtime/virtual-outputs.d.ts +16 -0
- package/backend-wasm/dist/runtime/virtual-outputs.js +35 -0
- package/backend-wasm/dist/tspice_backend_wasm.node.js +3 -3
- package/backend-wasm/dist/tspice_backend_wasm.wasm +0 -0
- package/backend-wasm/dist/tspice_backend_wasm.web.js +1 -1
- package/core/dist/.tsbuildinfo +1 -1
- package/core/dist/index.d.ts +21 -0
- package/core/dist/index.js +57 -0
- package/dist/.tsbuildinfo +1 -1
- package/dist/backend.d.ts +15 -6
- package/dist/backend.js +3 -6
- package/dist/clients/createSpiceAsyncFromTransport.d.ts +5 -0
- package/dist/clients/createSpiceAsyncFromTransport.js +90 -0
- package/dist/clients/createSpiceSyncFromTransport.d.ts +5 -0
- package/dist/clients/createSpiceSyncFromTransport.js +88 -0
- package/dist/clients/spiceClients.d.ts +59 -0
- package/dist/clients/spiceClients.js +292 -0
- package/dist/errors.d.ts +4 -0
- package/dist/errors.js +4 -0
- package/dist/index.d.ts +12 -7
- package/dist/index.js +5 -2
- package/dist/kernels/defaultKernelPathFromUrl.d.ts +8 -0
- package/dist/kernels/defaultKernelPathFromUrl.js +32 -0
- package/dist/kernels/kernelPack.d.ts +88 -0
- package/dist/kernels/kernelPack.js +122 -0
- package/dist/kernels/kernels.d.ts +98 -0
- package/dist/kernels/kernels.js +217 -0
- package/dist/kernels/naifKernelId.d.ts +2 -0
- package/dist/kernels/naifKernelId.js +2 -0
- package/dist/kit/index.d.ts +4 -0
- package/dist/kit/index.js +3 -0
- package/dist/kit/math/mat3.d.ts +31 -0
- package/dist/kit/math/mat3.js +82 -0
- package/dist/kit/spice/create-kit.d.ts +12 -0
- package/dist/kit/spice/create-kit.js +23 -0
- package/dist/kit/spice/frames.d.ts +8 -0
- package/dist/kit/spice/frames.js +16 -0
- package/dist/kit/spice/kernels.d.ts +14 -0
- package/dist/kit/spice/kernels.js +39 -0
- package/dist/kit/spice/state.d.ts +7 -0
- package/dist/kit/spice/state.js +36 -0
- package/dist/kit/spice/time.d.ts +9 -0
- package/dist/kit/spice/time.js +31 -0
- package/dist/kit/types/spice-types.d.ts +51 -0
- package/dist/spice.d.ts +10 -1
- package/dist/spice.js +84 -72
- package/dist/transport/caching/policy.d.ts +16 -0
- package/dist/transport/caching/policy.js +77 -0
- package/dist/transport/caching/withCaching.d.ts +125 -0
- package/dist/transport/caching/withCaching.js +335 -0
- package/dist/transport/caching/withCachingSync.d.ts +24 -0
- package/dist/transport/caching/withCachingSync.js +161 -0
- package/dist/transport/rpc/protocol.d.ts +35 -0
- package/dist/transport/rpc/protocol.js +56 -0
- package/dist/transport/rpc/taskScheduling.d.ts +20 -0
- package/dist/transport/rpc/taskScheduling.js +98 -0
- package/dist/transport/rpc/valueCodec.d.ts +5 -0
- package/dist/transport/rpc/valueCodec.js +106 -0
- package/dist/transport/types.d.ts +7 -0
- package/dist/transport/types.js +2 -0
- package/dist/types.d.ts +8 -17
- package/dist/types.js +2 -1
- package/dist/worker/browser/createSpiceWorker.d.ts +22 -0
- package/dist/worker/browser/createSpiceWorker.js +41 -0
- package/dist/worker/browser/createSpiceWorkerClient.d.ts +40 -0
- package/dist/worker/browser/createSpiceWorkerClient.js +99 -0
- package/dist/worker/browser/spiceWorkerEntry.d.ts +2 -0
- package/dist/worker/browser/spiceWorkerEntry.js +129 -0
- package/dist/worker/browser/spiceWorkerInlineSource.d.ts +2 -0
- package/dist/worker/browser/spiceWorkerInlineSource.js +4 -0
- package/dist/worker/index.d.ts +10 -0
- package/dist/worker/index.js +7 -0
- package/dist/worker/transport/createWorkerTransport.d.ts +69 -0
- package/dist/worker/transport/createWorkerTransport.js +398 -0
- package/dist/worker/transport/exposeTransportToWorker.d.ts +51 -0
- package/dist/worker/transport/exposeTransportToWorker.js +196 -0
- package/package.json +4 -4
- package/dist/spice-types.d.ts +0 -36
- /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
|
|
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
|