@honua/app-platform 0.0.20-alpha.0 → 0.1.1-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (381) hide show
  1. package/contract/discovery.d.ts +231 -0
  2. package/contract/discovery.d.ts.map +1 -0
  3. package/contract/discovery.js +554 -0
  4. package/contract/edit-sketch.d.ts +8 -0
  5. package/contract/edit-sketch.d.ts.map +1 -1
  6. package/contract/edit-sketch.js +15 -0
  7. package/contract/edit-snapping.d.ts +160 -0
  8. package/contract/edit-snapping.d.ts.map +1 -0
  9. package/contract/edit-snapping.js +675 -0
  10. package/contract/generated/projjson-v0.7-crs-validator.d.ts +35 -0
  11. package/contract/generated/projjson-v0.7-crs-validator.d.ts.map +1 -0
  12. package/contract/generated/projjson-v0.7-crs-validator.js +3941 -0
  13. package/contract/index.d.ts +11 -2
  14. package/contract/index.d.ts.map +1 -1
  15. package/contract/index.js +4 -1
  16. package/contract/pmtiles.d.ts +31 -0
  17. package/contract/pmtiles.d.ts.map +1 -1
  18. package/contract/pmtiles.js +60 -20
  19. package/contract/protocol-module.d.ts +70 -0
  20. package/contract/protocol-module.d.ts.map +1 -0
  21. package/contract/protocol-module.js +1 -0
  22. package/contract/schema-envelope.d.ts +26 -0
  23. package/contract/schema-envelope.d.ts.map +1 -0
  24. package/contract/schema-envelope.js +25 -0
  25. package/contract/schema.d.ts +582 -0
  26. package/contract/schema.d.ts.map +1 -0
  27. package/contract/schema.js +2483 -0
  28. package/contract/source-capability-support.d.ts +6 -0
  29. package/contract/source-capability-support.d.ts.map +1 -0
  30. package/contract/source-capability-support.js +154 -0
  31. package/contract/source.d.ts +35 -17
  32. package/contract/source.d.ts.map +1 -1
  33. package/contract/source.js +267 -71
  34. package/contract/types.d.ts +140 -4
  35. package/contract/types.d.ts.map +1 -1
  36. package/contract/types.js +6 -14
  37. package/core/bounded-json.d.ts +4 -0
  38. package/core/bounded-json.d.ts.map +1 -0
  39. package/core/bounded-json.js +38 -0
  40. package/core/cache-state.d.ts +9 -0
  41. package/core/cache-state.d.ts.map +1 -1
  42. package/core/cache-state.js +10 -0
  43. package/core/capabilities-xml.d.ts +33 -0
  44. package/core/capabilities-xml.d.ts.map +1 -0
  45. package/core/capabilities-xml.js +331 -0
  46. package/core/client.d.ts +4 -1
  47. package/core/client.d.ts.map +1 -1
  48. package/core/client.js +115 -29
  49. package/core/error-classifications.d.ts +153 -0
  50. package/core/error-classifications.d.ts.map +1 -0
  51. package/core/error-classifications.js +140 -0
  52. package/core/error-code-registry.d.ts +158 -0
  53. package/core/error-code-registry.d.ts.map +1 -0
  54. package/core/error-code-registry.js +143 -0
  55. package/core/error-envelope.d.ts +68 -0
  56. package/core/error-envelope.d.ts.map +1 -0
  57. package/core/error-envelope.js +357 -0
  58. package/core/errors.d.ts +45 -29
  59. package/core/errors.d.ts.map +1 -1
  60. package/core/errors.js +97 -50
  61. package/core/geoparquet-sql.d.ts +30 -2
  62. package/core/geoparquet-sql.d.ts.map +1 -1
  63. package/core/geoparquet-sql.js +38 -3
  64. package/core/odata-key-path.d.ts +12 -0
  65. package/core/odata-key-path.d.ts.map +1 -0
  66. package/core/odata-key-path.js +28 -0
  67. package/core/odata-write-codec.d.ts +66 -0
  68. package/core/odata-write-codec.d.ts.map +1 -0
  69. package/core/odata-write-codec.js +1083 -0
  70. package/core/odata.d.ts +59 -7
  71. package/core/odata.d.ts.map +1 -1
  72. package/core/odata.js +431 -99
  73. package/core/ogc-features.d.ts.map +1 -1
  74. package/core/ogc-features.js +3 -0
  75. package/core/ogc-maps.d.ts +7 -0
  76. package/core/ogc-maps.d.ts.map +1 -1
  77. package/core/ogc-maps.js +46 -7
  78. package/core/ogc-processes.d.ts +2 -1
  79. package/core/ogc-processes.d.ts.map +1 -1
  80. package/core/ogc-processes.js +33 -5
  81. package/core/ogc-records.d.ts +9 -0
  82. package/core/ogc-records.d.ts.map +1 -1
  83. package/core/ogc-records.js +78 -29
  84. package/core/ogc-tiles.d.ts +10 -1
  85. package/core/ogc-tiles.d.ts.map +1 -1
  86. package/core/ogc-tiles.js +56 -17
  87. package/core/path-utils.d.ts +9 -0
  88. package/core/path-utils.d.ts.map +1 -1
  89. package/core/path-utils.js +19 -0
  90. package/core/protocol-transport.d.ts +1 -0
  91. package/core/protocol-transport.d.ts.map +1 -1
  92. package/core/request-pipeline.d.ts.map +1 -1
  93. package/core/request-pipeline.js +1 -1
  94. package/core/spatial-filter.d.ts +8 -4
  95. package/core/spatial-filter.d.ts.map +1 -1
  96. package/core/spatial-filter.js +206 -16
  97. package/core/stac-static.d.ts +6 -2
  98. package/core/stac-static.d.ts.map +1 -1
  99. package/core/stac-static.js +260 -69
  100. package/core/surfaces.d.ts.map +1 -1
  101. package/core/surfaces.js +69 -5
  102. package/core/types.d.ts +125 -7
  103. package/core/types.d.ts.map +1 -1
  104. package/core/wfs-capabilities.d.ts +2 -0
  105. package/core/wfs-capabilities.d.ts.map +1 -1
  106. package/core/wfs-capabilities.js +8 -1
  107. package/core/wfs.d.ts.map +1 -1
  108. package/core/wfs.js +10 -0
  109. package/core/wms-capabilities.d.ts +56 -84
  110. package/core/wms-capabilities.d.ts.map +1 -1
  111. package/core/wms-capabilities.js +212 -509
  112. package/core/wmts-capabilities.d.ts +62 -62
  113. package/core/wmts-capabilities.d.ts.map +1 -1
  114. package/core/wmts-capabilities.js +224 -371
  115. package/esri-compat/editor.d.ts +8 -0
  116. package/esri-compat/editor.d.ts.map +1 -1
  117. package/esri-compat/editor.js +13 -0
  118. package/esri-compat/feature-layer.d.ts +2 -0
  119. package/esri-compat/feature-layer.d.ts.map +1 -1
  120. package/esri-compat/feature-layer.js +1 -0
  121. package/esri-compat/layer-list.d.ts +11 -0
  122. package/esri-compat/layer-list.d.ts.map +1 -1
  123. package/esri-compat/layer-list.js +49 -0
  124. package/esri-compat/legend.d.ts +10 -0
  125. package/esri-compat/legend.d.ts.map +1 -1
  126. package/esri-compat/legend.js +27 -0
  127. package/esri-compat/portal.d.ts +197 -0
  128. package/esri-compat/portal.d.ts.map +1 -0
  129. package/esri-compat/portal.js +251 -0
  130. package/esri-compat/renderer-objects.d.ts +40 -0
  131. package/esri-compat/renderer-objects.d.ts.map +1 -0
  132. package/esri-compat/renderer-objects.js +62 -0
  133. package/esri-compat/sketch.d.ts +43 -0
  134. package/esri-compat/sketch.d.ts.map +1 -1
  135. package/esri-compat/sketch.js +46 -0
  136. package/esri-compat/snapping.d.ts +43 -0
  137. package/esri-compat/snapping.d.ts.map +1 -0
  138. package/esri-compat/snapping.js +45 -0
  139. package/esri-compat/url.d.ts.map +1 -1
  140. package/esri-compat/url.js +1 -1
  141. package/esri-compat/widget-host.d.ts +84 -0
  142. package/esri-compat/widget-host.d.ts.map +1 -0
  143. package/esri-compat/widget-host.js +159 -0
  144. package/generated-app/errors.d.ts +18 -2
  145. package/generated-app/errors.d.ts.map +1 -1
  146. package/generated-app/errors.js +44 -11
  147. package/geocoding/index.d.ts +7 -0
  148. package/geocoding/index.d.ts.map +1 -1
  149. package/geocoding/index.js +5 -0
  150. package/geocoding/provider-http.d.ts +37 -0
  151. package/geocoding/provider-http.d.ts.map +1 -0
  152. package/geocoding/provider-http.js +91 -0
  153. package/geocoding/provider.d.ts +145 -0
  154. package/geocoding/provider.d.ts.map +1 -0
  155. package/geocoding/provider.js +41 -0
  156. package/geocoding/providers/honua.d.ts +28 -0
  157. package/geocoding/providers/honua.d.ts.map +1 -0
  158. package/geocoding/providers/honua.js +68 -0
  159. package/geocoding/providers/nominatim.d.ts +47 -0
  160. package/geocoding/providers/nominatim.d.ts.map +1 -0
  161. package/geocoding/providers/nominatim.js +105 -0
  162. package/geocoding/providers/pelias.d.ts +40 -0
  163. package/geocoding/providers/pelias.d.ts.map +1 -0
  164. package/geocoding/providers/pelias.js +115 -0
  165. package/geocoding/providers/photon.d.ts +39 -0
  166. package/geocoding/providers/photon.d.ts.map +1 -0
  167. package/geocoding/providers/photon.js +107 -0
  168. package/geometry/convert.d.ts +13 -0
  169. package/geometry/convert.d.ts.map +1 -0
  170. package/geometry/convert.js +12 -0
  171. package/geometry/index.d.ts +17 -0
  172. package/geometry/index.d.ts.map +1 -0
  173. package/geometry/index.js +15 -0
  174. package/geometry/internal.d.ts +25 -0
  175. package/geometry/internal.d.ts.map +1 -0
  176. package/geometry/internal.js +40 -0
  177. package/geometry/ops.d.ts +71 -0
  178. package/geometry/ops.d.ts.map +1 -0
  179. package/geometry/ops.js +147 -0
  180. package/geometry/project.d.ts +40 -0
  181. package/geometry/project.d.ts.map +1 -0
  182. package/geometry/project.js +88 -0
  183. package/geometry/types.d.ts +36 -0
  184. package/geometry/types.d.ts.map +1 -0
  185. package/geometry/types.js +12 -0
  186. package/map/automatic-mount-integration.d.ts +134 -0
  187. package/map/automatic-mount-integration.d.ts.map +1 -0
  188. package/map/automatic-mount-integration.js +305 -0
  189. package/map/automatic-source-strategy.d.ts +125 -0
  190. package/map/automatic-source-strategy.d.ts.map +1 -0
  191. package/map/automatic-source-strategy.js +494 -0
  192. package/map/data-to-map-bridge.d.ts +293 -0
  193. package/map/data-to-map-bridge.d.ts.map +1 -0
  194. package/map/data-to-map-bridge.js +817 -0
  195. package/map/geojson-projection.d.ts +33 -0
  196. package/map/geojson-projection.d.ts.map +1 -0
  197. package/map/geojson-projection.js +118 -0
  198. package/map/index.d.ts +14 -0
  199. package/map/index.d.ts.map +1 -1
  200. package/map/index.js +8 -0
  201. package/map/raster-source-spec.d.ts +30 -0
  202. package/map/raster-source-spec.d.ts.map +1 -0
  203. package/map/raster-source-spec.js +190 -0
  204. package/map/raster-source-strategy.d.ts +65 -0
  205. package/map/raster-source-strategy.d.ts.map +1 -0
  206. package/map/raster-source-strategy.js +232 -0
  207. package/map/source-to-maplibre.d.ts +91 -0
  208. package/map/source-to-maplibre.d.ts.map +1 -0
  209. package/map/source-to-maplibre.js +454 -0
  210. package/map/temporal-playback.d.ts +139 -0
  211. package/map/temporal-playback.d.ts.map +1 -0
  212. package/map/temporal-playback.js +247 -0
  213. package/package.json +33 -2
  214. package/query-planner/canonical.d.ts +7 -0
  215. package/query-planner/canonical.d.ts.map +1 -0
  216. package/query-planner/canonical.js +145 -0
  217. package/query-planner/cql2-json.d.ts +17 -0
  218. package/query-planner/cql2-json.d.ts.map +1 -0
  219. package/query-planner/cql2-json.js +646 -0
  220. package/query-planner/diagnostics.d.ts +35 -0
  221. package/query-planner/diagnostics.d.ts.map +1 -0
  222. package/query-planner/diagnostics.js +373 -0
  223. package/query-planner/duckdb.d.ts +79 -0
  224. package/query-planner/duckdb.d.ts.map +1 -0
  225. package/query-planner/duckdb.js +758 -0
  226. package/query-planner/execution-context.d.ts +5 -0
  227. package/query-planner/execution-context.d.ts.map +1 -0
  228. package/query-planner/execution-context.js +50 -0
  229. package/query-planner/executor.d.ts +5 -0
  230. package/query-planner/executor.d.ts.map +1 -0
  231. package/query-planner/executor.js +223 -0
  232. package/query-planner/geoservices.d.ts +91 -0
  233. package/query-planner/geoservices.d.ts.map +1 -0
  234. package/query-planner/geoservices.js +667 -0
  235. package/query-planner/grpc.d.ts +100 -0
  236. package/query-planner/grpc.d.ts.map +1 -0
  237. package/query-planner/grpc.js +736 -0
  238. package/query-planner/index.d.ts +44 -0
  239. package/query-planner/index.d.ts.map +1 -0
  240. package/query-planner/index.js +30 -0
  241. package/query-planner/ir.d.ts +20 -0
  242. package/query-planner/ir.d.ts.map +1 -0
  243. package/query-planner/ir.js +417 -0
  244. package/query-planner/local-aggregate.d.ts +5 -0
  245. package/query-planner/local-aggregate.d.ts.map +1 -0
  246. package/query-planner/local-aggregate.js +126 -0
  247. package/query-planner/odata.d.ts +48 -0
  248. package/query-planner/odata.d.ts.map +1 -0
  249. package/query-planner/odata.js +662 -0
  250. package/query-planner/ogc-compiler.d.ts +55 -0
  251. package/query-planner/ogc-compiler.d.ts.map +1 -0
  252. package/query-planner/ogc-compiler.js +480 -0
  253. package/query-planner/ogc-features.d.ts +53 -0
  254. package/query-planner/ogc-features.d.ts.map +1 -0
  255. package/query-planner/ogc-features.js +617 -0
  256. package/query-planner/planner.d.ts +17 -0
  257. package/query-planner/planner.d.ts.map +1 -0
  258. package/query-planner/planner.js +818 -0
  259. package/query-planner/resource.d.ts +94 -0
  260. package/query-planner/resource.d.ts.map +1 -0
  261. package/query-planner/resource.js +526 -0
  262. package/query-planner/semantic-canonical.d.ts +15 -0
  263. package/query-planner/semantic-canonical.d.ts.map +1 -0
  264. package/query-planner/semantic-canonical.js +62 -0
  265. package/query-planner/semantic-compat.d.ts +10 -0
  266. package/query-planner/semantic-compat.d.ts.map +1 -0
  267. package/query-planner/semantic-compat.js +35 -0
  268. package/query-planner/semantic-compiler.d.ts +64 -0
  269. package/query-planner/semantic-compiler.d.ts.map +1 -0
  270. package/query-planner/semantic-compiler.js +81 -0
  271. package/query-planner/semantic-literals.d.ts +30 -0
  272. package/query-planner/semantic-literals.d.ts.map +1 -0
  273. package/query-planner/semantic-literals.js +133 -0
  274. package/query-planner/semantic-types.d.ts +265 -0
  275. package/query-planner/semantic-types.d.ts.map +1 -0
  276. package/query-planner/semantic-types.js +1 -0
  277. package/query-planner/semantic.d.ts +54 -0
  278. package/query-planner/semantic.d.ts.map +1 -0
  279. package/query-planner/semantic.js +1421 -0
  280. package/query-planner/types.d.ts +560 -0
  281. package/query-planner/types.d.ts.map +1 -0
  282. package/query-planner/types.js +49 -0
  283. package/query-planner/wfs-semantic.d.ts +58 -0
  284. package/query-planner/wfs-semantic.d.ts.map +1 -0
  285. package/query-planner/wfs-semantic.js +547 -0
  286. package/query-planner/wfs.d.ts +6 -0
  287. package/query-planner/wfs.d.ts.map +1 -0
  288. package/query-planner/wfs.js +71 -0
  289. package/realtime/contract.d.ts +142 -0
  290. package/realtime/contract.d.ts.map +1 -0
  291. package/realtime/contract.js +154 -0
  292. package/realtime/honua-server.d.ts.map +1 -1
  293. package/realtime/honua-server.js +13 -8
  294. package/realtime/index.d.ts +19 -4
  295. package/realtime/index.d.ts.map +1 -1
  296. package/realtime/index.js +14 -4
  297. package/realtime/odata-delta.d.ts +114 -0
  298. package/realtime/odata-delta.d.ts.map +1 -0
  299. package/realtime/odata-delta.js +483 -0
  300. package/realtime/resumable-transport.d.ts +111 -0
  301. package/realtime/resumable-transport.d.ts.map +1 -0
  302. package/realtime/resumable-transport.js +406 -0
  303. package/realtime/resumable.d.ts +104 -0
  304. package/realtime/resumable.d.ts.map +1 -0
  305. package/realtime/resumable.js +632 -0
  306. package/realtime/sse.d.ts.map +1 -1
  307. package/realtime/sse.js +27 -23
  308. package/realtime/websocket.d.ts +60 -0
  309. package/realtime/websocket.d.ts.map +1 -0
  310. package/realtime/websocket.js +157 -0
  311. package/realtime/wire.d.ts +27 -0
  312. package/realtime/wire.d.ts.map +1 -0
  313. package/realtime/wire.js +57 -0
  314. package/replica-sync/errors.d.ts +2 -1
  315. package/replica-sync/errors.d.ts.map +1 -1
  316. package/replica-sync/errors.js +33 -2
  317. package/runtime/edit-snapping.d.ts +107 -0
  318. package/runtime/edit-snapping.d.ts.map +1 -0
  319. package/runtime/edit-snapping.js +190 -0
  320. package/runtime/errors.d.ts +3 -2
  321. package/runtime/errors.d.ts.map +1 -1
  322. package/runtime/errors.js +19 -2
  323. package/runtime/index.d.ts +6 -0
  324. package/runtime/index.d.ts.map +1 -1
  325. package/runtime/index.js +3 -0
  326. package/runtime/maplibre-renderer.d.ts +41 -0
  327. package/runtime/maplibre-renderer.d.ts.map +1 -0
  328. package/runtime/maplibre-renderer.js +322 -0
  329. package/runtime/query-tiles.d.ts +2 -1
  330. package/runtime/query-tiles.d.ts.map +1 -1
  331. package/runtime/query-tiles.js +6 -2
  332. package/runtime/source-bridge.d.ts +4 -4
  333. package/runtime/source-bridge.d.ts.map +1 -1
  334. package/runtime/source-bridge.js +9 -56
  335. package/runtime/style-interactions.d.ts +3 -2
  336. package/runtime/style-interactions.d.ts.map +1 -1
  337. package/runtime/style-interactions.js +11 -3
  338. package/runtime/terra-draw-sketch.d.ts +275 -0
  339. package/runtime/terra-draw-sketch.d.ts.map +1 -0
  340. package/runtime/terra-draw-sketch.js +404 -0
  341. package/scene-workspace/index.d.ts +4 -0
  342. package/scene-workspace/index.d.ts.map +1 -1
  343. package/scene-workspace/index.js +2 -0
  344. package/scene-workspace/source-to-cesium.d.ts +116 -0
  345. package/scene-workspace/source-to-cesium.d.ts.map +1 -0
  346. package/scene-workspace/source-to-cesium.js +791 -0
  347. package/scene-workspace/state-sync.d.ts +147 -0
  348. package/scene-workspace/state-sync.d.ts.map +1 -0
  349. package/scene-workspace/state-sync.js +1123 -0
  350. package/source-capability-registry.d.ts +1 -0
  351. package/source-capability-registry.js +1 -0
  352. package/source-capability-types.d.ts +186 -0
  353. package/source-capability-types.js +7 -0
  354. package/style/index.d.ts +2 -0
  355. package/style/index.d.ts.map +1 -1
  356. package/style/index.js +2 -0
  357. package/style/renderers.d.ts +326 -0
  358. package/style/renderers.d.ts.map +1 -0
  359. package/style/renderers.js +517 -0
  360. package/web-components/controller.d.ts +2 -0
  361. package/web-components/controller.d.ts.map +1 -1
  362. package/web-components/controller.js +49 -8
  363. package/web-components/elements.d.ts +95 -1
  364. package/web-components/elements.d.ts.map +1 -1
  365. package/web-components/elements.js +458 -19
  366. package/web-components/index.d.ts +8 -1
  367. package/web-components/index.d.ts.map +1 -1
  368. package/web-components/index.js +7 -0
  369. package/web-components/maplibre-renderer.d.ts.map +1 -1
  370. package/web-components/maplibre-renderer.js +87 -0
  371. package/web-components/measurement.d.ts +69 -0
  372. package/web-components/measurement.d.ts.map +1 -0
  373. package/web-components/measurement.js +523 -0
  374. package/web-components/types.d.ts +109 -0
  375. package/web-components/types.d.ts.map +1 -1
  376. package/webmap/convert-renderer.d.ts +24 -3
  377. package/webmap/convert-renderer.d.ts.map +1 -1
  378. package/webmap/convert-renderer.js +93 -112
  379. package/webmap/index.d.ts +1 -1
  380. package/webmap/index.d.ts.map +1 -1
  381. package/webmap/index.js +1 -1
@@ -15,10 +15,20 @@
15
15
  *
16
16
  * @module
17
17
  */
18
- import { HonuaCapabilityNotSupportedError } from "./errors.js";
19
- /** Guardrails so a malformed / cyclic catalog cannot fan out unbounded. */
20
- const MAX_DOCUMENTS = 500;
21
- const DEFAULT_ITEM_CAP = 1000;
18
+ import { boundedJsonStructureViolation } from "./bounded-json.js";
19
+ import { HonuaAbortError, HonuaCapabilityNotSupportedError } from "./errors.js";
20
+ /** Guardrails match `connect()` static-STAC admission defaults and hard caps. */
21
+ const DEFAULT_MAX_DOCUMENTS = 32;
22
+ const DEFAULT_MAX_DEPTH = 4;
23
+ const DEFAULT_MAX_LINKS_PER_DOCUMENT = 64;
24
+ const DEFAULT_MAX_DOCUMENT_BYTES = 1024 * 1024;
25
+ const HARD_MAX_DOCUMENTS = 64;
26
+ const HARD_MAX_DEPTH = 8;
27
+ const HARD_MAX_LINKS_PER_DOCUMENT = 128;
28
+ const HARD_MAX_DOCUMENT_BYTES = 4 * 1024 * 1024;
29
+ const MAX_STATIC_JSON_DEPTH = 64;
30
+ const MAX_STATIC_JSON_NODES = 100_000;
31
+ const JSON_MEDIA_TYPES = new Set(["application/json", "application/geo+json"]);
22
32
  /**
23
33
  * Reader bound to the URL of a static STAC catalog / collection root. The
24
34
  * URL is the client baseUrl (the transport resolves same-origin absolute
@@ -28,9 +38,11 @@ const DEFAULT_ITEM_CAP = 1000;
28
38
  export class HonuaStacStaticCatalog {
29
39
  client;
30
40
  rootUrl;
31
- constructor(client, rootUrl = "") {
41
+ policy;
42
+ constructor(client, rootUrl = "", policy) {
32
43
  this.client = client;
33
- this.rootUrl = rootUrl;
44
+ this.rootUrl = canonicalRuntimeUrl(rootUrl || client.serverBaseUrl, client.serverBaseUrl);
45
+ this.policy = normalizeRuntimePolicy(policy);
34
46
  }
35
47
  /**
36
48
  * Traverse the catalog tree, collect matching items, and return them in
@@ -50,35 +62,69 @@ export class HonuaStacStaticCatalog {
50
62
  };
51
63
  }
52
64
  async fetchDoc(url, signal) {
53
- // An empty seed root means "the client baseUrl is the catalog document".
54
- const path = url === "" ? this.client.serverBaseUrl : url;
55
- return this.client.pipelineRequestJson("GET", path, undefined, signal);
65
+ const response = await this.client.pipelineFetch("GET", url, { headers: { Accept: "application/json, application/geo+json;q=0.9" } }, signal, { redirect: "error" });
66
+ const contentType = mediaEssence(response.headers.get("content-type") ?? "");
67
+ if (contentType && !JSON_MEDIA_TYPES.has(contentType)) {
68
+ await response.body?.cancel().catch(() => undefined);
69
+ throw new Error("static STAC document did not return JSON");
70
+ }
71
+ const finalUrl = canonicalRuntimeUrl(response.url || url, url);
72
+ if (new URL(finalUrl).origin !== new URL(this.rootUrl).origin) {
73
+ await response.body?.cancel().catch(() => undefined);
74
+ throw new Error("static STAC redirect left the admitted origin");
75
+ }
76
+ const value = await readBoundedJson(response, this.policy.maxDocumentBytes);
77
+ if (!isPlainObject(value))
78
+ throw new Error("static STAC document must be a JSON object");
79
+ if (value.links !== undefined && !Array.isArray(value.links)) {
80
+ throw new Error("static STAC links must be an array");
81
+ }
82
+ return { value: value, url: finalUrl };
56
83
  }
57
84
  /**
58
85
  * Breadth-first walk collecting item documents. Descends `rel="child"`
59
86
  * links; a `collections` filter prunes Collection subtrees whose `id`
60
- * is not requested. Bounded by {@link MAX_DOCUMENTS} and the item cap.
87
+ * is not requested. Every attempted document, traversal depth, per-document
88
+ * link list, response body, redirect, and origin is bounded by the locator's
89
+ * admitted policy.
61
90
  */
62
91
  async collectItems(params) {
63
- const itemCap = typeof params.limit === "number" && params.limit >= 0 ? Math.max(params.limit, 1) : DEFAULT_ITEM_CAP;
64
92
  const wantedCollections = params.collections ? new Set(params.collections) : undefined;
65
- const visited = new Set();
66
- const queue = [this.rootUrl];
67
- const itemUrls = [];
68
- let docCount = 0;
69
- while (queue.length > 0 && docCount < MAX_DOCUMENTS) {
70
- const url = queue.shift();
71
- if (url === undefined || visited.has(url))
93
+ const visitedRequests = new Set();
94
+ const completedUrls = new Set();
95
+ const queue = [{ url: this.rootUrl, depth: 0 }];
96
+ const items = [];
97
+ let attempts = 0;
98
+ while (queue.length > 0 && attempts < this.policy.maxDocuments) {
99
+ throwIfRuntimeAborted(params.signal);
100
+ const next = queue.shift();
101
+ if (!next || visitedRequests.has(next.url))
72
102
  continue;
73
- visited.add(url);
74
- docCount += 1;
75
- let doc;
103
+ visitedRequests.add(next.url);
104
+ attempts += 1;
105
+ let fetched;
76
106
  try {
77
- doc = await this.fetchDoc(url, params.signal);
107
+ fetched = await this.fetchDoc(next.url, params.signal);
78
108
  }
79
109
  catch (err) {
80
- if (url === this.rootUrl) {
81
- throw new HonuaCapabilityNotSupportedError("query", "stac", `static catalog root ${url || "(baseUrl)"} could not be read: ${err instanceof Error ? err.message : String(err)}`);
110
+ if (params.signal?.aborted || err instanceof HonuaAbortError)
111
+ throw new HonuaAbortError();
112
+ if (next.depth === 0) {
113
+ throw new HonuaCapabilityNotSupportedError("query", "stac", `static catalog root ${this.rootUrl} could not be read: ${err instanceof Error ? err.message : String(err)}`);
114
+ }
115
+ continue;
116
+ }
117
+ if (completedUrls.has(fetched.url))
118
+ continue;
119
+ completedUrls.add(fetched.url);
120
+ visitedRequests.add(fetched.url);
121
+ const doc = fetched.value;
122
+ if (doc.type === "Feature") {
123
+ if (isMinimallyValidStacItem(doc)) {
124
+ items.push(doc);
125
+ }
126
+ else if (next.depth === 0) {
127
+ throw new HonuaCapabilityNotSupportedError("query", "stac", "static catalog root Feature is not a minimally valid STAC Item");
82
128
  }
83
129
  continue;
84
130
  }
@@ -89,64 +135,209 @@ export class HonuaStacStaticCatalog {
89
135
  !wantedCollections.has(doc.id)) {
90
136
  continue;
91
137
  }
92
- const base = absoluteBaseFor(url, this.client.serverBaseUrl);
93
- for (const link of doc.links ?? []) {
138
+ if (next.depth >= this.policy.maxDepth)
139
+ continue;
140
+ for (const link of (doc.links ?? []).slice(0, this.policy.maxLinksPerDocument)) {
141
+ if (!isPlainObject(link))
142
+ continue;
94
143
  if (typeof link.href !== "string")
95
144
  continue;
96
- const rel = (link.rel ?? "").toLowerCase();
97
- const resolved = resolveHref(link.href, base);
98
- if (rel === "child") {
99
- if (!visited.has(resolved))
100
- queue.push(resolved);
101
- }
102
- else if (rel === "item" || rel === "items") {
103
- itemUrls.push(resolved);
104
- }
105
- }
106
- }
107
- const items = [];
108
- for (const itemUrl of itemUrls) {
109
- if (items.length >= itemCap)
110
- break;
111
- try {
112
- const item = (await this.fetchDoc(itemUrl, params.signal));
113
- if (item && item.type === "Feature")
114
- items.push(item);
115
- }
116
- catch {
117
- // Skip an unreadable item; the traversal is best-effort per item.
145
+ const rel = typeof link.rel === "string" ? link.rel.toLowerCase() : "";
146
+ if (rel !== "child" && rel !== "item")
147
+ continue;
148
+ if (typeof link.type === "string" && !JSON_MEDIA_TYPES.has(mediaEssence(link.type)))
149
+ continue;
150
+ const resolved = safeTraversalUrl(link.href, fetched.url, this.rootUrl);
151
+ if (resolved && !visitedRequests.has(resolved))
152
+ queue.push({ url: resolved, depth: next.depth + 1 });
118
153
  }
119
154
  }
120
155
  return items;
121
156
  }
122
157
  }
123
- /**
124
- * The base URL a document's relative links resolve against. When the reader
125
- * was seeded with a bare `""` root (the client baseUrl IS the catalog), use
126
- * the client's server base URL so `./child.json` resolves correctly.
127
- */
128
- function absoluteBaseFor(docUrl, serverBaseUrl) {
129
- if (docUrl === "")
130
- return serverBaseUrl;
131
- if (/^https?:\/\//i.test(docUrl))
132
- return docUrl;
133
- const root = serverBaseUrl.endsWith("/") ? serverBaseUrl : `${serverBaseUrl}/`;
158
+ function safeTraversalUrl(href, base, root) {
159
+ let url;
134
160
  try {
135
- return new URL(docUrl, root).toString();
161
+ url = new URL(href, base);
136
162
  }
137
163
  catch {
138
- return serverBaseUrl;
164
+ return undefined;
165
+ }
166
+ if ((url.protocol !== "http:" && url.protocol !== "https:") ||
167
+ url.username ||
168
+ url.password ||
169
+ url.search ||
170
+ url.hash ||
171
+ url.origin !== new URL(root).origin) {
172
+ return undefined;
139
173
  }
174
+ return url.toString();
140
175
  }
141
- function resolveHref(href, base) {
142
- if (/^https?:\/\//i.test(href))
143
- return href;
176
+ function canonicalRuntimeUrl(value, base) {
177
+ const url = new URL(value, base);
178
+ if ((url.protocol !== "http:" && url.protocol !== "https:") ||
179
+ url.username ||
180
+ url.password ||
181
+ url.search ||
182
+ url.hash) {
183
+ throw new HonuaCapabilityNotSupportedError("query", "stac", "static STAC URLs must be credential-free HTTP(S) URLs without query parameters or fragments");
184
+ }
185
+ return url.toString();
186
+ }
187
+ function normalizeRuntimePolicy(value) {
188
+ if (value === undefined) {
189
+ return Object.freeze({
190
+ maxDocuments: DEFAULT_MAX_DOCUMENTS,
191
+ maxDepth: DEFAULT_MAX_DEPTH,
192
+ maxLinksPerDocument: DEFAULT_MAX_LINKS_PER_DOCUMENT,
193
+ maxDocumentBytes: DEFAULT_MAX_DOCUMENT_BYTES,
194
+ });
195
+ }
196
+ const maxDocuments = runtimeBound(value.maxDocuments, 1, HARD_MAX_DOCUMENTS, "maxDocuments");
197
+ const maxDepth = runtimeBound(value.maxDepth, 1, HARD_MAX_DEPTH, "maxDepth");
198
+ const maxLinksPerDocument = runtimeBound(value.maxLinksPerDocument, 1, HARD_MAX_LINKS_PER_DOCUMENT, "maxLinksPerDocument");
199
+ const maxDocumentBytes = runtimeBound(value.maxDocumentBytes, 1, HARD_MAX_DOCUMENT_BYTES, "maxDocumentBytes");
200
+ // Validate the complete admitted locator even though asset inspection and
201
+ // HEAD-probe budgets are used only by connect-time discovery.
202
+ runtimeBound(value.maxAssets, 1, 1024, "maxAssets");
203
+ runtimeBound(value.maxAssetProbes, 0, 16, "maxAssetProbes");
204
+ return Object.freeze({ maxDocuments, maxDepth, maxLinksPerDocument, maxDocumentBytes });
205
+ }
206
+ function runtimeBound(value, minimum, maximum, name) {
207
+ if (!Number.isSafeInteger(value) || value < minimum || value > maximum) {
208
+ throw new HonuaCapabilityNotSupportedError("query", "stac", `static STAC ${name} must be an integer between ${minimum} and ${maximum}`);
209
+ }
210
+ return value;
211
+ }
212
+ async function readBoundedJson(response, maximum) {
213
+ const advertised = response.headers.get("content-length");
214
+ if (advertised !== null && Number(advertised) > maximum) {
215
+ await response.body?.cancel().catch(() => undefined);
216
+ throw new Error(`static STAC response exceeds the ${maximum}-byte limit`);
217
+ }
218
+ if (!response.body)
219
+ throw new Error("static STAC response body is empty");
220
+ const reader = response.body.getReader();
221
+ const chunks = [];
222
+ let length = 0;
144
223
  try {
145
- return new URL(href, base).toString();
224
+ for (;;) {
225
+ const { done, value } = await reader.read();
226
+ if (done)
227
+ break;
228
+ length += value.byteLength;
229
+ if (length > maximum) {
230
+ await reader.cancel().catch(() => undefined);
231
+ throw new Error(`static STAC response exceeds the ${maximum}-byte limit`);
232
+ }
233
+ chunks.push(value);
234
+ }
235
+ }
236
+ finally {
237
+ reader.releaseLock();
238
+ }
239
+ const bytes = new Uint8Array(length);
240
+ let offset = 0;
241
+ for (const chunk of chunks) {
242
+ bytes.set(chunk, offset);
243
+ offset += chunk.byteLength;
244
+ }
245
+ let value;
246
+ try {
247
+ value = JSON.parse(new TextDecoder().decode(bytes));
146
248
  }
147
249
  catch {
148
- return href;
250
+ throw new Error("static STAC response contained invalid JSON");
251
+ }
252
+ const violation = boundedJsonStructureViolation(value, MAX_STATIC_JSON_DEPTH, MAX_STATIC_JSON_NODES);
253
+ if (violation === "max-depth") {
254
+ throw new Error(`static STAC response exceeds the ${MAX_STATIC_JSON_DEPTH}-level nesting limit`);
255
+ }
256
+ if (violation === "max-nodes") {
257
+ throw new Error(`static STAC response exceeds the ${MAX_STATIC_JSON_NODES}-node structural limit`);
258
+ }
259
+ if (violation === "non-json")
260
+ throw new Error("static STAC response contains non-finite JSON data");
261
+ return value;
262
+ }
263
+ function mediaEssence(value) {
264
+ return value.split(";", 1)[0]?.trim().toLowerCase() ?? "";
265
+ }
266
+ function isPlainObject(value) {
267
+ if (typeof value !== "object" || value === null || Array.isArray(value))
268
+ return false;
269
+ const prototype = Object.getPrototypeOf(value);
270
+ return prototype === Object.prototype || prototype === null;
271
+ }
272
+ function throwIfRuntimeAborted(signal) {
273
+ if (signal?.aborted)
274
+ throw new HonuaAbortError();
275
+ }
276
+ function isMinimallyValidStacItem(value) {
277
+ if (value.type !== "Feature" ||
278
+ typeof value.stac_version !== "string" ||
279
+ !value.stac_version.trim() ||
280
+ value.stac_version.length > 64 ||
281
+ typeof value.id !== "string" ||
282
+ !value.id.trim() ||
283
+ value.id.length > 512 ||
284
+ !isPlainObject(value.properties) ||
285
+ !Array.isArray(value.links) ||
286
+ !isPlainObject(value.assets)) {
287
+ return false;
149
288
  }
289
+ if (value.stac_extensions !== undefined &&
290
+ (!Array.isArray(value.stac_extensions) || value.stac_extensions.some((entry) => typeof entry !== "string"))) {
291
+ return false;
292
+ }
293
+ if (value.collection !== undefined && (typeof value.collection !== "string" || !value.collection.trim())) {
294
+ return false;
295
+ }
296
+ if (!Object.hasOwn(value, "geometry") || !isRuntimeGeometry(value.geometry))
297
+ return false;
298
+ if (value.bbox !== undefined && !isRuntimeBbox(value.bbox))
299
+ return false;
300
+ if (value.links.some((link) => !isPlainObject(link) ||
301
+ typeof link.rel !== "string" ||
302
+ !link.rel.trim() ||
303
+ typeof link.href !== "string" ||
304
+ !link.href.trim())) {
305
+ return false;
306
+ }
307
+ if (Object.values(value.assets).some((asset) => !isPlainObject(asset) || typeof asset.href !== "string" || !asset.href.trim())) {
308
+ return false;
309
+ }
310
+ const datetime = value.properties.datetime;
311
+ if (datetime === null) {
312
+ return validRuntimeDatetime(value.properties.start_datetime) && validRuntimeDatetime(value.properties.end_datetime);
313
+ }
314
+ return validRuntimeDatetime(datetime);
315
+ }
316
+ function isRuntimeGeometry(value) {
317
+ if (value === null)
318
+ return true;
319
+ if (!isPlainObject(value) || typeof value.type !== "string")
320
+ return false;
321
+ if (value.type === "GeometryCollection")
322
+ return Array.isArray(value.geometries);
323
+ return ((value.type === "Point" ||
324
+ value.type === "MultiPoint" ||
325
+ value.type === "LineString" ||
326
+ value.type === "MultiLineString" ||
327
+ value.type === "Polygon" ||
328
+ value.type === "MultiPolygon") &&
329
+ Array.isArray(value.coordinates));
330
+ }
331
+ function isRuntimeBbox(value) {
332
+ return (Array.isArray(value) &&
333
+ (value.length === 4 || value.length === 6) &&
334
+ value.every((entry) => typeof entry === "number" && Number.isFinite(entry)) &&
335
+ value[0] <= value[value.length / 2] &&
336
+ value[1] <= value[value.length / 2 + 1] &&
337
+ (value.length === 4 || value[2] <= value[5]));
338
+ }
339
+ function validRuntimeDatetime(value) {
340
+ return typeof value === "string" && value.length <= 128 && !Number.isNaN(Date.parse(value));
150
341
  }
151
342
  function matchesFilters(item, params) {
152
343
  const doc = item;
@@ -175,14 +366,14 @@ function bboxIntersects(a, b) {
175
366
  return axmin <= bxmax && axmax >= bxmin && aymin <= bymax && aymax >= bymin;
176
367
  }
177
368
  function datetimeMatches(query, doc) {
178
- const dt = doc.properties?.datetime;
369
+ const dt = typeof doc.properties?.datetime === "string" ? doc.properties.datetime : undefined;
179
370
  // Closed / open interval query per STAC (`start/end`, `../end`, `start/..`).
180
371
  if (query.includes("/")) {
181
372
  const [rawStart, rawEnd] = query.split("/");
182
373
  const start = rawStart && rawStart !== ".." ? Date.parse(rawStart) : Number.NEGATIVE_INFINITY;
183
374
  const end = rawEnd && rawEnd !== ".." ? Date.parse(rawEnd) : Number.POSITIVE_INFINITY;
184
- const startProp = doc.properties?.start_datetime ?? dt;
185
- const endProp = doc.properties?.end_datetime ?? dt;
375
+ const startProp = typeof doc.properties?.start_datetime === "string" ? doc.properties.start_datetime : dt;
376
+ const endProp = typeof doc.properties?.end_datetime === "string" ? doc.properties.end_datetime : dt;
186
377
  if (!startProp && !endProp)
187
378
  return false;
188
379
  const itemStart = startProp ? Date.parse(startProp) : Number.NEGATIVE_INFINITY;
@@ -1 +1 @@
1
- {"version":3,"file":"surfaces.d.ts","sourceRoot":"","sources":["../../../src/core/surfaces.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"surfaces.d.ts","sourceRoot":"","sources":["../../../src/core/surfaces.ts"],"names":[],"mappings":"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"}
package/core/surfaces.js CHANGED
@@ -1,5 +1,6 @@
1
1
  import { HonuaJobPollTimeoutError, isJobTerminal } from "../contract/jobs.js";
2
2
  import { FEATURE_SERVER_H3_SPATIAL_AGGREGATION_INDEX_MODEL_ID, SPATIAL_AGGREGATION_METADATA_SCHEMA_VERSION, SPATIAL_AGGREGATION_SCHEMA_VERSION, assertFeatureServerH3SpatialAggregationRequest, spatialAggregationWidgets, } from "../contract/spatial-aggregation.js";
3
+ import { HonuaCapabilityNotSupportedError } from "./errors.js";
3
4
  import { encodeServiceIdPath } from "./path-utils.js";
4
5
  import { responseExceededTransferLimit } from "./wire-shared.js";
5
6
  export class HonuaService {
@@ -105,19 +106,48 @@ export class HonuaFeatureLayer {
105
106
  const startingOffset = normalizeOffset(request.resultOffset);
106
107
  const features = [];
107
108
  let offset = startingOffset;
109
+ // Advance the page cursor through the top-level `resultOffset` /
110
+ // `resultRecordCount` fields on `QueryFeaturesRequest`, not
111
+ // `extraParams`. The REST mapper (`queryFeaturesRest`) honors both
112
+ // identically, but the gRPC-web request mapper (`toProtoQueryRequest`)
113
+ // only ever reads the top-level fields; nesting the cursor under
114
+ // `extraParams` silently dropped it on the gRPC transport and made every
115
+ // page repeat page one for a full/exact-page result set (issue #663).
116
+ let previousPageSignature;
108
117
  for (let page = 0; page < maxPages; page += 1) {
109
118
  const response = await this.queryFeatures({
110
119
  ...request,
111
- extraParams: {
112
- ...(request.extraParams ?? {}),
113
- resultOffset: offset,
114
- resultRecordCount: pageSize,
115
- },
120
+ // Strip any caller-supplied `extraParams.resultOffset` /
121
+ // `resultRecordCount` so it cannot silently win over the computed
122
+ // top-level cursor on the wire (`appendQueryExtraParams` applies
123
+ // `extraParams` after the top-level fields on the REST transport).
124
+ extraParams: withoutPagingExtraParams(request.extraParams),
125
+ resultOffset: offset,
126
+ resultRecordCount: pageSize,
116
127
  });
117
128
  const pageFeatures = response.features ?? [];
118
129
  if (pageFeatures.length === 0) {
119
130
  break;
120
131
  }
132
+ if (this.client.isGrpcWeb) {
133
+ // Defense in depth (REQ-002): even with the cursor now threaded
134
+ // through the field the gRPC mapper actually reads, fail closed
135
+ // rather than loop if a server implementation still returns an
136
+ // identical page after the offset advanced (e.g. a nonconforming
137
+ // gRPC facade that ignores `resultOffset`). Looping here previously
138
+ // meant an unbounded repeat of the first page for exact-page-boundary
139
+ // result sets.
140
+ const signature = grpcPageOffsetSignature(response, pageFeatures);
141
+ if (previousPageSignature !== undefined && signature === previousPageSignature) {
142
+ throw new HonuaCapabilityNotSupportedError("queryAll", "grpc", `${this.serviceId}/${this.layerId}`, {
143
+ context: {
144
+ reason: "gRPC transport returned an identical page after resultOffset advanced; gRPC-aware pagination cannot be honored for this request.",
145
+ resultOffset: offset,
146
+ },
147
+ });
148
+ }
149
+ previousPageSignature = signature;
150
+ }
121
151
  features.push(...pageFeatures);
122
152
  offset += pageFeatures.length;
123
153
  if (!responseExceededTransferLimit(response) && pageFeatures.length < pageSize) {
@@ -1904,6 +1934,40 @@ function normalizeOffset(offset) {
1904
1934
  }
1905
1935
  return Math.max(0, Math.trunc(offset));
1906
1936
  }
1937
+ /**
1938
+ * Returns `extraParams` with `resultOffset` / `resultRecordCount` removed, so
1939
+ * a caller-supplied `extraParams` cannot be applied after (and therefore
1940
+ * override) the paging cursor `queryFeaturesAll` computes for each page. The
1941
+ * REST wire mapper (`appendQueryExtraParams`) applies `extraParams` after the
1942
+ * top-level query fields, so leaving these keys in place would let a stray
1943
+ * `extraParams.resultOffset` silently win over the loop's own cursor.
1944
+ */
1945
+ function withoutPagingExtraParams(extraParams) {
1946
+ if (!extraParams) {
1947
+ return undefined;
1948
+ }
1949
+ const { resultOffset: _resultOffset, resultRecordCount: _resultRecordCount, ...rest } = extraParams;
1950
+ return rest;
1951
+ }
1952
+ /**
1953
+ * Produces a cheap identity signature for a query page so
1954
+ * `HonuaFeatureLayer.queryFeaturesAll` can detect a gRPC transport that
1955
+ * returns the same page again after the `resultOffset` cursor advanced
1956
+ * (REQ-002 of issue #663: fail closed rather than loop or silently repeat a
1957
+ * page). Prefers the response's declared object-id field, present on every
1958
+ * GeoServices-shaped feature response; falls back to serializing the raw
1959
+ * attributes when the id field is unavailable.
1960
+ */
1961
+ function grpcPageOffsetSignature(response, features) {
1962
+ const idField = response.objectIdFieldName;
1963
+ if (idField) {
1964
+ const objectIds = features.map((feature) => feature.attributes?.[idField]);
1965
+ if (objectIds.every((objectId) => objectId !== undefined && objectId !== null)) {
1966
+ return JSON.stringify(objectIds);
1967
+ }
1968
+ }
1969
+ return JSON.stringify(features);
1970
+ }
1907
1971
  function normalizeTotalLimit(limit) {
1908
1972
  if (!isFinitePositiveInteger(limit)) {
1909
1973
  return undefined;