@honua/react 0.1.0-beta.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.
- package/contract/discovery.d.ts +231 -0
- package/contract/discovery.d.ts.map +1 -0
- package/contract/discovery.js +554 -0
- package/contract/edit-sketch.d.ts +8 -0
- package/contract/edit-sketch.d.ts.map +1 -1
- package/contract/edit-sketch.js +15 -0
- package/contract/edit-snapping.d.ts +160 -0
- package/contract/edit-snapping.d.ts.map +1 -0
- package/contract/edit-snapping.js +675 -0
- package/contract/generated/projjson-v0.7-crs-validator.d.ts +35 -0
- package/contract/generated/projjson-v0.7-crs-validator.d.ts.map +1 -0
- package/contract/generated/projjson-v0.7-crs-validator.js +3941 -0
- package/contract/index.d.ts +11 -2
- package/contract/index.d.ts.map +1 -1
- package/contract/index.js +4 -1
- package/contract/pmtiles.d.ts +31 -0
- package/contract/pmtiles.d.ts.map +1 -1
- package/contract/pmtiles.js +60 -20
- package/contract/protocol-module.d.ts +70 -0
- package/contract/protocol-module.d.ts.map +1 -0
- package/contract/protocol-module.js +1 -0
- package/contract/schema-envelope.d.ts +26 -0
- package/contract/schema-envelope.d.ts.map +1 -0
- package/contract/schema-envelope.js +25 -0
- package/contract/schema.d.ts +582 -0
- package/contract/schema.d.ts.map +1 -0
- package/contract/schema.js +2483 -0
- package/contract/source-capability-support.d.ts +6 -0
- package/contract/source-capability-support.d.ts.map +1 -0
- package/contract/source-capability-support.js +154 -0
- package/contract/source.d.ts +35 -17
- package/contract/source.d.ts.map +1 -1
- package/contract/source.js +267 -71
- package/contract/types.d.ts +140 -4
- package/contract/types.d.ts.map +1 -1
- package/contract/types.js +6 -14
- package/core/bounded-json.d.ts +4 -0
- package/core/bounded-json.d.ts.map +1 -0
- package/core/bounded-json.js +38 -0
- package/core/cache-state.d.ts +9 -0
- package/core/cache-state.d.ts.map +1 -1
- package/core/cache-state.js +10 -0
- package/core/capabilities-xml.d.ts +33 -0
- package/core/capabilities-xml.d.ts.map +1 -0
- package/core/capabilities-xml.js +331 -0
- package/core/client.d.ts +4 -1
- package/core/client.d.ts.map +1 -1
- package/core/client.js +115 -29
- package/core/error-classifications.d.ts +153 -0
- package/core/error-classifications.d.ts.map +1 -0
- package/core/error-classifications.js +140 -0
- package/core/error-code-registry.d.ts +158 -0
- package/core/error-code-registry.d.ts.map +1 -0
- package/core/error-code-registry.js +143 -0
- package/core/error-envelope.d.ts +68 -0
- package/core/error-envelope.d.ts.map +1 -0
- package/core/error-envelope.js +357 -0
- package/core/errors.d.ts +45 -29
- package/core/errors.d.ts.map +1 -1
- package/core/errors.js +97 -50
- package/core/geoparquet-sql.d.ts +30 -2
- package/core/geoparquet-sql.d.ts.map +1 -1
- package/core/geoparquet-sql.js +38 -3
- package/core/odata-key-path.d.ts +12 -0
- package/core/odata-key-path.d.ts.map +1 -0
- package/core/odata-key-path.js +28 -0
- package/core/odata-write-codec.d.ts +66 -0
- package/core/odata-write-codec.d.ts.map +1 -0
- package/core/odata-write-codec.js +1083 -0
- package/core/odata.d.ts +59 -7
- package/core/odata.d.ts.map +1 -1
- package/core/odata.js +431 -99
- package/core/ogc-features.d.ts.map +1 -1
- package/core/ogc-features.js +3 -0
- package/core/ogc-maps.d.ts +7 -0
- package/core/ogc-maps.d.ts.map +1 -1
- package/core/ogc-maps.js +46 -7
- package/core/ogc-processes.d.ts +2 -1
- package/core/ogc-processes.d.ts.map +1 -1
- package/core/ogc-processes.js +33 -5
- package/core/ogc-records.d.ts +9 -0
- package/core/ogc-records.d.ts.map +1 -1
- package/core/ogc-records.js +78 -29
- package/core/ogc-tiles.d.ts +10 -1
- package/core/ogc-tiles.d.ts.map +1 -1
- package/core/ogc-tiles.js +56 -17
- package/core/path-utils.d.ts +9 -0
- package/core/path-utils.d.ts.map +1 -1
- package/core/path-utils.js +19 -0
- package/core/protocol-transport.d.ts +1 -0
- package/core/protocol-transport.d.ts.map +1 -1
- package/core/request-pipeline.d.ts.map +1 -1
- package/core/request-pipeline.js +1 -1
- package/core/spatial-filter.d.ts +8 -4
- package/core/spatial-filter.d.ts.map +1 -1
- package/core/spatial-filter.js +206 -16
- package/core/stac-static.d.ts +6 -2
- package/core/stac-static.d.ts.map +1 -1
- package/core/stac-static.js +260 -69
- package/core/surfaces.d.ts.map +1 -1
- package/core/surfaces.js +69 -5
- package/core/types.d.ts +125 -7
- package/core/types.d.ts.map +1 -1
- package/core/wfs-capabilities.d.ts +2 -0
- package/core/wfs-capabilities.d.ts.map +1 -1
- package/core/wfs-capabilities.js +8 -1
- package/core/wfs.d.ts.map +1 -1
- package/core/wfs.js +10 -0
- package/core/wms-capabilities.d.ts +56 -84
- package/core/wms-capabilities.d.ts.map +1 -1
- package/core/wms-capabilities.js +212 -509
- package/core/wmts-capabilities.d.ts +62 -62
- package/core/wmts-capabilities.d.ts.map +1 -1
- package/core/wmts-capabilities.js +224 -371
- package/esri-compat/editor.d.ts +8 -0
- package/esri-compat/editor.d.ts.map +1 -1
- package/esri-compat/editor.js +13 -0
- package/esri-compat/feature-layer.d.ts +2 -0
- package/esri-compat/feature-layer.d.ts.map +1 -1
- package/esri-compat/feature-layer.js +1 -0
- package/esri-compat/layer-list.d.ts +11 -0
- package/esri-compat/layer-list.d.ts.map +1 -1
- package/esri-compat/layer-list.js +49 -0
- package/esri-compat/legend.d.ts +10 -0
- package/esri-compat/legend.d.ts.map +1 -1
- package/esri-compat/legend.js +27 -0
- package/esri-compat/portal.d.ts +197 -0
- package/esri-compat/portal.d.ts.map +1 -0
- package/esri-compat/portal.js +251 -0
- package/esri-compat/renderer-objects.d.ts +40 -0
- package/esri-compat/renderer-objects.d.ts.map +1 -0
- package/esri-compat/renderer-objects.js +62 -0
- package/esri-compat/sketch.d.ts +43 -0
- package/esri-compat/sketch.d.ts.map +1 -1
- package/esri-compat/sketch.js +46 -0
- package/esri-compat/snapping.d.ts +43 -0
- package/esri-compat/snapping.d.ts.map +1 -0
- package/esri-compat/snapping.js +45 -0
- package/esri-compat/url.d.ts.map +1 -1
- package/esri-compat/url.js +1 -1
- package/esri-compat/widget-host.d.ts +84 -0
- package/esri-compat/widget-host.d.ts.map +1 -0
- package/esri-compat/widget-host.js +159 -0
- package/filter-registry/index.d.ts +145 -0
- package/filter-registry/index.d.ts.map +1 -0
- package/filter-registry/index.js +531 -0
- package/generated-app/errors.d.ts +18 -2
- package/generated-app/errors.d.ts.map +1 -1
- package/generated-app/errors.js +44 -11
- package/map/automatic-mount-integration.d.ts +134 -0
- package/map/automatic-mount-integration.d.ts.map +1 -0
- package/map/automatic-mount-integration.js +305 -0
- package/map/automatic-source-strategy.d.ts +125 -0
- package/map/automatic-source-strategy.d.ts.map +1 -0
- package/map/automatic-source-strategy.js +494 -0
- package/map/data-to-map-bridge.d.ts +293 -0
- package/map/data-to-map-bridge.d.ts.map +1 -0
- package/map/data-to-map-bridge.js +817 -0
- package/map/geojson-projection.d.ts +33 -0
- package/map/geojson-projection.d.ts.map +1 -0
- package/map/geojson-projection.js +118 -0
- package/map/index.d.ts +14 -0
- package/map/index.d.ts.map +1 -1
- package/map/index.js +8 -0
- package/map/raster-source-spec.d.ts +30 -0
- package/map/raster-source-spec.d.ts.map +1 -0
- package/map/raster-source-spec.js +190 -0
- package/map/raster-source-strategy.d.ts +65 -0
- package/map/raster-source-strategy.d.ts.map +1 -0
- package/map/raster-source-strategy.js +232 -0
- package/map/source-to-maplibre.d.ts +91 -0
- package/map/source-to-maplibre.d.ts.map +1 -0
- package/map/source-to-maplibre.js +454 -0
- package/map/temporal-playback.d.ts +139 -0
- package/map/temporal-playback.d.ts.map +1 -0
- package/map/temporal-playback.js +247 -0
- package/package.json +14 -1
- package/query-planner/canonical.d.ts +7 -0
- package/query-planner/canonical.d.ts.map +1 -0
- package/query-planner/canonical.js +145 -0
- package/query-planner/cql2-json.d.ts +17 -0
- package/query-planner/cql2-json.d.ts.map +1 -0
- package/query-planner/cql2-json.js +646 -0
- package/query-planner/diagnostics.d.ts +35 -0
- package/query-planner/diagnostics.d.ts.map +1 -0
- package/query-planner/diagnostics.js +373 -0
- package/query-planner/duckdb.d.ts +79 -0
- package/query-planner/duckdb.d.ts.map +1 -0
- package/query-planner/duckdb.js +758 -0
- package/query-planner/execution-context.d.ts +5 -0
- package/query-planner/execution-context.d.ts.map +1 -0
- package/query-planner/execution-context.js +50 -0
- package/query-planner/executor.d.ts +5 -0
- package/query-planner/executor.d.ts.map +1 -0
- package/query-planner/executor.js +223 -0
- package/query-planner/geoservices.d.ts +91 -0
- package/query-planner/geoservices.d.ts.map +1 -0
- package/query-planner/geoservices.js +667 -0
- package/query-planner/grpc.d.ts +100 -0
- package/query-planner/grpc.d.ts.map +1 -0
- package/query-planner/grpc.js +736 -0
- package/query-planner/index.d.ts +44 -0
- package/query-planner/index.d.ts.map +1 -0
- package/query-planner/index.js +30 -0
- package/query-planner/ir.d.ts +20 -0
- package/query-planner/ir.d.ts.map +1 -0
- package/query-planner/ir.js +417 -0
- package/query-planner/local-aggregate.d.ts +5 -0
- package/query-planner/local-aggregate.d.ts.map +1 -0
- package/query-planner/local-aggregate.js +126 -0
- package/query-planner/odata.d.ts +48 -0
- package/query-planner/odata.d.ts.map +1 -0
- package/query-planner/odata.js +662 -0
- package/query-planner/ogc-compiler.d.ts +55 -0
- package/query-planner/ogc-compiler.d.ts.map +1 -0
- package/query-planner/ogc-compiler.js +480 -0
- package/query-planner/ogc-features.d.ts +53 -0
- package/query-planner/ogc-features.d.ts.map +1 -0
- package/query-planner/ogc-features.js +617 -0
- package/query-planner/planner.d.ts +17 -0
- package/query-planner/planner.d.ts.map +1 -0
- package/query-planner/planner.js +818 -0
- package/query-planner/resource.d.ts +94 -0
- package/query-planner/resource.d.ts.map +1 -0
- package/query-planner/resource.js +526 -0
- package/query-planner/semantic-canonical.d.ts +15 -0
- package/query-planner/semantic-canonical.d.ts.map +1 -0
- package/query-planner/semantic-canonical.js +62 -0
- package/query-planner/semantic-compat.d.ts +10 -0
- package/query-planner/semantic-compat.d.ts.map +1 -0
- package/query-planner/semantic-compat.js +35 -0
- package/query-planner/semantic-compiler.d.ts +64 -0
- package/query-planner/semantic-compiler.d.ts.map +1 -0
- package/query-planner/semantic-compiler.js +81 -0
- package/query-planner/semantic-literals.d.ts +30 -0
- package/query-planner/semantic-literals.d.ts.map +1 -0
- package/query-planner/semantic-literals.js +133 -0
- package/query-planner/semantic-types.d.ts +265 -0
- package/query-planner/semantic-types.d.ts.map +1 -0
- package/query-planner/semantic-types.js +1 -0
- package/query-planner/semantic.d.ts +54 -0
- package/query-planner/semantic.d.ts.map +1 -0
- package/query-planner/semantic.js +1421 -0
- package/query-planner/types.d.ts +560 -0
- package/query-planner/types.d.ts.map +1 -0
- package/query-planner/types.js +49 -0
- package/query-planner/wfs-semantic.d.ts +58 -0
- package/query-planner/wfs-semantic.d.ts.map +1 -0
- package/query-planner/wfs-semantic.js +547 -0
- package/query-planner/wfs.d.ts +6 -0
- package/query-planner/wfs.d.ts.map +1 -0
- package/query-planner/wfs.js +71 -0
- package/react/external-map.d.ts +67 -0
- package/react/external-map.d.ts.map +1 -0
- package/react/external-map.js +63 -0
- package/react/honua-map.d.ts.map +1 -1
- package/react/honua-map.js +3 -2
- package/react/honua-source-layer.d.ts +110 -0
- package/react/honua-source-layer.d.ts.map +1 -0
- package/react/honua-source-layer.js +101 -0
- package/react/hooks.d.ts +28 -0
- package/react/hooks.d.ts.map +1 -1
- package/react/hooks.js +26 -4
- package/react/index.d.ts +8 -0
- package/react/index.d.ts.map +1 -1
- package/react/index.js +5 -0
- package/react/query-cache.d.ts +26 -4
- package/react/query-cache.d.ts.map +1 -1
- package/react/query-cache.js +51 -8
- package/react/selection.d.ts +177 -0
- package/react/selection.d.ts.map +1 -0
- package/react/selection.js +0 -0
- package/react/use-mounted-source.d.ts +69 -0
- package/react/use-mounted-source.d.ts.map +1 -0
- package/react/use-mounted-source.js +346 -0
- package/runtime/edit-snapping.d.ts +107 -0
- package/runtime/edit-snapping.d.ts.map +1 -0
- package/runtime/edit-snapping.js +190 -0
- package/runtime/errors.d.ts +3 -2
- package/runtime/errors.d.ts.map +1 -1
- package/runtime/errors.js +19 -2
- package/runtime/index.d.ts +6 -0
- package/runtime/index.d.ts.map +1 -1
- package/runtime/index.js +3 -0
- package/runtime/maplibre-renderer.d.ts +41 -0
- package/runtime/maplibre-renderer.d.ts.map +1 -0
- package/runtime/maplibre-renderer.js +322 -0
- package/runtime/query-tiles.d.ts +2 -1
- package/runtime/query-tiles.d.ts.map +1 -1
- package/runtime/query-tiles.js +6 -2
- package/runtime/source-bridge.d.ts +4 -4
- package/runtime/source-bridge.d.ts.map +1 -1
- package/runtime/source-bridge.js +9 -56
- package/runtime/style-interactions.d.ts +3 -2
- package/runtime/style-interactions.d.ts.map +1 -1
- package/runtime/style-interactions.js +11 -3
- package/runtime/terra-draw-sketch.d.ts +275 -0
- package/runtime/terra-draw-sketch.d.ts.map +1 -0
- package/runtime/terra-draw-sketch.js +404 -0
- package/source-capability-registry.d.ts +1 -0
- package/source-capability-registry.js +1 -0
- package/source-capability-types.d.ts +186 -0
- package/source-capability-types.js +7 -0
- package/style/index.d.ts +2 -0
- package/style/index.d.ts.map +1 -1
- package/style/index.js +2 -0
- package/style/renderers.d.ts +326 -0
- package/style/renderers.d.ts.map +1 -0
- package/style/renderers.js +517 -0
- package/webmap/convert-renderer.d.ts +24 -3
- package/webmap/convert-renderer.d.ts.map +1 -1
- package/webmap/convert-renderer.js +93 -112
- package/webmap/index.d.ts +1 -1
- package/webmap/index.d.ts.map +1 -1
- package/webmap/index.js +1 -1
package/core/stac-static.js
CHANGED
|
@@ -15,10 +15,20 @@
|
|
|
15
15
|
*
|
|
16
16
|
* @module
|
|
17
17
|
*/
|
|
18
|
-
import {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
const
|
|
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
|
-
|
|
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
|
-
|
|
54
|
-
const
|
|
55
|
-
|
|
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.
|
|
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
|
|
66
|
-
const
|
|
67
|
-
const
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
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
|
-
|
|
74
|
-
|
|
75
|
-
let
|
|
103
|
+
visitedRequests.add(next.url);
|
|
104
|
+
attempts += 1;
|
|
105
|
+
let fetched;
|
|
76
106
|
try {
|
|
77
|
-
|
|
107
|
+
fetched = await this.fetchDoc(next.url, params.signal);
|
|
78
108
|
}
|
|
79
109
|
catch (err) {
|
|
80
|
-
if (
|
|
81
|
-
throw new
|
|
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
|
-
|
|
93
|
-
|
|
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 =
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
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
|
-
|
|
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
|
-
|
|
161
|
+
url = new URL(href, base);
|
|
136
162
|
}
|
|
137
163
|
catch {
|
|
138
|
-
return
|
|
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
|
|
142
|
-
|
|
143
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
185
|
-
const endProp = doc.properties?.end_datetime
|
|
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;
|
package/core/surfaces.d.ts.map
CHANGED
|
@@ -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
|
-
|
|
113
|
-
|
|
114
|
-
|
|
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;
|