@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.
Files changed (125) hide show
  1. package/LICENSE +52 -0
  2. package/README.md +28 -0
  3. package/dist/arcgis/arcgis-capability-graph.d.ts +50 -0
  4. package/dist/arcgis/arcgis-capability-graph.d.ts.map +1 -0
  5. package/dist/arcgis/arcgis-capability-graph.js +221 -0
  6. package/dist/arcgis/arcgis-capability-graph.js.map +1 -0
  7. package/dist/arcgis/arcgis-feature-query.d.ts +53 -0
  8. package/dist/arcgis/arcgis-feature-query.d.ts.map +1 -0
  9. package/dist/arcgis/arcgis-feature-query.js +381 -0
  10. package/dist/arcgis/arcgis-feature-query.js.map +1 -0
  11. package/dist/arcgis/arcgis-feature-server-source-loader-types.d.ts +33 -0
  12. package/dist/arcgis/arcgis-feature-server-source-loader-types.d.ts.map +1 -0
  13. package/dist/arcgis/arcgis-feature-server-source-loader-types.js +21 -0
  14. package/dist/arcgis/arcgis-feature-server-source-loader-types.js.map +1 -0
  15. package/dist/arcgis/arcgis-feature-server-source-loader.d.ts +84 -0
  16. package/dist/arcgis/arcgis-feature-server-source-loader.d.ts.map +1 -0
  17. package/dist/arcgis/arcgis-feature-server-source-loader.js +280 -0
  18. package/dist/arcgis/arcgis-feature-server-source-loader.js.map +1 -0
  19. package/dist/arcgis/arcgis-image-server-source-loader-types.d.ts +31 -0
  20. package/dist/arcgis/arcgis-image-server-source-loader-types.d.ts.map +1 -0
  21. package/dist/arcgis/arcgis-image-server-source-loader-types.js +21 -0
  22. package/dist/arcgis/arcgis-image-server-source-loader-types.js.map +1 -0
  23. package/dist/arcgis/arcgis-image-server-source-loader.d.ts +60 -0
  24. package/dist/arcgis/arcgis-image-server-source-loader.d.ts.map +1 -0
  25. package/dist/arcgis/arcgis-image-server-source-loader.js +130 -0
  26. package/dist/arcgis/arcgis-image-server-source-loader.js.map +1 -0
  27. package/dist/arcgis/arcgis-image-tile-source-loader-types.d.ts +31 -0
  28. package/dist/arcgis/arcgis-image-tile-source-loader-types.d.ts.map +1 -0
  29. package/dist/arcgis/arcgis-image-tile-source-loader-types.js +21 -0
  30. package/dist/arcgis/arcgis-image-tile-source-loader-types.js.map +1 -0
  31. package/dist/arcgis/arcgis-image-tile-source-loader.d.ts +63 -0
  32. package/dist/arcgis/arcgis-image-tile-source-loader.d.ts.map +1 -0
  33. package/dist/arcgis/arcgis-image-tile-source-loader.js +147 -0
  34. package/dist/arcgis/arcgis-image-tile-source-loader.js.map +1 -0
  35. package/dist/arcgis/arcgis-map-tile-source-loader-types.d.ts +31 -0
  36. package/dist/arcgis/arcgis-map-tile-source-loader-types.d.ts.map +1 -0
  37. package/dist/arcgis/arcgis-map-tile-source-loader-types.js +21 -0
  38. package/dist/arcgis/arcgis-map-tile-source-loader-types.js.map +1 -0
  39. package/dist/arcgis/arcgis-map-tile-source-loader.d.ts +62 -0
  40. package/dist/arcgis/arcgis-map-tile-source-loader.d.ts.map +1 -0
  41. package/dist/arcgis/arcgis-map-tile-source-loader.js +196 -0
  42. package/dist/arcgis/arcgis-map-tile-source-loader.js.map +1 -0
  43. package/dist/arcgis/arcgis-scene-aggregation.d.ts +34 -0
  44. package/dist/arcgis/arcgis-scene-aggregation.d.ts.map +1 -0
  45. package/dist/arcgis/arcgis-scene-aggregation.js +57 -0
  46. package/dist/arcgis/arcgis-scene-aggregation.js.map +1 -0
  47. package/dist/arcgis/arcgis-scene-server-source-loader-types.d.ts +31 -0
  48. package/dist/arcgis/arcgis-scene-server-source-loader-types.d.ts.map +1 -0
  49. package/dist/arcgis/arcgis-scene-server-source-loader-types.js +21 -0
  50. package/dist/arcgis/arcgis-scene-server-source-loader-types.js.map +1 -0
  51. package/dist/arcgis/arcgis-scene-server-source-loader.d.ts +64 -0
  52. package/dist/arcgis/arcgis-scene-server-source-loader.d.ts.map +1 -0
  53. package/dist/arcgis/arcgis-scene-server-source-loader.js +159 -0
  54. package/dist/arcgis/arcgis-scene-server-source-loader.js.map +1 -0
  55. package/dist/arcgis/arcgis-server.d.ts +15 -0
  56. package/dist/arcgis/arcgis-server.d.ts.map +1 -0
  57. package/dist/arcgis/arcgis-server.js +41 -0
  58. package/dist/arcgis/arcgis-server.js.map +1 -0
  59. package/dist/arcgis/arcgis-url-utils.d.ts +3 -0
  60. package/dist/arcgis/arcgis-url-utils.d.ts.map +1 -0
  61. package/dist/arcgis/arcgis-url-utils.js +23 -0
  62. package/dist/arcgis/arcgis-url-utils.js.map +1 -0
  63. package/dist/arcgis/arcgis-vector-tile-server-source-loader-types.d.ts +31 -0
  64. package/dist/arcgis/arcgis-vector-tile-server-source-loader-types.d.ts.map +1 -0
  65. package/dist/arcgis/arcgis-vector-tile-server-source-loader-types.js +21 -0
  66. package/dist/arcgis/arcgis-vector-tile-server-source-loader-types.js.map +1 -0
  67. package/dist/arcgis/arcgis-vector-tile-server-source-loader.d.ts +66 -0
  68. package/dist/arcgis/arcgis-vector-tile-server-source-loader.d.ts.map +1 -0
  69. package/dist/arcgis/arcgis-vector-tile-server-source-loader.js +150 -0
  70. package/dist/arcgis/arcgis-vector-tile-server-source-loader.js.map +1 -0
  71. package/dist/arcgis-feature-query-types.d.ts +77 -0
  72. package/dist/arcgis-feature-query-types.d.ts.map +1 -0
  73. package/dist/arcgis-feature-query-types.js +5 -0
  74. package/dist/arcgis-feature-query-types.js.map +1 -0
  75. package/dist/arcgis-items.d.ts +64 -0
  76. package/dist/arcgis-items.d.ts.map +1 -0
  77. package/dist/arcgis-items.js +137 -0
  78. package/dist/arcgis-items.js.map +1 -0
  79. package/dist/arcgis-source-types.d.ts +372 -0
  80. package/dist/arcgis-source-types.d.ts.map +1 -0
  81. package/dist/arcgis-source-types.js +108 -0
  82. package/dist/arcgis-source-types.js.map +1 -0
  83. package/dist/authentication.d.ts +25 -0
  84. package/dist/authentication.d.ts.map +1 -0
  85. package/dist/authentication.js +94 -0
  86. package/dist/authentication.js.map +1 -0
  87. package/dist/bundled.d.ts +152 -0
  88. package/dist/bundled.d.ts.map +1 -0
  89. package/dist/bundled.js +34 -0
  90. package/dist/bundled.js.map +1 -0
  91. package/dist/index.cjs +25620 -0
  92. package/dist/index.cjs.map +6 -0
  93. package/dist/index.d.ts +24 -0
  94. package/dist/index.d.ts.map +1 -0
  95. package/dist/index.js +11 -0
  96. package/dist/index.js.map +1 -0
  97. package/dist/service-registry.d.ts +18 -0
  98. package/dist/service-registry.d.ts.map +1 -0
  99. package/dist/service-registry.js +29 -0
  100. package/dist/service-registry.js.map +1 -0
  101. package/package.json +96 -0
  102. package/src/arcgis/arcgis-capability-graph.ts +297 -0
  103. package/src/arcgis/arcgis-feature-query.ts +442 -0
  104. package/src/arcgis/arcgis-feature-server-source-loader-types.ts +34 -0
  105. package/src/arcgis/arcgis-feature-server-source-loader.ts +373 -0
  106. package/src/arcgis/arcgis-image-server-source-loader-types.ts +34 -0
  107. package/src/arcgis/arcgis-image-server-source-loader.ts +186 -0
  108. package/src/arcgis/arcgis-image-tile-source-loader-types.ts +34 -0
  109. package/src/arcgis/arcgis-image-tile-source-loader.ts +192 -0
  110. package/src/arcgis/arcgis-map-tile-source-loader-types.ts +34 -0
  111. package/src/arcgis/arcgis-map-tile-source-loader.ts +248 -0
  112. package/src/arcgis/arcgis-scene-aggregation.ts +90 -0
  113. package/src/arcgis/arcgis-scene-server-source-loader-types.ts +36 -0
  114. package/src/arcgis/arcgis-scene-server-source-loader.ts +216 -0
  115. package/src/arcgis/arcgis-server.ts +61 -0
  116. package/src/arcgis/arcgis-url-utils.ts +26 -0
  117. package/src/arcgis/arcgis-vector-tile-server-source-loader-types.ts +36 -0
  118. package/src/arcgis/arcgis-vector-tile-server-source-loader.ts +196 -0
  119. package/src/arcgis-feature-query-types.ts +89 -0
  120. package/src/arcgis-items.ts +233 -0
  121. package/src/arcgis-source-types.ts +372 -0
  122. package/src/authentication.ts +118 -0
  123. package/src/bundled.ts +68 -0
  124. package/src/index.ts +70 -0
  125. package/src/service-registry.ts +43 -0
@@ -0,0 +1,63 @@
1
+ import { ArcGISAuthentication } from "../authentication.js";
2
+ import type { ArcGISImageTileSourceLoaderOptions } from "../arcgis-source-types.js";
3
+ import type { ImageType } from '@loaders.gl/images';
4
+ import type { CoreAPI, GetTileDataParameters, GetTileParameters, TileSource, TileSourceMetadata } from '@loaders.gl/loader-utils';
5
+ import { DataSource } from '@loaders.gl/loader-utils';
6
+ import type { LERCData } from '@loaders.gl/lerc';
7
+ /** A tile source that renders ArcGIS ImageServer exports as deck.gl tiles. */
8
+ export declare class ArcGISImageTileSource extends DataSource<string, ArcGISImageTileSourceLoaderOptions> implements TileSource {
9
+ /** MIME type represented by the tile response. */
10
+ readonly mimeType: string;
11
+ /** Cached ImageServer metadata. */
12
+ private _metadata;
13
+ /** In-flight metadata request shared by concurrent callers. */
14
+ private _metadataPromise;
15
+ /** Parameters applied to subsequent export requests. */
16
+ private _runtimeParameters;
17
+ /** Creates an ArcGIS ImageServer tile source. */
18
+ constructor(url: string, options?: ArcGISImageTileSourceLoaderOptions, coreApi?: CoreAPI);
19
+ /** Returns normalized ImageServer metadata. */
20
+ getMetadata(): Promise<TileSourceMetadata>;
21
+ /** Fetches one ImageServer export tile. */
22
+ getTile(parameters: GetTileParameters, signal?: AbortSignal): Promise<ImageType | LERCData | null>;
23
+ /** Fetches a tile using the deck.gl-compatible request shape. */
24
+ getTileData(parameters: GetTileDataParameters): Promise<ImageType | LERCData | null>;
25
+ /** Updates parameters applied to subsequent ImageServer export requests. */
26
+ updateParameters(parameters: Record<string, string | number | boolean>): void;
27
+ /** Builds an ImageServer exportImage URL for one web-mercator tile. */
28
+ getTileURL(parameters: GetTileParameters, tileSize?: number): string;
29
+ /** Fetches the ImageServer metadata document. */
30
+ private _loadMetadata;
31
+ /** Returns cached metadata and shares a single request among concurrent callers. */
32
+ private _getMetadata;
33
+ /** Selects a service endpoint for a tile using a stable URL-pool mapping. */
34
+ private getServiceURL;
35
+ /** Returns the response format after applying configured and runtime overrides. */
36
+ private _getResponseFormat;
37
+ }
38
+ /** Runtime service loader for synchronous construction. */
39
+ export declare const ArcGISImageTileSourceLoaderWithParser: {
40
+ readonly dataType: ArcGISImageTileSource;
41
+ readonly batchType: never;
42
+ readonly preload: undefined;
43
+ /** Supplies ArcGIS credentials after loading the selected implementation. */
44
+ readonly getAuthentications: () => (typeof ArcGISAuthentication)[];
45
+ readonly createDataSource: (url: string, options?: ArcGISImageTileSourceLoaderOptions, coreApi?: CoreAPI) => ArcGISImageTileSource;
46
+ readonly name: "ArcGIS ImageServer tiles";
47
+ readonly id: "arcgis-image-server-tiles";
48
+ readonly module: "arcgis";
49
+ readonly version: "0.0.0";
50
+ readonly extensions: [];
51
+ readonly mimeTypes: [];
52
+ readonly type: "arcgis-image-server-tiles";
53
+ readonly fromUrl: true;
54
+ readonly fromBlob: false;
55
+ readonly options: {
56
+ readonly 'arcgis-image-server-tiles': {};
57
+ };
58
+ readonly defaultOptions: {
59
+ readonly 'arcgis-image-server-tiles': {};
60
+ };
61
+ readonly testURL: (url: string) => boolean;
62
+ };
63
+ //# sourceMappingURL=arcgis-image-tile-source-loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"arcgis-image-tile-source-loader.d.ts","sourceRoot":"","sources":["../../src/arcgis/arcgis-image-tile-source-loader.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,oBAAoB,EAAC,6BAA0B;AAEvD,OAAO,KAAK,EAAC,kCAAkC,EAAC,kCAA+B;AAE/E,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,oBAAoB,CAAC;AAElD,OAAO,KAAK,EACV,OAAO,EACP,qBAAqB,EACrB,iBAAiB,EAEjB,UAAU,EACV,kBAAkB,EACnB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAC,UAAU,EAAC,MAAM,0BAA0B,CAAC;AACpD,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAM,kBAAkB,CAAC;AAG/C,8EAA8E;AAC9E,qBAAa,qBACX,SAAQ,UAAU,CAAC,MAAM,EAAE,kCAAkC,CAC7D,YAAW,UAAU;IAErB,kDAAkD;IAClD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAE1B,mCAAmC;IACnC,OAAO,CAAC,SAAS,CAAoB;IACrC,+DAA+D;IAC/D,OAAO,CAAC,gBAAgB,CAA6B;IACrD,wDAAwD;IACxD,OAAO,CAAC,kBAAkB,CAAiD;IAE3E,iDAAiD;gBACrC,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,kCAAuC,EAAE,OAAO,CAAC,EAAE,OAAO;IAW5F,+CAA+C;IACzC,WAAW,IAAI,OAAO,CAAC,kBAAkB,CAAC;IAuBhD,2CAA2C;IACrC,OAAO,CACX,UAAU,EAAE,iBAAiB,EAC7B,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,SAAS,GAAG,QAAQ,GAAG,IAAI,CAAC;IAevC,iEAAiE;IAC3D,WAAW,CAAC,UAAU,EAAE,qBAAqB,GAAG,OAAO,CAAC,SAAS,GAAG,QAAQ,GAAG,IAAI,CAAC;IAI1F,4EAA4E;IAC5E,gBAAgB,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,GAAG,IAAI;IAI7E,uEAAuE;IACvE,UAAU,CAAC,UAAU,EAAE,iBAAiB,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM;IAuBpE,iDAAiD;YACnC,aAAa;IAU3B,oFAAoF;YACtE,YAAY;IAc1B,6EAA6E;IAC7E,OAAO,CAAC,aAAa;IAKrB,mFAAmF;IACnF,OAAO,CAAC,kBAAkB;CAK3B;AAED,2DAA2D;AAC3D,eAAO,MAAM,qCAAqC;uBAEnB,qBAAqB;wBAC/B,KAAK;;IAExB,6EAA6E;;qCAGtE,MAAM,YACF,kCAAkC,YACjC,OAAO;;;;;;;;;;;;;;;;;CAEmC,CAAC"}
@@ -0,0 +1,147 @@
1
+ // loaders.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+ import { ArcGISAuthentication } from "../authentication.js";
5
+ import { ARCGIS_IMAGE_TILE_SOURCE_LOADER_METADATA } from "../arcgis-source-types.js";
6
+ import { ImageLoader } from '@loaders.gl/images';
7
+ import { DataSource } from '@loaders.gl/loader-utils';
8
+ import { LERCLoader } from '@loaders.gl/lerc';
9
+ /** A tile source that renders ArcGIS ImageServer exports as deck.gl tiles. */
10
+ export class ArcGISImageTileSource extends DataSource {
11
+ /** MIME type represented by the tile response. */
12
+ mimeType;
13
+ /** Cached ImageServer metadata. */
14
+ _metadata = null;
15
+ /** In-flight metadata request shared by concurrent callers. */
16
+ _metadataPromise = null;
17
+ /** Parameters applied to subsequent export requests. */
18
+ _runtimeParameters = {};
19
+ /** Creates an ArcGIS ImageServer tile source. */
20
+ constructor(url, options = {}, coreApi) {
21
+ super(url.replace(/\/$/, ''), options, ARCGIS_IMAGE_TILE_SOURCE_LOADER_METADATA.defaultOptions, coreApi);
22
+ this.mimeType = this._getResponseFormat() === 'lerc' ? 'application/octet-stream' : 'image/png';
23
+ this.getTileData = this.getTileData.bind(this);
24
+ }
25
+ /** Returns normalized ImageServer metadata. */
26
+ async getMetadata() {
27
+ const metadata = await this._getMetadata();
28
+ const extent = metadata.fullExtent || metadata.extent;
29
+ const spatialReference = metadata.spatialReference || extent?.spatialReference;
30
+ return {
31
+ name: metadata.name || metadata.serviceDescription || '',
32
+ title: metadata.name || metadata.serviceDescription || '',
33
+ abstract: metadata.description || metadata.serviceDescription || '',
34
+ attributions: metadata.copyrightText ? [metadata.copyrightText] : undefined,
35
+ boundingBox: extent
36
+ ? [
37
+ [extent.xmin, extent.ymin],
38
+ [extent.xmax, extent.ymax]
39
+ ]
40
+ : undefined,
41
+ layer: {
42
+ name: metadata.name || '',
43
+ srs: spatialReference?.wkid ? [`EPSG:${spatialReference.wkid}`] : [],
44
+ layers: []
45
+ }
46
+ };
47
+ }
48
+ /** Fetches one ImageServer export tile. */
49
+ async getTile(parameters, signal) {
50
+ const response = await this.fetch(this.getTileURL(parameters), signal ? { signal } : undefined);
51
+ if (!response.ok) {
52
+ throw new Error(`ArcGIS ImageServer tile request failed: ${response.status} ${response.statusText}`);
53
+ }
54
+ const loader = this._getResponseFormat() === 'lerc' ? LERCLoader : ImageLoader;
55
+ return (await this.coreApi.parse(await response.arrayBuffer(), loader, this.loadOptions));
56
+ }
57
+ /** Fetches a tile using the deck.gl-compatible request shape. */
58
+ async getTileData(parameters) {
59
+ return this.getTile(parameters.index, parameters.signal);
60
+ }
61
+ /** Updates parameters applied to subsequent ImageServer export requests. */
62
+ updateParameters(parameters) {
63
+ this._runtimeParameters = { ...this._runtimeParameters, ...parameters };
64
+ }
65
+ /** Builds an ImageServer exportImage URL for one web-mercator tile. */
66
+ getTileURL(parameters, tileSize) {
67
+ const options = this.options['arcgis-image-server-tiles'] || {};
68
+ const resolvedTileSize = tileSize || options.tileSize || 256;
69
+ const [west, south, east, north] = getWebMercatorTileBounds(parameters);
70
+ const url = new URL(this.getServiceURL(parameters));
71
+ url.pathname = `${url.pathname.replace(/\/$/, '')}/exportImage`;
72
+ const requestParameters = {
73
+ f: 'image',
74
+ bbox: `${west},${south},${east},${north}`,
75
+ bboxSR: 3857,
76
+ imageSR: 3857,
77
+ size: `${resolvedTileSize},${resolvedTileSize}`,
78
+ format: this._getResponseFormat(),
79
+ transparent: true,
80
+ ...options.parameters,
81
+ ...this._runtimeParameters
82
+ };
83
+ for (const [key, value] of Object.entries(requestParameters)) {
84
+ url.searchParams.set(key, String(value));
85
+ }
86
+ return url.toString();
87
+ }
88
+ /** Fetches the ImageServer metadata document. */
89
+ async _loadMetadata() {
90
+ const url = new URL(this.url);
91
+ url.searchParams.set('f', 'pjson');
92
+ const response = await this.fetch(url.toString());
93
+ if (!response.ok) {
94
+ throw new Error(`ArcGIS ImageServer metadata request failed: ${response.status}`);
95
+ }
96
+ return response.json();
97
+ }
98
+ /** Returns cached metadata and shares a single request among concurrent callers. */
99
+ async _getMetadata() {
100
+ if (this._metadata)
101
+ return this._metadata;
102
+ if (!this._metadataPromise) {
103
+ this._metadataPromise = this._loadMetadata();
104
+ }
105
+ try {
106
+ const metadata = await this._metadataPromise;
107
+ this._metadata = metadata;
108
+ return metadata;
109
+ }
110
+ finally {
111
+ this._metadataPromise = null;
112
+ }
113
+ }
114
+ /** Selects a service endpoint for a tile using a stable URL-pool mapping. */
115
+ getServiceURL(parameters) {
116
+ const urls = this.options['arcgis-image-server-tiles']?.urls;
117
+ return urls?.length ? urls[(parameters.x + parameters.y) % urls.length] : this.url;
118
+ }
119
+ /** Returns the response format after applying configured and runtime overrides. */
120
+ _getResponseFormat() {
121
+ const options = this.options['arcgis-image-server-tiles'] || {};
122
+ const format = this._runtimeParameters.format || options.parameters?.format || options.format;
123
+ return format === 'lerc' ? 'lerc' : 'png32';
124
+ }
125
+ }
126
+ /** Runtime service loader for synchronous construction. */
127
+ export const ArcGISImageTileSourceLoaderWithParser = {
128
+ ...ARCGIS_IMAGE_TILE_SOURCE_LOADER_METADATA,
129
+ dataType: null,
130
+ batchType: null,
131
+ preload: undefined,
132
+ /** Supplies ArcGIS credentials after loading the selected implementation. */
133
+ getAuthentications: () => [ArcGISAuthentication],
134
+ createDataSource: (url, options = {}, coreApi) => new ArcGISImageTileSource(url, options, coreApi)
135
+ };
136
+ /** Calculates the Web Mercator extent represented by an XYZ tile. */
137
+ function getWebMercatorTileBounds(parameters) {
138
+ const worldSize = 20037508.342789244;
139
+ const tileCount = 2 ** parameters.z;
140
+ const tileSize = (worldSize * 2) / tileCount;
141
+ const west = -worldSize + parameters.x * tileSize;
142
+ const east = west + tileSize;
143
+ const north = worldSize - parameters.y * tileSize;
144
+ const south = north - tileSize;
145
+ return [west, south, east, north];
146
+ }
147
+ //# sourceMappingURL=arcgis-image-tile-source-loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"arcgis-image-tile-source-loader.js","sourceRoot":"","sources":["../../src/arcgis/arcgis-image-tile-source-loader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ import type { CoreAPI, SourceLoader } from '@loaders.gl/loader-utils';
2
+ import type { ArcGISMapTileSource } from "./arcgis-map-tile-source-loader.js";
3
+ import type { ArcGISMapTileSourceLoaderOptions } from "../arcgis-source-types.js";
4
+ /** Loads the ArcGISMapTileSourceLoader implementation on first asynchronous use. */
5
+ declare function preloadArcGISMapTileSourceLoader(): Promise<SourceLoader<ArcGISMapTileSource>>;
6
+ /** Lightweight service descriptor; use load() or the synchronous /bundled entrypoint. */
7
+ export declare const ArcGISMapTileSourceLoader: {
8
+ readonly dataType: ArcGISMapTileSource;
9
+ readonly batchType: never;
10
+ readonly preload: typeof preloadArcGISMapTileSourceLoader;
11
+ /** Requires the runtime loader when constructing a source synchronously. */
12
+ readonly createDataSource: (_url: string, _options: ArcGISMapTileSourceLoaderOptions, _coreApi?: CoreAPI) => ArcGISMapTileSource;
13
+ readonly name: "ArcGIS MapServer tiles";
14
+ readonly id: "arcgis-map-server";
15
+ readonly module: "arcgis";
16
+ readonly version: "0.0.0";
17
+ readonly extensions: [];
18
+ readonly mimeTypes: [];
19
+ readonly type: "arcgis-map-server";
20
+ readonly fromUrl: true;
21
+ readonly fromBlob: false;
22
+ readonly options: {
23
+ readonly 'arcgis-map-server': {};
24
+ };
25
+ readonly defaultOptions: {
26
+ readonly 'arcgis-map-server': {};
27
+ };
28
+ readonly testURL: (url: string) => boolean;
29
+ };
30
+ export {};
31
+ //# sourceMappingURL=arcgis-map-tile-source-loader-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"arcgis-map-tile-source-loader-types.d.ts","sourceRoot":"","sources":["../../src/arcgis/arcgis-map-tile-source-loader-types.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAC,OAAO,EAAE,YAAY,EAAC,MAAM,0BAA0B,CAAC;AACpE,OAAO,KAAK,EAAC,mBAAmB,EAAC,2CAAwC;AACzE,OAAO,KAAK,EAAC,gCAAgC,EAAC,kCAA+B;AAE7E,oFAAoF;AACpF,iBAAe,gCAAgC,IAAI,OAAO,CAAC,YAAY,CAAC,mBAAmB,CAAC,CAAC,CAK5F;AAED,yFAAyF;AACzF,eAAO,MAAM,yBAAyB;uBAEP,mBAAmB;wBAC7B,KAAK;;IAExB,4EAA4E;sCAEpE,MAAM,YACF,gCAAgC,aAC/B,OAAO,KACjB,mBAAmB;;;;;;;;;;;;;;;;;CAK8B,CAAC"}
@@ -0,0 +1,21 @@
1
+ // loaders.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+ import { ARCGIS_MAP_TILE_SOURCE_LOADER_METADATA } from "../arcgis-source-types.js";
5
+ /** Loads the ArcGISMapTileSourceLoader implementation on first asynchronous use. */
6
+ async function preloadArcGISMapTileSourceLoader() {
7
+ const { ArcGISMapTileSourceLoaderWithParser } = await import('@loaders.gl/arcgis/arcgis-map-tile-source-loader');
8
+ return ArcGISMapTileSourceLoaderWithParser;
9
+ }
10
+ /** Lightweight service descriptor; use load() or the synchronous /bundled entrypoint. */
11
+ export const ArcGISMapTileSourceLoader = {
12
+ ...ARCGIS_MAP_TILE_SOURCE_LOADER_METADATA,
13
+ dataType: null,
14
+ batchType: null,
15
+ preload: preloadArcGISMapTileSourceLoader,
16
+ /** Requires the runtime loader when constructing a source synchronously. */
17
+ createDataSource(_url, _options, _coreApi) {
18
+ throw new Error('ArcGISMapTileSourceLoader requires async load() or an @loaders.gl/arcgis/bundled import');
19
+ }
20
+ };
21
+ //# sourceMappingURL=arcgis-map-tile-source-loader-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"arcgis-map-tile-source-loader-types.js","sourceRoot":"","sources":["../../src/arcgis/arcgis-map-tile-source-loader-types.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,+BAA+B;AAC/B,oCAAoC;AAEpC,OAAO,EAAC,sCAAsC,EAAC,kCAA+B;AAK9E,oFAAoF;AACpF,KAAK,UAAU,gCAAgC;IAC7C,MAAM,EAAC,mCAAmC,EAAC,GAAG,MAAM,MAAM,CACxD,kDAAkD,CACnD,CAAC;IACF,OAAO,mCAAmC,CAAC;AAC7C,CAAC;AAED,yFAAyF;AACzF,MAAM,CAAC,MAAM,yBAAyB,GAAG;IACvC,GAAG,sCAAsC;IACzC,QAAQ,EAAE,IAAsC;IAChD,SAAS,EAAE,IAAa;IACxB,OAAO,EAAE,gCAAgC;IACzC,4EAA4E;IAC5E,gBAAgB,CACd,IAAY,EACZ,QAA0C,EAC1C,QAAkB;QAElB,MAAM,IAAI,KAAK,CACb,yFAAyF,CAC1F,CAAC;IACJ,CAAC;CACmD,CAAC"}
@@ -0,0 +1,62 @@
1
+ import { ArcGISAuthentication } from "../authentication.js";
2
+ import type { ArcGISMapTileSourceLoaderOptions, ArcGISMapTileParameters } from "../arcgis-source-types.js";
3
+ import type { ImageType } from '@loaders.gl/images';
4
+ import type { CoreAPI, GetTileDataParameters, GetTileParameters, TileSource, TileSourceMetadata } from '@loaders.gl/loader-utils';
5
+ import { DataSource } from '@loaders.gl/loader-utils';
6
+ /** ArcGIS MapServer source for cached `/tile/{z}/{y}/{x}` image tiles. */
7
+ export declare class ArcGISMapTileSource extends DataSource<string, ArcGISMapTileSourceLoaderOptions> implements TileSource {
8
+ /** MIME type rendered by the generic deck.gl tile adapter. */
9
+ readonly mimeType = "image/png";
10
+ /** Cached service metadata. */
11
+ private _metadata;
12
+ /** In-flight metadata request shared by concurrent callers. */
13
+ private _metadataPromise;
14
+ /** Parameters applied to subsequent dynamic exports. */
15
+ private _runtimeParameters;
16
+ /** Creates an ArcGIS MapServer tile source. */
17
+ constructor(url: string, options?: ArcGISMapTileSourceLoaderOptions, coreApi?: CoreAPI);
18
+ /** Loads and normalizes ArcGIS service metadata. */
19
+ getMetadata(): Promise<TileSourceMetadata>;
20
+ /** Fetches and decodes one cached ArcGIS tile. */
21
+ getTile(parameters: GetTileParameters, signal?: AbortSignal): Promise<ImageType | null>;
22
+ /** Fetches a tile using the deck.gl-compatible request shape. */
23
+ getTileData(parameters: GetTileDataParameters): Promise<ImageType | null>;
24
+ /** Builds the standard ArcGIS cached tile URL. */
25
+ getTileURL(parameters: GetTileParameters): string;
26
+ /** Updates parameters applied to subsequent dynamic MapServer export requests. */
27
+ updateParameters(parameters: ArcGISMapTileParameters): void;
28
+ /** Builds a dynamic MapServer `export` request for one web-mercator tile. */
29
+ getExportTileURL(parameters: GetTileParameters, tileSize?: number): string;
30
+ /** Fetches the MapServer metadata document and applies configured parameters. */
31
+ private _loadMetadata;
32
+ /** Returns cached metadata and shares a single request among concurrent callers. */
33
+ private _getMetadata;
34
+ /** Selects a service endpoint for a tile using a stable URL-pool mapping. */
35
+ private getServiceURL;
36
+ }
37
+ /** Runtime service loader for synchronous construction. */
38
+ export declare const ArcGISMapTileSourceLoaderWithParser: {
39
+ readonly dataType: ArcGISMapTileSource;
40
+ readonly batchType: never;
41
+ readonly preload: undefined;
42
+ /** Supplies ArcGIS credentials after loading the selected implementation. */
43
+ readonly getAuthentications: () => (typeof ArcGISAuthentication)[];
44
+ readonly createDataSource: (url: string, options?: ArcGISMapTileSourceLoaderOptions, coreApi?: CoreAPI) => ArcGISMapTileSource;
45
+ readonly name: "ArcGIS MapServer tiles";
46
+ readonly id: "arcgis-map-server";
47
+ readonly module: "arcgis";
48
+ readonly version: "0.0.0";
49
+ readonly extensions: [];
50
+ readonly mimeTypes: [];
51
+ readonly type: "arcgis-map-server";
52
+ readonly fromUrl: true;
53
+ readonly fromBlob: false;
54
+ readonly options: {
55
+ readonly 'arcgis-map-server': {};
56
+ };
57
+ readonly defaultOptions: {
58
+ readonly 'arcgis-map-server': {};
59
+ };
60
+ readonly testURL: (url: string) => boolean;
61
+ };
62
+ //# sourceMappingURL=arcgis-map-tile-source-loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"arcgis-map-tile-source-loader.d.ts","sourceRoot":"","sources":["../../src/arcgis/arcgis-map-tile-source-loader.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,oBAAoB,EAAC,6BAA0B;AAEvD,OAAO,KAAK,EACV,gCAAgC,EAEhC,uBAAuB,EACxB,kCAA+B;AAEhC,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,oBAAoB,CAAC;AAElD,OAAO,KAAK,EACV,OAAO,EACP,qBAAqB,EACrB,iBAAiB,EAEjB,UAAU,EACV,kBAAkB,EACnB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAC,UAAU,EAAC,MAAM,0BAA0B,CAAC;AAEpD,0EAA0E;AAC1E,qBAAa,mBACX,SAAQ,UAAU,CAAC,MAAM,EAAE,gCAAgC,CAC3D,YAAW,UAAU;IAErB,8DAA8D;IAC9D,QAAQ,CAAC,QAAQ,eAAe;IAEhC,+BAA+B;IAC/B,OAAO,CAAC,SAAS,CAAwC;IACzD,+DAA+D;IAC/D,OAAO,CAAC,gBAAgB,CAAiD;IACzE,wDAAwD;IACxD,OAAO,CAAC,kBAAkB,CAA+B;IAEzD,+CAA+C;gBACnC,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,gCAAqC,EAAE,OAAO,CAAC,EAAE,OAAO;IAU1F,oDAAoD;IAC9C,WAAW,IAAI,OAAO,CAAC,kBAAkB,CAAC;IA2ChD,kDAAkD;IAC5C,OAAO,CAAC,UAAU,EAAE,iBAAiB,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;IAqB7F,iEAAiE;IAC3D,WAAW,CAAC,UAAU,EAAE,qBAAqB,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;IAI/E,kDAAkD;IAClD,UAAU,CAAC,UAAU,EAAE,iBAAiB,GAAG,MAAM;IAgBjD,kFAAkF;IAClF,gBAAgB,CAAC,UAAU,EAAE,uBAAuB,GAAG,IAAI;IAI3D,6EAA6E;IAC7E,gBAAgB,CAAC,UAAU,EAAE,iBAAiB,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM;IAuB1E,iFAAiF;YACnE,aAAa;IAmB3B,oFAAoF;YACtE,YAAY;IAc1B,6EAA6E;IAC7E,OAAO,CAAC,aAAa;CAItB;AA2BD,2DAA2D;AAC3D,eAAO,MAAM,mCAAmC;uBAEjB,mBAAmB;wBAC7B,KAAK;;IAExB,6EAA6E;;qCAGtE,MAAM,YACF,gCAAgC,YAC/B,OAAO;;;;;;;;;;;;;;;;;CAEiC,CAAC"}
@@ -0,0 +1,196 @@
1
+ // loaders.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+ import { ArcGISAuthentication } from "../authentication.js";
5
+ import { ARCGIS_MAP_TILE_SOURCE_LOADER_METADATA } from "../arcgis-source-types.js";
6
+ import { ImageLoader } from '@loaders.gl/images';
7
+ import { DataSource } from '@loaders.gl/loader-utils';
8
+ /** ArcGIS MapServer source for cached `/tile/{z}/{y}/{x}` image tiles. */
9
+ export class ArcGISMapTileSource extends DataSource {
10
+ /** MIME type rendered by the generic deck.gl tile adapter. */
11
+ mimeType = 'image/png';
12
+ /** Cached service metadata. */
13
+ _metadata = null;
14
+ /** In-flight metadata request shared by concurrent callers. */
15
+ _metadataPromise = null;
16
+ /** Parameters applied to subsequent dynamic exports. */
17
+ _runtimeParameters = {};
18
+ /** Creates an ArcGIS MapServer tile source. */
19
+ constructor(url, options = {}, coreApi) {
20
+ super(url.replace(/\/$/, ''), options, ARCGIS_MAP_TILE_SOURCE_LOADER_METADATA.defaultOptions, coreApi);
21
+ this.getTileData = this.getTileData.bind(this);
22
+ }
23
+ /** Loads and normalizes ArcGIS service metadata. */
24
+ async getMetadata() {
25
+ const metadata = await this._getMetadata();
26
+ const extent = metadata.fullExtent;
27
+ const spatialReference = metadata.spatialReference || extent?.spatialReference;
28
+ const spatialReferenceWkid = spatialReference?.wkid;
29
+ return {
30
+ name: metadata.name || '',
31
+ title: metadata.name || '',
32
+ abstract: metadata.description || metadata.serviceDescription || '',
33
+ attributions: metadata.copyrightText ? [metadata.copyrightText] : undefined,
34
+ minZoom: 0,
35
+ maxZoom: metadata.tileInfo?.lods?.length
36
+ ? Math.max(...metadata.tileInfo.lods.map(lod => lod.level))
37
+ : undefined,
38
+ boundingBox: extent
39
+ ? [
40
+ [extent.xmin, extent.ymin],
41
+ [extent.xmax, extent.ymax]
42
+ ]
43
+ : undefined,
44
+ layer: {
45
+ name: metadata.name || '',
46
+ srs: spatialReferenceWkid ? [`EPSG:${spatialReferenceWkid}`] : [],
47
+ layers: []
48
+ },
49
+ tileGrid: metadata.tileInfo
50
+ ? {
51
+ crs: metadata.tileInfo.spatialReference?.wkid
52
+ ? `EPSG:${metadata.tileInfo.spatialReference.wkid}`
53
+ : undefined,
54
+ tileSize: metadata.tileInfo.rows && metadata.tileInfo.cols
55
+ ? [metadata.tileInfo.cols, metadata.tileInfo.rows]
56
+ : undefined,
57
+ origin: metadata.tileInfo.origin
58
+ ? [metadata.tileInfo.origin.x, metadata.tileInfo.origin.y]
59
+ : undefined,
60
+ matrixIds: metadata.tileInfo.lods?.map(lod => String(lod.level))
61
+ }
62
+ : undefined
63
+ };
64
+ }
65
+ /** Fetches and decodes one cached ArcGIS tile. */
66
+ async getTile(parameters, signal) {
67
+ const options = this.options['arcgis-map-server'] || {};
68
+ const mode = options.mode || 'auto';
69
+ const metadata = mode === 'auto' ? await this._getMetadata() : null;
70
+ const useCachedTiles = mode === 'cached' || (mode === 'auto' && isCompatibleCache(metadata));
71
+ const tileURL = useCachedTiles
72
+ ? this.getTileURL(parameters)
73
+ : this.getExportTileURL(parameters, options.tileSize || 256);
74
+ const response = await this.fetch(tileURL, signal ? { signal } : undefined);
75
+ if (!response.ok) {
76
+ throw new Error(`ArcGIS MapServer tile request failed: ${response.status} ${response.statusText}`);
77
+ }
78
+ return (await this.coreApi.parse(await response.arrayBuffer(), ImageLoader, this.loadOptions));
79
+ }
80
+ /** Fetches a tile using the deck.gl-compatible request shape. */
81
+ async getTileData(parameters) {
82
+ return this.getTile(parameters.index, parameters.signal);
83
+ }
84
+ /** Builds the standard ArcGIS cached tile URL. */
85
+ getTileURL(parameters) {
86
+ const template = this.options['arcgis-map-server']?.urlTemplate;
87
+ if (template) {
88
+ const templateURL = new URL(template
89
+ .replaceAll('{z}', String(parameters.z))
90
+ .replaceAll('{y}', String(parameters.y))
91
+ .replaceAll('{x}', String(parameters.x)));
92
+ return templateURL.toString();
93
+ }
94
+ const url = new URL(this.getServiceURL(parameters));
95
+ url.pathname = `${url.pathname.replace(/\/$/, '')}/tile/${parameters.z}/${parameters.y}/${parameters.x}`;
96
+ return url.toString();
97
+ }
98
+ /** Updates parameters applied to subsequent dynamic MapServer export requests. */
99
+ updateParameters(parameters) {
100
+ this._runtimeParameters = { ...this._runtimeParameters, ...parameters };
101
+ }
102
+ /** Builds a dynamic MapServer `export` request for one web-mercator tile. */
103
+ getExportTileURL(parameters, tileSize) {
104
+ const options = this.options['arcgis-map-server'] || {};
105
+ const resolvedTileSize = tileSize || options.tileSize || 256;
106
+ const [west, south, east, north] = getWebMercatorTileBounds(parameters);
107
+ const url = new URL(this.getServiceURL(parameters));
108
+ url.pathname = `${url.pathname.replace(/\/$/, '')}/export`;
109
+ const searchParameters = {
110
+ f: 'image',
111
+ bbox: `${west},${south},${east},${north}`,
112
+ bboxSR: 3857,
113
+ imageSR: 3857,
114
+ size: `${resolvedTileSize},${resolvedTileSize}`,
115
+ format: 'png32',
116
+ transparent: true,
117
+ ...options.exportParameters,
118
+ ...this._runtimeParameters
119
+ };
120
+ for (const [key, value] of Object.entries(searchParameters)) {
121
+ url.searchParams.set(key, String(value));
122
+ }
123
+ return url.toString();
124
+ }
125
+ /** Fetches the MapServer metadata document and applies configured parameters. */
126
+ async _loadMetadata() {
127
+ const configuredMetadata = this.options['arcgis-map-server']?.metadata;
128
+ if (configuredMetadata)
129
+ return configuredMetadata;
130
+ const url = new URL(this.url);
131
+ url.searchParams.set('f', 'pjson');
132
+ for (const [key, value] of Object.entries(this.options['arcgis-map-server']?.parameters || {})) {
133
+ url.searchParams.set(key, value);
134
+ }
135
+ const response = await this.fetch(url.toString());
136
+ if (!response.ok) {
137
+ throw new Error(`ArcGIS MapServer metadata request failed: ${response.status} ${response.statusText}`);
138
+ }
139
+ return response.json();
140
+ }
141
+ /** Returns cached metadata and shares a single request among concurrent callers. */
142
+ async _getMetadata() {
143
+ if (this._metadata)
144
+ return this._metadata;
145
+ if (!this._metadataPromise) {
146
+ this._metadataPromise = this._loadMetadata();
147
+ }
148
+ try {
149
+ const metadata = await this._metadataPromise;
150
+ this._metadata = metadata;
151
+ return metadata;
152
+ }
153
+ finally {
154
+ this._metadataPromise = null;
155
+ }
156
+ }
157
+ /** Selects a service endpoint for a tile using a stable URL-pool mapping. */
158
+ getServiceURL(parameters) {
159
+ const urls = this.options['arcgis-map-server']?.urls;
160
+ return urls?.length ? urls[(parameters.x + parameters.y) % urls.length] : this.url;
161
+ }
162
+ }
163
+ function isCompatibleCache(metadata) {
164
+ const tileInfo = metadata?.tileInfo;
165
+ if (!tileInfo || tileInfo.rows !== 256 || tileInfo.cols !== 256)
166
+ return false;
167
+ const spatialReference = tileInfo.spatialReference || metadata?.spatialReference;
168
+ const wkid = spatialReference?.wkid;
169
+ if (wkid !== 3857 && wkid !== 102100 && wkid !== 102113)
170
+ return false;
171
+ const origin = tileInfo.origin;
172
+ return (!origin ||
173
+ (Math.abs(origin.x + 20037508.342789244) < 1 && Math.abs(origin.y - 20037508.342789244) < 1));
174
+ }
175
+ /** Calculates the Web Mercator extent represented by an XYZ tile. */
176
+ function getWebMercatorTileBounds(parameters) {
177
+ const worldSize = 20037508.342789244;
178
+ const tileCount = 2 ** parameters.z;
179
+ const tileSize = (worldSize * 2) / tileCount;
180
+ const west = -worldSize + parameters.x * tileSize;
181
+ const east = west + tileSize;
182
+ const north = worldSize - parameters.y * tileSize;
183
+ const south = north - tileSize;
184
+ return [west, south, east, north];
185
+ }
186
+ /** Runtime service loader for synchronous construction. */
187
+ export const ArcGISMapTileSourceLoaderWithParser = {
188
+ ...ARCGIS_MAP_TILE_SOURCE_LOADER_METADATA,
189
+ dataType: null,
190
+ batchType: null,
191
+ preload: undefined,
192
+ /** Supplies ArcGIS credentials after loading the selected implementation. */
193
+ getAuthentications: () => [ArcGISAuthentication],
194
+ createDataSource: (url, options = {}, coreApi) => new ArcGISMapTileSource(url, options, coreApi)
195
+ };
196
+ //# sourceMappingURL=arcgis-map-tile-source-loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"arcgis-map-tile-source-loader.js","sourceRoot":"","sources":["../../src/arcgis/arcgis-map-tile-source-loader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ /** Aggregation operation supported by the SceneServer client helper. */
2
+ export type ArcGISSceneAggregationOperation = 'count' | 'sum' | 'min' | 'max' | 'average';
3
+ /** A single aggregation specification. */
4
+ export type ArcGISSceneAggregationSpec = {
5
+ /** Output field name. */
6
+ name: string;
7
+ /** Input property used by numeric operations. */
8
+ field?: string;
9
+ /** Operation to apply. */
10
+ operation: ArcGISSceneAggregationOperation;
11
+ };
12
+ /** Options for deterministic client-side feature aggregation. */
13
+ export type ArcGISSceneAggregationOptions = {
14
+ /** Features represented as ArcGIS feature objects or plain attribute records. */
15
+ features: unknown[];
16
+ /** Optional property used to create groups. */
17
+ groupBy?: string;
18
+ /** Aggregations to compute for each group. */
19
+ aggregations: ArcGISSceneAggregationSpec[];
20
+ };
21
+ /** Result of one group in a client-side aggregation. */
22
+ export type ArcGISSceneAggregationGroup = {
23
+ /** Group key, or `undefined` when no grouping was requested. */
24
+ group: unknown;
25
+ /** Aggregated values keyed by specification name. */
26
+ values: Record<string, number>;
27
+ };
28
+ /**
29
+ * Aggregates SceneServer features without evaluating renderer or Arcade expressions.
30
+ * Missing and non-numeric values are ignored by numeric operations; `count` counts
31
+ * records regardless of field presence.
32
+ */
33
+ export declare function aggregateArcGISSceneFeatures(options: ArcGISSceneAggregationOptions): ArcGISSceneAggregationGroup[];
34
+ //# sourceMappingURL=arcgis-scene-aggregation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"arcgis-scene-aggregation.d.ts","sourceRoot":"","sources":["../../src/arcgis/arcgis-scene-aggregation.ts"],"names":[],"mappings":"AAIA,wEAAwE;AACxE,MAAM,MAAM,+BAA+B,GAAG,OAAO,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,SAAS,CAAC;AAE1F,0CAA0C;AAC1C,MAAM,MAAM,0BAA0B,GAAG;IACvC,yBAAyB;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,iDAAiD;IACjD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0BAA0B;IAC1B,SAAS,EAAE,+BAA+B,CAAC;CAC5C,CAAC;AAEF,iEAAiE;AACjE,MAAM,MAAM,6BAA6B,GAAG;IAC1C,iFAAiF;IACjF,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,+CAA+C;IAC/C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,8CAA8C;IAC9C,YAAY,EAAE,0BAA0B,EAAE,CAAC;CAC5C,CAAC;AAEF,wDAAwD;AACxD,MAAM,MAAM,2BAA2B,GAAG;IACxC,gEAAgE;IAChE,KAAK,EAAE,OAAO,CAAC;IACf,qDAAqD;IACrD,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAChC,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,6BAA6B,GACrC,2BAA2B,EAAE,CAgB/B"}