@loaders.gl/arcgis 5.0.0-alpha.10
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/LICENSE +52 -0
- package/README.md +28 -0
- package/dist/arcgis/arcgis-capability-graph.d.ts +50 -0
- package/dist/arcgis/arcgis-capability-graph.d.ts.map +1 -0
- package/dist/arcgis/arcgis-capability-graph.js +221 -0
- package/dist/arcgis/arcgis-capability-graph.js.map +1 -0
- package/dist/arcgis/arcgis-feature-query.d.ts +53 -0
- package/dist/arcgis/arcgis-feature-query.d.ts.map +1 -0
- package/dist/arcgis/arcgis-feature-query.js +381 -0
- package/dist/arcgis/arcgis-feature-query.js.map +1 -0
- package/dist/arcgis/arcgis-feature-server-source-loader-types.d.ts +33 -0
- package/dist/arcgis/arcgis-feature-server-source-loader-types.d.ts.map +1 -0
- package/dist/arcgis/arcgis-feature-server-source-loader-types.js +21 -0
- package/dist/arcgis/arcgis-feature-server-source-loader-types.js.map +1 -0
- package/dist/arcgis/arcgis-feature-server-source-loader.d.ts +84 -0
- package/dist/arcgis/arcgis-feature-server-source-loader.d.ts.map +1 -0
- package/dist/arcgis/arcgis-feature-server-source-loader.js +280 -0
- package/dist/arcgis/arcgis-feature-server-source-loader.js.map +1 -0
- package/dist/arcgis/arcgis-image-server-source-loader-types.d.ts +31 -0
- package/dist/arcgis/arcgis-image-server-source-loader-types.d.ts.map +1 -0
- package/dist/arcgis/arcgis-image-server-source-loader-types.js +21 -0
- package/dist/arcgis/arcgis-image-server-source-loader-types.js.map +1 -0
- package/dist/arcgis/arcgis-image-server-source-loader.d.ts +60 -0
- package/dist/arcgis/arcgis-image-server-source-loader.d.ts.map +1 -0
- package/dist/arcgis/arcgis-image-server-source-loader.js +130 -0
- package/dist/arcgis/arcgis-image-server-source-loader.js.map +1 -0
- package/dist/arcgis/arcgis-image-tile-source-loader-types.d.ts +31 -0
- package/dist/arcgis/arcgis-image-tile-source-loader-types.d.ts.map +1 -0
- package/dist/arcgis/arcgis-image-tile-source-loader-types.js +21 -0
- package/dist/arcgis/arcgis-image-tile-source-loader-types.js.map +1 -0
- package/dist/arcgis/arcgis-image-tile-source-loader.d.ts +63 -0
- package/dist/arcgis/arcgis-image-tile-source-loader.d.ts.map +1 -0
- package/dist/arcgis/arcgis-image-tile-source-loader.js +147 -0
- package/dist/arcgis/arcgis-image-tile-source-loader.js.map +1 -0
- package/dist/arcgis/arcgis-map-tile-source-loader-types.d.ts +31 -0
- package/dist/arcgis/arcgis-map-tile-source-loader-types.d.ts.map +1 -0
- package/dist/arcgis/arcgis-map-tile-source-loader-types.js +21 -0
- package/dist/arcgis/arcgis-map-tile-source-loader-types.js.map +1 -0
- package/dist/arcgis/arcgis-map-tile-source-loader.d.ts +62 -0
- package/dist/arcgis/arcgis-map-tile-source-loader.d.ts.map +1 -0
- package/dist/arcgis/arcgis-map-tile-source-loader.js +196 -0
- package/dist/arcgis/arcgis-map-tile-source-loader.js.map +1 -0
- package/dist/arcgis/arcgis-scene-aggregation.d.ts +34 -0
- package/dist/arcgis/arcgis-scene-aggregation.d.ts.map +1 -0
- package/dist/arcgis/arcgis-scene-aggregation.js +57 -0
- package/dist/arcgis/arcgis-scene-aggregation.js.map +1 -0
- package/dist/arcgis/arcgis-scene-server-source-loader-types.d.ts +31 -0
- package/dist/arcgis/arcgis-scene-server-source-loader-types.d.ts.map +1 -0
- package/dist/arcgis/arcgis-scene-server-source-loader-types.js +21 -0
- package/dist/arcgis/arcgis-scene-server-source-loader-types.js.map +1 -0
- package/dist/arcgis/arcgis-scene-server-source-loader.d.ts +64 -0
- package/dist/arcgis/arcgis-scene-server-source-loader.d.ts.map +1 -0
- package/dist/arcgis/arcgis-scene-server-source-loader.js +159 -0
- package/dist/arcgis/arcgis-scene-server-source-loader.js.map +1 -0
- package/dist/arcgis/arcgis-server.d.ts +15 -0
- package/dist/arcgis/arcgis-server.d.ts.map +1 -0
- package/dist/arcgis/arcgis-server.js +41 -0
- package/dist/arcgis/arcgis-server.js.map +1 -0
- package/dist/arcgis/arcgis-url-utils.d.ts +3 -0
- package/dist/arcgis/arcgis-url-utils.d.ts.map +1 -0
- package/dist/arcgis/arcgis-url-utils.js +23 -0
- package/dist/arcgis/arcgis-url-utils.js.map +1 -0
- package/dist/arcgis/arcgis-vector-tile-server-source-loader-types.d.ts +31 -0
- package/dist/arcgis/arcgis-vector-tile-server-source-loader-types.d.ts.map +1 -0
- package/dist/arcgis/arcgis-vector-tile-server-source-loader-types.js +21 -0
- package/dist/arcgis/arcgis-vector-tile-server-source-loader-types.js.map +1 -0
- package/dist/arcgis/arcgis-vector-tile-server-source-loader.d.ts +66 -0
- package/dist/arcgis/arcgis-vector-tile-server-source-loader.d.ts.map +1 -0
- package/dist/arcgis/arcgis-vector-tile-server-source-loader.js +150 -0
- package/dist/arcgis/arcgis-vector-tile-server-source-loader.js.map +1 -0
- package/dist/arcgis-feature-query-types.d.ts +77 -0
- package/dist/arcgis-feature-query-types.d.ts.map +1 -0
- package/dist/arcgis-feature-query-types.js +5 -0
- package/dist/arcgis-feature-query-types.js.map +1 -0
- package/dist/arcgis-items.d.ts +64 -0
- package/dist/arcgis-items.d.ts.map +1 -0
- package/dist/arcgis-items.js +137 -0
- package/dist/arcgis-items.js.map +1 -0
- package/dist/arcgis-source-types.d.ts +372 -0
- package/dist/arcgis-source-types.d.ts.map +1 -0
- package/dist/arcgis-source-types.js +108 -0
- package/dist/arcgis-source-types.js.map +1 -0
- package/dist/authentication.d.ts +25 -0
- package/dist/authentication.d.ts.map +1 -0
- package/dist/authentication.js +94 -0
- package/dist/authentication.js.map +1 -0
- package/dist/bundled.d.ts +152 -0
- package/dist/bundled.d.ts.map +1 -0
- package/dist/bundled.js +34 -0
- package/dist/bundled.js.map +1 -0
- package/dist/index.cjs +25620 -0
- package/dist/index.cjs.map +6 -0
- package/dist/index.d.ts +24 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +11 -0
- package/dist/index.js.map +1 -0
- package/dist/service-registry.d.ts +18 -0
- package/dist/service-registry.d.ts.map +1 -0
- package/dist/service-registry.js +29 -0
- package/dist/service-registry.js.map +1 -0
- package/package.json +96 -0
- package/src/arcgis/arcgis-capability-graph.ts +297 -0
- package/src/arcgis/arcgis-feature-query.ts +442 -0
- package/src/arcgis/arcgis-feature-server-source-loader-types.ts +34 -0
- package/src/arcgis/arcgis-feature-server-source-loader.ts +373 -0
- package/src/arcgis/arcgis-image-server-source-loader-types.ts +34 -0
- package/src/arcgis/arcgis-image-server-source-loader.ts +186 -0
- package/src/arcgis/arcgis-image-tile-source-loader-types.ts +34 -0
- package/src/arcgis/arcgis-image-tile-source-loader.ts +192 -0
- package/src/arcgis/arcgis-map-tile-source-loader-types.ts +34 -0
- package/src/arcgis/arcgis-map-tile-source-loader.ts +248 -0
- package/src/arcgis/arcgis-scene-aggregation.ts +90 -0
- package/src/arcgis/arcgis-scene-server-source-loader-types.ts +36 -0
- package/src/arcgis/arcgis-scene-server-source-loader.ts +216 -0
- package/src/arcgis/arcgis-server.ts +61 -0
- package/src/arcgis/arcgis-url-utils.ts +26 -0
- package/src/arcgis/arcgis-vector-tile-server-source-loader-types.ts +36 -0
- package/src/arcgis/arcgis-vector-tile-server-source-loader.ts +196 -0
- package/src/arcgis-feature-query-types.ts +89 -0
- package/src/arcgis-items.ts +233 -0
- package/src/arcgis-source-types.ts +372 -0
- package/src/authentication.ts +118 -0
- package/src/bundled.ts +68 -0
- package/src/index.ts +70 -0
- package/src/service-registry.ts +43 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
loaders.gl is licensed under the MIT license
|
|
2
|
+
|
|
3
|
+
Copyright (c) vis.gl contributors
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in
|
|
13
|
+
all copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
21
|
+
THE SOFTWARE.
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
Copyright (c) 2015 Uber Technologies, Inc.
|
|
26
|
+
|
|
27
|
+
Portions of modules/images/src/lib/category-api/binary-image-api.ts are based on
|
|
28
|
+
binary-gltf-utils (https://github.com/Qantas94Heavy/binary-gltf-utils) under the
|
|
29
|
+
MIT License reproduced above.
|
|
30
|
+
|
|
31
|
+
Copyright (c) 2016-17 Karl Cheng
|
|
32
|
+
|
|
33
|
+
Portions of modules/schema-utils/src/lib/utils/async-queue.ts are adapted from
|
|
34
|
+
async-iter-demo (https://github.com/rauschma/async-iter-demo) under the MIT
|
|
35
|
+
License reproduced above.
|
|
36
|
+
|
|
37
|
+
Copyright (c) 2016 Axel Rauschmayer
|
|
38
|
+
|
|
39
|
+
loaders.gl includes certain files from Cesium (https://github.com/CesiumGS/cesium)
|
|
40
|
+
under the Apache 2.0 License, including files in modules/3d-tiles.
|
|
41
|
+
|
|
42
|
+
Copyright 2011-2018 CesiumJS Contributors
|
|
43
|
+
|
|
44
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
|
45
|
+
you may not use this file except in compliance with the License.
|
|
46
|
+
You may obtain a copy of the License at
|
|
47
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
48
|
+
|
|
49
|
+
Unless required by applicable law or agreed to in writing, software
|
|
50
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
|
51
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
52
|
+
See the License for the specific language governing permissions and limitations under the License.
|
package/README.md
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# @loaders.gl/arcgis
|
|
2
|
+
|
|
3
|
+
Framework-independent ArcGIS REST data sources for geospatial visualization.
|
|
4
|
+
|
|
5
|
+
```ts
|
|
6
|
+
import {load} from '@loaders.gl/core';
|
|
7
|
+
import {ArcGISFeatureServerSourceLoader} from '@loaders.gl/arcgis';
|
|
8
|
+
|
|
9
|
+
const source = await load(featureLayerUrl, ArcGISFeatureServerSourceLoader);
|
|
10
|
+
const features = await source.getFeatures({format: 'geojson'});
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
Import lightweight service loaders from `@loaders.gl/arcgis` and `ArcGISAuthentication` from
|
|
14
|
+
`@loaders.gl/arcgis/authentication`. The auth object accepts an application-managed token callback
|
|
15
|
+
and provides `createFetch()` for scoped requests; sign-in SDKs remain application dependencies.
|
|
16
|
+
Authentication and discovery helpers have dedicated `/authentication` and `/discovery` entrypoints.
|
|
17
|
+
Async `load()` and deck.gl `SourceLayer` import the selected service implementation on demand.
|
|
18
|
+
For synchronous `createDataSource()` or direct source classes, import the same names from
|
|
19
|
+
`@loaders.gl/arcgis/bundled`. Service requests remain asynchronous.
|
|
20
|
+
|
|
21
|
+
FeatureServer, MapServer, ImageServer, VectorTileServer and SceneServer adapters implement specific
|
|
22
|
+
read operations, not full ArcGIS API parity. Feature queries currently issue one request; automatic
|
|
23
|
+
paging is not implemented. ImageServer tiles use dynamic exports, not native cached tiles.
|
|
24
|
+
|
|
25
|
+
- [Developer guide](https://loaders.gl/docs/developer-guide/arcgis)
|
|
26
|
+
- [Service inventory and limitations](https://loaders.gl/docs/modules/arcgis/services)
|
|
27
|
+
- [Authentication](https://loaders.gl/docs/developer-guide/arcgis/authentication)
|
|
28
|
+
- [Examples](https://loaders.gl/examples/arcgis)
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
export { getArcGISServices } from "./arcgis-server.js";
|
|
2
|
+
export type { Service as ArcGISService } from "./arcgis-server.js";
|
|
3
|
+
import type { ServiceCapabilities } from '@loaders.gl/loader-utils';
|
|
4
|
+
import type { Service as ArcGISService } from "./arcgis-server.js";
|
|
5
|
+
/** Normalized capabilities discovered from one ArcGIS REST service. */
|
|
6
|
+
export type ArcGISServiceCapabilities = ArcGISService & {
|
|
7
|
+
/** Stable identifier for the discovered service. */
|
|
8
|
+
id: string;
|
|
9
|
+
/** Broad service family used for selection. */
|
|
10
|
+
kind: 'vector' | 'image' | 'tile' | 'scene' | 'unknown';
|
|
11
|
+
/** Shared normalized service capability contract. */
|
|
12
|
+
capabilities: ServiceCapabilities;
|
|
13
|
+
/** Raw service metadata for provider-specific consumers. */
|
|
14
|
+
metadata: Record<string, unknown>;
|
|
15
|
+
};
|
|
16
|
+
/** A normalized graph of services discovered below an ArcGIS REST directory. */
|
|
17
|
+
export type ArcGISCapabilityGraph = {
|
|
18
|
+
/** URL used as the discovery root. */
|
|
19
|
+
rootUrl: string;
|
|
20
|
+
/** Services discovered below the root, including normalized capabilities. */
|
|
21
|
+
nodes: ArcGISServiceCapabilities[];
|
|
22
|
+
};
|
|
23
|
+
/** Requirements used to select the best matching service node. */
|
|
24
|
+
export type ArcGISServiceSelection = {
|
|
25
|
+
/** Preferred service family. */
|
|
26
|
+
kind?: ArcGISServiceCapabilities['kind'];
|
|
27
|
+
/** Required response or source format. */
|
|
28
|
+
format?: string;
|
|
29
|
+
/** Preferred coordinate system. */
|
|
30
|
+
crs?: string;
|
|
31
|
+
/** Required I3S layer profile for SceneServer nodes. */
|
|
32
|
+
profile?: string;
|
|
33
|
+
/** Required layer identifier for SceneServer nodes. */
|
|
34
|
+
layerId?: string | number;
|
|
35
|
+
};
|
|
36
|
+
/** Options controlling ArcGIS capability discovery. */
|
|
37
|
+
export type ArcGISCapabilityGraphOptions = {
|
|
38
|
+
/** Optional fetch implementation for hermetic tests and custom transports. */
|
|
39
|
+
fetch?: typeof fetch;
|
|
40
|
+
};
|
|
41
|
+
/**
|
|
42
|
+
* Discovers an ArcGIS REST directory and normalizes the capabilities of each service.
|
|
43
|
+
*
|
|
44
|
+
* Capability requests are explicit and independent from source loading. Applications that
|
|
45
|
+
* already know the endpoint can continue using the source classes directly.
|
|
46
|
+
*/
|
|
47
|
+
export declare function discoverArcGISCapabilities(url: string, options?: ArcGISCapabilityGraphOptions): Promise<ArcGISCapabilityGraph | null>;
|
|
48
|
+
/** Selects the first service satisfying all supplied requirements. */
|
|
49
|
+
export declare function selectArcGISService(graph: ArcGISCapabilityGraph, requirements?: ArcGISServiceSelection): ArcGISServiceCapabilities | undefined;
|
|
50
|
+
//# sourceMappingURL=arcgis-capability-graph.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"arcgis-capability-graph.d.ts","sourceRoot":"","sources":["../../src/arcgis/arcgis-capability-graph.ts"],"names":[],"mappings":"AAKA,OAAO,EAAC,iBAAiB,EAAC,2BAAwB;AAClD,YAAY,EAAC,OAAO,IAAI,aAAa,EAAC,2BAAwB;AAC9D,OAAO,KAAK,EAAC,mBAAmB,EAAC,MAAM,0BAA0B,CAAC;AAClE,OAAO,KAAK,EAAC,OAAO,IAAI,aAAa,EAAC,2BAAwB;AAE9D,uEAAuE;AACvE,MAAM,MAAM,yBAAyB,GAAG,aAAa,GAAG;IACtD,oDAAoD;IACpD,EAAE,EAAE,MAAM,CAAC;IACX,+CAA+C;IAC/C,IAAI,EAAE,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;IACxD,qDAAqD;IACrD,YAAY,EAAE,mBAAmB,CAAC;IAClC,4DAA4D;IAC5D,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC,CAAC;AAEF,gFAAgF;AAChF,MAAM,MAAM,qBAAqB,GAAG;IAClC,sCAAsC;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,6EAA6E;IAC7E,KAAK,EAAE,yBAAyB,EAAE,CAAC;CACpC,CAAC;AAEF,kEAAkE;AAClE,MAAM,MAAM,sBAAsB,GAAG;IACnC,gCAAgC;IAChC,IAAI,CAAC,EAAE,yBAAyB,CAAC,MAAM,CAAC,CAAC;IACzC,0CAA0C;IAC1C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,mCAAmC;IACnC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,wDAAwD;IACxD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,uDAAuD;IACvD,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CAC3B,CAAC;AAEF,uDAAuD;AACvD,MAAM,MAAM,4BAA4B,GAAG;IACzC,8EAA8E;IAC9E,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;CACtB,CAAC;AAEF;;;;;GAKG;AACH,wBAAsB,0BAA0B,CAC9C,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,4BAAiC,GACzC,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC,CAgBvC;AAED,sEAAsE;AACtE,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,qBAAqB,EAC5B,YAAY,GAAE,sBAA2B,GACxC,yBAAyB,GAAG,SAAS,CAyBvC"}
|
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
// loaders.gl
|
|
2
|
+
// SPDX-License-Identifier: MIT
|
|
3
|
+
// Copyright (c) vis.gl contributors
|
|
4
|
+
import { getArcGISServices } from "./arcgis-server.js";
|
|
5
|
+
export { getArcGISServices } from "./arcgis-server.js";
|
|
6
|
+
/**
|
|
7
|
+
* Discovers an ArcGIS REST directory and normalizes the capabilities of each service.
|
|
8
|
+
*
|
|
9
|
+
* Capability requests are explicit and independent from source loading. Applications that
|
|
10
|
+
* already know the endpoint can continue using the source classes directly.
|
|
11
|
+
*/
|
|
12
|
+
export async function discoverArcGISCapabilities(url, options = {}) {
|
|
13
|
+
const fetchFile = options.fetch || fetch;
|
|
14
|
+
const services = await getArcGISServices(url, fetchFile);
|
|
15
|
+
if (!services)
|
|
16
|
+
return null;
|
|
17
|
+
const nodes = await Promise.all(services.map(async (service) => {
|
|
18
|
+
let metadata = await fetchServiceMetadata(service.url, fetchFile);
|
|
19
|
+
if (service.type.toLowerCase().includes('scene')) {
|
|
20
|
+
metadata = await enrichSceneServerMetadata(service.url, metadata, fetchFile);
|
|
21
|
+
}
|
|
22
|
+
return normalizeServiceCapabilities(service, metadata);
|
|
23
|
+
}));
|
|
24
|
+
return { rootUrl: url, nodes };
|
|
25
|
+
}
|
|
26
|
+
/** Selects the first service satisfying all supplied requirements. */
|
|
27
|
+
export function selectArcGISService(graph, requirements = {}) {
|
|
28
|
+
return graph.nodes.find(node => {
|
|
29
|
+
if (requirements.kind && node.kind !== requirements.kind)
|
|
30
|
+
return false;
|
|
31
|
+
if (requirements.format &&
|
|
32
|
+
!node.capabilities.formats.includes(requirements.format.toLowerCase()))
|
|
33
|
+
return false;
|
|
34
|
+
if (requirements.crs && !node.capabilities.crs.includes(requirements.crs))
|
|
35
|
+
return false;
|
|
36
|
+
if (requirements.profile &&
|
|
37
|
+
node.metadata.profile !== requirements.profile &&
|
|
38
|
+
!node.capabilities.layers.some(layer => layer.profile === requirements.profile))
|
|
39
|
+
return false;
|
|
40
|
+
if (requirements.layerId !== undefined &&
|
|
41
|
+
!node.capabilities.layers.some(layer => layer.id === String(requirements.layerId) || layer.name === String(requirements.layerId)))
|
|
42
|
+
return false;
|
|
43
|
+
return true;
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
/** Fetches one service's provider-specific metadata document. */
|
|
47
|
+
async function fetchServiceMetadata(serviceUrl, fetchFile) {
|
|
48
|
+
const url = new URL(serviceUrl);
|
|
49
|
+
url.searchParams.set('f', 'pjson');
|
|
50
|
+
const response = await fetchFile(url.toString());
|
|
51
|
+
if (!response.ok) {
|
|
52
|
+
throw new Error(`ArcGIS service metadata request failed: ${response.status}`);
|
|
53
|
+
}
|
|
54
|
+
return (await response.json());
|
|
55
|
+
}
|
|
56
|
+
/** Fetches layer documents so SceneServer profile selection uses authoritative store metadata. */
|
|
57
|
+
async function enrichSceneServerMetadata(serviceUrl, metadata, fetchFile) {
|
|
58
|
+
const layers = Array.isArray(metadata.layers) ? metadata.layers : [];
|
|
59
|
+
if (!layers.length)
|
|
60
|
+
return metadata;
|
|
61
|
+
const enrichedLayers = await Promise.all(layers.map(async (value) => {
|
|
62
|
+
if (!value || typeof value !== 'object')
|
|
63
|
+
return value;
|
|
64
|
+
const layer = value;
|
|
65
|
+
if (layer.id === undefined)
|
|
66
|
+
return value;
|
|
67
|
+
const layerURL = `${serviceUrl.replace(/\/$/, '')}/layers/${encodeURIComponent(String(layer.id))}`;
|
|
68
|
+
try {
|
|
69
|
+
const layerMetadata = await fetchServiceMetadata(layerURL, fetchFile);
|
|
70
|
+
return { ...layer, ...layerMetadata, id: layer.id, name: layer.name ?? layerMetadata.name };
|
|
71
|
+
}
|
|
72
|
+
catch {
|
|
73
|
+
// Keep directory metadata when an individual layer is unavailable.
|
|
74
|
+
return value;
|
|
75
|
+
}
|
|
76
|
+
}));
|
|
77
|
+
return { ...metadata, layers: enrichedLayers };
|
|
78
|
+
}
|
|
79
|
+
/** Combines directory information and metadata into a normalized capability node. */
|
|
80
|
+
function normalizeServiceCapabilities(service, metadata) {
|
|
81
|
+
const serviceType = service.type;
|
|
82
|
+
const kind = getServiceKind(serviceType);
|
|
83
|
+
const formats = getServiceFormats(metadata);
|
|
84
|
+
const crs = getServiceCrs(metadata);
|
|
85
|
+
const layers = getServiceLayers(metadata).map(layer => ({
|
|
86
|
+
...layer,
|
|
87
|
+
url: layer.url ||
|
|
88
|
+
(serviceType.includes('scene') && layer.id
|
|
89
|
+
? `${service.url.replace(/\/$/, '')}/layers/${encodeURIComponent(layer.id)}`
|
|
90
|
+
: undefined)
|
|
91
|
+
}));
|
|
92
|
+
const capabilities = {
|
|
93
|
+
url: service.url,
|
|
94
|
+
type: getServiceCapabilityType(serviceType),
|
|
95
|
+
name: service.name,
|
|
96
|
+
title: typeof metadata.name === 'string' ? metadata.name : undefined,
|
|
97
|
+
abstract: typeof metadata.description === 'string' ? metadata.description : undefined,
|
|
98
|
+
crs,
|
|
99
|
+
formats,
|
|
100
|
+
layers,
|
|
101
|
+
operations: getServiceOperations(metadata),
|
|
102
|
+
formatSpecificMetadata: metadata
|
|
103
|
+
};
|
|
104
|
+
return {
|
|
105
|
+
...service,
|
|
106
|
+
id: service.url,
|
|
107
|
+
kind,
|
|
108
|
+
capabilities,
|
|
109
|
+
metadata
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
/** Extracts normalized layer entries from SceneServer and other service metadata. */
|
|
113
|
+
function getServiceLayers(metadata) {
|
|
114
|
+
const layerValues = Array.isArray(metadata.layers) ? metadata.layers : [];
|
|
115
|
+
return layerValues.flatMap(value => {
|
|
116
|
+
if (!value || typeof value !== 'object')
|
|
117
|
+
return [];
|
|
118
|
+
const layer = value;
|
|
119
|
+
const spatialReference = layer.spatialReference;
|
|
120
|
+
const wkid = spatialReference?.latestWkid || spatialReference?.wkid;
|
|
121
|
+
const extent = layer.extent;
|
|
122
|
+
const bounds = extent && [extent.xmin, extent.ymin, extent.xmax, extent.ymax].every(Number.isFinite)
|
|
123
|
+
? [extent.xmin, extent.ymin, extent.xmax, extent.ymax]
|
|
124
|
+
: undefined;
|
|
125
|
+
return [
|
|
126
|
+
{
|
|
127
|
+
name: layer.id === undefined ? String(layer.name || '') : String(layer.id),
|
|
128
|
+
id: layer.id === undefined ? undefined : String(layer.id),
|
|
129
|
+
url: typeof layer.url === 'string' ? layer.url : undefined,
|
|
130
|
+
title: typeof layer.name === 'string' ? layer.name : undefined,
|
|
131
|
+
crs: wkid ? [`EPSG:${wkid}`] : undefined,
|
|
132
|
+
bounds,
|
|
133
|
+
profile: typeof layer.profile === 'string'
|
|
134
|
+
? layer.profile
|
|
135
|
+
: layer.store &&
|
|
136
|
+
typeof layer.store === 'object' &&
|
|
137
|
+
typeof layer.store.profile === 'string'
|
|
138
|
+
? layer.store.profile
|
|
139
|
+
: undefined,
|
|
140
|
+
layerType: typeof layer.layerType === 'string' ? layer.layerType : undefined,
|
|
141
|
+
version: typeof layer.version === 'string'
|
|
142
|
+
? layer.version
|
|
143
|
+
: layer.store &&
|
|
144
|
+
typeof layer.store === 'object' &&
|
|
145
|
+
typeof layer.store.version === 'string'
|
|
146
|
+
? layer.store.version
|
|
147
|
+
: undefined
|
|
148
|
+
}
|
|
149
|
+
];
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
/** Extracts operation names when a service advertises them. */
|
|
153
|
+
function getServiceOperations(metadata) {
|
|
154
|
+
const capabilities = metadata.capabilities;
|
|
155
|
+
return typeof capabilities === 'string'
|
|
156
|
+
? capabilities
|
|
157
|
+
.split(',')
|
|
158
|
+
.map(value => value.trim())
|
|
159
|
+
.filter(Boolean)
|
|
160
|
+
: [];
|
|
161
|
+
}
|
|
162
|
+
/** Maps a discovered ArcGIS family to the shared service capability type. */
|
|
163
|
+
function getServiceCapabilityType(serviceType) {
|
|
164
|
+
if (serviceType.includes('vectortile') || serviceType.includes('vector-tile')) {
|
|
165
|
+
return 'arcgis-vector-tile-server';
|
|
166
|
+
}
|
|
167
|
+
if (serviceType.includes('feature'))
|
|
168
|
+
return 'arcgis-feature-server';
|
|
169
|
+
if (serviceType.includes('image'))
|
|
170
|
+
return 'arcgis-image-server';
|
|
171
|
+
if (serviceType.includes('scene'))
|
|
172
|
+
return 'arcgis-scene-server';
|
|
173
|
+
if (serviceType.includes('map'))
|
|
174
|
+
return 'arcgis-map-server';
|
|
175
|
+
return 'unknown';
|
|
176
|
+
}
|
|
177
|
+
/** Maps an ArcGIS service type to the generic source family. */
|
|
178
|
+
function getServiceKind(serviceType) {
|
|
179
|
+
if (serviceType.includes('feature'))
|
|
180
|
+
return 'vector';
|
|
181
|
+
if (serviceType.includes('image'))
|
|
182
|
+
return 'image';
|
|
183
|
+
if (serviceType.includes('scene'))
|
|
184
|
+
return 'scene';
|
|
185
|
+
if (serviceType.includes('map') ||
|
|
186
|
+
serviceType.includes('vectortile') ||
|
|
187
|
+
serviceType.includes('vector-tile'))
|
|
188
|
+
return 'tile';
|
|
189
|
+
return 'unknown';
|
|
190
|
+
}
|
|
191
|
+
/** Extracts and canonicalizes formats advertised by an ArcGIS service. */
|
|
192
|
+
function getServiceFormats(metadata) {
|
|
193
|
+
const formats = new Set();
|
|
194
|
+
const supportedFormats = metadata.supportedQueryFormats;
|
|
195
|
+
if (typeof supportedFormats === 'string') {
|
|
196
|
+
for (const format of supportedFormats.split(','))
|
|
197
|
+
formats.add(format.trim().toLowerCase());
|
|
198
|
+
}
|
|
199
|
+
const imageFormats = metadata.supportedImageFormatTypes;
|
|
200
|
+
if (typeof imageFormats === 'string') {
|
|
201
|
+
for (const format of imageFormats.split(','))
|
|
202
|
+
formats.add(format.trim().toLowerCase());
|
|
203
|
+
}
|
|
204
|
+
const tileInfo = metadata.tileInfo;
|
|
205
|
+
if (typeof tileInfo?.format === 'string')
|
|
206
|
+
formats.add(tileInfo.format.toLowerCase());
|
|
207
|
+
return [...formats].sort();
|
|
208
|
+
}
|
|
209
|
+
/** Extracts unique EPSG identifiers from common ArcGIS metadata locations. */
|
|
210
|
+
function getServiceCrs(metadata) {
|
|
211
|
+
const spatialReferences = new Set();
|
|
212
|
+
for (const value of [metadata.spatialReference, metadata.fullExtent?.spatialReference]) {
|
|
213
|
+
const spatialReference = value;
|
|
214
|
+
for (const wkid of [spatialReference?.wkid, spatialReference?.latestWkid]) {
|
|
215
|
+
if (wkid)
|
|
216
|
+
spatialReferences.add(`EPSG:${wkid}`);
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
return [...spatialReferences].sort();
|
|
220
|
+
}
|
|
221
|
+
//# sourceMappingURL=arcgis-capability-graph.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"arcgis-capability-graph.js","sourceRoot":"","sources":["../../src/arcgis/arcgis-capability-graph.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import type { ArcGISFeatureExtent, ArcGISFeatureObjectIds, ArcGISFeatureQueryOptions, ArcGISFeatureQueryResult } from "../arcgis-feature-query-types.js";
|
|
2
|
+
/** An HTTP or ArcGIS JSON error, without retaining a credential-bearing request URL. */
|
|
3
|
+
export declare class ArcGISFeatureQueryError extends Error {
|
|
4
|
+
/** ArcGIS error code, or HTTP status when the response has no ArcGIS error. */
|
|
5
|
+
readonly code: number;
|
|
6
|
+
/** Additional service diagnostics. */
|
|
7
|
+
readonly details: string[];
|
|
8
|
+
/** Creates a structured service error. */
|
|
9
|
+
constructor(message: string, code: number, details?: string[]);
|
|
10
|
+
}
|
|
11
|
+
/** Fetch signature shared by source transport and the query client. */
|
|
12
|
+
type QueryFetch = (url: string, options?: RequestInit) => Promise<Response>;
|
|
13
|
+
/** Internal query client shared by FeatureServer and MapServer layer endpoints. */
|
|
14
|
+
export declare class ArcGISFeatureQueryClient {
|
|
15
|
+
/** Layer URL, including caller-supplied authentication parameters. */
|
|
16
|
+
readonly url: string;
|
|
17
|
+
/** Authenticated source transport. */
|
|
18
|
+
readonly fetch: QueryFetch;
|
|
19
|
+
/** Filter parameters shared by counts, IDs and data requests. */
|
|
20
|
+
readonly parameters: Record<string, unknown>;
|
|
21
|
+
/** Signal applied to metadata and every subsequent request. */
|
|
22
|
+
readonly signal?: AbortSignal | undefined;
|
|
23
|
+
/** Creates a query client with one selected layer and normalized filters. */
|
|
24
|
+
constructor(
|
|
25
|
+
/** Layer URL, including caller-supplied authentication parameters. */
|
|
26
|
+
url: string,
|
|
27
|
+
/** Authenticated source transport. */
|
|
28
|
+
fetch: QueryFetch,
|
|
29
|
+
/** Filter parameters shared by counts, IDs and data requests. */
|
|
30
|
+
parameters: Record<string, unknown>,
|
|
31
|
+
/** Signal applied to metadata and every subsequent request. */
|
|
32
|
+
signal?: AbortSignal | undefined);
|
|
33
|
+
/** Reads JSON while recognizing ArcGIS errors even on HTTP 200 responses. */
|
|
34
|
+
request(path: string, parameters?: Record<string, unknown>): Promise<any>;
|
|
35
|
+
/** Returns the count for the same filters used by data retrieval. */
|
|
36
|
+
getCount(): Promise<number>;
|
|
37
|
+
/** Returns unique object IDs and preserves explicit truncation information. */
|
|
38
|
+
getObjectIds(): Promise<ArcGISFeatureObjectIds>;
|
|
39
|
+
/** Requests an extent while retaining its spatial reference. */
|
|
40
|
+
getExtent(): Promise<ArcGISFeatureExtent>;
|
|
41
|
+
/** Reads layer metadata and rejects response formats this client cannot safely interpret. */
|
|
42
|
+
getMetadata(): Promise<any>;
|
|
43
|
+
/** Reads one page without implying that it represents a complete query. */
|
|
44
|
+
getPage(options: ArcGISFeatureQueryOptions): Promise<ArcGISFeatureQueryResult>;
|
|
45
|
+
/** Streams bounded pages and assesses completeness using the initial count and stable IDs. */
|
|
46
|
+
getPages(options: ArcGISFeatureQueryOptions): AsyncGenerator<ArcGISFeatureQueryResult>;
|
|
47
|
+
/** Removes data-only controls from a count, IDs or extent request. */
|
|
48
|
+
private getSummaryParameters;
|
|
49
|
+
/** Normalizes GeoJSON or nonspatial ArcGIS records without discarding null attributes. */
|
|
50
|
+
private readPage;
|
|
51
|
+
}
|
|
52
|
+
export {};
|
|
53
|
+
//# sourceMappingURL=arcgis-feature-query.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"arcgis-feature-query.d.ts","sourceRoot":"","sources":["../../src/arcgis/arcgis-feature-query.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,mBAAmB,EACnB,sBAAsB,EACtB,yBAAyB,EAEzB,wBAAwB,EACzB,yCAAsC;AAGvC,wFAAwF;AACxF,qBAAa,uBAAwB,SAAQ,KAAK;IAChD,+EAA+E;IAC/E,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,sCAAsC;IACtC,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC;IAE3B,0CAA0C;gBAC9B,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,MAAM,EAAO;CAMlE;AAED,uEAAuE;AACvE,KAAK,UAAU,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;AAE5E,mFAAmF;AACnF,qBAAa,wBAAwB;IAGjC,sEAAsE;IACtE,QAAQ,CAAC,GAAG,EAAE,MAAM;IACpB,sCAAsC;IACtC,QAAQ,CAAC,KAAK,EAAE,UAAU;IAC1B,iEAAiE;IACjE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAC5C,+DAA+D;IAC/D,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW;IAT/B,6EAA6E;;IAE3E,sEAAsE;IAC7D,GAAG,EAAE,MAAM;IACpB,sCAAsC;IAC7B,KAAK,EAAE,UAAU;IAC1B,iEAAiE;IACxD,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAC5C,+DAA+D;IACtD,MAAM,CAAC,EAAE,WAAW,YAAA;IAG/B,6EAA6E;IACvE,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAyCnF,qEAAqE;IAC/D,QAAQ,IAAI,OAAO,CAAC,MAAM,CAAC;IAQjC,+EAA+E;IACzE,YAAY,IAAI,OAAO,CAAC,sBAAsB,CAAC;IAarD,gEAAgE;IAC1D,SAAS,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAa/C,6FAA6F;IACvF,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC;IAuBjC,2EAA2E;IACrE,OAAO,CAAC,OAAO,EAAE,yBAAyB,GAAG,OAAO,CAAC,wBAAwB,CAAC;IAwBpF,8FAA8F;IACvF,QAAQ,CAAC,OAAO,EAAE,yBAAyB,GAAG,cAAc,CAAC,wBAAwB,CAAC;IAgL7F,sEAAsE;IACtE,OAAO,CAAC,oBAAoB;IAgB5B,0FAA0F;YAC5E,QAAQ;CAyCvB"}
|