import FeatureLayer from '@arcgis/core/layers/FeatureLayer'; import Query from '@arcgis/core/rest/support/Query'; import Graphic from '@arcgis/core/Graphic'; const queryAllFeatures = async ( layer: FeatureLayer, baseQuery: Partial, pageSize = 2000 ): Promise => { const allFeatures: Graphic[] = []; let resultOffset = 0; let hasMore = true; while (hasMore) { const query = layer.createQuery(); Object.assign(query, baseQuery); (query as any).resultOffset = resultOffset; // ArcGIS supports this, but it's not in TS type (query as any).resultRecordCount = pageSize; const result = await layer.queryFeatures(query); allFeatures.push(...result.features); hasMore = result.exceededTransferLimit === true; resultOffset += pageSize; } return allFeatures; }; export default queryAllFeatures;