@loaders.gl/arcgis 5.0.0-alpha.8
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/README.md +26 -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-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 +19 -0
- package/dist/authentication.d.ts.map +1 -0
- package/dist/authentication.js +24 -0
- package/dist/authentication.js.map +1 -0
- package/dist/bundled.d.ts +151 -0
- package/dist/bundled.d.ts.map +1 -0
- package/dist/bundled.js +33 -0
- package/dist/bundled.js.map +1 -0
- package/dist/index.cjs +24932 -0
- package/dist/index.cjs.map +6 -0
- package/dist/index.d.ts +23 -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 +91 -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-source-types.ts +372 -0
- package/src/authentication.ts +35 -0
- package/src/bundled.ts +66 -0
- package/src/index.ts +63 -0
- package/src/service-registry.ts +43 -0
|
@@ -0,0 +1,381 @@
|
|
|
1
|
+
// loaders.gl
|
|
2
|
+
// SPDX-License-Identifier: MIT
|
|
3
|
+
// Copyright (c) vis.gl contributors
|
|
4
|
+
import { buildArcGISResourceURL } from "./arcgis-url-utils.js";
|
|
5
|
+
/** An HTTP or ArcGIS JSON error, without retaining a credential-bearing request URL. */
|
|
6
|
+
export class ArcGISFeatureQueryError extends Error {
|
|
7
|
+
/** ArcGIS error code, or HTTP status when the response has no ArcGIS error. */
|
|
8
|
+
code;
|
|
9
|
+
/** Additional service diagnostics. */
|
|
10
|
+
details;
|
|
11
|
+
/** Creates a structured service error. */
|
|
12
|
+
constructor(message, code, details = []) {
|
|
13
|
+
super(message);
|
|
14
|
+
this.name = 'ArcGISFeatureQueryError';
|
|
15
|
+
this.code = code;
|
|
16
|
+
this.details = details;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
/** Internal query client shared by FeatureServer and MapServer layer endpoints. */
|
|
20
|
+
export class ArcGISFeatureQueryClient {
|
|
21
|
+
url;
|
|
22
|
+
fetch;
|
|
23
|
+
parameters;
|
|
24
|
+
signal;
|
|
25
|
+
/** Creates a query client with one selected layer and normalized filters. */
|
|
26
|
+
constructor(
|
|
27
|
+
/** Layer URL, including caller-supplied authentication parameters. */
|
|
28
|
+
url,
|
|
29
|
+
/** Authenticated source transport. */
|
|
30
|
+
fetch,
|
|
31
|
+
/** Filter parameters shared by counts, IDs and data requests. */
|
|
32
|
+
parameters,
|
|
33
|
+
/** Signal applied to metadata and every subsequent request. */
|
|
34
|
+
signal) {
|
|
35
|
+
this.url = url;
|
|
36
|
+
this.fetch = fetch;
|
|
37
|
+
this.parameters = parameters;
|
|
38
|
+
this.signal = signal;
|
|
39
|
+
}
|
|
40
|
+
/** Reads JSON while recognizing ArcGIS errors even on HTTP 200 responses. */
|
|
41
|
+
async request(path, parameters = {}) {
|
|
42
|
+
this.signal?.throwIfAborted();
|
|
43
|
+
const requestUrl = new URL(buildArcGISResourceURL(this.url, path, parameters));
|
|
44
|
+
for (const [name, value] of Object.entries(parameters)) {
|
|
45
|
+
if (value === undefined)
|
|
46
|
+
requestUrl.searchParams.delete(name);
|
|
47
|
+
}
|
|
48
|
+
const requestOptions = { signal: this.signal };
|
|
49
|
+
// Query is read-only and supports POST. Keep endpoint credentials in the URL so the shared
|
|
50
|
+
// credential transport can still honor explicit tokens and apply its origin restrictions.
|
|
51
|
+
if (path === 'query' && requestUrl.toString().length > 2000) {
|
|
52
|
+
const body = new URLSearchParams();
|
|
53
|
+
for (const name of Object.keys(parameters)) {
|
|
54
|
+
const value = requestUrl.searchParams.get(name);
|
|
55
|
+
if (value !== null) {
|
|
56
|
+
body.set(name, value);
|
|
57
|
+
requestUrl.searchParams.delete(name);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
requestOptions.method = 'POST';
|
|
61
|
+
requestOptions.headers = { 'Content-Type': 'application/x-www-form-urlencoded' };
|
|
62
|
+
requestOptions.body = body;
|
|
63
|
+
}
|
|
64
|
+
const response = await this.fetch(requestUrl.toString(), requestOptions);
|
|
65
|
+
let json;
|
|
66
|
+
try {
|
|
67
|
+
json = await response.json();
|
|
68
|
+
}
|
|
69
|
+
catch {
|
|
70
|
+
this.signal?.throwIfAborted();
|
|
71
|
+
throw new ArcGISFeatureQueryError('ArcGIS returned a non-JSON response', response.status);
|
|
72
|
+
}
|
|
73
|
+
this.signal?.throwIfAborted();
|
|
74
|
+
if (!response.ok || json?.error) {
|
|
75
|
+
throw new ArcGISFeatureQueryError(json?.error?.message || response.statusText || 'ArcGIS query failed', json?.error?.code || response.status, json?.error?.details || []);
|
|
76
|
+
}
|
|
77
|
+
return json;
|
|
78
|
+
}
|
|
79
|
+
/** Returns the count for the same filters used by data retrieval. */
|
|
80
|
+
async getCount() {
|
|
81
|
+
const json = await this.request('query', this.getSummaryParameters({ returnCountOnly: true }));
|
|
82
|
+
if (!Number.isSafeInteger(json.count) || json.count < 0) {
|
|
83
|
+
throw new Error('ArcGIS query did not return a safe nonnegative count');
|
|
84
|
+
}
|
|
85
|
+
return json.count;
|
|
86
|
+
}
|
|
87
|
+
/** Returns unique object IDs and preserves explicit truncation information. */
|
|
88
|
+
async getObjectIds() {
|
|
89
|
+
const json = await this.request('query', this.getSummaryParameters({ returnIdsOnly: true }));
|
|
90
|
+
if (!Array.isArray(json.objectIds) || typeof json.objectIdFieldName !== 'string') {
|
|
91
|
+
throw new Error('ArcGIS query did not return object IDs and their field name');
|
|
92
|
+
}
|
|
93
|
+
const objectIds = json.objectIds.map(validateObjectId);
|
|
94
|
+
return {
|
|
95
|
+
objectIdFieldName: json.objectIdFieldName,
|
|
96
|
+
objectIds: [...new Set(objectIds)],
|
|
97
|
+
exceededTransferLimit: json.exceededTransferLimit === true
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
/** Requests an extent while retaining its spatial reference. */
|
|
101
|
+
async getExtent() {
|
|
102
|
+
const json = await this.request('query', this.getSummaryParameters({ returnExtentOnly: true }));
|
|
103
|
+
const extent = json.extent;
|
|
104
|
+
if (extent !== null &&
|
|
105
|
+
(!extent?.spatialReference ||
|
|
106
|
+
![extent.xmin, extent.ymin, extent.xmax, extent.ymax].every(Number.isFinite))) {
|
|
107
|
+
throw new Error('ArcGIS query did not return an extent with a spatial reference');
|
|
108
|
+
}
|
|
109
|
+
return { extent, ...(json.count === undefined ? {} : { count: json.count }) };
|
|
110
|
+
}
|
|
111
|
+
/** Reads layer metadata and rejects response formats this client cannot safely interpret. */
|
|
112
|
+
async getMetadata() {
|
|
113
|
+
const metadata = await this.request('', { f: 'json' });
|
|
114
|
+
if (metadata.capabilities &&
|
|
115
|
+
!metadata.capabilities
|
|
116
|
+
.split(',')
|
|
117
|
+
.some((capability) => capability.trim().toLowerCase() === 'query'))
|
|
118
|
+
throw new Error('This ArcGIS layer does not advertise Query capability');
|
|
119
|
+
if (metadata.type !== 'Table' &&
|
|
120
|
+
metadata.supportedQueryFormats &&
|
|
121
|
+
!metadata.supportedQueryFormats
|
|
122
|
+
.toLowerCase()
|
|
123
|
+
.split(',')
|
|
124
|
+
.map((format) => format.trim())
|
|
125
|
+
.includes('geojson')) {
|
|
126
|
+
throw new Error('This spatial layer does not support GeoJSON queries');
|
|
127
|
+
}
|
|
128
|
+
return metadata;
|
|
129
|
+
}
|
|
130
|
+
/** Reads one page without implying that it represents a complete query. */
|
|
131
|
+
async getPage(options) {
|
|
132
|
+
const metadata = await this.getMetadata();
|
|
133
|
+
const pageSize = getPageSize(options, metadata);
|
|
134
|
+
const offset = this.parameters.resultOffset ?? 0;
|
|
135
|
+
if (!Number.isSafeInteger(offset) || Number(offset) < 0)
|
|
136
|
+
throw new Error('resultOffset must be a nonnegative safe integer');
|
|
137
|
+
const page = await this.readPage(metadata, {
|
|
138
|
+
resultRecordCount: Math.min(pageSize, positiveInteger(Number(this.parameters.resultRecordCount ?? pageSize), 'resultRecordCount'))
|
|
139
|
+
});
|
|
140
|
+
return {
|
|
141
|
+
data: page.data,
|
|
142
|
+
loaded: page.data.features.length,
|
|
143
|
+
pages: 1,
|
|
144
|
+
duplicates: 0,
|
|
145
|
+
complete: false,
|
|
146
|
+
scope: options.boundingBox ? 'viewport' : 'query',
|
|
147
|
+
strategy: 'page',
|
|
148
|
+
reason: 'single-page'
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
/** Streams bounded pages and assesses completeness using the initial count and stable IDs. */
|
|
152
|
+
async *getPages(options) {
|
|
153
|
+
const controller = new AbortController();
|
|
154
|
+
const abort = () => controller.abort(this.signal?.reason);
|
|
155
|
+
this.signal?.throwIfAborted();
|
|
156
|
+
this.signal?.addEventListener('abort', abort, { once: true });
|
|
157
|
+
const client = new ArcGISFeatureQueryClient(this.url, this.fetch, this.parameters, controller.signal);
|
|
158
|
+
try {
|
|
159
|
+
const metadata = await client.getMetadata();
|
|
160
|
+
const pageSize = getPageSize(options, metadata);
|
|
161
|
+
const maximumFeatures = positiveInteger(options.maxFeatures ?? 100000, 'maxFeatures');
|
|
162
|
+
const concurrency = positiveInteger(options.concurrency ?? 4, 'concurrency');
|
|
163
|
+
if (concurrency > 8)
|
|
164
|
+
throw new Error('concurrency must not exceed 8');
|
|
165
|
+
if (this.parameters.resultOffset ||
|
|
166
|
+
this.parameters.resultRecordCount ||
|
|
167
|
+
this.parameters.orderByFields) {
|
|
168
|
+
throw new Error('Complete queries manage paging and ordering; use queryFeaturePage() for explicit pages');
|
|
169
|
+
}
|
|
170
|
+
const objectIdField = metadata.objectIdField ||
|
|
171
|
+
metadata.objectIdFieldName ||
|
|
172
|
+
metadata.fields?.find((field) => field.type === 'esriFieldTypeOID')?.name;
|
|
173
|
+
if (!objectIdField)
|
|
174
|
+
throw new Error('Complete queries require a stable object ID field');
|
|
175
|
+
const supportsOffset = metadata.advancedQueryCapabilities?.supportsPagination === true &&
|
|
176
|
+
metadata.advancedQueryCapabilities?.supportsOrderBy === true;
|
|
177
|
+
const strategy = options.strategy === 'auto' || !options.strategy
|
|
178
|
+
? supportsOffset
|
|
179
|
+
? 'offset'
|
|
180
|
+
: 'object-ids'
|
|
181
|
+
: options.strategy;
|
|
182
|
+
if (strategy === 'offset' && !supportsOffset) {
|
|
183
|
+
throw new Error('This ArcGIS layer does not advertise ordered pagination; use object-ids');
|
|
184
|
+
}
|
|
185
|
+
const expectedCount = await client.getCount();
|
|
186
|
+
const progress = {
|
|
187
|
+
loaded: 0,
|
|
188
|
+
expectedCount,
|
|
189
|
+
pages: 0,
|
|
190
|
+
duplicates: 0,
|
|
191
|
+
complete: false,
|
|
192
|
+
scope: options.boundingBox ? 'viewport' : 'query',
|
|
193
|
+
strategy,
|
|
194
|
+
reason: 'loading'
|
|
195
|
+
};
|
|
196
|
+
const seen = new Set();
|
|
197
|
+
/** Snapshots progress so previously yielded pages never mutate. */
|
|
198
|
+
const result = (features) => {
|
|
199
|
+
progress.loaded = seen.size;
|
|
200
|
+
options.onProgress?.({ ...progress });
|
|
201
|
+
controller.signal.throwIfAborted();
|
|
202
|
+
return { ...progress, data: makeTable(features) };
|
|
203
|
+
};
|
|
204
|
+
/** Retains each safe identity once and applies the application memory bound. */
|
|
205
|
+
const retain = (features) => {
|
|
206
|
+
const retained = [];
|
|
207
|
+
for (const feature of features) {
|
|
208
|
+
const identifier = validateObjectId(feature.properties?.[objectIdField] ?? feature.id);
|
|
209
|
+
if (seen.has(identifier)) {
|
|
210
|
+
progress.duplicates++;
|
|
211
|
+
continue;
|
|
212
|
+
}
|
|
213
|
+
if (seen.size >= maximumFeatures)
|
|
214
|
+
break;
|
|
215
|
+
seen.add(identifier);
|
|
216
|
+
retained.push({ ...feature, id: identifier });
|
|
217
|
+
}
|
|
218
|
+
return retained;
|
|
219
|
+
};
|
|
220
|
+
const fields = this.parameters.outFields;
|
|
221
|
+
const outFields = fields === '*' || !fields
|
|
222
|
+
? '*'
|
|
223
|
+
: [
|
|
224
|
+
...new Set([
|
|
225
|
+
...(Array.isArray(fields) ? fields : String(fields).split(',')),
|
|
226
|
+
objectIdField
|
|
227
|
+
])
|
|
228
|
+
];
|
|
229
|
+
if (strategy === 'offset') {
|
|
230
|
+
let offset = 0;
|
|
231
|
+
// Bound requests even when a service repeats pages or emits empty transfer-limited pages.
|
|
232
|
+
while (true) {
|
|
233
|
+
const requestCount = Math.min(pageSize, maximumFeatures - seen.size);
|
|
234
|
+
const page = await client.readPage(metadata, {
|
|
235
|
+
outFields,
|
|
236
|
+
orderByFields: `${objectIdField} ASC`,
|
|
237
|
+
resultOffset: offset,
|
|
238
|
+
resultRecordCount: requestCount
|
|
239
|
+
});
|
|
240
|
+
progress.pages++;
|
|
241
|
+
const retained = retain(page.data.features);
|
|
242
|
+
offset += page.data.features.length;
|
|
243
|
+
const ended = page.exceededTransferLimit === false ||
|
|
244
|
+
(page.exceededTransferLimit !== true &&
|
|
245
|
+
(page.data.features.length < requestCount || seen.size === expectedCount));
|
|
246
|
+
if (ended) {
|
|
247
|
+
progress.complete = seen.size === expectedCount;
|
|
248
|
+
progress.reason = progress.complete ? 'complete' : 'count-mismatch';
|
|
249
|
+
}
|
|
250
|
+
else if (seen.size >= maximumFeatures)
|
|
251
|
+
progress.reason = 'feature-limit';
|
|
252
|
+
else if (!retained.length)
|
|
253
|
+
progress.reason = 'no-progress';
|
|
254
|
+
yield result(retained);
|
|
255
|
+
if (progress.reason !== 'loading')
|
|
256
|
+
return;
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
const identifiers = await client.getObjectIds();
|
|
260
|
+
if (identifiers.objectIdFieldName !== objectIdField) {
|
|
261
|
+
throw new Error('ArcGIS changed the object ID field during the query');
|
|
262
|
+
}
|
|
263
|
+
const identifiersComplete = !identifiers.exceededTransferLimit && identifiers.objectIds.length === expectedCount;
|
|
264
|
+
const selectedIds = identifiers.objectIds.slice(0, maximumFeatures);
|
|
265
|
+
let missingRecords = false;
|
|
266
|
+
for (let offset = 0; offset < selectedIds.length; offset += pageSize * concurrency) {
|
|
267
|
+
const batches = [];
|
|
268
|
+
for (let index = offset; index < Math.min(offset + pageSize * concurrency, selectedIds.length); index += pageSize) {
|
|
269
|
+
batches.push(selectedIds.slice(index, index + pageSize));
|
|
270
|
+
}
|
|
271
|
+
const pages = await Promise.all(batches.map(async (objectIds) => {
|
|
272
|
+
const page = await client.readPage(metadata, { outFields, objectIds });
|
|
273
|
+
const returnedIds = new Set(page.data.features.map(feature => validateObjectId(feature.properties?.[objectIdField] ?? feature.id)));
|
|
274
|
+
if (page.exceededTransferLimit === true ||
|
|
275
|
+
objectIds.some(identifier => !returnedIds.has(identifier)) ||
|
|
276
|
+
[...returnedIds].some(identifier => !objectIds.includes(identifier)))
|
|
277
|
+
missingRecords = true;
|
|
278
|
+
return page;
|
|
279
|
+
}));
|
|
280
|
+
for (let index = 0; index < pages.length; index++) {
|
|
281
|
+
const retained = retain(pages[index].data.features);
|
|
282
|
+
progress.pages++;
|
|
283
|
+
if (offset + (index + 1) * pageSize >= selectedIds.length) {
|
|
284
|
+
progress.complete =
|
|
285
|
+
identifiersComplete && !missingRecords && seen.size === expectedCount;
|
|
286
|
+
progress.reason = progress.complete
|
|
287
|
+
? 'complete'
|
|
288
|
+
: !identifiersComplete
|
|
289
|
+
? 'id-limit'
|
|
290
|
+
: selectedIds.length < expectedCount
|
|
291
|
+
? 'feature-limit'
|
|
292
|
+
: 'count-mismatch';
|
|
293
|
+
}
|
|
294
|
+
yield result(retained);
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
if (!selectedIds.length) {
|
|
298
|
+
progress.complete = identifiersComplete;
|
|
299
|
+
progress.reason = identifiersComplete ? 'complete' : 'id-limit';
|
|
300
|
+
yield result([]);
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
finally {
|
|
304
|
+
controller.abort();
|
|
305
|
+
this.signal?.removeEventListener('abort', abort);
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
/** Removes data-only controls from a count, IDs or extent request. */
|
|
309
|
+
getSummaryParameters(operation) {
|
|
310
|
+
return {
|
|
311
|
+
...this.parameters,
|
|
312
|
+
outFields: undefined,
|
|
313
|
+
orderByFields: undefined,
|
|
314
|
+
resultOffset: undefined,
|
|
315
|
+
resultRecordCount: undefined,
|
|
316
|
+
f: 'json',
|
|
317
|
+
returnGeometry: false,
|
|
318
|
+
returnCountOnly: false,
|
|
319
|
+
returnIdsOnly: false,
|
|
320
|
+
returnExtentOnly: false,
|
|
321
|
+
...operation
|
|
322
|
+
};
|
|
323
|
+
}
|
|
324
|
+
/** Normalizes GeoJSON or nonspatial ArcGIS records without discarding null attributes. */
|
|
325
|
+
async readPage(metadata, parameters) {
|
|
326
|
+
const isTable = metadata.type === 'Table';
|
|
327
|
+
if (!isTable && String(this.parameters.outSR ?? 4326) !== '4326') {
|
|
328
|
+
throw new Error('ArcGIS GeoJSON output requires EPSG:4326; use requestCrs for projected query bounds');
|
|
329
|
+
}
|
|
330
|
+
const json = await this.request('query', {
|
|
331
|
+
...this.parameters,
|
|
332
|
+
...parameters,
|
|
333
|
+
returnCountOnly: false,
|
|
334
|
+
returnIdsOnly: false,
|
|
335
|
+
returnExtentOnly: false,
|
|
336
|
+
f: isTable ? 'json' : 'geojson'
|
|
337
|
+
});
|
|
338
|
+
let features;
|
|
339
|
+
if (isTable && Array.isArray(json.features)) {
|
|
340
|
+
features = json.features.map((record) => {
|
|
341
|
+
if (!record.attributes || record.geometry)
|
|
342
|
+
throw new Error('Invalid ArcGIS nonspatial table record');
|
|
343
|
+
return { type: 'Feature', geometry: null, properties: record.attributes };
|
|
344
|
+
});
|
|
345
|
+
}
|
|
346
|
+
else if (json.type === 'FeatureCollection' && Array.isArray(json.features)) {
|
|
347
|
+
features = json.features;
|
|
348
|
+
if (features.some(feature => feature.type !== 'Feature' || feature.geometry === undefined)) {
|
|
349
|
+
throw new Error('Invalid ArcGIS GeoJSON feature');
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
else
|
|
353
|
+
throw new Error('ArcGIS query did not return a GeoJSON FeatureCollection');
|
|
354
|
+
return {
|
|
355
|
+
data: makeTable(features),
|
|
356
|
+
exceededTransferLimit: json.exceededTransferLimit ?? json.properties?.exceededTransferLimit
|
|
357
|
+
};
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
/** Makes the normalized table shared by spatial and nonspatial query results. */
|
|
361
|
+
function makeTable(features) {
|
|
362
|
+
return { shape: 'geojson-table', type: 'FeatureCollection', features };
|
|
363
|
+
}
|
|
364
|
+
/** Rejects missing or lossy numeric identities before deduplication. */
|
|
365
|
+
function validateObjectId(identifier) {
|
|
366
|
+
if ((typeof identifier === 'number' && Number.isSafeInteger(identifier)) ||
|
|
367
|
+
(typeof identifier === 'string' && identifier.length > 0))
|
|
368
|
+
return identifier;
|
|
369
|
+
throw new Error('ArcGIS query requires nonempty string or safe-integer object IDs');
|
|
370
|
+
}
|
|
371
|
+
/** Validates finite positive retrieval bounds. */
|
|
372
|
+
function positiveInteger(value, name) {
|
|
373
|
+
if (!Number.isSafeInteger(value) || value < 1)
|
|
374
|
+
throw new Error(`${name} must be a positive safe integer`);
|
|
375
|
+
return value;
|
|
376
|
+
}
|
|
377
|
+
/** Caps requests by the service limit without trusting invalid metadata. */
|
|
378
|
+
function getPageSize(options, metadata) {
|
|
379
|
+
return Math.min(positiveInteger(options.pageSize ?? 1000, 'pageSize'), positiveInteger(metadata.maxRecordCount ?? 1000, 'maxRecordCount'));
|
|
380
|
+
}
|
|
381
|
+
//# sourceMappingURL=arcgis-feature-query.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"arcgis-feature-query.js","sourceRoot":"","sources":["../../src/arcgis/arcgis-feature-query.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { CoreAPI, SourceLoader } from '@loaders.gl/loader-utils';
|
|
2
|
+
import type { ArcGISVectorSource } from "./arcgis-feature-server-source-loader.js";
|
|
3
|
+
import type { ArcGISFeatureServerSourceLoaderOptions } from "../arcgis-source-types.js";
|
|
4
|
+
/** Loads the ArcGISFeatureServerSourceLoader implementation on first asynchronous use. */
|
|
5
|
+
declare function preloadArcGISFeatureServerSourceLoader(): Promise<SourceLoader<ArcGISVectorSource>>;
|
|
6
|
+
/** Lightweight service descriptor; use load() or the synchronous /bundled entrypoint. */
|
|
7
|
+
export declare const ArcGISFeatureServerSourceLoader: {
|
|
8
|
+
readonly dataType: ArcGISVectorSource;
|
|
9
|
+
readonly batchType: never;
|
|
10
|
+
readonly preload: typeof preloadArcGISFeatureServerSourceLoader;
|
|
11
|
+
/** Requires the runtime loader when constructing a source synchronously. */
|
|
12
|
+
readonly createDataSource: (_url: string, _options: ArcGISFeatureServerSourceLoaderOptions, _coreApi?: CoreAPI) => ArcGISVectorSource;
|
|
13
|
+
readonly name: "ArcGISFeatureServer";
|
|
14
|
+
readonly id: "arcgis-feature-server";
|
|
15
|
+
readonly module: "arcgis";
|
|
16
|
+
readonly version: "0.0.0";
|
|
17
|
+
readonly extensions: [];
|
|
18
|
+
readonly mimeTypes: [];
|
|
19
|
+
readonly type: "arcgis-feature-server";
|
|
20
|
+
readonly fromUrl: true;
|
|
21
|
+
readonly fromBlob: false;
|
|
22
|
+
readonly options: {
|
|
23
|
+
readonly url: never;
|
|
24
|
+
readonly 'arcgis-feature-server': {};
|
|
25
|
+
};
|
|
26
|
+
readonly defaultOptions: {
|
|
27
|
+
readonly url: never;
|
|
28
|
+
readonly 'arcgis-feature-server': {};
|
|
29
|
+
};
|
|
30
|
+
readonly testURL: (url: string) => boolean;
|
|
31
|
+
};
|
|
32
|
+
export {};
|
|
33
|
+
//# sourceMappingURL=arcgis-feature-server-source-loader-types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"arcgis-feature-server-source-loader-types.d.ts","sourceRoot":"","sources":["../../src/arcgis/arcgis-feature-server-source-loader-types.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAC,OAAO,EAAE,YAAY,EAAC,MAAM,0BAA0B,CAAC;AACpE,OAAO,KAAK,EAAC,kBAAkB,EAAC,iDAA8C;AAC9E,OAAO,KAAK,EAAC,sCAAsC,EAAC,kCAA+B;AAEnF,0FAA0F;AAC1F,iBAAe,sCAAsC,IAAI,OAAO,CAAC,YAAY,CAAC,kBAAkB,CAAC,CAAC,CAKjG;AAED,yFAAyF;AACzF,eAAO,MAAM,+BAA+B;uBAEb,kBAAkB;wBAC5B,KAAK;;IAExB,4EAA4E;sCAEpE,MAAM,YACF,sCAAsC,aACrC,OAAO,KACjB,kBAAkB;;;;;;;;;;;;;;;;;;;CAK8B,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
// loaders.gl
|
|
2
|
+
// SPDX-License-Identifier: MIT
|
|
3
|
+
// Copyright (c) vis.gl contributors
|
|
4
|
+
import { ARCGIS_FEATURE_SERVER_SOURCE_LOADER_METADATA } from "../arcgis-source-types.js";
|
|
5
|
+
/** Loads the ArcGISFeatureServerSourceLoader implementation on first asynchronous use. */
|
|
6
|
+
async function preloadArcGISFeatureServerSourceLoader() {
|
|
7
|
+
const { ArcGISFeatureServerSourceLoaderWithParser } = await import('@loaders.gl/arcgis/arcgis-feature-server-source-loader');
|
|
8
|
+
return ArcGISFeatureServerSourceLoaderWithParser;
|
|
9
|
+
}
|
|
10
|
+
/** Lightweight service descriptor; use load() or the synchronous /bundled entrypoint. */
|
|
11
|
+
export const ArcGISFeatureServerSourceLoader = {
|
|
12
|
+
...ARCGIS_FEATURE_SERVER_SOURCE_LOADER_METADATA,
|
|
13
|
+
dataType: null,
|
|
14
|
+
batchType: null,
|
|
15
|
+
preload: preloadArcGISFeatureServerSourceLoader,
|
|
16
|
+
/** Requires the runtime loader when constructing a source synchronously. */
|
|
17
|
+
createDataSource(_url, _options, _coreApi) {
|
|
18
|
+
throw new Error('ArcGISFeatureServerSourceLoader requires async load() or an @loaders.gl/arcgis/bundled import');
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
//# sourceMappingURL=arcgis-feature-server-source-loader-types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"arcgis-feature-server-source-loader-types.js","sourceRoot":"","sources":["../../src/arcgis/arcgis-feature-server-source-loader-types.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,+BAA+B;AAC/B,oCAAoC;AAEpC,OAAO,EAAC,4CAA4C,EAAC,kCAA+B;AAKpF,0FAA0F;AAC1F,KAAK,UAAU,sCAAsC;IACnD,MAAM,EAAC,yCAAyC,EAAC,GAAG,MAAM,MAAM,CAC9D,wDAAwD,CACzD,CAAC;IACF,OAAO,yCAAyC,CAAC;AACnD,CAAC;AAED,yFAAyF;AACzF,MAAM,CAAC,MAAM,+BAA+B,GAAG;IAC7C,GAAG,4CAA4C;IAC/C,QAAQ,EAAE,IAAqC;IAC/C,SAAS,EAAE,IAAa;IACxB,OAAO,EAAE,sCAAsC;IAC/C,4EAA4E;IAC5E,gBAAgB,CACd,IAAY,EACZ,QAAgD,EAChD,QAAkB;QAElB,MAAM,IAAI,KAAK,CACb,+FAA+F,CAChG,CAAC;IACJ,CAAC;CACkD,CAAC"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { ArcGISAuthentication } from "../authentication.js";
|
|
2
|
+
import type { ArcGISFeatureServerSourceLoaderOptions } from "../arcgis-source-types.js";
|
|
3
|
+
import type { Schema } from '@loaders.gl/schema';
|
|
4
|
+
import type { CoreAPI, VectorSourceMetadata, GetFeaturesParameters, VectorSource, VectorSourceData } from '@loaders.gl/loader-utils';
|
|
5
|
+
import { DataSource } from '@loaders.gl/loader-utils';
|
|
6
|
+
import type { ArcGISFeatureQueryParameters, ArcGISFeatureQueryOptions, ArcGISFeatureQueryResult, ArcGISFeatureObjectIds, ArcGISFeatureExtent } from "../arcgis-feature-query-types.js";
|
|
7
|
+
export { ArcGISFeatureQueryError } from "./arcgis-feature-query.js";
|
|
8
|
+
/** Runtime service loader for synchronous construction. */
|
|
9
|
+
export declare const ArcGISFeatureServerSourceLoaderWithParser: {
|
|
10
|
+
readonly dataType: ArcGISVectorSource;
|
|
11
|
+
readonly batchType: never;
|
|
12
|
+
readonly preload: undefined;
|
|
13
|
+
/** Supplies ArcGIS credentials after loading the selected implementation. */
|
|
14
|
+
readonly getAuthentications: () => (typeof ArcGISAuthentication)[];
|
|
15
|
+
readonly createDataSource: (url: string, options: ArcGISFeatureServerSourceLoaderOptions, coreApi?: CoreAPI) => ArcGISVectorSource;
|
|
16
|
+
readonly name: "ArcGISFeatureServer";
|
|
17
|
+
readonly id: "arcgis-feature-server";
|
|
18
|
+
readonly module: "arcgis";
|
|
19
|
+
readonly version: "0.0.0";
|
|
20
|
+
readonly extensions: [];
|
|
21
|
+
readonly mimeTypes: [];
|
|
22
|
+
readonly type: "arcgis-feature-server";
|
|
23
|
+
readonly fromUrl: true;
|
|
24
|
+
readonly fromBlob: false;
|
|
25
|
+
readonly options: {
|
|
26
|
+
readonly url: never;
|
|
27
|
+
readonly 'arcgis-feature-server': {};
|
|
28
|
+
};
|
|
29
|
+
readonly defaultOptions: {
|
|
30
|
+
readonly url: never;
|
|
31
|
+
readonly 'arcgis-feature-server': {};
|
|
32
|
+
};
|
|
33
|
+
readonly testURL: (url: string) => boolean;
|
|
34
|
+
};
|
|
35
|
+
/**
|
|
36
|
+
* ArcGIS FeatureServer
|
|
37
|
+
* Note - exports a big API, that could be exposed here if there is a use case
|
|
38
|
+
* @see https://developers.arcgis.com/rest/services-reference/enterprise/feature-service.htm
|
|
39
|
+
*/
|
|
40
|
+
export declare class ArcGISVectorSource extends DataSource<string, ArcGISFeatureServerSourceLoaderOptions> implements VectorSource {
|
|
41
|
+
/** Cached ArcGIS FeatureServer metadata request. */
|
|
42
|
+
protected formatSpecificMetadata: Promise<any> | null;
|
|
43
|
+
/** Creates a query source for a FeatureServer or queryable MapServer layer. */
|
|
44
|
+
constructor(url: string, options: ArcGISFeatureServerSourceLoaderOptions, coreApi?: CoreAPI);
|
|
45
|
+
/** Returns a schema inferred from ArcGIS FeatureServer metadata fields. */
|
|
46
|
+
getSchema(): Promise<Schema>;
|
|
47
|
+
/** Returns normalized VectorSource metadata. */
|
|
48
|
+
getMetadata(options?: {
|
|
49
|
+
formatSpecificMetadata?: boolean;
|
|
50
|
+
}): Promise<VectorSourceMetadata>;
|
|
51
|
+
/** Retrieves the complete filtered query, rejecting partial results before format conversion. */
|
|
52
|
+
getFeatures(parameters: GetFeaturesParameters): Promise<VectorSourceData>;
|
|
53
|
+
/** Collects a bounded query and returns explicit completeness evidence alongside its data. */
|
|
54
|
+
queryFeatures(parameters?: ArcGISFeatureQueryOptions): Promise<ArcGISFeatureQueryResult>;
|
|
55
|
+
/** Streams unique records with cumulative progress; breaking iteration stops subsequent work. */
|
|
56
|
+
queryFeaturePages(parameters?: ArcGISFeatureQueryOptions): AsyncGenerator<ArcGISFeatureQueryResult>;
|
|
57
|
+
/** Requests one page, explicitly marked incomplete regardless of the server transfer flag. */
|
|
58
|
+
queryFeaturePage(parameters?: ArcGISFeatureQueryOptions): Promise<ArcGISFeatureQueryResult>;
|
|
59
|
+
/** Returns the current count for the selected query filters. */
|
|
60
|
+
queryCount(parameters?: ArcGISFeatureQueryParameters): Promise<number>;
|
|
61
|
+
/** Returns object IDs with truncation information; use queryFeatures() for complete retrieval. */
|
|
62
|
+
queryObjectIds(parameters?: ArcGISFeatureQueryParameters): Promise<ArcGISFeatureObjectIds>;
|
|
63
|
+
/** Returns query bounds and their explicit spatial reference. */
|
|
64
|
+
queryExtent(parameters?: ArcGISFeatureQueryParameters): Promise<ArcGISFeatureExtent>;
|
|
65
|
+
/** Shares transport and query filters across summary and data operations. */
|
|
66
|
+
private createQueryClient;
|
|
67
|
+
/** Requests the raw ArcGIS FeatureServer metadata document. */
|
|
68
|
+
protected _getFormatSpecificMetadata(): Promise<any>;
|
|
69
|
+
/** Loads and caches the raw ArcGIS FeatureServer metadata. */
|
|
70
|
+
protected getFormatSpecificMetadata(): Promise<any>;
|
|
71
|
+
/** Builds a metadata URL for the ArcGIS FeatureServer endpoint. */
|
|
72
|
+
metadataURL(options?: {
|
|
73
|
+
parameters?: Record<string, unknown>;
|
|
74
|
+
}): string;
|
|
75
|
+
/** Builds a query URL from generic vector source parameters. */
|
|
76
|
+
getFeaturesURL(parameters: ArcGISFeatureQueryParameters): string;
|
|
77
|
+
/** Selects exactly one layer; service roots must not silently query an unspecified layer. */
|
|
78
|
+
private getLayerURL;
|
|
79
|
+
/** Applies source defaults and per-request filters consistently across all query operations. */
|
|
80
|
+
private getQueryParameters;
|
|
81
|
+
/** Builds an ArcGIS FeatureServer URL. */
|
|
82
|
+
protected getUrl(path: string, options: Record<string, unknown>, extra?: Record<string, unknown>): string;
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=arcgis-feature-server-source-loader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"arcgis-feature-server-source-loader.d.ts","sourceRoot":"","sources":["../../src/arcgis/arcgis-feature-server-source-loader.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,oBAAoB,EAAC,6BAA0B;AAEvD,OAAO,KAAK,EAEV,sCAAsC,EACvC,kCAA+B;AAEhC,OAAO,KAAK,EAAW,MAAM,EAAC,MAAM,oBAAoB,CAAC;AAKzD,OAAO,KAAK,EACV,OAAO,EACP,oBAAoB,EACpB,qBAAqB,EACrB,YAAY,EACZ,gBAAgB,EACjB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAC,UAAU,EAAC,MAAM,0BAA0B,CAAC;AAGpD,OAAO,KAAK,EACV,4BAA4B,EAC5B,yBAAyB,EACzB,wBAAwB,EACxB,sBAAsB,EACtB,mBAAmB,EACpB,yCAAsC;AACvC,OAAO,EAAC,uBAAuB,EAAC,kCAA+B;AAE/D,2DAA2D;AAC3D,eAAO,MAAM,yCAAyC;uBAEvB,kBAAkB;wBAC5B,KAAK;;IAExB,6EAA6E;;qCAGtE,MAAM,WACF,sCAAsC,YACrC,OAAO,KAChB,kBAAkB;;;;;;;;;;;;;;;;;;;CAC8B,CAAC;AAEtD;;;;GAIG;AACH,qBAAa,kBACX,SAAQ,UAAU,CAAC,MAAM,EAAE,sCAAsC,CACjE,YAAW,YAAY;IAEvB,oDAAoD;IACpD,SAAS,CAAC,sBAAsB,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAQ;IAE7D,+EAA+E;gBACnE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,sCAAsC,EAAE,OAAO,CAAC,EAAE,OAAO;IAI3F,2EAA2E;IACrE,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC;IAKlC,gDAAgD;IAC1C,WAAW,CACf,OAAO,GAAE;QAAC,sBAAsB,CAAC,EAAE,OAAO,CAAA;KAAM,GAC/C,OAAO,CAAC,oBAAoB,CAAC;IAahC,iGAAiG;IAC3F,WAAW,CAAC,UAAU,EAAE,qBAAqB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAuB/E,8FAA8F;IACxF,aAAa,CACjB,UAAU,GAAE,yBAA8B,GACzC,OAAO,CAAC,wBAAwB,CAAC;IAUpC,iGAAiG;IACjG,iBAAiB,CACf,UAAU,GAAE,yBAA8B,GACzC,cAAc,CAAC,wBAAwB,CAAC;IAI3C,8FAA8F;IAC9F,gBAAgB,CAAC,UAAU,GAAE,yBAA8B,GAAG,OAAO,CAAC,wBAAwB,CAAC;IAI/F,gEAAgE;IAChE,UAAU,CAAC,UAAU,GAAE,4BAAiC,GAAG,OAAO,CAAC,MAAM,CAAC;IAI1E,kGAAkG;IAClG,cAAc,CAAC,UAAU,GAAE,4BAAiC,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAI9F,iEAAiE;IACjE,WAAW,CAAC,UAAU,GAAE,4BAAiC,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAIxF,6EAA6E;IAC7E,OAAO,CAAC,iBAAiB;IASzB,+DAA+D;cAC/C,0BAA0B;IAM1C,8DAA8D;cAC9C,yBAAyB,IAAI,OAAO,CAAC,GAAG,CAAC;IAQzD,mEAAmE;IACnE,WAAW,CAAC,OAAO,CAAC,EAAE;QAAC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAC,GAAG,MAAM;IAIrE,gEAAgE;IAChE,cAAc,CAAC,UAAU,EAAE,4BAA4B,GAAG,MAAM;IAQhE,6FAA6F;IAC7F,OAAO,CAAC,WAAW;IAsBnB,gGAAgG;IAChG,OAAO,CAAC,kBAAkB;IAqC1B,0CAA0C;IAC1C,SAAS,CAAC,MAAM,CACd,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,MAAM;CAGV"}
|