@honua/react 0.1.0-beta.0 → 0.1.2-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
|
@@ -0,0 +1,331 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bounded XML tree used by the WMS/WMTS capabilities readers.
|
|
3
|
+
*
|
|
4
|
+
* This is deliberately not a general XML implementation. It accepts the XML
|
|
5
|
+
* 1.0 subset used by OGC service metadata, matches namespace-qualified names
|
|
6
|
+
* by their local suffix, and rejects declarations that could introduce
|
|
7
|
+
* external entities. Every allocation is covered by a small fixed budget so a
|
|
8
|
+
* capabilities response cannot turn metadata discovery into an unbounded
|
|
9
|
+
* parser workload.
|
|
10
|
+
*
|
|
11
|
+
* @internal
|
|
12
|
+
*/
|
|
13
|
+
import { decodeXmlText } from "./xml-text.js";
|
|
14
|
+
export const OGC_CAPABILITIES_XML_LIMITS = Object.freeze({
|
|
15
|
+
maxBytes: 2 * 1024 * 1024,
|
|
16
|
+
maxElements: 12_000,
|
|
17
|
+
maxDepth: 32,
|
|
18
|
+
maxAttributesPerElement: 64,
|
|
19
|
+
maxAttributeBytes: 64 * 1024,
|
|
20
|
+
maxTextBytes: 512 * 1024,
|
|
21
|
+
});
|
|
22
|
+
export function parseCapabilitiesXml(xml, family) {
|
|
23
|
+
if (typeof xml !== "string" || xml.length === 0)
|
|
24
|
+
throw new Error(`${family} Capabilities body is empty`);
|
|
25
|
+
if (utf8Length(xml) > OGC_CAPABILITIES_XML_LIMITS.maxBytes) {
|
|
26
|
+
throw new Error(`${family} Capabilities exceeds the ${OGC_CAPABILITIES_XML_LIMITS.maxBytes}-byte XML limit`);
|
|
27
|
+
}
|
|
28
|
+
const declarationProbe = xml.toLowerCase();
|
|
29
|
+
if (declarationProbe.includes("<!doctype") || declarationProbe.includes("<!entity")) {
|
|
30
|
+
throw new Error(`${family} Capabilities rejects DOCTYPE and ENTITY declarations`);
|
|
31
|
+
}
|
|
32
|
+
let cursor = xml.charCodeAt(0) === 0xfeff ? 1 : 0;
|
|
33
|
+
let root;
|
|
34
|
+
const stack = [];
|
|
35
|
+
let elements = 0;
|
|
36
|
+
while (cursor < xml.length) {
|
|
37
|
+
const angle = xml.indexOf("<", cursor);
|
|
38
|
+
if (angle < 0) {
|
|
39
|
+
appendText(stack.at(-1), xml.slice(cursor), family);
|
|
40
|
+
cursor = xml.length;
|
|
41
|
+
break;
|
|
42
|
+
}
|
|
43
|
+
appendText(stack.at(-1), xml.slice(cursor, angle), family);
|
|
44
|
+
if (xml.startsWith("<!--", angle)) {
|
|
45
|
+
const end = xml.indexOf("-->", angle + 4);
|
|
46
|
+
if (end < 0)
|
|
47
|
+
throw new Error(`${family} Capabilities contains an unterminated comment`);
|
|
48
|
+
cursor = end + 3;
|
|
49
|
+
continue;
|
|
50
|
+
}
|
|
51
|
+
if (xml.startsWith("<![CDATA[", angle)) {
|
|
52
|
+
const end = xml.indexOf("]]>", angle + 9);
|
|
53
|
+
if (end < 0)
|
|
54
|
+
throw new Error(`${family} Capabilities contains unterminated CDATA`);
|
|
55
|
+
const node = stack.at(-1);
|
|
56
|
+
if (!node)
|
|
57
|
+
throw new Error(`${family} Capabilities contains CDATA outside its root element`);
|
|
58
|
+
appendDecodedText(node, xml.slice(angle + 9, end), family);
|
|
59
|
+
cursor = end + 3;
|
|
60
|
+
continue;
|
|
61
|
+
}
|
|
62
|
+
if (xml.startsWith("<?", angle)) {
|
|
63
|
+
const end = xml.indexOf("?>", angle + 2);
|
|
64
|
+
if (end < 0)
|
|
65
|
+
throw new Error(`${family} Capabilities contains an unterminated processing instruction`);
|
|
66
|
+
cursor = end + 2;
|
|
67
|
+
continue;
|
|
68
|
+
}
|
|
69
|
+
if (xml.startsWith("<!", angle)) {
|
|
70
|
+
throw new Error(`${family} Capabilities contains an unsupported XML declaration`);
|
|
71
|
+
}
|
|
72
|
+
const close = findTagEnd(xml, angle);
|
|
73
|
+
if (close < 0)
|
|
74
|
+
throw new Error(`${family} Capabilities contains an unterminated tag`);
|
|
75
|
+
const closing = xml.charCodeAt(angle + 1) === 47;
|
|
76
|
+
const rawTag = xml.slice(angle + (closing ? 2 : 1), close);
|
|
77
|
+
if (rawTag.length === 0 || isWhitespace(rawTag.charCodeAt(0))) {
|
|
78
|
+
throw new Error(`${family} Capabilities contains an invalid tag`);
|
|
79
|
+
}
|
|
80
|
+
const raw = trimXmlWhitespaceEnd(rawTag);
|
|
81
|
+
if (closing) {
|
|
82
|
+
const expected = stack.at(-1);
|
|
83
|
+
if (!expected || raw !== expected.name) {
|
|
84
|
+
throw new Error(`${family} Capabilities has mismatched closing tag </${raw}>${expected ? `; expected </${expected.name}>` : ""}`);
|
|
85
|
+
}
|
|
86
|
+
stack.pop();
|
|
87
|
+
cursor = close + 1;
|
|
88
|
+
continue;
|
|
89
|
+
}
|
|
90
|
+
const selfClosing = rawTag.endsWith("/");
|
|
91
|
+
const body = selfClosing ? trimXmlWhitespaceEnd(raw.slice(0, -1)) : raw;
|
|
92
|
+
const { name, attributes } = parseOpeningTag(body, family);
|
|
93
|
+
elements += 1;
|
|
94
|
+
if (elements > OGC_CAPABILITIES_XML_LIMITS.maxElements) {
|
|
95
|
+
throw new Error(`${family} Capabilities exceeds the ${OGC_CAPABILITIES_XML_LIMITS.maxElements}-element limit`);
|
|
96
|
+
}
|
|
97
|
+
if (stack.length + 1 > OGC_CAPABILITIES_XML_LIMITS.maxDepth) {
|
|
98
|
+
throw new Error(`${family} Capabilities exceeds the ${OGC_CAPABILITIES_XML_LIMITS.maxDepth}-level XML limit`);
|
|
99
|
+
}
|
|
100
|
+
const node = {
|
|
101
|
+
name,
|
|
102
|
+
localName: localName(name),
|
|
103
|
+
attributes,
|
|
104
|
+
children: [],
|
|
105
|
+
textChunks: [],
|
|
106
|
+
textBytes: 0,
|
|
107
|
+
};
|
|
108
|
+
const parent = stack.at(-1);
|
|
109
|
+
if (parent)
|
|
110
|
+
parent.children.push(node);
|
|
111
|
+
else if (root)
|
|
112
|
+
throw new Error(`${family} Capabilities contains multiple root elements`);
|
|
113
|
+
else
|
|
114
|
+
root = node;
|
|
115
|
+
if (!selfClosing)
|
|
116
|
+
stack.push(node);
|
|
117
|
+
cursor = close + 1;
|
|
118
|
+
}
|
|
119
|
+
if (stack.length > 0) {
|
|
120
|
+
throw new Error(`${family} Capabilities contains an unclosed <${stack.at(-1).name}> element`);
|
|
121
|
+
}
|
|
122
|
+
if (!root)
|
|
123
|
+
throw new Error(`${family} Capabilities contains no root element`);
|
|
124
|
+
return freezeElement(root);
|
|
125
|
+
}
|
|
126
|
+
export function xmlChild(node, localName) {
|
|
127
|
+
return node?.children.find((child) => child.localName === localName);
|
|
128
|
+
}
|
|
129
|
+
export function xmlChildren(node, localName) {
|
|
130
|
+
return node?.children.filter((child) => child.localName === localName) ?? [];
|
|
131
|
+
}
|
|
132
|
+
export function xmlAttribute(node, name) {
|
|
133
|
+
return node.attributes[name] ?? node.attributes[localName(name)];
|
|
134
|
+
}
|
|
135
|
+
export function xmlText(node) {
|
|
136
|
+
if (!node)
|
|
137
|
+
return undefined;
|
|
138
|
+
const value = node.text.trim();
|
|
139
|
+
return value.length > 0 ? value : undefined;
|
|
140
|
+
}
|
|
141
|
+
function appendText(node, value, family) {
|
|
142
|
+
if (value.length === 0)
|
|
143
|
+
return;
|
|
144
|
+
if (!node) {
|
|
145
|
+
if (!isXmlWhitespaceText(value)) {
|
|
146
|
+
throw new Error(`${family} Capabilities contains text outside its root element`);
|
|
147
|
+
}
|
|
148
|
+
return;
|
|
149
|
+
}
|
|
150
|
+
appendDecodedText(node, decodeCapabilitiesText(value, family), family);
|
|
151
|
+
}
|
|
152
|
+
function appendDecodedText(node, value, family) {
|
|
153
|
+
if (value.length === 0)
|
|
154
|
+
return;
|
|
155
|
+
assertXmlCharacters(value, family);
|
|
156
|
+
const valueBytes = utf8Length(value);
|
|
157
|
+
if (valueBytes > OGC_CAPABILITIES_XML_LIMITS.maxTextBytes - node.textBytes) {
|
|
158
|
+
throw new Error(`${family} Capabilities element text exceeds the bounded text limit`);
|
|
159
|
+
}
|
|
160
|
+
node.textBytes += valueBytes;
|
|
161
|
+
node.textChunks.push(value);
|
|
162
|
+
}
|
|
163
|
+
function parseOpeningTag(body, family) {
|
|
164
|
+
let cursor = 0;
|
|
165
|
+
while (cursor < body.length && !isWhitespace(body.charCodeAt(cursor)))
|
|
166
|
+
cursor += 1;
|
|
167
|
+
const name = body.slice(0, cursor);
|
|
168
|
+
if (!validXmlName(name))
|
|
169
|
+
throw new Error(`${family} Capabilities contains an invalid element name`);
|
|
170
|
+
const attributes = Object.create(null);
|
|
171
|
+
const attributeLocals = new Set();
|
|
172
|
+
let count = 0;
|
|
173
|
+
while (cursor < body.length) {
|
|
174
|
+
while (cursor < body.length && isWhitespace(body.charCodeAt(cursor)))
|
|
175
|
+
cursor += 1;
|
|
176
|
+
if (cursor >= body.length)
|
|
177
|
+
break;
|
|
178
|
+
const nameStart = cursor;
|
|
179
|
+
while (cursor < body.length && !isWhitespace(body.charCodeAt(cursor)) && body[cursor] !== "=")
|
|
180
|
+
cursor += 1;
|
|
181
|
+
const attributeName = body.slice(nameStart, cursor);
|
|
182
|
+
if (!validXmlName(attributeName))
|
|
183
|
+
throw new Error(`${family} Capabilities contains an invalid attribute name`);
|
|
184
|
+
count += 1;
|
|
185
|
+
if (count > OGC_CAPABILITIES_XML_LIMITS.maxAttributesPerElement) {
|
|
186
|
+
throw new Error(`${family} Capabilities element exceeds the bounded attribute count`);
|
|
187
|
+
}
|
|
188
|
+
while (cursor < body.length && isWhitespace(body.charCodeAt(cursor)))
|
|
189
|
+
cursor += 1;
|
|
190
|
+
if (body[cursor] !== "=")
|
|
191
|
+
throw new Error(`${family} Capabilities attribute "${attributeName}" lacks '='`);
|
|
192
|
+
cursor += 1;
|
|
193
|
+
while (cursor < body.length && isWhitespace(body.charCodeAt(cursor)))
|
|
194
|
+
cursor += 1;
|
|
195
|
+
const quote = body[cursor];
|
|
196
|
+
if (quote !== '"' && quote !== "'") {
|
|
197
|
+
throw new Error(`${family} Capabilities attribute "${attributeName}" must be quoted`);
|
|
198
|
+
}
|
|
199
|
+
const end = body.indexOf(quote, cursor + 1);
|
|
200
|
+
if (end < 0)
|
|
201
|
+
throw new Error(`${family} Capabilities attribute "${attributeName}" is unterminated`);
|
|
202
|
+
const rawValue = body.slice(cursor + 1, end);
|
|
203
|
+
if (rawValue.includes("<")) {
|
|
204
|
+
throw new Error(`${family} Capabilities attribute "${attributeName}" contains an unescaped '<'`);
|
|
205
|
+
}
|
|
206
|
+
const value = decodeCapabilitiesText(rawValue, family);
|
|
207
|
+
if (utf8Length(value) > OGC_CAPABILITIES_XML_LIMITS.maxAttributeBytes) {
|
|
208
|
+
throw new Error(`${family} Capabilities attribute "${attributeName}" exceeds the bounded value limit`);
|
|
209
|
+
}
|
|
210
|
+
if (Object.hasOwn(attributes, attributeName)) {
|
|
211
|
+
throw new Error(`${family} Capabilities repeats attribute "${attributeName}"`);
|
|
212
|
+
}
|
|
213
|
+
const local = localName(attributeName);
|
|
214
|
+
const namespaceDeclaration = attributeName === "xmlns" || attributeName.startsWith("xmlns:");
|
|
215
|
+
if (!namespaceDeclaration && attributeLocals.has(local)) {
|
|
216
|
+
throw new Error(`${family} Capabilities repeats namespace-local attribute "${local}"`);
|
|
217
|
+
}
|
|
218
|
+
attributes[attributeName] = value;
|
|
219
|
+
if (!namespaceDeclaration) {
|
|
220
|
+
attributeLocals.add(local);
|
|
221
|
+
if (attributeName !== local)
|
|
222
|
+
attributes[local] = value;
|
|
223
|
+
}
|
|
224
|
+
cursor = end + 1;
|
|
225
|
+
if (cursor < body.length && !isWhitespace(body.charCodeAt(cursor))) {
|
|
226
|
+
throw new Error(`${family} Capabilities attributes must be separated by XML whitespace`);
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
return { name, attributes };
|
|
230
|
+
}
|
|
231
|
+
function decodeCapabilitiesText(value, family) {
|
|
232
|
+
let cursor = 0;
|
|
233
|
+
while (cursor < value.length) {
|
|
234
|
+
const ampersand = value.indexOf("&", cursor);
|
|
235
|
+
if (ampersand < 0)
|
|
236
|
+
break;
|
|
237
|
+
const semicolon = value.indexOf(";", ampersand + 1);
|
|
238
|
+
const nestedAmpersand = value.indexOf("&", ampersand + 1);
|
|
239
|
+
if (semicolon < 0 || (nestedAmpersand >= 0 && nestedAmpersand < semicolon)) {
|
|
240
|
+
throw new Error(`${family} Capabilities contains an unterminated XML entity reference`);
|
|
241
|
+
}
|
|
242
|
+
const entity = value.slice(ampersand + 1, semicolon);
|
|
243
|
+
if (!validEntityReference(entity)) {
|
|
244
|
+
throw new Error(`${family} Capabilities contains unsupported XML entity "&${entity};"`);
|
|
245
|
+
}
|
|
246
|
+
cursor = semicolon + 1;
|
|
247
|
+
}
|
|
248
|
+
const decoded = decodeXmlText(value);
|
|
249
|
+
assertXmlCharacters(decoded, family);
|
|
250
|
+
return decoded;
|
|
251
|
+
}
|
|
252
|
+
function validEntityReference(entity) {
|
|
253
|
+
if (entity === "lt" || entity === "gt" || entity === "amp" || entity === "apos" || entity === "quot") {
|
|
254
|
+
return true;
|
|
255
|
+
}
|
|
256
|
+
const numeric = entity.startsWith("#x") || entity.startsWith("#X")
|
|
257
|
+
? /^[0-9A-Fa-f]+$/.test(entity.slice(2))
|
|
258
|
+
? Number.parseInt(entity.slice(2), 16)
|
|
259
|
+
: Number.NaN
|
|
260
|
+
: entity.startsWith("#") && /^\d+$/.test(entity.slice(1))
|
|
261
|
+
? Number.parseInt(entity.slice(1), 10)
|
|
262
|
+
: Number.NaN;
|
|
263
|
+
return Number.isSafeInteger(numeric) && validXmlCodePoint(numeric);
|
|
264
|
+
}
|
|
265
|
+
function assertXmlCharacters(value, family) {
|
|
266
|
+
for (const character of value) {
|
|
267
|
+
if (!validXmlCodePoint(character.codePointAt(0))) {
|
|
268
|
+
throw new Error(`${family} Capabilities contains a character forbidden by XML 1.0`);
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
function validXmlCodePoint(value) {
|
|
273
|
+
return (value === 0x09 ||
|
|
274
|
+
value === 0x0a ||
|
|
275
|
+
value === 0x0d ||
|
|
276
|
+
(value >= 0x20 && value <= 0xd7ff) ||
|
|
277
|
+
(value >= 0xe000 && value <= 0xfffd) ||
|
|
278
|
+
(value >= 0x10000 && value <= 0x10ffff));
|
|
279
|
+
}
|
|
280
|
+
function findTagEnd(xml, start) {
|
|
281
|
+
let quote;
|
|
282
|
+
for (let cursor = start + 1; cursor < xml.length; cursor += 1) {
|
|
283
|
+
const value = xml[cursor];
|
|
284
|
+
if (quote) {
|
|
285
|
+
if (value === quote)
|
|
286
|
+
quote = undefined;
|
|
287
|
+
}
|
|
288
|
+
else if (value === '"' || value === "'")
|
|
289
|
+
quote = value;
|
|
290
|
+
else if (value === ">")
|
|
291
|
+
return cursor;
|
|
292
|
+
}
|
|
293
|
+
return -1;
|
|
294
|
+
}
|
|
295
|
+
function validXmlName(value) {
|
|
296
|
+
const parts = value.split(":");
|
|
297
|
+
return parts.length <= 2 && parts.every((part) => /^[A-Za-z_][A-Za-z0-9_.-]*$/u.test(part));
|
|
298
|
+
}
|
|
299
|
+
function localName(value) {
|
|
300
|
+
const separator = value.indexOf(":");
|
|
301
|
+
return separator < 0 ? value : value.slice(separator + 1);
|
|
302
|
+
}
|
|
303
|
+
function isWhitespace(value) {
|
|
304
|
+
return value === 32 || value === 9 || value === 10 || value === 13;
|
|
305
|
+
}
|
|
306
|
+
function isXmlWhitespaceText(value) {
|
|
307
|
+
for (let index = 0; index < value.length; index += 1) {
|
|
308
|
+
if (!isWhitespace(value.charCodeAt(index)))
|
|
309
|
+
return false;
|
|
310
|
+
}
|
|
311
|
+
return true;
|
|
312
|
+
}
|
|
313
|
+
function trimXmlWhitespaceEnd(value) {
|
|
314
|
+
let end = value.length;
|
|
315
|
+
while (end > 0 && isWhitespace(value.charCodeAt(end - 1)))
|
|
316
|
+
end -= 1;
|
|
317
|
+
return value.slice(0, end);
|
|
318
|
+
}
|
|
319
|
+
function utf8Length(value) {
|
|
320
|
+
return new TextEncoder().encode(value).byteLength;
|
|
321
|
+
}
|
|
322
|
+
function freezeElement(node) {
|
|
323
|
+
const children = Object.freeze(node.children.map(freezeElement));
|
|
324
|
+
return Object.freeze({
|
|
325
|
+
name: node.name,
|
|
326
|
+
localName: node.localName,
|
|
327
|
+
attributes: Object.freeze({ ...node.attributes }),
|
|
328
|
+
children,
|
|
329
|
+
text: node.textChunks.join(""),
|
|
330
|
+
});
|
|
331
|
+
}
|
package/core/client.d.ts
CHANGED
|
@@ -90,8 +90,10 @@ export declare class HonuaClient {
|
|
|
90
90
|
private authCredentialsCache;
|
|
91
91
|
private authRefreshPromise;
|
|
92
92
|
private connectClient;
|
|
93
|
+
private connectClientPromise;
|
|
93
94
|
private readonly metadataCache;
|
|
94
95
|
private readonly ogcLayoutCache;
|
|
96
|
+
private readonly wfsRootCache;
|
|
95
97
|
/**
|
|
96
98
|
* Create a new `HonuaClient`.
|
|
97
99
|
*
|
|
@@ -143,7 +145,6 @@ export declare class HonuaClient {
|
|
|
143
145
|
* signals are threaded by the individual RPC methods).
|
|
144
146
|
*/
|
|
145
147
|
private connectTransportOptions;
|
|
146
|
-
private initConnectClient;
|
|
147
148
|
private ensureConnectClient;
|
|
148
149
|
/**
|
|
149
150
|
* Perform a fetch that never auto-follows a cross-origin redirect.
|
|
@@ -360,6 +361,8 @@ export declare class HonuaClient {
|
|
|
360
361
|
*/
|
|
361
362
|
pipelineFetch(method: QueryMethod, path: string, init?: RequestInit, callerSignal?: AbortSignal, options?: {
|
|
362
363
|
okStatuses?: readonly number[];
|
|
364
|
+
redirect?: "safe-follow" | "error" | "manual";
|
|
365
|
+
discardErrorBody?: boolean;
|
|
363
366
|
}): Promise<Response>;
|
|
364
367
|
private requestCachedMetadataJson;
|
|
365
368
|
private staleMetadataFallback;
|
package/core/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/core/client.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/core/client.ts"],"names":[],"mappings":"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"}
|
package/core/client.js
CHANGED
|
@@ -171,8 +171,10 @@ export class HonuaClient {
|
|
|
171
171
|
authCredentialsCache;
|
|
172
172
|
authRefreshPromise;
|
|
173
173
|
connectClient;
|
|
174
|
+
connectClientPromise;
|
|
174
175
|
metadataCache = new Map();
|
|
175
176
|
ogcLayoutCache = new Map();
|
|
177
|
+
wfsRootCache = new Map();
|
|
176
178
|
/**
|
|
177
179
|
* Create a new `HonuaClient`.
|
|
178
180
|
*
|
|
@@ -226,9 +228,6 @@ export class HonuaClient {
|
|
|
226
228
|
pipelineFetch: (method, path, init, callerSignal, pipelineOptions) => this.pipelineFetch(method, path, init, callerSignal, pipelineOptions),
|
|
227
229
|
requestBinaryWithJsonFallback: (method, path, params, signal) => this.requestBinaryWithJsonFallback(method, path, params, signal),
|
|
228
230
|
};
|
|
229
|
-
if (this.transport === "grpc-web") {
|
|
230
|
-
this.initConnectClient();
|
|
231
|
-
}
|
|
232
231
|
}
|
|
233
232
|
/**
|
|
234
233
|
* Connect interceptor that injects the same credentials the REST pipeline
|
|
@@ -300,26 +299,36 @@ export class HonuaClient {
|
|
|
300
299
|
...(this.timeoutMs !== undefined ? { defaultTimeoutMs: this.timeoutMs } : {}),
|
|
301
300
|
};
|
|
302
301
|
}
|
|
303
|
-
initConnectClient() {
|
|
304
|
-
// Dynamic imports are used to avoid bundling Connect dependencies
|
|
305
|
-
// when only the REST transport is used. The imports are resolved
|
|
306
|
-
// at module level since they are static ESM imports.
|
|
307
|
-
import("@connectrpc/connect").then(({ createClient }) => import("@connectrpc/connect-web").then(({ createGrpcWebTransport }) => import("../gen/honua/v1/feature_service_pb.js").then(({ FeatureService }) => {
|
|
308
|
-
const transport = createGrpcWebTransport(this.connectTransportOptions());
|
|
309
|
-
this.connectClient = createClient(FeatureService, transport);
|
|
310
|
-
})));
|
|
311
|
-
}
|
|
312
302
|
async ensureConnectClient() {
|
|
313
303
|
if (this.connectClient) {
|
|
314
304
|
return this.connectClient;
|
|
315
305
|
}
|
|
316
|
-
//
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
306
|
+
// Keep optional Connect peers out of the module graph until the first
|
|
307
|
+
// gRPC operation is actually awaited. Caching the in-flight promise also
|
|
308
|
+
// prevents concurrent first calls from constructing competing clients.
|
|
309
|
+
let initPromise = this.connectClientPromise;
|
|
310
|
+
if (!initPromise) {
|
|
311
|
+
initPromise = Promise.all([
|
|
312
|
+
import("@connectrpc/connect"),
|
|
313
|
+
import("@connectrpc/connect-web"),
|
|
314
|
+
import("../gen/honua/v1/feature_service_pb.js"),
|
|
315
|
+
]).then(([{ createClient }, { createGrpcWebTransport }, { FeatureService }]) => {
|
|
316
|
+
const transport = createGrpcWebTransport(this.connectTransportOptions());
|
|
317
|
+
this.connectClient = createClient(FeatureService, transport);
|
|
318
|
+
return this.connectClient;
|
|
319
|
+
});
|
|
320
|
+
this.connectClientPromise = initPromise;
|
|
321
|
+
}
|
|
322
|
+
try {
|
|
323
|
+
return await initPromise;
|
|
324
|
+
}
|
|
325
|
+
catch (error) {
|
|
326
|
+
// A transient module-loader failure must not poison every later call.
|
|
327
|
+
if (this.connectClientPromise === initPromise) {
|
|
328
|
+
this.connectClientPromise = undefined;
|
|
329
|
+
}
|
|
330
|
+
throw error;
|
|
331
|
+
}
|
|
323
332
|
}
|
|
324
333
|
/**
|
|
325
334
|
* Perform a fetch that never auto-follows a cross-origin redirect.
|
|
@@ -332,11 +341,24 @@ export class HonuaClient {
|
|
|
332
341
|
* base origin (re-running the {@link resolveRequestUrl} origin guard).
|
|
333
342
|
* Cross-origin redirects throw before the credentialed request is replayed.
|
|
334
343
|
*/
|
|
335
|
-
async fetchWithSafeRedirects(url, init) {
|
|
344
|
+
async fetchWithSafeRedirects(url, init, redirectPolicy = "safe-follow") {
|
|
336
345
|
let currentUrl = url;
|
|
337
346
|
let currentInit = init;
|
|
338
347
|
for (let redirects = 0;; redirects += 1) {
|
|
339
|
-
const response = await this.fetchFn(currentUrl, {
|
|
348
|
+
const response = await this.fetchFn(currentUrl, {
|
|
349
|
+
...currentInit,
|
|
350
|
+
redirect: redirectPolicy === "error" ? "error" : "manual",
|
|
351
|
+
});
|
|
352
|
+
if (redirectPolicy === "error") {
|
|
353
|
+
if (response.type === "opaqueredirect" ||
|
|
354
|
+
response.redirected ||
|
|
355
|
+
REDIRECT_STATUSES.has(response.status) ||
|
|
356
|
+
(response.url !== "" && response.url !== currentUrl)) {
|
|
357
|
+
await response.body?.cancel().catch(() => undefined);
|
|
358
|
+
throw new HonuaNetworkError("Redirects are not allowed for this bounded request.", undefined);
|
|
359
|
+
}
|
|
360
|
+
return response;
|
|
361
|
+
}
|
|
340
362
|
// `redirect: "manual"` surfaces redirects as status 3xx with a usable
|
|
341
363
|
// `Location` header (and, in fetch, an "opaqueredirect" type with status 0
|
|
342
364
|
// in some runtimes — treated as a same-origin-unverifiable redirect we
|
|
@@ -344,9 +366,13 @@ export class HonuaClient {
|
|
|
344
366
|
if (response.type === "opaqueredirect") {
|
|
345
367
|
throw new HonuaNetworkError("Refusing to follow an opaque cross-origin redirect; the request's API key would be leaked to the redirect target.", undefined);
|
|
346
368
|
}
|
|
347
|
-
if (!REDIRECT_STATUSES.has(response.status))
|
|
369
|
+
if (!REDIRECT_STATUSES.has(response.status))
|
|
370
|
+
return response;
|
|
371
|
+
// Some bounded metadata callers need the untouched 3xx response so
|
|
372
|
+
// their protocol facade can preserve its typed redirect diagnostic.
|
|
373
|
+
// Credentials are still never replayed because fetch remains manual.
|
|
374
|
+
if (redirectPolicy === "manual")
|
|
348
375
|
return response;
|
|
349
|
-
}
|
|
350
376
|
if (redirects >= MAX_SAFE_REDIRECTS) {
|
|
351
377
|
throw new HonuaNetworkError(`Exceeded the maximum of ${MAX_SAFE_REDIRECTS} redirects.`, undefined);
|
|
352
378
|
}
|
|
@@ -559,7 +585,14 @@ export class HonuaClient {
|
|
|
559
585
|
return createHonuaProcessRunner(createGeospatialGrpcProcessAdapter(processClient));
|
|
560
586
|
}
|
|
561
587
|
wfs(endpointUrl = "/wfs", options = {}) {
|
|
562
|
-
|
|
588
|
+
const version = options.version ?? "2.0.0";
|
|
589
|
+
const key = `${endpointUrl}\u0000${version}`;
|
|
590
|
+
const cached = this.wfsRootCache.get(key);
|
|
591
|
+
if (cached)
|
|
592
|
+
return cached;
|
|
593
|
+
const root = new HonuaWfs({ client: this, endpointUrl, version });
|
|
594
|
+
this.wfsRootCache.set(key, root);
|
|
595
|
+
return root;
|
|
563
596
|
}
|
|
564
597
|
odata(entitySet, options = {}) {
|
|
565
598
|
return new HonuaOdataEntitySet({ client: this, entitySet, basePath: options.basePath });
|
|
@@ -777,6 +810,15 @@ export class HonuaClient {
|
|
|
777
810
|
return this.executeRequest(request, {
|
|
778
811
|
callerSignal,
|
|
779
812
|
...(options.okStatuses ? { okStatuses: options.okStatuses } : {}),
|
|
813
|
+
...(options.redirect ? { redirect: options.redirect } : {}),
|
|
814
|
+
...(options.discardErrorBody
|
|
815
|
+
? {
|
|
816
|
+
errorBody: (response) => {
|
|
817
|
+
void response.body?.cancel().catch(() => undefined);
|
|
818
|
+
return Promise.resolve({});
|
|
819
|
+
},
|
|
820
|
+
}
|
|
821
|
+
: {}),
|
|
780
822
|
finalize: async (response, _durationMs, _request, runAfter) => {
|
|
781
823
|
await runAfter();
|
|
782
824
|
return response;
|
|
@@ -785,7 +827,11 @@ export class HonuaClient {
|
|
|
785
827
|
}
|
|
786
828
|
async requestCachedMetadataJson(cacheKey, path, options = {}) {
|
|
787
829
|
const metadataOptions = normalizeHonuaMetadataRequestOptions(options);
|
|
788
|
-
|
|
830
|
+
// A byte-bounded trust boundary must never reuse an entry populated by an
|
|
831
|
+
// unbounded or more-permissive request. Partitioning preserves normal cache
|
|
832
|
+
// reuse for callers that share the same ceiling without retaining bodies
|
|
833
|
+
// that were admitted under different limits.
|
|
834
|
+
const keyFingerprint = `metadata:${cacheKey}${metadataOptions.maxResponseBytes === undefined ? "" : `:max-response-bytes:${metadataOptions.maxResponseBytes}`}`;
|
|
789
835
|
const cached = this.metadataCache.get(keyFingerprint);
|
|
790
836
|
const bypass = metadataOptions.cache === "bypass";
|
|
791
837
|
const now = Date.now();
|
|
@@ -839,7 +885,7 @@ export class HonuaClient {
|
|
|
839
885
|
};
|
|
840
886
|
},
|
|
841
887
|
finalize: async (response, durationMs, currentRequest, runAfter) => {
|
|
842
|
-
const body = await parseResponseBody(this.hasAfterInterceptors() ? response.clone() : response);
|
|
888
|
+
const body = await parseResponseBody(this.hasAfterInterceptors() ? response.clone() : response, metadataOptions.maxResponseBytes);
|
|
843
889
|
// GeoServices reports metadata failures (layer not found, invalid token
|
|
844
890
|
// => code 499, …) as HTTP 200 with a top-level `{error}` envelope.
|
|
845
891
|
// Detect it before caching so a transient auth/permission error is never
|
|
@@ -1385,7 +1431,7 @@ export class HonuaClient {
|
|
|
1385
1431
|
...request.init,
|
|
1386
1432
|
method: request.method,
|
|
1387
1433
|
signal: timeout.signal,
|
|
1388
|
-
});
|
|
1434
|
+
}, options.redirect);
|
|
1389
1435
|
}
|
|
1390
1436
|
catch (error) {
|
|
1391
1437
|
const durationMs = performance.now() - startTime;
|
|
@@ -1544,8 +1590,10 @@ function geoServicesEnvelopeError(httpStatus, body) {
|
|
|
1544
1590
|
const message = hasMessage ? error.message : "Request failed";
|
|
1545
1591
|
return new HonuaHttpError(statusCode, message, body);
|
|
1546
1592
|
}
|
|
1547
|
-
async function parseResponseBody(response) {
|
|
1548
|
-
const text =
|
|
1593
|
+
async function parseResponseBody(response, maxResponseBytes) {
|
|
1594
|
+
const text = maxResponseBytes === undefined
|
|
1595
|
+
? await response.text()
|
|
1596
|
+
: new TextDecoder().decode(await readBoundedResponseBytes(response, maxResponseBytes));
|
|
1549
1597
|
if (!text) {
|
|
1550
1598
|
return {};
|
|
1551
1599
|
}
|
|
@@ -1556,6 +1604,44 @@ async function parseResponseBody(response) {
|
|
|
1556
1604
|
return { raw: text };
|
|
1557
1605
|
}
|
|
1558
1606
|
}
|
|
1607
|
+
async function readBoundedResponseBytes(response, maximum) {
|
|
1608
|
+
const advertised = response.headers.get("content-length");
|
|
1609
|
+
if (advertised !== null) {
|
|
1610
|
+
const length = Number(advertised);
|
|
1611
|
+
if (Number.isFinite(length) && length > maximum) {
|
|
1612
|
+
await response.body?.cancel().catch(() => undefined);
|
|
1613
|
+
throw new HonuaNetworkError(`Metadata response exceeds the configured ${maximum}-byte limit.`, undefined);
|
|
1614
|
+
}
|
|
1615
|
+
}
|
|
1616
|
+
if (!response.body)
|
|
1617
|
+
return new Uint8Array();
|
|
1618
|
+
const reader = response.body.getReader();
|
|
1619
|
+
const chunks = [];
|
|
1620
|
+
let total = 0;
|
|
1621
|
+
try {
|
|
1622
|
+
for (;;) {
|
|
1623
|
+
const { done, value } = await reader.read();
|
|
1624
|
+
if (done)
|
|
1625
|
+
break;
|
|
1626
|
+
total += value.byteLength;
|
|
1627
|
+
if (total > maximum) {
|
|
1628
|
+
await reader.cancel().catch(() => undefined);
|
|
1629
|
+
throw new HonuaNetworkError(`Metadata response exceeds the configured ${maximum}-byte limit.`, undefined);
|
|
1630
|
+
}
|
|
1631
|
+
chunks.push(value);
|
|
1632
|
+
}
|
|
1633
|
+
}
|
|
1634
|
+
finally {
|
|
1635
|
+
reader.releaseLock();
|
|
1636
|
+
}
|
|
1637
|
+
const bytes = new Uint8Array(total);
|
|
1638
|
+
let offset = 0;
|
|
1639
|
+
for (const chunk of chunks) {
|
|
1640
|
+
bytes.set(chunk, offset);
|
|
1641
|
+
offset += chunk.byteLength;
|
|
1642
|
+
}
|
|
1643
|
+
return bytes;
|
|
1644
|
+
}
|
|
1559
1645
|
function isObject(value) {
|
|
1560
1646
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
1561
1647
|
}
|