@honua/react 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.
- 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 +12 -1
- package/contract/index.d.ts.map +1 -1
- package/contract/index.js +4 -0
- package/contract/pmtiles.d.ts +193 -0
- package/contract/pmtiles.d.ts.map +1 -0
- package/contract/pmtiles.js +195 -0
- 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 +57 -15
- package/contract/source.d.ts.map +1 -1
- package/contract/source.js +368 -65
- package/contract/types.d.ts +171 -6
- package/contract/types.d.ts.map +1 -1
- package/contract/types.js +14 -14
- package/core/auth/client-credentials-provider.d.ts +51 -0
- package/core/auth/client-credentials-provider.d.ts.map +1 -0
- package/core/auth/client-credentials-provider.js +115 -0
- package/core/auth/credential-store.d.ts +52 -0
- package/core/auth/credential-store.d.ts.map +1 -0
- package/core/auth/credential-store.js +82 -0
- package/core/auth/index.d.ts +23 -0
- package/core/auth/index.d.ts.map +1 -0
- package/core/auth/index.js +20 -0
- package/core/auth/oauth2-provider.d.ts +114 -0
- package/core/auth/oauth2-provider.d.ts.map +1 -0
- package/core/auth/oauth2-provider.js +408 -0
- package/core/auth/pkce.d.ts +25 -0
- package/core/auth/pkce.d.ts.map +1 -0
- package/core/auth/pkce.js +46 -0
- package/core/auth/static-providers.d.ts +20 -0
- package/core/auth/static-providers.d.ts.map +1 -0
- package/core/auth/static-providers.js +26 -0
- package/core/auth/token-endpoint.d.ts +40 -0
- package/core/auth/token-endpoint.d.ts.map +1 -0
- package/core/auth/token-endpoint.js +133 -0
- package/core/auth/types.d.ts +144 -0
- package/core/auth/types.d.ts.map +1 -0
- package/core/auth/types.js +8 -0
- 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 +35 -2
- package/core/client.d.ts.map +1 -1
- package/core/client.js +167 -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 +73 -25
- package/core/errors.d.ts.map +1 -1
- package/core/errors.js +113 -46
- package/core/geoparquet-sql.d.ts +190 -0
- package/core/geoparquet-sql.d.ts.map +1 -0
- package/core/geoparquet-sql.js +368 -0
- 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-endpoint-layout.d.ts +70 -0
- package/core/ogc-endpoint-layout.d.ts.map +1 -0
- package/core/ogc-endpoint-layout.js +173 -0
- package/core/ogc-features.d.ts.map +1 -1
- package/core/ogc-features.js +35 -17
- 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 +55 -0
- package/core/stac-static.d.ts.map +1 -0
- package/core/stac-static.js +386 -0
- package/core/stac.d.ts +12 -0
- package/core/stac.d.ts.map +1 -1
- package/core/stac.js +45 -15
- package/core/surfaces.d.ts +13 -0
- package/core/surfaces.d.ts.map +1 -1
- package/core/surfaces.js +127 -16
- package/core/types.d.ts +174 -7
- package/core/types.d.ts.map +1 -1
- package/core/wfs-capabilities.d.ts +12 -0
- package/core/wfs-capabilities.d.ts.map +1 -1
- package/core/wfs-capabilities.js +22 -3
- package/core/wfs.d.ts +13 -0
- package/core/wfs.d.ts.map +1 -1
- package/core/wfs.js +35 -5
- 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/identity-manager.d.ts +43 -0
- package/esri-compat/identity-manager.d.ts.map +1 -1
- package/esri-compat/identity-manager.js +131 -1
- 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/oauth-info.d.ts +15 -0
- package/esri-compat/oauth-info.d.ts.map +1 -1
- package/esri-compat/oauth-info.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 +19 -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 +8 -2
- package/runtime/index.d.ts.map +1 -1
- package/runtime/index.js +4 -4
- package/runtime/load-package.d.ts.map +1 -1
- package/runtime/load-package.js +8 -0
- package/runtime/map-package-validation.d.ts +0 -13
- package/runtime/map-package-validation.d.ts.map +1 -1
- package/runtime/map-package-validation.js +0 -12
- package/runtime/map-package.d.ts +1 -1
- package/runtime/map-package.d.ts.map +1 -1
- 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/pmtiles-protocol.d.ts +77 -0
- package/runtime/pmtiles-protocol.d.ts.map +1 -0
- package/runtime/pmtiles-protocol.js +120 -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 +36 -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/ogc-records.d.ts
CHANGED
|
@@ -12,10 +12,14 @@ import type { HonuaProtocolTransport } from "./protocol-transport.js";
|
|
|
12
12
|
import type { HonuaOgcCollectionMetadata, HonuaOgcCollectionsResponse, HonuaOgcConformanceResponse, HonuaOgcLandingResponse, HonuaOgcRecordResponse, HonuaOgcRecordsResponse, OgcCollectionRequest, OgcMetadataRequest, OgcRecordItemRequest, OgcRecordRawItemRequest, OgcRecordsRawSearchRequest, OgcRecordsSearchRequest } from "./types.js";
|
|
13
13
|
export interface HonuaOgcRecordsOptions {
|
|
14
14
|
client: HonuaClient;
|
|
15
|
+
/** Raw endpoint path prefix (defaults to the Honua facade `/ogc/records`). */
|
|
16
|
+
basePath?: string;
|
|
15
17
|
}
|
|
16
18
|
export interface HonuaOgcRecordCollectionOptions {
|
|
17
19
|
client: HonuaClient;
|
|
18
20
|
collectionId: string | number;
|
|
21
|
+
/** Raw endpoint path prefix (defaults to the Honua facade `/ogc/records`). */
|
|
22
|
+
basePath?: string;
|
|
19
23
|
}
|
|
20
24
|
export interface HonuaOgcRecordsSearchAllRequest extends OgcRecordsSearchRequest {
|
|
21
25
|
/** Maximum number of records to request per page. */
|
|
@@ -34,7 +38,9 @@ export type HonuaOgcRecordCollectionRawItemRequest = Omit<OgcRecordRawItemReques
|
|
|
34
38
|
/** Top-level OGC API Records handle. */
|
|
35
39
|
export declare class HonuaOgcRecords {
|
|
36
40
|
readonly client: HonuaClient;
|
|
41
|
+
private readonly basePath;
|
|
37
42
|
constructor(options: HonuaOgcRecordsOptions);
|
|
43
|
+
private withBase;
|
|
38
44
|
collection(collectionId: string | number): HonuaOgcRecordCollection;
|
|
39
45
|
landing(request?: OgcMetadataRequest): Promise<HonuaOgcLandingResponse>;
|
|
40
46
|
conformance(request?: OgcMetadataRequest): Promise<HonuaOgcConformanceResponse>;
|
|
@@ -54,7 +60,10 @@ export declare class HonuaOgcRecords {
|
|
|
54
60
|
export declare class HonuaOgcRecordCollection {
|
|
55
61
|
readonly client: HonuaClient;
|
|
56
62
|
readonly collectionId: string | number;
|
|
63
|
+
private readonly basePath;
|
|
57
64
|
constructor(options: HonuaOgcRecordCollectionOptions);
|
|
65
|
+
private bind;
|
|
66
|
+
private rootHandle;
|
|
58
67
|
metadata(request?: OgcMetadataRequest): Promise<HonuaOgcCollectionMetadata>;
|
|
59
68
|
search(request?: HonuaOgcRecordCollectionSearchRequest): Promise<HonuaOgcRecordsResponse>;
|
|
60
69
|
record(request: HonuaOgcRecordCollectionItemRequest): Promise<HonuaOgcRecordResponse>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ogc-records.d.ts","sourceRoot":"","sources":["../../../src/core/ogc-records.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,KAAK,EACV,0BAA0B,EAC1B,2BAA2B,EAC3B,2BAA2B,EAC3B,uBAAuB,EACvB,sBAAsB,EACtB,uBAAuB,EACvB,oBAAoB,EACpB,kBAAkB,EAClB,oBAAoB,EACpB,uBAAuB,EACvB,0BAA0B,EAC1B,uBAAuB,EACxB,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"ogc-records.d.ts","sourceRoot":"","sources":["../../../src/core/ogc-records.ts"],"names":[],"mappings":"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"}
|
package/core/ogc-records.js
CHANGED
|
@@ -8,40 +8,73 @@
|
|
|
8
8
|
* @module
|
|
9
9
|
*/
|
|
10
10
|
import { createOgcMetadataParams, mergeHeaders, normalizeCsv, normalizeStringCsv } from "./wire-shared.js";
|
|
11
|
+
/** Honua facade path prefix for OGC API Records. */
|
|
12
|
+
const RECORDS_FACADE_BASE = "/ogc/records";
|
|
13
|
+
/**
|
|
14
|
+
* Resolve the OGC API Records path prefix: the caller-supplied raw
|
|
15
|
+
* `basePath` (a `connect()`-discovered third-party service root) or the Honua
|
|
16
|
+
* facade default. Trailing slashes are trimmed so a discovered root and the
|
|
17
|
+
* facade compose the same sub-paths.
|
|
18
|
+
*/
|
|
19
|
+
function recordsBase(request) {
|
|
20
|
+
// An omitted basePath uses the Honua facade; an explicit "" is a legitimate
|
|
21
|
+
// root-mounted raw service and must NOT fall back to the facade prefix.
|
|
22
|
+
if (request.basePath === undefined)
|
|
23
|
+
return RECORDS_FACADE_BASE;
|
|
24
|
+
const base = request.basePath;
|
|
25
|
+
let end = base.length;
|
|
26
|
+
while (end > 0 && base.charCodeAt(end - 1) === 0x2f)
|
|
27
|
+
end--;
|
|
28
|
+
return base.slice(0, end);
|
|
29
|
+
}
|
|
30
|
+
/** Cache-key discriminator so a discovered root never collides with the facade. */
|
|
31
|
+
function recordsBaseKey(request) {
|
|
32
|
+
const base = recordsBase(request);
|
|
33
|
+
return base === RECORDS_FACADE_BASE ? "" : `${base}:`;
|
|
34
|
+
}
|
|
11
35
|
const DEFAULT_RECORDS_PAGE_SIZE = 100;
|
|
12
36
|
const DEFAULT_RECORDS_MAX_PAGES = 100;
|
|
13
37
|
/** Top-level OGC API Records handle. */
|
|
14
38
|
export class HonuaOgcRecords {
|
|
15
39
|
client;
|
|
40
|
+
basePath;
|
|
16
41
|
constructor(options) {
|
|
17
42
|
this.client = options.client;
|
|
43
|
+
this.basePath = options.basePath;
|
|
44
|
+
}
|
|
45
|
+
withBase(request) {
|
|
46
|
+
return this.basePath !== undefined ? { ...request, basePath: this.basePath } : request;
|
|
18
47
|
}
|
|
19
48
|
collection(collectionId) {
|
|
20
|
-
return new HonuaOgcRecordCollection({
|
|
49
|
+
return new HonuaOgcRecordCollection({
|
|
50
|
+
client: this.client,
|
|
51
|
+
collectionId,
|
|
52
|
+
...(this.basePath !== undefined ? { basePath: this.basePath } : {}),
|
|
53
|
+
});
|
|
21
54
|
}
|
|
22
55
|
async landing(request = {}) {
|
|
23
|
-
return this.client.getOgcRecordsLanding(request);
|
|
56
|
+
return this.client.getOgcRecordsLanding(this.withBase(request));
|
|
24
57
|
}
|
|
25
58
|
async conformance(request = {}) {
|
|
26
|
-
return this.client.getOgcRecordsConformance(request);
|
|
59
|
+
return this.client.getOgcRecordsConformance(this.withBase(request));
|
|
27
60
|
}
|
|
28
61
|
async collections(request = {}) {
|
|
29
|
-
return this.client.listOgcRecordCollections(request);
|
|
62
|
+
return this.client.listOgcRecordCollections(this.withBase(request));
|
|
30
63
|
}
|
|
31
64
|
async collectionMetadata(request) {
|
|
32
|
-
return this.client.getOgcRecordCollection(request);
|
|
65
|
+
return this.client.getOgcRecordCollection(this.withBase(request));
|
|
33
66
|
}
|
|
34
67
|
async search(request) {
|
|
35
|
-
return this.client.searchOgcRecords(request);
|
|
68
|
+
return this.client.searchOgcRecords(this.withBase(request));
|
|
36
69
|
}
|
|
37
70
|
async record(request) {
|
|
38
|
-
return this.client.getOgcRecord(request);
|
|
71
|
+
return this.client.getOgcRecord(this.withBase(request));
|
|
39
72
|
}
|
|
40
73
|
async rawSearch(request) {
|
|
41
|
-
return this.client.fetchOgcRecordsRaw(request);
|
|
74
|
+
return this.client.fetchOgcRecordsRaw(this.withBase(request));
|
|
42
75
|
}
|
|
43
76
|
async rawRecord(request) {
|
|
44
|
-
return this.client.fetchOgcRecordRaw(request);
|
|
77
|
+
return this.client.fetchOgcRecordRaw(this.withBase(request));
|
|
45
78
|
}
|
|
46
79
|
async searchAll(request) {
|
|
47
80
|
const pageSize = request.pageSize ?? request.limit ?? DEFAULT_RECORDS_PAGE_SIZE;
|
|
@@ -49,11 +82,11 @@ export class HonuaOgcRecords {
|
|
|
49
82
|
const records = [];
|
|
50
83
|
let cursor = { offset: request.offset };
|
|
51
84
|
for (let page = 0; page < maxPages; page += 1) {
|
|
52
|
-
const response = await this.client.searchOgcRecords({
|
|
85
|
+
const response = await this.client.searchOgcRecords(this.withBase({
|
|
53
86
|
...request,
|
|
54
87
|
limit: pageSize,
|
|
55
88
|
offset: cursor.offset,
|
|
56
|
-
});
|
|
89
|
+
}));
|
|
57
90
|
const pageRecords = response.features ?? [];
|
|
58
91
|
if (pageRecords.length === 0)
|
|
59
92
|
break;
|
|
@@ -73,11 +106,11 @@ export class HonuaOgcRecords {
|
|
|
73
106
|
const maxPages = request.maxPages ?? DEFAULT_RECORDS_MAX_PAGES;
|
|
74
107
|
let cursor = { offset: request.offset };
|
|
75
108
|
for (let page = 0; page < maxPages; page += 1) {
|
|
76
|
-
const response = await this.client.searchOgcRecords({
|
|
109
|
+
const response = await this.client.searchOgcRecords(this.withBase({
|
|
77
110
|
...request,
|
|
78
111
|
limit: pageSize,
|
|
79
112
|
offset: cursor.offset,
|
|
80
|
-
});
|
|
113
|
+
}));
|
|
81
114
|
const pageRecords = response.features ?? [];
|
|
82
115
|
if (pageRecords.length === 0)
|
|
83
116
|
break;
|
|
@@ -97,32 +130,45 @@ export class HonuaOgcRecords {
|
|
|
97
130
|
export class HonuaOgcRecordCollection {
|
|
98
131
|
client;
|
|
99
132
|
collectionId;
|
|
133
|
+
basePath;
|
|
100
134
|
constructor(options) {
|
|
101
135
|
this.client = options.client;
|
|
102
136
|
this.collectionId = options.collectionId;
|
|
137
|
+
this.basePath = options.basePath;
|
|
138
|
+
}
|
|
139
|
+
bind(request) {
|
|
140
|
+
return {
|
|
141
|
+
...request,
|
|
142
|
+
collectionId: this.collectionId,
|
|
143
|
+
...(this.basePath !== undefined ? { basePath: this.basePath } : {}),
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
rootHandle() {
|
|
147
|
+
return new HonuaOgcRecords({
|
|
148
|
+
client: this.client,
|
|
149
|
+
...(this.basePath !== undefined ? { basePath: this.basePath } : {}),
|
|
150
|
+
});
|
|
103
151
|
}
|
|
104
152
|
async metadata(request = {}) {
|
|
105
|
-
return this.client.getOgcRecordCollection(
|
|
153
|
+
return this.client.getOgcRecordCollection(this.bind(request));
|
|
106
154
|
}
|
|
107
155
|
async search(request = {}) {
|
|
108
|
-
return this.client.searchOgcRecords(
|
|
156
|
+
return this.client.searchOgcRecords(this.bind(request));
|
|
109
157
|
}
|
|
110
158
|
async record(request) {
|
|
111
|
-
return this.client.getOgcRecord(
|
|
159
|
+
return this.client.getOgcRecord(this.bind(request));
|
|
112
160
|
}
|
|
113
161
|
async rawSearch(request = {}) {
|
|
114
|
-
return this.client.fetchOgcRecordsRaw(
|
|
162
|
+
return this.client.fetchOgcRecordsRaw(this.bind(request));
|
|
115
163
|
}
|
|
116
164
|
async rawRecord(request) {
|
|
117
|
-
return this.client.fetchOgcRecordRaw(
|
|
165
|
+
return this.client.fetchOgcRecordRaw(this.bind(request));
|
|
118
166
|
}
|
|
119
167
|
async searchAll(request = {}) {
|
|
120
|
-
|
|
121
|
-
return root.searchAll({ ...request, collectionId: this.collectionId });
|
|
168
|
+
return this.rootHandle().searchAll({ ...request, collectionId: this.collectionId });
|
|
122
169
|
}
|
|
123
170
|
searchStream(request = {}) {
|
|
124
|
-
|
|
125
|
-
return root.searchStream({ ...request, collectionId: this.collectionId });
|
|
171
|
+
return this.rootHandle().searchStream({ ...request, collectionId: this.collectionId });
|
|
126
172
|
}
|
|
127
173
|
}
|
|
128
174
|
/**
|
|
@@ -170,20 +216,23 @@ export function createHonuaOgcRecords(client) {
|
|
|
170
216
|
// ── OGC API Records wire methods ────────────────────────────────
|
|
171
217
|
export async function getOgcRecordsLanding(transport, request = {}) {
|
|
172
218
|
const params = createOgcMetadataParams(request);
|
|
173
|
-
|
|
219
|
+
const base = recordsBase(request);
|
|
220
|
+
return transport.requestCachedMetadataJson(`ogc-records:landing:${recordsBaseKey(request)}${params.toString()}`, `${base}?${params.toString()}`, request);
|
|
174
221
|
}
|
|
175
222
|
export async function getOgcRecordsConformance(transport, request = {}) {
|
|
176
223
|
const params = createOgcMetadataParams(request);
|
|
177
|
-
|
|
224
|
+
const base = recordsBase(request);
|
|
225
|
+
return transport.requestCachedMetadataJson(`ogc-records:conformance:${recordsBaseKey(request)}${params.toString()}`, `${base}/conformance?${params.toString()}`, request);
|
|
178
226
|
}
|
|
179
227
|
export async function listOgcRecordCollections(transport, request = {}) {
|
|
180
228
|
const params = createOgcMetadataParams(request);
|
|
181
|
-
|
|
229
|
+
const base = recordsBase(request);
|
|
230
|
+
return transport.requestCachedMetadataJson(`ogc-records:collections:${recordsBaseKey(request)}${params.toString()}`, `${base}/collections?${params.toString()}`, request);
|
|
182
231
|
}
|
|
183
232
|
export async function getOgcRecordCollection(transport, request) {
|
|
184
233
|
const params = createOgcMetadataParams(request);
|
|
185
|
-
const path =
|
|
186
|
-
return transport.requestCachedMetadataJson(`ogc-records:collection:${request.collectionId}:${params.toString()}`, `${path}?${params.toString()}`, request);
|
|
234
|
+
const path = `${recordsBase(request)}/collections/${encodeURIComponent(String(request.collectionId))}`;
|
|
235
|
+
return transport.requestCachedMetadataJson(`ogc-records:collection:${recordsBaseKey(request)}${request.collectionId}:${params.toString()}`, `${path}?${params.toString()}`, request);
|
|
187
236
|
}
|
|
188
237
|
export async function searchOgcRecords(transport, request) {
|
|
189
238
|
return transport.requestJson("GET", buildOgcRecordsSearchPath(request), undefined, request.signal);
|
|
@@ -207,7 +256,7 @@ function normalizeRecordsBbox(value) {
|
|
|
207
256
|
function buildOgcRecordsSearchPath(request) {
|
|
208
257
|
const collection = encodeURIComponent(String(request.collectionId));
|
|
209
258
|
const params = serializeOgcRecordsSearchParams(request);
|
|
210
|
-
return
|
|
259
|
+
return `${recordsBase(request)}/collections/${collection}/items?${params.toString()}`;
|
|
211
260
|
}
|
|
212
261
|
function buildOgcRecordPath(request) {
|
|
213
262
|
const collection = encodeURIComponent(String(request.collectionId));
|
|
@@ -215,7 +264,7 @@ function buildOgcRecordPath(request) {
|
|
|
215
264
|
const params = createOgcMetadataParams(request);
|
|
216
265
|
if (request.profile !== undefined)
|
|
217
266
|
params.set("profile", normalizeStringCsv(request.profile));
|
|
218
|
-
return
|
|
267
|
+
return `${recordsBase(request)}/collections/${collection}/items/${record}?${params.toString()}`;
|
|
219
268
|
}
|
|
220
269
|
function serializeOgcRecordsSearchParams(request) {
|
|
221
270
|
const params = createOgcMetadataParams(request);
|
package/core/ogc-tiles.d.ts
CHANGED
|
@@ -15,6 +15,8 @@ import type { HonuaOgcConformanceResponse, HonuaOgcLandingResponse, HonuaOgcTile
|
|
|
15
15
|
export declare const DEFAULT_OGC_TILE_MATRIX_SET: OgcTileMatrixSetId;
|
|
16
16
|
export interface HonuaOgcTilesOptions {
|
|
17
17
|
client: HonuaClient;
|
|
18
|
+
/** Raw endpoint path prefix (defaults to the Honua facade `/ogc/tiles`). */
|
|
19
|
+
basePath?: string;
|
|
18
20
|
}
|
|
19
21
|
/**
|
|
20
22
|
* Structural shape of a MapLibre `VectorSourceSpecification` for tiled
|
|
@@ -47,6 +49,8 @@ export interface HonuaOgcTilesetOptions {
|
|
|
47
49
|
client: HonuaClient;
|
|
48
50
|
collectionId: string | number;
|
|
49
51
|
tileMatrixSetId: string;
|
|
52
|
+
/** Raw endpoint path prefix (defaults to the Honua facade `/ogc/tiles`). */
|
|
53
|
+
basePath?: string;
|
|
50
54
|
}
|
|
51
55
|
export type HonuaOgcCollectionTilesetRequest = Omit<OgcTilesetRequest, "collectionId" | "tileMatrixSetId">;
|
|
52
56
|
export type HonuaOgcCollectionTilesetsRequest = Omit<OgcTilesetsRequest, "collectionId">;
|
|
@@ -57,7 +61,9 @@ export type HonuaOgcCollectionTileRequest = Omit<OgcTileRequest, "collectionId"
|
|
|
57
61
|
*/
|
|
58
62
|
export declare class HonuaOgcTiles {
|
|
59
63
|
readonly client: HonuaClient;
|
|
64
|
+
private readonly basePath;
|
|
60
65
|
constructor(options: HonuaOgcTilesOptions);
|
|
66
|
+
private withBase;
|
|
61
67
|
tileset(collectionId: string | number, tileMatrixSetId: string): HonuaOgcTileset;
|
|
62
68
|
landing(request?: OgcMetadataRequest): Promise<HonuaOgcLandingResponse>;
|
|
63
69
|
conformance(request?: OgcMetadataRequest): Promise<HonuaOgcConformanceResponse>;
|
|
@@ -106,6 +112,7 @@ export declare class HonuaOgcTileset {
|
|
|
106
112
|
readonly client: HonuaClient;
|
|
107
113
|
readonly collectionId: string | number;
|
|
108
114
|
readonly tileMatrixSetId: string;
|
|
115
|
+
private readonly basePath;
|
|
109
116
|
constructor(options: HonuaOgcTilesetOptions);
|
|
110
117
|
metadata(request?: HonuaOgcCollectionTilesetRequest): Promise<HonuaOgcTilesetMetadata>;
|
|
111
118
|
tile(request: HonuaOgcCollectionTileRequest): Promise<HonuaOgcTileResponse>;
|
|
@@ -118,7 +125,9 @@ export declare function getOgcTileMatrixSet(transport: HonuaProtocolTransport, r
|
|
|
118
125
|
tileMatrixSetId: string;
|
|
119
126
|
responseFormat?: string;
|
|
120
127
|
extraParams?: Record<string, string | number | boolean>;
|
|
121
|
-
} & HonuaMetadataRequestOptions
|
|
128
|
+
} & HonuaMetadataRequestOptions & {
|
|
129
|
+
basePath?: string;
|
|
130
|
+
}): Promise<HonuaOgcTileMatrixSet>;
|
|
122
131
|
export declare function listOgcCollectionTilesets(transport: HonuaProtocolTransport, request: OgcTilesetsRequest): Promise<HonuaOgcTilesetsResponse>;
|
|
123
132
|
export declare function getOgcCollectionTileset(transport: HonuaProtocolTransport, request: OgcTilesetRequest): Promise<HonuaOgcTilesetMetadata>;
|
|
124
133
|
export declare function fetchOgcTile(transport: HonuaProtocolTransport, request: OgcTileRequest): Promise<HonuaOgcTileResponse>;
|
package/core/ogc-tiles.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ogc-tiles.d.ts","sourceRoot":"","sources":["../../../src/core/ogc-tiles.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,kBAAkB,CAAC;AACpE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,KAAK,EACV,2BAA2B,EAC3B,uBAAuB,EACvB,qBAAqB,EACrB,8BAA8B,EAC9B,oBAAoB,EACpB,uBAAuB,EACvB,wBAAwB,EACxB,kBAAkB,EAClB,kBAAkB,EAClB,cAAc,EACd,iBAAiB,EACjB,kBAAkB,EACnB,MAAM,YAAY,CAAC;AAGpB,kFAAkF;AAClF,eAAO,MAAM,2BAA2B,EAAE,kBAAsC,CAAC;
|
|
1
|
+
{"version":3,"file":"ogc-tiles.d.ts","sourceRoot":"","sources":["../../../src/core/ogc-tiles.ts"],"names":[],"mappings":"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"}
|
package/core/ogc-tiles.js
CHANGED
|
@@ -11,42 +11,72 @@ import { encodePathSegments, trimTrailingSlashes } from "./path-utils.js";
|
|
|
11
11
|
import { createOgcMetadataParams } from "./wire-shared.js";
|
|
12
12
|
/** Default OGC tile-matrix-set used when none is specified (Web Mercator XYZ). */
|
|
13
13
|
export const DEFAULT_OGC_TILE_MATRIX_SET = "WebMercatorQuad";
|
|
14
|
+
/** Honua facade path prefix for OGC API Tiles. */
|
|
15
|
+
const TILES_FACADE_BASE = "/ogc/tiles";
|
|
16
|
+
/**
|
|
17
|
+
* Resolve the OGC API Tiles path prefix: the caller-supplied raw `basePath` (a
|
|
18
|
+
* `connect()`-discovered third-party service root) or the Honua facade default.
|
|
19
|
+
* Trailing slashes are trimmed so a discovered root and the facade compose the
|
|
20
|
+
* same sub-paths. Mirrors the OGC API Records seam in `ogc-records.ts`.
|
|
21
|
+
*/
|
|
22
|
+
function tilesBase(request) {
|
|
23
|
+
// An omitted basePath uses the Honua facade; an explicit "" is a legitimate
|
|
24
|
+
// root-mounted raw service and must NOT fall back to the facade prefix.
|
|
25
|
+
if (request.basePath === undefined)
|
|
26
|
+
return TILES_FACADE_BASE;
|
|
27
|
+
const base = request.basePath;
|
|
28
|
+
let end = base.length;
|
|
29
|
+
while (end > 0 && base.charCodeAt(end - 1) === 0x2f)
|
|
30
|
+
end--;
|
|
31
|
+
return base.slice(0, end);
|
|
32
|
+
}
|
|
33
|
+
/** Cache-key discriminator so a discovered root never collides with the facade. */
|
|
34
|
+
function tilesBaseKey(request) {
|
|
35
|
+
const base = tilesBase(request);
|
|
36
|
+
return base === TILES_FACADE_BASE ? "" : `${base}:`;
|
|
37
|
+
}
|
|
14
38
|
/**
|
|
15
39
|
* Top-level OGC API Tiles handle. Mirrors `HonuaOgcFeatures` for the
|
|
16
40
|
* tiles conformance classes.
|
|
17
41
|
*/
|
|
18
42
|
export class HonuaOgcTiles {
|
|
19
43
|
client;
|
|
44
|
+
basePath;
|
|
20
45
|
constructor(options) {
|
|
21
46
|
this.client = options.client;
|
|
47
|
+
this.basePath = options.basePath;
|
|
48
|
+
}
|
|
49
|
+
withBase(request) {
|
|
50
|
+
return this.basePath !== undefined ? { ...request, basePath: this.basePath } : request;
|
|
22
51
|
}
|
|
23
52
|
tileset(collectionId, tileMatrixSetId) {
|
|
24
53
|
return new HonuaOgcTileset({
|
|
25
54
|
client: this.client,
|
|
26
55
|
collectionId,
|
|
27
56
|
tileMatrixSetId,
|
|
57
|
+
...(this.basePath !== undefined ? { basePath: this.basePath } : {}),
|
|
28
58
|
});
|
|
29
59
|
}
|
|
30
60
|
async landing(request = {}) {
|
|
31
|
-
return this.client.getOgcTilesLanding(request);
|
|
61
|
+
return this.client.getOgcTilesLanding(this.withBase(request));
|
|
32
62
|
}
|
|
33
63
|
async conformance(request = {}) {
|
|
34
|
-
return this.client.getOgcTilesConformance(request);
|
|
64
|
+
return this.client.getOgcTilesConformance(this.withBase(request));
|
|
35
65
|
}
|
|
36
66
|
async tileMatrixSets(request = {}) {
|
|
37
|
-
return this.client.listOgcTileMatrixSets(request);
|
|
67
|
+
return this.client.listOgcTileMatrixSets(this.withBase(request));
|
|
38
68
|
}
|
|
39
69
|
async tileMatrixSet(tileMatrixSetId, request = {}) {
|
|
40
|
-
return this.client.getOgcTileMatrixSet({ ...request, tileMatrixSetId });
|
|
70
|
+
return this.client.getOgcTileMatrixSet(this.withBase({ ...request, tileMatrixSetId }));
|
|
41
71
|
}
|
|
42
72
|
async tilesets(request) {
|
|
43
|
-
return this.client.listOgcCollectionTilesets(request);
|
|
73
|
+
return this.client.listOgcCollectionTilesets(this.withBase(request));
|
|
44
74
|
}
|
|
45
75
|
async tilesetMetadata(request) {
|
|
46
|
-
return this.client.getOgcCollectionTileset(request);
|
|
76
|
+
return this.client.getOgcCollectionTileset(this.withBase(request));
|
|
47
77
|
}
|
|
48
78
|
async tile(request) {
|
|
49
|
-
return this.client.fetchOgcTile(request);
|
|
79
|
+
return this.client.fetchOgcTile(this.withBase(request));
|
|
50
80
|
}
|
|
51
81
|
/**
|
|
52
82
|
* Build a MapLibre-ready vector source definition for a tiled collection.
|
|
@@ -67,7 +97,8 @@ export class HonuaOgcTiles {
|
|
|
67
97
|
const baseUrl = trimTrailingSlashes(this.client.serverBaseUrl);
|
|
68
98
|
const collection = encodePathSegments(serviceId);
|
|
69
99
|
const matrixSet = encodeURIComponent(tileMatrixSetId);
|
|
70
|
-
const
|
|
100
|
+
const base = tilesBase({ ...(this.basePath !== undefined ? { basePath: this.basePath } : {}) });
|
|
101
|
+
const template = `${baseUrl}${base}/collections/${collection}/tiles/${matrixSet}/{z}/{y}/{x}`;
|
|
71
102
|
const source = {
|
|
72
103
|
type: "vector",
|
|
73
104
|
tiles: [template],
|
|
@@ -112,16 +143,19 @@ export class HonuaOgcTileset {
|
|
|
112
143
|
client;
|
|
113
144
|
collectionId;
|
|
114
145
|
tileMatrixSetId;
|
|
146
|
+
basePath;
|
|
115
147
|
constructor(options) {
|
|
116
148
|
this.client = options.client;
|
|
117
149
|
this.collectionId = options.collectionId;
|
|
118
150
|
this.tileMatrixSetId = options.tileMatrixSetId;
|
|
151
|
+
this.basePath = options.basePath;
|
|
119
152
|
}
|
|
120
153
|
async metadata(request = {}) {
|
|
121
154
|
return this.client.getOgcCollectionTileset({
|
|
122
155
|
...request,
|
|
123
156
|
collectionId: this.collectionId,
|
|
124
157
|
tileMatrixSetId: this.tileMatrixSetId,
|
|
158
|
+
...(this.basePath !== undefined ? { basePath: this.basePath } : {}),
|
|
125
159
|
});
|
|
126
160
|
}
|
|
127
161
|
async tile(request) {
|
|
@@ -129,6 +163,7 @@ export class HonuaOgcTileset {
|
|
|
129
163
|
...request,
|
|
130
164
|
collectionId: this.collectionId,
|
|
131
165
|
tileMatrixSetId: this.tileMatrixSetId,
|
|
166
|
+
...(this.basePath !== undefined ? { basePath: this.basePath } : {}),
|
|
132
167
|
});
|
|
133
168
|
}
|
|
134
169
|
}
|
|
@@ -142,30 +177,34 @@ export function createHonuaOgcTiles(client) {
|
|
|
142
177
|
// exposes thin `get*/list*/fetch*` delegators that call these.
|
|
143
178
|
export async function getOgcTilesLanding(transport, request = {}) {
|
|
144
179
|
const params = createOgcMetadataParams(request);
|
|
145
|
-
|
|
180
|
+
const base = tilesBase(request);
|
|
181
|
+
return transport.requestCachedMetadataJson(`ogc-tiles:landing:${tilesBaseKey(request)}${params.toString()}`, `${base}?${params.toString()}`, request);
|
|
146
182
|
}
|
|
147
183
|
export async function getOgcTilesConformance(transport, request = {}) {
|
|
148
184
|
const params = createOgcMetadataParams(request);
|
|
149
|
-
|
|
185
|
+
const base = tilesBase(request);
|
|
186
|
+
return transport.requestCachedMetadataJson(`ogc-tiles:conformance:${tilesBaseKey(request)}${params.toString()}`, `${base}/conformance?${params.toString()}`, request);
|
|
150
187
|
}
|
|
151
188
|
export async function listOgcTileMatrixSets(transport, request = {}) {
|
|
152
189
|
const params = createOgcMetadataParams(request);
|
|
153
|
-
|
|
190
|
+
const base = tilesBase(request);
|
|
191
|
+
return transport.requestCachedMetadataJson(`ogc-tiles:tile-matrix-sets:${tilesBaseKey(request)}${params.toString()}`, `${base}/tileMatrixSets?${params.toString()}`, request);
|
|
154
192
|
}
|
|
155
193
|
export async function getOgcTileMatrixSet(transport, request) {
|
|
156
194
|
const params = createOgcMetadataParams(request);
|
|
157
|
-
|
|
195
|
+
const base = tilesBase(request);
|
|
196
|
+
return transport.requestCachedMetadataJson(`ogc-tiles:tile-matrix-set:${tilesBaseKey(request)}${request.tileMatrixSetId}:${params.toString()}`, `${base}/tileMatrixSets/${encodeURIComponent(request.tileMatrixSetId)}?${params.toString()}`, request);
|
|
158
197
|
}
|
|
159
198
|
export async function listOgcCollectionTilesets(transport, request) {
|
|
160
199
|
const params = createOgcMetadataParams(request);
|
|
161
|
-
const path =
|
|
162
|
-
return transport.requestCachedMetadataJson(`ogc-tiles:tilesets:${request.collectionId}:${params.toString()}`, `${path}?${params.toString()}`, request);
|
|
200
|
+
const path = `${tilesBase(request)}/collections/${encodeURIComponent(String(request.collectionId))}/tiles`;
|
|
201
|
+
return transport.requestCachedMetadataJson(`ogc-tiles:tilesets:${tilesBaseKey(request)}${request.collectionId}:${params.toString()}`, `${path}?${params.toString()}`, request);
|
|
163
202
|
}
|
|
164
203
|
export async function getOgcCollectionTileset(transport, request) {
|
|
165
204
|
const params = createOgcMetadataParams(request);
|
|
166
|
-
const path =
|
|
205
|
+
const path = `${tilesBase(request)}/collections/${encodeURIComponent(String(request.collectionId))}` +
|
|
167
206
|
`/tiles/${encodeURIComponent(request.tileMatrixSetId)}`;
|
|
168
|
-
return transport.requestCachedMetadataJson(`ogc-tiles:tileset:${request.collectionId}:${request.tileMatrixSetId}:${params.toString()}`, `${path}?${params.toString()}`, request);
|
|
207
|
+
return transport.requestCachedMetadataJson(`ogc-tiles:tileset:${tilesBaseKey(request)}${request.collectionId}:${request.tileMatrixSetId}:${params.toString()}`, `${path}?${params.toString()}`, request);
|
|
169
208
|
}
|
|
170
209
|
export async function fetchOgcTile(transport, request) {
|
|
171
210
|
const params = new URLSearchParams();
|
|
@@ -178,6 +217,6 @@ export async function fetchOgcTile(transport, request) {
|
|
|
178
217
|
const matrixSet = encodeURIComponent(request.tileMatrixSetId);
|
|
179
218
|
const matrix = encodeURIComponent(String(request.tileMatrix));
|
|
180
219
|
const query = params.size > 0 ? `?${params.toString()}` : "";
|
|
181
|
-
const path =
|
|
220
|
+
const path = `${tilesBase(request)}/collections/${collection}/tiles/${matrixSet}/${matrix}/${request.tileRow}/${request.tileCol}${query}`;
|
|
182
221
|
return transport.requestBytes("GET", path, request.accept, undefined, request.signal);
|
|
183
222
|
}
|
package/core/path-utils.d.ts
CHANGED
|
@@ -21,6 +21,15 @@ export declare function trimSurroundingSlashes(value: string): string;
|
|
|
21
21
|
* or `_` padding) without anchored `^x+|x+$` regexes.
|
|
22
22
|
*/
|
|
23
23
|
export declare function trimChar(value: string, char: string): string;
|
|
24
|
+
/**
|
|
25
|
+
* Remove a trailing run of characters from `value` that belong to `chars`.
|
|
26
|
+
*
|
|
27
|
+
* Equivalent to `value.replace(new RegExp(\`[${chars}]+$\`), "")` but avoids
|
|
28
|
+
* building an anchored character-class regex (which can exhibit polynomial
|
|
29
|
+
* matching on adversarial input) by scanning backward from the end with
|
|
30
|
+
* simple index arithmetic instead.
|
|
31
|
+
*/
|
|
32
|
+
export declare function trimTrailingCharsIn(value: string, chars: string): string;
|
|
24
33
|
/**
|
|
25
34
|
* Return `value` with any `?query` and `#fragment` suffix removed.
|
|
26
35
|
*
|
package/core/path-utils.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"path-utils.d.ts","sourceRoot":"","sources":["../../../src/core/path-utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,wDAAwD;AACxD,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAMzD;AAED,uDAAuD;AACvD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAMxD;AAED,oEAAoE;AACpE,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE5D;AAED;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAW5D;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAU3D;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAGhD;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAS7D;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAQxD"}
|
|
1
|
+
{"version":3,"file":"path-utils.d.ts","sourceRoot":"","sources":["../../../src/core/path-utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,wDAAwD;AACxD,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAMzD;AAED,uDAAuD;AACvD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAMxD;AAED,oEAAoE;AACpE,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE5D;AAED;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAW5D;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAUxE;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAU3D;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAGhD;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAS7D;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAQxD"}
|
package/core/path-utils.js
CHANGED
|
@@ -46,6 +46,25 @@ export function trimChar(value, char) {
|
|
|
46
46
|
}
|
|
47
47
|
return start === 0 && end === value.length ? value : value.slice(start, end);
|
|
48
48
|
}
|
|
49
|
+
/**
|
|
50
|
+
* Remove a trailing run of characters from `value` that belong to `chars`.
|
|
51
|
+
*
|
|
52
|
+
* Equivalent to `value.replace(new RegExp(\`[${chars}]+$\`), "")` but avoids
|
|
53
|
+
* building an anchored character-class regex (which can exhibit polynomial
|
|
54
|
+
* matching on adversarial input) by scanning backward from the end with
|
|
55
|
+
* simple index arithmetic instead.
|
|
56
|
+
*/
|
|
57
|
+
export function trimTrailingCharsIn(value, chars) {
|
|
58
|
+
const allowed = new Set();
|
|
59
|
+
for (let i = 0; i < chars.length; i += 1) {
|
|
60
|
+
allowed.add(chars.charCodeAt(i));
|
|
61
|
+
}
|
|
62
|
+
let end = value.length;
|
|
63
|
+
while (end > 0 && allowed.has(value.charCodeAt(end - 1))) {
|
|
64
|
+
end -= 1;
|
|
65
|
+
}
|
|
66
|
+
return end === value.length ? value : value.slice(0, end);
|
|
67
|
+
}
|
|
49
68
|
/**
|
|
50
69
|
* Return `value` with any `?query` and `#fragment` suffix removed.
|
|
51
70
|
*
|
|
@@ -66,6 +66,7 @@ export interface HonuaProtocolTransport {
|
|
|
66
66
|
*/
|
|
67
67
|
pipelineFetch(method: QueryMethod, path: string, init?: RequestInit, callerSignal?: AbortSignal, options?: {
|
|
68
68
|
okStatuses?: readonly number[];
|
|
69
|
+
redirect?: "safe-follow" | "error";
|
|
69
70
|
}): Promise<Response>;
|
|
70
71
|
/**
|
|
71
72
|
* Request a PBF binary response and decode it, transparently falling back to
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"protocol-transport.d.ts","sourceRoot":"","sources":["../../../src/core/protocol-transport.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,kBAAkB,CAAC;AACpE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C;;;;GAIG;AACH,MAAM,WAAW,sBAAsB;IACrC;;;;OAIG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAEzB;;;;OAIG;IACH,WAAW,CAAC,CAAC,GAAG,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAElH;;;OAGG;IACH,WAAW,CACT,MAAM,EAAE,WAAW,EACnB,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,QAAQ,CAAC;QAAC,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GACzF,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAElE;;;OAGG;IACH,YAAY,CACV,MAAM,EAAE,WAAW,EACnB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,IAAI,CAAC,EAAE,WAAW,EAClB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC;QAAE,KAAK,EAAE,UAAU,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IAEvE;;;OAGG;IACH,yBAAyB,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,2BAA2B,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAEhH;;;OAGG;IACH,aAAa,CACX,MAAM,EAAE,WAAW,EACnB,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,WAAW,EAClB,YAAY,CAAC,EAAE,WAAW,EAC1B,OAAO,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;KAAE,
|
|
1
|
+
{"version":3,"file":"protocol-transport.d.ts","sourceRoot":"","sources":["../../../src/core/protocol-transport.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,kBAAkB,CAAC;AACpE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C;;;;GAIG;AACH,MAAM,WAAW,sBAAsB;IACrC;;;;OAIG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAEzB;;;;OAIG;IACH,WAAW,CAAC,CAAC,GAAG,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAElH;;;OAGG;IACH,WAAW,CACT,MAAM,EAAE,WAAW,EACnB,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,QAAQ,CAAC;QAAC,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GACzF,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAElE;;;OAGG;IACH,YAAY,CACV,MAAM,EAAE,WAAW,EACnB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,IAAI,CAAC,EAAE,WAAW,EAClB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC;QAAE,KAAK,EAAE,UAAU,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IAEvE;;;OAGG;IACH,yBAAyB,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,2BAA2B,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAEhH;;;OAGG;IACH,aAAa,CACX,MAAM,EAAE,WAAW,EACnB,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,WAAW,EAClB,YAAY,CAAC,EAAE,WAAW,EAC1B,OAAO,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;QAAC,QAAQ,CAAC,EAAE,aAAa,GAAG,OAAO,CAAA;KAAE,GAC/E,OAAO,CAAC,QAAQ,CAAC,CAAC;IAErB;;;OAGG;IACH,6BAA6B,CAAC,CAAC,GAAG,OAAO,EACvC,MAAM,EAAE,WAAW,EACnB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,eAAe,EACvB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,CAAC,CAAC,CAAC;CACf"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request-pipeline.d.ts","sourceRoot":"","sources":["../../../src/core/request-pipeline.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,cAAc,EAAwC,MAAM,aAAa,CAAC;AACpG,OAAO,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEjE;;;;;;;GAOG;AAEH,MAAM,WAAW,sBAAsB;IACrC,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CACpC;AAED,eAAO,MAAM,sBAAsB,EAAE,WAAW,CAAC,MAAM,CAAiC,CAAC;AACzF,eAAO,MAAM,qBAAqB,EAAE,WAAW,CAAC,WAAW,
|
|
1
|
+
{"version":3,"file":"request-pipeline.d.ts","sourceRoot":"","sources":["../../../src/core/request-pipeline.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,cAAc,EAAwC,MAAM,aAAa,CAAC;AACpG,OAAO,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEjE;;;;;;;GAOG;AAEH,MAAM,WAAW,sBAAsB;IACrC,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CACpC;AAED,eAAO,MAAM,sBAAsB,EAAE,WAAW,CAAC,MAAM,CAAiC,CAAC;AACzF,eAAO,MAAM,qBAAqB,EAAE,WAAW,CAAC,WAAW,CAA6C,CAAC;AAEzG,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAKpF;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,iBAAiB,GAAG,SAAS,GAAG,sBAAsB,GAAG,SAAS,CAsChH;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,GAAG,MAAM,GAAG,SAAS,CAgBzF;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,GAAG,SAAS,CAExE;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,YAAY,EAAE,sBAAsB,GAAG,SAAS,EAChD,MAAM,EAAE,WAAW,EACnB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,KAAK,EAAE,OAAO,GACb,OAAO,CAkBT;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,YAAY,EAAE,sBAAsB,GAAG,SAAS,EAChD,OAAO,EAAE,MAAM,EACf,QAAQ,CAAC,EAAE,QAAQ,GAClB,MAAM,CAWR;AAED;;;;;;GAMG;AACH,eAAO,MAAM,4BAA4B,EAAE,WAAW,CAAC,MAAM,CAK3D,CAAC;AAKH;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAUnE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CACjC,YAAY,EAAE,sBAAsB,GAAG,SAAS,EAChD,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,OAAO,EACd,OAAO,EAAE,OAAO,GACf,OAAO,CAYT;AAYD;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACrC,YAAY,EAAE,sBAAsB,GAAG,SAAS,EAChD,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,OAAO,GACb,MAAM,CAOR;AAED,wBAAsB,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAkB3E;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,CAQ3D;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,WAAW,GAAG,SAAS,CAAC;IAChC,UAAU,EAAE,OAAO,CAAC;IACpB,OAAO,IAAI,IAAI,CAAC;CACjB;AAED,wBAAgB,mBAAmB,CACjC,cAAc,EAAE,WAAW,GAAG,IAAI,GAAG,SAAS,EAC9C,SAAS,EAAE,MAAM,GAAG,SAAS,GAC5B,aAAa,CA8Cf;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,cAAc,CAgB7E"}
|
package/core/request-pipeline.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { HonuaAbortError, HonuaHttpError, HonuaNetworkError, HonuaTimeoutError } from "./errors.js";
|
|
2
2
|
export const DEFAULT_RETRY_STATUSES = new Set([429, 502, 503, 504]);
|
|
3
|
-
export const DEFAULT_RETRY_METHODS = new Set(["GET", "PUT", "DELETE"]);
|
|
3
|
+
export const DEFAULT_RETRY_METHODS = new Set(["GET", "HEAD", "PUT", "DELETE"]);
|
|
4
4
|
export function normalizeTimeoutMs(timeoutMs) {
|
|
5
5
|
if (typeof timeoutMs !== "number" || !Number.isFinite(timeoutMs)) {
|
|
6
6
|
return undefined;
|
package/core/spatial-filter.d.ts
CHANGED
|
@@ -45,8 +45,12 @@ export declare function point(x: number, y: number, spatialReference?: HonuaSpat
|
|
|
45
45
|
*/
|
|
46
46
|
export declare function polygon(rings: number[][][], spatialReference?: HonuaSpatialReference): SpatialFilter;
|
|
47
47
|
/**
|
|
48
|
-
* Create an envelope spatial filter centered on a point
|
|
49
|
-
*
|
|
48
|
+
* Create an axis-aligned envelope spatial filter centered on a point.
|
|
49
|
+
*
|
|
50
|
+
* This is a planar expansion in the input coordinate system's units. It is an
|
|
51
|
+
* envelope approximation, not a circular, geodesic, or topological geometry
|
|
52
|
+
* buffer. Use `buffer` from `@honua/sdk-js/geometry` when a true geometry
|
|
53
|
+
* buffer is required.
|
|
50
54
|
*
|
|
51
55
|
* @param x - Center x coordinate
|
|
52
56
|
* @param y - Center y coordinate
|
|
@@ -58,11 +62,11 @@ export declare function polygon(rings: number[][][], spatialReference?: HonuaSpa
|
|
|
58
62
|
* // 0.5-degree bounding box around a point
|
|
59
63
|
* const req: QueryFeaturesRequest = {
|
|
60
64
|
* serviceId: "svc", layerId: 0,
|
|
61
|
-
* ...
|
|
65
|
+
* ...bufferEnvelope(-118.24, 34.05, 0.5),
|
|
62
66
|
* };
|
|
63
67
|
* ```
|
|
64
68
|
*/
|
|
65
|
-
export declare function
|
|
69
|
+
export declare function bufferEnvelope(x: number, y: number, distance: number, spatialReference?: HonuaSpatialReference): SpatialFilter;
|
|
66
70
|
/**
|
|
67
71
|
* Wrap an existing geometry with `esriSpatialRelIntersects`.
|
|
68
72
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spatial-filter.d.ts","sourceRoot":"","sources":["../../../src/core/spatial-filter.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"spatial-filter.d.ts","sourceRoot":"","sources":["../../../src/core/spatial-filter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAE1F;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,YAAY,EAAE,gBAAgB,CAAC;IAC/B,UAAU,CAAC,EAAE,cAAc,CAAC;CAC7B;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,QAAQ,CACtB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,gBAAgB,CAAC,EAAE,qBAAqB,GACvC,aAAa,CAQf;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,gBAAgB,CAAC,EAAE,qBAAqB,GAAG,aAAa,CAQnG;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,gBAAgB,CAAC,EAAE,qBAAqB,GAAG,aAAa,CAQpG;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,cAAc,CAC5B,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,QAAQ,EAAE,MAAM,EAChB,gBAAgB,CAAC,EAAE,qBAAqB,GACvC,aAAa,CAuBf;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,aAAa,CAMlF;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,aAAa,CAMhF;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,aAAa,CAM9E"}
|