flatsql 3.11.1 → 3.12.1

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 (181) hide show
  1. package/README.md +61 -795
  2. package/bin/flatsql.mjs +76 -0
  3. package/cpp/README.md +18 -0
  4. package/cpp/include/flatsql/flatsql.h +162 -0
  5. package/cpp/include/flatsql/flatsql_io.h +159 -0
  6. package/docs/API-3.12.md +126 -0
  7. package/package.json +28 -123
  8. package/wasm/flatsql.wasm +0 -0
  9. package/wasm/index.d.ts +61 -548
  10. package/wasm/index.js +280 -1281
  11. package/wasm/integrity.json +6 -26
  12. package/wasm/runtime/LICENSE.sdk.txt +190 -0
  13. package/wasm/runtime/NOTICE.txt +2 -0
  14. package/wasm/runtime/browser-guest.mjs +1 -0
  15. package/wasm/runtime/browser-host.mjs +1 -0
  16. package/wasm/runtime/node-guest.mjs +2 -0
  17. package/wasm/runtime/node-host.mjs +5 -0
  18. package/wasm/runtime/opfsIoWorker.mjs +1 -0
  19. package/wasm/runtime/wasiThreadBrowserWorker.mjs +1 -0
  20. package/dist/artifacts/index.d.ts +0 -3
  21. package/dist/artifacts/index.d.ts.map +0 -1
  22. package/dist/artifacts/index.js +0 -3
  23. package/dist/artifacts/index.js.map +0 -1
  24. package/dist/artifacts/transport.d.ts +0 -5
  25. package/dist/artifacts/transport.d.ts.map +0 -1
  26. package/dist/artifacts/transport.js +0 -45
  27. package/dist/artifacts/transport.js.map +0 -1
  28. package/dist/artifacts/types.d.ts +0 -34
  29. package/dist/artifacts/types.d.ts.map +0 -1
  30. package/dist/artifacts/types.js +0 -2
  31. package/dist/artifacts/types.js.map +0 -1
  32. package/dist/btree/btree.d.ts +0 -34
  33. package/dist/btree/btree.d.ts.map +0 -1
  34. package/dist/btree/btree.js +0 -234
  35. package/dist/btree/btree.js.map +0 -1
  36. package/dist/btree/index.d.ts +0 -3
  37. package/dist/btree/index.d.ts.map +0 -1
  38. package/dist/btree/index.js +0 -3
  39. package/dist/btree/index.js.map +0 -1
  40. package/dist/btree/types.d.ts +0 -36
  41. package/dist/btree/types.d.ts.map +0 -1
  42. package/dist/btree/types.js +0 -55
  43. package/dist/btree/types.js.map +0 -1
  44. package/dist/cluster/index.d.ts +0 -11
  45. package/dist/cluster/index.d.ts.map +0 -1
  46. package/dist/cluster/index.js +0 -59
  47. package/dist/cluster/index.js.map +0 -1
  48. package/dist/response/artifact.d.ts +0 -4
  49. package/dist/response/artifact.d.ts.map +0 -1
  50. package/dist/response/artifact.js +0 -102
  51. package/dist/response/artifact.js.map +0 -1
  52. package/dist/response/cache-key.d.ts +0 -6
  53. package/dist/response/cache-key.d.ts.map +0 -1
  54. package/dist/response/cache-key.js +0 -114
  55. package/dist/response/cache-key.js.map +0 -1
  56. package/dist/response/index.d.ts +0 -5
  57. package/dist/response/index.d.ts.map +0 -1
  58. package/dist/response/index.js +0 -5
  59. package/dist/response/index.js.map +0 -1
  60. package/dist/response/memory-cache.d.ts +0 -17
  61. package/dist/response/memory-cache.d.ts.map +0 -1
  62. package/dist/response/memory-cache.js +0 -76
  63. package/dist/response/memory-cache.js.map +0 -1
  64. package/dist/response/types.d.ts +0 -57
  65. package/dist/response/types.d.ts.map +0 -1
  66. package/dist/response/types.js +0 -2
  67. package/dist/response/types.js.map +0 -1
  68. package/dist/schema/index.d.ts +0 -3
  69. package/dist/schema/index.d.ts.map +0 -1
  70. package/dist/schema/index.js +0 -3
  71. package/dist/schema/index.js.map +0 -1
  72. package/dist/schema/parser.d.ts +0 -25
  73. package/dist/schema/parser.d.ts.map +0 -1
  74. package/dist/schema/parser.js +0 -474
  75. package/dist/schema/parser.js.map +0 -1
  76. package/dist/schema/types.d.ts +0 -33
  77. package/dist/schema/types.d.ts.map +0 -1
  78. package/dist/schema/types.js +0 -29
  79. package/dist/schema/types.js.map +0 -1
  80. package/dist/standalone/index.d.ts +0 -3
  81. package/dist/standalone/index.d.ts.map +0 -1
  82. package/dist/standalone/index.js +0 -3
  83. package/dist/standalone/index.js.map +0 -1
  84. package/dist/standalone/process-client.d.ts +0 -85
  85. package/dist/standalone/process-client.d.ts.map +0 -1
  86. package/dist/standalone/process-client.js +0 -537
  87. package/dist/standalone/process-client.js.map +0 -1
  88. package/dist/standalone/wasmedge-runner.d.ts +0 -19
  89. package/dist/standalone/wasmedge-runner.d.ts.map +0 -1
  90. package/dist/standalone/wasmedge-runner.js +0 -108
  91. package/dist/standalone/wasmedge-runner.js.map +0 -1
  92. package/dist/storage/index.d.ts +0 -3
  93. package/dist/storage/index.d.ts.map +0 -1
  94. package/dist/storage/index.js +0 -3
  95. package/dist/storage/index.js.map +0 -1
  96. package/dist/storage/stacked-flatbuffers.d.ts +0 -38
  97. package/dist/storage/stacked-flatbuffers.d.ts.map +0 -1
  98. package/dist/storage/stacked-flatbuffers.js +0 -253
  99. package/dist/storage/stacked-flatbuffers.js.map +0 -1
  100. package/dist/storage/types.d.ts +0 -23
  101. package/dist/storage/types.d.ts.map +0 -1
  102. package/dist/storage/types.js +0 -27
  103. package/dist/storage/types.js.map +0 -1
  104. package/dist/stress/aggregate.d.ts +0 -3
  105. package/dist/stress/aggregate.d.ts.map +0 -1
  106. package/dist/stress/aggregate.js +0 -61
  107. package/dist/stress/aggregate.js.map +0 -1
  108. package/dist/stress/docker-compose.d.ts +0 -17
  109. package/dist/stress/docker-compose.d.ts.map +0 -1
  110. package/dist/stress/docker-compose.js +0 -156
  111. package/dist/stress/docker-compose.js.map +0 -1
  112. package/dist/stress/index.d.ts +0 -10
  113. package/dist/stress/index.d.ts.map +0 -1
  114. package/dist/stress/index.js +0 -10
  115. package/dist/stress/index.js.map +0 -1
  116. package/dist/stress/metrics.d.ts +0 -3
  117. package/dist/stress/metrics.d.ts.map +0 -1
  118. package/dist/stress/metrics.js +0 -83
  119. package/dist/stress/metrics.js.map +0 -1
  120. package/dist/stress/native-publish-event-workload.d.ts +0 -3
  121. package/dist/stress/native-publish-event-workload.d.ts.map +0 -1
  122. package/dist/stress/native-publish-event-workload.js +0 -465
  123. package/dist/stress/native-publish-event-workload.js.map +0 -1
  124. package/dist/stress/production-gate.d.ts +0 -4
  125. package/dist/stress/production-gate.d.ts.map +0 -1
  126. package/dist/stress/production-gate.js +0 -12
  127. package/dist/stress/production-gate.js.map +0 -1
  128. package/dist/stress/report.d.ts +0 -3
  129. package/dist/stress/report.d.ts.map +0 -1
  130. package/dist/stress/report.js +0 -174
  131. package/dist/stress/report.js.map +0 -1
  132. package/dist/stress/sds-discovery.d.ts +0 -4
  133. package/dist/stress/sds-discovery.d.ts.map +0 -1
  134. package/dist/stress/sds-discovery.js +0 -40
  135. package/dist/stress/sds-discovery.js.map +0 -1
  136. package/dist/stress/smoke-runner.d.ts +0 -3
  137. package/dist/stress/smoke-runner.d.ts.map +0 -1
  138. package/dist/stress/smoke-runner.js +0 -64
  139. package/dist/stress/smoke-runner.js.map +0 -1
  140. package/dist/stress/types.d.ts +0 -219
  141. package/dist/stress/types.d.ts.map +0 -1
  142. package/dist/stress/types.js +0 -2
  143. package/dist/stress/types.js.map +0 -1
  144. package/dist/stress/workload.d.ts +0 -6
  145. package/dist/stress/workload.d.ts.map +0 -1
  146. package/dist/stress/workload.js +0 -144
  147. package/dist/stress/workload.js.map +0 -1
  148. package/docs/PARTITION-STORE-WASM.md +0 -338
  149. package/docs/PARTITION-STORE.md +0 -2380
  150. package/docs/agents/response-artifacts.md +0 -65
  151. package/docs/response-artifacts.md +0 -86
  152. package/scripts/stress-docker.sh +0 -279
  153. package/sdm/flatsql-spatial.wasm +0 -0
  154. package/sdm/index.d.ts +0 -88
  155. package/sdm/index.js +0 -253
  156. package/sdm/manifest.json +0 -402
  157. package/stress/docker/Dockerfile +0 -11
  158. package/stress/docker/docker-compose.yml +0 -51
  159. package/stress/sds/aggregate.mjs +0 -97
  160. package/stress/sds/run.mjs +0 -105
  161. package/stress/sds/write-compose.mjs +0 -96
  162. package/wasm/flatsql-client.js +0 -280
  163. package/wasm/flatsql-io.d.ts +0 -97
  164. package/wasm/flatsql-io.js +0 -625
  165. package/wasm/flatsql-p4-threads.wasm +0 -0
  166. package/wasm/flatsql-ps-threads.wasm +0 -0
  167. package/wasm/flatsql-wasi-noeh.wasm +0 -0
  168. package/wasm/flatsql-wasi.wasm +0 -0
  169. package/wasm/flatsql.js +0 -2
  170. package/wasm/flatsql.worker.js +0 -209
  171. package/wasm/native/flatsql_wasmedge_runner.cpp +0 -858
  172. package/wasm/ps-node-fault.d.mts +0 -23
  173. package/wasm/ps-node-fault.mjs +0 -381
  174. package/wasm/ps-node-guest.mjs +0 -173
  175. package/wasm/ps-node-host.d.mts +0 -95
  176. package/wasm/ps-node-host.mjs +0 -476
  177. package/wasm/ps-node-imports.mjs +0 -847
  178. package/wasm/ps.d.ts +0 -21
  179. package/wasm/ps.js +0 -75
  180. package/wasm/wasi.d.ts +0 -11
  181. package/wasm/wasi.js +0 -51
package/sdm/index.js DELETED
@@ -1,253 +0,0 @@
1
- /**
2
- * FlatSQL Spatial Engine — Space Data Module (SDM)
3
- *
4
- * Standalone WASM module compliant with space-data-module-sdk.
5
- * Provides spatial computation functions without requiring full FlatSQL.
6
- *
7
- * @see https://github.com/DigitalArsenal/space-data-module-sdk
8
- */
9
-
10
- import { readFile } from "node:fs/promises";
11
- import { fileURLToPath } from "node:url";
12
- import { dirname, join } from "node:path";
13
-
14
- const __dirname = dirname(fileURLToPath(import.meta.url));
15
-
16
- /**
17
- * Initialize the FlatSQL Spatial SDM module.
18
- * @returns {Promise<FlatSQLSpatialSDM>}
19
- */
20
- export async function initSpatialSDM() {
21
- const wasmPath = join(__dirname, "flatsql-spatial.wasm");
22
- const wasmBytes = await readFile(wasmPath);
23
- let exports;
24
- const invoke = () => (fnPtr, ...args) => {
25
- const table = exports?.__indirect_function_table;
26
- const fn = table?.get(fnPtr);
27
- if (typeof fn !== "function") {
28
- throw new Error(`Missing indirect WASM function: ${fnPtr}`);
29
- }
30
- return fn(...args);
31
- };
32
- const { instance } = await WebAssembly.instantiate(wasmBytes, {
33
- env: {
34
- invoke_v: invoke("v"),
35
- invoke_i: invoke("i"),
36
- invoke_ii: invoke("ii"),
37
- invoke_iii: invoke("iii"),
38
- invoke_iiii: invoke("iiii"),
39
- invoke_iiiii: invoke("iiiii"),
40
- invoke_iiiiii: invoke("iiiiii"),
41
- invoke_iiiiiii: invoke("iiiiiii"),
42
- invoke_iiiiiiii: invoke("iiiiiiii"),
43
- invoke_iiiiiiiiiiii: invoke("iiiiiiiiiiii"),
44
- invoke_iiiiid: invoke("iiiiid"),
45
- invoke_di: invoke("di"),
46
- invoke_dii: invoke("dii"),
47
- invoke_diii: invoke("diii"),
48
- invoke_fiii: invoke("fiii"),
49
- invoke_iid: invoke("iid"),
50
- invoke_jiiii: invoke("jiiii"),
51
- invoke_vi: invoke("vi"),
52
- invoke_vid: invoke("vid"),
53
- invoke_vii: invoke("vii"),
54
- invoke_viii: invoke("viii"),
55
- invoke_viiii: invoke("viiii"),
56
- invoke_viiiii: invoke("viiiii"),
57
- invoke_viiiiiii: invoke("viiiiiii"),
58
- invoke_viiiiiiiiii: invoke("viiiiiiiiii"),
59
- invoke_viiiiiiiiiiiiiii: invoke("viiiiiiiiiiiiiii"),
60
- __cxa_begin_catch: (ptr) => ptr,
61
- __cxa_end_catch: () => {},
62
- __cxa_find_matching_catch_2: () => 0,
63
- __cxa_find_matching_catch_3: () => 0,
64
- __cxa_rethrow: () => {},
65
- __cxa_throw: () => {},
66
- __cxa_uncaught_exceptions: () => 0,
67
- __resumeException: (ptr) => {
68
- throw new Error(`Unhandled WASM exception: ${ptr}`);
69
- },
70
- emscripten_notify_memory_growth: () => {},
71
- },
72
- wasi_snapshot_preview1: {
73
- environ_get: () => 0,
74
- environ_sizes_get: (environCount, environBufSize) => {
75
- const memory = exports?.memory;
76
- if (memory) {
77
- const view = new DataView(memory.buffer);
78
- view.setUint32(environCount, 0, true);
79
- view.setUint32(environBufSize, 0, true);
80
- }
81
- return 0;
82
- },
83
- proc_exit: () => {},
84
- fd_write: () => 0,
85
- fd_seek: () => 0,
86
- fd_close: () => 0,
87
- },
88
- });
89
- exports = instance.exports;
90
- const memory = /** @type {WebAssembly.Memory} */ (exports.memory);
91
-
92
- /**
93
- * Write a string to the input buffer.
94
- * @param {string} str
95
- */
96
- function writeInput(str) {
97
- const inputPtr = /** @type {Function} */ (exports.sdm_get_input_buffer)();
98
- const encoder = new TextEncoder();
99
- const bytes = encoder.encode(str);
100
- const view = new Uint8Array(memory.buffer, inputPtr, bytes.length);
101
- view.set(bytes);
102
- /** @type {Function} */ (exports.sdm_set_input_length)(bytes.length);
103
- }
104
-
105
- /**
106
- * Read the output buffer as a string.
107
- * @returns {string}
108
- */
109
- function readOutput() {
110
- const outputLen = /** @type {Function} */ (exports.sdm_get_output_length)();
111
- const outputPtr = /** @type {Function} */ (exports.sdm_get_output_buffer)();
112
- const view = new Uint8Array(memory.buffer, outputPtr, outputLen);
113
- return new TextDecoder().decode(view);
114
- }
115
-
116
- /**
117
- * Call a method with string input, return string output.
118
- * @param {string} methodName
119
- * @param {string} input
120
- * @returns {{ status: number, output: string }}
121
- */
122
- function callMethod(methodName, input) {
123
- writeInput(input);
124
- const fn = exports[methodName];
125
- if (!fn) throw new Error(`Unknown method: ${methodName}`);
126
- const status = /** @type {Function} */ (fn)();
127
- return { status, output: readOutput() };
128
- }
129
-
130
- /**
131
- * Get the embedded plugin manifest.
132
- * @returns {object}
133
- */
134
- function getManifest() {
135
- const ptr = /** @type {Function} */ (exports.plugin_get_manifest)();
136
- const size = /** @type {Function} */ (exports.plugin_get_manifest_size)();
137
- const view = new Uint8Array(memory.buffer, ptr, size);
138
- const text = new TextDecoder().decode(view);
139
- return JSON.parse(text);
140
- }
141
-
142
- return {
143
- /** Get the plugin manifest */
144
- getManifest,
145
-
146
- /**
147
- * Compute haversine distance between two points.
148
- * @param {number} lat1 @param {number} lon1
149
- * @param {number} lat2 @param {number} lon2
150
- * @returns {number} distance in km
151
- */
152
- computeDistance(lat1, lon1, lat2, lon2) {
153
- const { status, output } = callMethod("compute_distance", `${lat1},${lon1},${lat2},${lon2}`);
154
- if (status !== 0) throw new Error(output);
155
- return parseFloat(output);
156
- },
157
-
158
- /**
159
- * Compute bearing from point 1 to point 2.
160
- * @param {number} lat1 @param {number} lon1
161
- * @param {number} lat2 @param {number} lon2
162
- * @returns {number} bearing in degrees (0-360)
163
- */
164
- computeBearing(lat1, lon1, lat2, lon2) {
165
- const { status, output } = callMethod("compute_bearing", `${lat1},${lon1},${lat2},${lon2}`);
166
- if (status !== 0) throw new Error(output);
167
- return parseFloat(output);
168
- },
169
-
170
- /**
171
- * Test if a point is inside a polygon.
172
- * @param {string} wkt - WKT polygon
173
- * @param {number} lat @param {number} lon
174
- * @returns {boolean}
175
- */
176
- pointInPolygon(wkt, lat, lon) {
177
- const { status, output } = callMethod("point_in_polygon", `${wkt}\n${lat},${lon}`);
178
- if (status !== 0) throw new Error(output);
179
- return output === "1";
180
- },
181
-
182
- /**
183
- * Compute polygon intersection.
184
- * @param {string} wkt1 @param {string} wkt2
185
- * @returns {string} WKT of intersection
186
- */
187
- polygonIntersection(wkt1, wkt2) {
188
- const { status, output } = callMethod("polygon_intersection", `${wkt1}\n${wkt2}`);
189
- if (status !== 0) throw new Error(output);
190
- return output;
191
- },
192
-
193
- /**
194
- * Compute polygon union.
195
- * @param {string} wkt1 @param {string} wkt2
196
- * @returns {string} WKT of union
197
- */
198
- polygonUnion(wkt1, wkt2) {
199
- const { status, output } = callMethod("polygon_union", `${wkt1}\n${wkt2}`);
200
- if (status !== 0) throw new Error(output);
201
- return output;
202
- },
203
-
204
- /**
205
- * Compute Voronoi diagram.
206
- * @param {string} multipointWkt @param {string} boundsWkt
207
- * @returns {string} MULTIPOLYGON WKT
208
- */
209
- computeVoronoi(multipointWkt, boundsWkt) {
210
- const { status, output } = callMethod("compute_voronoi", `${multipointWkt}\n${boundsWkt}`);
211
- if (status !== 0) throw new Error(output);
212
- return output;
213
- },
214
-
215
- /**
216
- * Compute Delaunay triangulation.
217
- * @param {string} multipointWkt
218
- * @returns {string} MULTIPOLYGON WKT
219
- */
220
- computeDelaunay(multipointWkt) {
221
- const { status, output } = callMethod("compute_delaunay", multipointWkt);
222
- if (status !== 0) throw new Error(output);
223
- return output;
224
- },
225
-
226
- /**
227
- * Transform WGS84 to ECEF.
228
- * @param {number} lat @param {number} lon @param {number} alt
229
- * @returns {{ x: number, y: number, z: number }}
230
- */
231
- toECEF(lat, lon, alt) {
232
- const { status, output } = callMethod("transform_to_ecef", `${lat},${lon},${alt}`);
233
- if (status !== 0) throw new Error(output);
234
- const [x, y, z] = output.split(",").map(Number);
235
- return { x, y, z };
236
- },
237
-
238
- /**
239
- * Transform ECEF to WGS84.
240
- * @param {number} x @param {number} y @param {number} z
241
- * @returns {{ lat: number, lon: number, alt: number }}
242
- */
243
- fromECEF(x, y, z) {
244
- const { status, output } = callMethod("transform_from_ecef", `${x},${y},${z}`);
245
- if (status !== 0) throw new Error(output);
246
- const [lat, lon, alt] = output.split(",").map(Number);
247
- return { lat, lon, alt };
248
- },
249
-
250
- /** Low-level method call */
251
- callMethod,
252
- };
253
- }
package/sdm/manifest.json DELETED
@@ -1,402 +0,0 @@
1
- {
2
- "pluginId": "com.digitalarsenal.flatsql.spatial",
3
- "name": "FlatSQL Spatial Engine",
4
- "version": "0.4.1",
5
- "pluginFamily": "analysis",
6
- "description": "SpatiaLite-compatible spatial computation engine for space data processing. Provides geodesic calculations, polygon boolean operations, Voronoi/Delaunay tessellation, coordinate transforms, and R-Tree spatial indexing over FlatBuffer storage.",
7
- "capabilities": [],
8
- "externalInterfaces": [],
9
- "methods": [
10
- {
11
- "methodId": "compute_distance",
12
- "displayName": "Compute Distance",
13
- "description": "Haversine distance between two WGS84 lat/lon points (km)",
14
- "inputPorts": [
15
- {
16
- "portId": "coordinates",
17
- "acceptedTypeSets": [
18
- {
19
- "setId": "spatial",
20
- "allowedTypes": [
21
- { "schemaName": "SpatialQuery.fbs", "fileIdentifier": "SPQR" }
22
- ]
23
- }
24
- ],
25
- "minStreams": 1,
26
- "maxStreams": 1,
27
- "required": true
28
- }
29
- ],
30
- "outputPorts": [
31
- {
32
- "portId": "result",
33
- "acceptedTypeSets": [
34
- {
35
- "setId": "spatial",
36
- "allowedTypes": [
37
- { "schemaName": "SpatialResult.fbs", "fileIdentifier": "SPRS" }
38
- ]
39
- }
40
- ],
41
- "minStreams": 1,
42
- "maxStreams": 1,
43
- "required": true
44
- }
45
- ],
46
- "maxBatch": 1000,
47
- "drainPolicy": "drain-to-empty"
48
- },
49
- {
50
- "methodId": "compute_bearing",
51
- "displayName": "Compute Bearing",
52
- "description": "Forward azimuth between two WGS84 points (degrees 0-360)",
53
- "inputPorts": [
54
- {
55
- "portId": "coordinates",
56
- "acceptedTypeSets": [
57
- {
58
- "setId": "spatial",
59
- "allowedTypes": [
60
- { "schemaName": "SpatialQuery.fbs", "fileIdentifier": "SPQR" }
61
- ]
62
- }
63
- ],
64
- "minStreams": 1,
65
- "maxStreams": 1,
66
- "required": true
67
- }
68
- ],
69
- "outputPorts": [
70
- {
71
- "portId": "result",
72
- "acceptedTypeSets": [
73
- {
74
- "setId": "spatial",
75
- "allowedTypes": [
76
- { "schemaName": "SpatialResult.fbs", "fileIdentifier": "SPRS" }
77
- ]
78
- }
79
- ],
80
- "minStreams": 1,
81
- "maxStreams": 1,
82
- "required": true
83
- }
84
- ],
85
- "maxBatch": 1000,
86
- "drainPolicy": "drain-to-empty"
87
- },
88
- {
89
- "methodId": "point_in_polygon",
90
- "displayName": "Point in Polygon",
91
- "description": "Test if a WGS84 point is inside a polygon geometry",
92
- "inputPorts": [
93
- {
94
- "portId": "geometry",
95
- "acceptedTypeSets": [
96
- {
97
- "setId": "spatial",
98
- "allowedTypes": [
99
- { "schemaName": "SpatialQuery.fbs", "fileIdentifier": "SPQR" }
100
- ]
101
- }
102
- ],
103
- "minStreams": 1,
104
- "maxStreams": 1,
105
- "required": true
106
- }
107
- ],
108
- "outputPorts": [
109
- {
110
- "portId": "result",
111
- "acceptedTypeSets": [
112
- {
113
- "setId": "spatial",
114
- "allowedTypes": [
115
- { "schemaName": "SpatialResult.fbs", "fileIdentifier": "SPRS" }
116
- ]
117
- }
118
- ],
119
- "minStreams": 1,
120
- "maxStreams": 1,
121
- "required": true
122
- }
123
- ],
124
- "maxBatch": 1000,
125
- "drainPolicy": "drain-to-empty"
126
- },
127
- {
128
- "methodId": "polygon_intersection",
129
- "displayName": "Polygon Intersection",
130
- "description": "Compute intersection of two polygon geometries",
131
- "inputPorts": [
132
- {
133
- "portId": "geometries",
134
- "acceptedTypeSets": [
135
- {
136
- "setId": "spatial",
137
- "allowedTypes": [
138
- { "schemaName": "SpatialQuery.fbs", "fileIdentifier": "SPQR" }
139
- ]
140
- }
141
- ],
142
- "minStreams": 1,
143
- "maxStreams": 2,
144
- "required": true
145
- }
146
- ],
147
- "outputPorts": [
148
- {
149
- "portId": "result",
150
- "acceptedTypeSets": [
151
- {
152
- "setId": "spatial",
153
- "allowedTypes": [
154
- { "schemaName": "SpatialResult.fbs", "fileIdentifier": "SPRS" }
155
- ]
156
- }
157
- ],
158
- "minStreams": 1,
159
- "maxStreams": 1,
160
- "required": true
161
- }
162
- ],
163
- "maxBatch": 100,
164
- "drainPolicy": "drain-to-empty"
165
- },
166
- {
167
- "methodId": "polygon_union",
168
- "displayName": "Polygon Union",
169
- "description": "Compute union of two polygon geometries",
170
- "inputPorts": [
171
- {
172
- "portId": "geometries",
173
- "acceptedTypeSets": [
174
- {
175
- "setId": "spatial",
176
- "allowedTypes": [
177
- { "schemaName": "SpatialQuery.fbs", "fileIdentifier": "SPQR" }
178
- ]
179
- }
180
- ],
181
- "minStreams": 1,
182
- "maxStreams": 2,
183
- "required": true
184
- }
185
- ],
186
- "outputPorts": [
187
- {
188
- "portId": "result",
189
- "acceptedTypeSets": [
190
- {
191
- "setId": "spatial",
192
- "allowedTypes": [
193
- { "schemaName": "SpatialResult.fbs", "fileIdentifier": "SPRS" }
194
- ]
195
- }
196
- ],
197
- "minStreams": 1,
198
- "maxStreams": 1,
199
- "required": true
200
- }
201
- ],
202
- "maxBatch": 100,
203
- "drainPolicy": "drain-to-empty"
204
- },
205
- {
206
- "methodId": "compute_voronoi",
207
- "displayName": "Voronoi Diagram",
208
- "description": "Compute Voronoi diagram from multipoint geometry within bounds",
209
- "inputPorts": [
210
- {
211
- "portId": "geometries",
212
- "acceptedTypeSets": [
213
- {
214
- "setId": "spatial",
215
- "allowedTypes": [
216
- { "schemaName": "SpatialQuery.fbs", "fileIdentifier": "SPQR" }
217
- ]
218
- }
219
- ],
220
- "minStreams": 1,
221
- "maxStreams": 2,
222
- "required": true
223
- }
224
- ],
225
- "outputPorts": [
226
- {
227
- "portId": "result",
228
- "acceptedTypeSets": [
229
- {
230
- "setId": "spatial",
231
- "allowedTypes": [
232
- { "schemaName": "SpatialResult.fbs", "fileIdentifier": "SPRS" }
233
- ]
234
- }
235
- ],
236
- "minStreams": 1,
237
- "maxStreams": 1,
238
- "required": true
239
- }
240
- ],
241
- "maxBatch": 10,
242
- "drainPolicy": "single-shot"
243
- },
244
- {
245
- "methodId": "compute_delaunay",
246
- "displayName": "Delaunay Triangulation",
247
- "description": "Compute Delaunay triangulation from multipoint geometry",
248
- "inputPorts": [
249
- {
250
- "portId": "geometries",
251
- "acceptedTypeSets": [
252
- {
253
- "setId": "spatial",
254
- "allowedTypes": [
255
- { "schemaName": "SpatialQuery.fbs", "fileIdentifier": "SPQR" }
256
- ]
257
- }
258
- ],
259
- "minStreams": 1,
260
- "maxStreams": 1,
261
- "required": true
262
- }
263
- ],
264
- "outputPorts": [
265
- {
266
- "portId": "result",
267
- "acceptedTypeSets": [
268
- {
269
- "setId": "spatial",
270
- "allowedTypes": [
271
- { "schemaName": "SpatialResult.fbs", "fileIdentifier": "SPRS" }
272
- ]
273
- }
274
- ],
275
- "minStreams": 1,
276
- "maxStreams": 1,
277
- "required": true
278
- }
279
- ],
280
- "maxBatch": 10,
281
- "drainPolicy": "single-shot"
282
- },
283
- {
284
- "methodId": "transform_to_ecef",
285
- "displayName": "WGS84 to ECEF",
286
- "description": "Transform WGS84 geodetic coordinates to ECEF",
287
- "inputPorts": [
288
- {
289
- "portId": "coordinates",
290
- "acceptedTypeSets": [
291
- {
292
- "setId": "spatial",
293
- "allowedTypes": [
294
- { "schemaName": "SpatialQuery.fbs", "fileIdentifier": "SPQR" }
295
- ]
296
- }
297
- ],
298
- "minStreams": 1,
299
- "maxStreams": 1,
300
- "required": true
301
- }
302
- ],
303
- "outputPorts": [
304
- {
305
- "portId": "result",
306
- "acceptedTypeSets": [
307
- {
308
- "setId": "spatial",
309
- "allowedTypes": [
310
- { "schemaName": "SpatialResult.fbs", "fileIdentifier": "SPRS" }
311
- ]
312
- }
313
- ],
314
- "minStreams": 1,
315
- "maxStreams": 1,
316
- "required": true
317
- }
318
- ],
319
- "maxBatch": 10000,
320
- "drainPolicy": "drain-to-empty"
321
- },
322
- {
323
- "methodId": "transform_from_ecef",
324
- "displayName": "ECEF to WGS84",
325
- "description": "Transform ECEF coordinates to WGS84 geodetic",
326
- "inputPorts": [
327
- {
328
- "portId": "coordinates",
329
- "acceptedTypeSets": [
330
- {
331
- "setId": "spatial",
332
- "allowedTypes": [
333
- { "schemaName": "SpatialQuery.fbs", "fileIdentifier": "SPQR" }
334
- ]
335
- }
336
- ],
337
- "minStreams": 1,
338
- "maxStreams": 1,
339
- "required": true
340
- }
341
- ],
342
- "outputPorts": [
343
- {
344
- "portId": "result",
345
- "acceptedTypeSets": [
346
- {
347
- "setId": "spatial",
348
- "allowedTypes": [
349
- { "schemaName": "SpatialResult.fbs", "fileIdentifier": "SPRS" }
350
- ]
351
- }
352
- ],
353
- "minStreams": 1,
354
- "maxStreams": 1,
355
- "required": true
356
- }
357
- ],
358
- "maxBatch": 10000,
359
- "drainPolicy": "drain-to-empty"
360
- },
361
- {
362
- "methodId": "spatial_query",
363
- "displayName": "Spatial SQL Query",
364
- "description": "Execute an arbitrary spatial SQL query using the FlatSQL engine",
365
- "inputPorts": [
366
- {
367
- "portId": "query",
368
- "acceptedTypeSets": [
369
- {
370
- "setId": "spatial",
371
- "allowedTypes": [
372
- { "schemaName": "SpatialQuery.fbs", "fileIdentifier": "SPQR" }
373
- ]
374
- }
375
- ],
376
- "minStreams": 1,
377
- "maxStreams": 1,
378
- "required": true
379
- }
380
- ],
381
- "outputPorts": [
382
- {
383
- "portId": "result",
384
- "acceptedTypeSets": [
385
- {
386
- "setId": "spatial",
387
- "allowedTypes": [
388
- { "schemaName": "SpatialResult.fbs", "fileIdentifier": "SPRS" }
389
- ]
390
- }
391
- ],
392
- "minStreams": 1,
393
- "maxStreams": 1,
394
- "required": true
395
- }
396
- ],
397
- "maxBatch": 1,
398
- "drainPolicy": "single-shot"
399
- }
400
- ],
401
- "runtimeTargets": ["NODE", "BROWSER", "WASI"]
402
- }
@@ -1,11 +0,0 @@
1
- FROM node:24-bookworm-slim
2
-
3
- WORKDIR /workspace
4
-
5
- COPY package.json package-lock.json ./
6
- RUN npm ci
7
-
8
- COPY . .
9
- RUN npm run build
10
-
11
- CMD ["node", "stress/sds/run.mjs", "--help"]