@vertigis/arcgis-extensions 34.7.0 → 35.0.2

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 (231) hide show
  1. package/AppConfig.schema.json +8 -4
  2. package/ItemType.js +1 -1
  3. package/LanguageResources.js +1 -1
  4. package/data/ArcGISServiceTableExtension.js +1 -1
  5. package/data/Attachment.js +1 -1
  6. package/data/Feature.js +1 -1
  7. package/data/FeatureList.js +1 -1
  8. package/data/FeatureSet.js +1 -1
  9. package/data/FeatureSettings.js +1 -1
  10. package/data/FeatureSourceBase.js +1 -1
  11. package/data/FeatureStream.js +1 -1
  12. package/data/FieldExtension.js +1 -1
  13. package/data/Schema.js +1 -1
  14. package/data/Table.js +1 -1
  15. package/data/_TableExtension.js +1 -1
  16. package/data/convert.js +1 -1
  17. package/data/support/attachments.js +1 -1
  18. package/declarations/arcgis-js-api-extensions/index.d.ts +11 -120
  19. package/docs/html/assets/search.js +1 -1
  20. package/docs/html/classes/data_FeatureStream.FeatureStream.html +1 -1
  21. package/docs/html/classes/mapping_ArcGISSublayerExtension.ArcGISSublayerExtension.html +5 -3
  22. package/docs/html/classes/mapping_ArcGISSublayerExtension.ArcGISSublayerSchema.html +1 -1
  23. package/docs/html/classes/mapping_BuildingComponentSublayerExtension.BuildingComponentSublayerExtension.html +18 -16
  24. package/docs/html/classes/mapping_BuildingComponentSublayerExtension.BuildingComponentSublayerSchema.html +5 -5
  25. package/docs/html/classes/mapping_BuildingGroupSublayerExtension.BuildingGroupSublayerExtension.html +5 -3
  26. package/docs/html/classes/mapping_BuildingGroupSublayerExtension.BuildingGroupSublayerSchema.html +2 -2
  27. package/docs/html/classes/mapping_BuildingSublayerExtension.BuildingSublayerExtension.html +5 -3
  28. package/docs/html/classes/mapping_BuildingSublayerExtension.BuildingSublayerSchema.html +2 -2
  29. package/docs/html/classes/mapping_KMLSublayerExtension.KMLSublayerExtension.html +5 -3
  30. package/docs/html/classes/mapping_MapImageSublayerExtension.MapImageSublayerExtension.html +5 -3
  31. package/docs/html/classes/mapping_TileSublayerExtension.TileSublayerExtension.html +5 -3
  32. package/docs/html/classes/mapping_WMSSublayerExtension.WMSSublayerExtension.html +5 -3
  33. package/docs/html/classes/mapping_WMTSSublayerExtension.WMTSSublayerExtension.html +5 -3
  34. package/docs/html/classes/mapping__SublayerExtension.SubSublayerExtensionCollection.html +6 -6
  35. package/docs/html/classes/mapping__SublayerExtension.SublayerExtension.html +5 -3
  36. package/docs/html/classes/mapping__SublayerExtension.SublayerSchema.html +2 -2
  37. package/docs/html/classes/tasks_identify_BuildingComponentSublayerClientSideIdentifyProvider.BuildingComponentSublayerClientSideIdentifyProvider.html +2 -2
  38. package/docs/html/classes/tasks_identify_BuildingComponentSublayerHitTestIdentifyProvider.BuildingComponentSublayerHitTestIdentifyProvider.html +4 -4
  39. package/docs/html/classes/tasks_identify_CSVLayer3DHitTestIdentifyProvider.CSVLayer3DHitTestIdentifyProvider.html +4 -4
  40. package/docs/html/classes/tasks_identify_ClientSideIdentifyProvider.ClientSideIdentifyProvider.html +2 -2
  41. package/docs/html/classes/tasks_identify_FeatureLayer3DHitTestIdentifyProvider.FeatureLayer3DHitTestIdentifyProvider.html +4 -4
  42. package/docs/html/classes/tasks_identify_FeatureLayerClientSideIdentifyProvider.FeatureLayerClientSideIdentifyProvider.html +2 -2
  43. package/docs/html/classes/tasks_identify_HitTestIdentifyProvider.HitTestIdentifyProvider.html +6 -6
  44. package/docs/html/classes/tasks_identify_PointCloudLayerHitTestIdentifyProvider.PointCloudLayerHitTestIdentifyProvider.html +4 -4
  45. package/docs/html/classes/tasks_identify_SceneLayerClientSideIdentifyProvider.SceneLayerClientSideIdentifyProvider.html +2 -2
  46. package/docs/html/classes/tasks_identify_SceneLayerHitTestIdentifyProvider.SceneLayerHitTestIdentifyProvider.html +3 -3
  47. package/docs/html/classes/tasks_identify_StreamLayerClientSideQueryIdentifyProvider.StreamLayerClientSideQueryIdentifyProvider.html +2 -2
  48. package/docs/html/classes/tasks_query_BuildingComponentSublayerClientSideQueryProvider.BuildingComponentSublayerClientSideQueryProvider.html +6 -3
  49. package/docs/html/classes/tasks_query_ClientSideQueryProvider.ClientSideQueryProvider.html +6 -3
  50. package/docs/html/classes/tasks_query_QueryService.QueryService.html +3 -3
  51. package/docs/html/classes/tasks_query_SceneLayerClientSideQueryProvider.SceneLayerClientSideQueryProvider.html +6 -3
  52. package/docs/html/classes/tasks_query_SceneLayerQueryProvider.SceneLayerQueryProvider.html +2 -2
  53. package/docs/html/classes/tasks_query_StreamLayerClientSideQueryProvider.StreamLayerClientSideQueryProvider.html +4 -4
  54. package/docs/html/classes/utilities_asyncIterable.AsyncQueue.html +1 -1
  55. package/docs/html/classes/utilities_geometry.CoordinateSystemBounds.html +1 -1
  56. package/docs/html/enums/support_esri.WellKnownBasemap.html +1 -1
  57. package/docs/html/interfaces/data__TableExtension.TableExtensionProperties.html +1 -1
  58. package/docs/html/interfaces/data_support_attachments.AttachmentEnabledLayer.html +2 -2
  59. package/docs/html/interfaces/mapping_BuildingComponentSublayerExtension.BuildingComponentSublayerExtensionProperties.html +1 -1
  60. package/docs/html/interfaces/portal_Domain.DomainBase.html +1 -1
  61. package/docs/html/interfaces/portal_ImageServiceLayer.ImageServiceLayer-1.html +17 -17
  62. package/docs/html/interfaces/portal_Item.Item-1.html +48 -48
  63. package/docs/html/interfaces/portal_LayerDefinition.FieldOverride.html +3 -3
  64. package/docs/html/interfaces/portal_LayerDefinition.LayerDefinition-1.html +49 -50
  65. package/docs/html/interfaces/portal_LayerDefinition.LayerDefinitionDefaults.html +8 -8
  66. package/docs/html/interfaces/portal_LayerDefinition.LayerTimeInfo.html +9 -9
  67. package/docs/html/interfaces/portal_LayerDefinition.OrderByClause.html +9 -5
  68. package/docs/html/interfaces/portal_LayerDefinition.TimeInfoExportOptions.html +4 -4
  69. package/docs/html/interfaces/portal_PopupInfo.OrderByFields.html +2 -2
  70. package/docs/html/interfaces/portal_PopupInfo.PopupElement.html +5 -5
  71. package/docs/html/interfaces/portal_PopupInfo.PopupInfo-1.html +8 -8
  72. package/docs/html/interfaces/portal_PopupInfo.RelatedRecordsInfo.html +2 -2
  73. package/docs/html/interfaces/support_esri.AccessorLike.html +4 -4
  74. package/docs/html/interfaces/support_esri.ChangeEvent.html +4 -4
  75. package/docs/html/interfaces/support_esri.LayerWithSublayers.html +1 -1
  76. package/docs/html/interfaces/support_esri.PointCloudLayerCachedStatistics.html +1 -1
  77. package/docs/html/interfaces/support_esri.PointCloudLayerCachedStatisticsFrequentValues.html +1 -1
  78. package/docs/html/interfaces/support_esri.PointCloudLayerCachedStatisticsHistogram.html +1 -1
  79. package/docs/html/interfaces/support_esri.PointCloudLayerCachedStatisticsLabel.html +1 -1
  80. package/docs/html/interfaces/support_esri.PointCloudLayerCachedStatisticsLabels.html +1 -1
  81. package/docs/html/interfaces/support_esri.PointCloudLayerCachedStatisticsStats.html +1 -1
  82. package/docs/html/interfaces/support_esri.SublayerLike.html +14 -14
  83. package/docs/html/interfaces/utilities_geometry.GeoJSONLineString.html +2 -2
  84. package/docs/html/interfaces/utilities_geometry.GeoJSONMultiLineString.html +2 -2
  85. package/docs/html/interfaces/utilities_geometry.GeoJSONMultiPoint.html +2 -2
  86. package/docs/html/interfaces/utilities_geometry.GeoJSONMultiPolygon.html +2 -2
  87. package/docs/html/interfaces/utilities_geometry.GeoJSONPoint.html +2 -2
  88. package/docs/html/interfaces/utilities_geometry.GeoJSONPolygon.html +2 -2
  89. package/docs/html/interfaces/utilities_geometry.GeographicTransformationJson.html +1 -1
  90. package/docs/html/interfaces/utilities_geometry.GeographicTransformationStepJson.html +3 -3
  91. package/docs/html/interfaces/utilities_geometry.GmlOptions.html +3 -3
  92. package/docs/html/modules/data_convert.html +5 -5
  93. package/docs/html/modules/mapping_MapExtension.html +1 -1
  94. package/docs/html/modules/portal_Domain.Domain.html +6 -6
  95. package/docs/html/modules/portal_Domain.DomainType.html +2 -2
  96. package/docs/html/modules/portal_Domain.html +2 -2
  97. package/docs/html/modules/portal_ImageServiceLayer.ImageServiceLayer.html +1 -1
  98. package/docs/html/modules/portal_LayerDefinition.LayerDefinition.html +2 -2
  99. package/docs/html/modules/portal_LayerDefinition.LayerDefinitionCapabilities.html +6 -6
  100. package/docs/html/modules/portal_LayerDefinition.html +2 -2
  101. package/docs/html/modules/portal_PopupInfo.PopupInfo.html +1 -1
  102. package/docs/html/modules/portal_PopupInfo.html +1 -1
  103. package/docs/html/modules/support__query.html +2 -2
  104. package/docs/html/modules/support_esri.html +10 -10
  105. package/docs/html/modules/utilities_esri.html +2 -2
  106. package/docs/html/modules/utilities_geometry.html +25 -25
  107. package/docs/html/modules/version.html +1 -1
  108. package/layer-preset/LayerPreset.js +1 -1
  109. package/locale/language.js +1 -1
  110. package/mapping/ArcGISSublayerExtension.js +1 -1
  111. package/mapping/BasemapExtension.js +1 -1
  112. package/mapping/BuildingComponentSublayerExtension.d.ts +1 -0
  113. package/mapping/BuildingComponentSublayerExtension.js +1 -1
  114. package/mapping/BuildingSceneLayerExtension.js +1 -1
  115. package/mapping/BuildingSublayerExtension.js +1 -1
  116. package/mapping/CSVLayerExtension.js +1 -1
  117. package/mapping/FeatureCollectionLayerExtension.js +1 -1
  118. package/mapping/FeatureLayerExtension.js +1 -1
  119. package/mapping/FeatureLayerExtensionBase.js +1 -1
  120. package/mapping/GraphicsLayerExtension.js +1 -1
  121. package/mapping/GroundExtension.js +1 -1
  122. package/mapping/GroupLayerExtension.js +1 -1
  123. package/mapping/ImageryLayerExtension.js +1 -1
  124. package/mapping/ImageryTileLayerExtension.js +1 -1
  125. package/mapping/KMLLayerExtension.js +1 -1
  126. package/mapping/KMLSublayerExtension.js +1 -1
  127. package/mapping/MapExtension.js +1 -1
  128. package/mapping/MapImageLayerExtension.js +1 -1
  129. package/mapping/MapImageSublayerExtension.js +1 -1
  130. package/mapping/PointCloudLayerExtension.js +1 -1
  131. package/mapping/SceneLayerExtension.js +1 -1
  132. package/mapping/StreamLayerExtension.js +1 -1
  133. package/mapping/WMTSLayerExtension.js +1 -1
  134. package/mapping/WMTSSublayerExtension.js +1 -1
  135. package/mapping/_LayerExtension.js +1 -1
  136. package/mapping/_SublayerExtension.d.ts +4 -0
  137. package/mapping/_SublayerExtension.js +1 -1
  138. package/mapping/support/LayerListSettings.js +1 -1
  139. package/mapping/support/WfsCapabilities.js +1 -1
  140. package/mapping/support/_LayerExtensionCollection.js +1 -1
  141. package/mapping/support/_SublayerExtensionCollection.js +1 -1
  142. package/mapping/support/layers.js +1 -1
  143. package/mapping/support/ogc.js +1 -1
  144. package/menus/Menu.js +1 -1
  145. package/menus/MenuItem.js +1 -1
  146. package/package.json +4 -3
  147. package/portal/BaseMap.js +1 -1
  148. package/portal/Domain.d.ts +1 -1
  149. package/portal/DrawingInfo.js +1 -1
  150. package/portal/FeatureLayer.js +1 -1
  151. package/portal/ImageServiceLayer.d.ts +1 -1
  152. package/portal/IntegratedMeshLayer.js +1 -1
  153. package/portal/Layer.js +1 -1
  154. package/portal/LayerDefinition.d.ts +7 -4
  155. package/portal/LayerDefinition.js +1 -1
  156. package/portal/Lighting.js +1 -1
  157. package/portal/MapServiceLayer.js +1 -1
  158. package/portal/PointCloudLayer.js +1 -1
  159. package/portal/PopupInfo.js +1 -1
  160. package/portal/Slide.js +1 -1
  161. package/portal/Symbol.js +1 -1
  162. package/portal/Table.js +1 -1
  163. package/portal/TiledImageServiceLayer.js +1 -1
  164. package/portal/TiledMapServiceLayer.js +1 -1
  165. package/portal/WebMap.js +1 -1
  166. package/portal/WebScene.js +1 -1
  167. package/portal/Widgets.js +1 -1
  168. package/support/ArcGISRequestHelper.js +1 -1
  169. package/support/Cancellable.js +1 -1
  170. package/support/Observable.js +1 -1
  171. package/support/Serializable.js +1 -1
  172. package/support/Settings.js +1 -1
  173. package/support/_ArcGISRelationshipCollection.js +1 -1
  174. package/support/_query.js +1 -1
  175. package/support/esri.d.ts +2 -0
  176. package/support/utilities.js +1 -1
  177. package/tasks/geocoding/ArcGISGeocoder.js +1 -1
  178. package/tasks/geocoding/utilities.js +1 -1
  179. package/tasks/identify/BuildingComponentSublayerClientSideIdentifyProvider.js +1 -1
  180. package/tasks/identify/BuildingComponentSublayerHitTestIdentifyProvider.js +1 -1
  181. package/tasks/identify/CSVLayer3DHitTestIdentifyProvider.js +1 -1
  182. package/tasks/identify/CSVLayerClientSideQueryIdentifyProvider.js +1 -1
  183. package/tasks/identify/ClientSideIdentifyProvider.js +1 -1
  184. package/tasks/identify/FeatureLayer3DHitTestIdentifyProvider.js +1 -1
  185. package/tasks/identify/FeatureLayerClientSideIdentifyProvider.js +1 -1
  186. package/tasks/identify/FeatureLayerQueryIdentifyProvider.js +1 -1
  187. package/tasks/identify/HitTestIdentifyProvider.js +1 -1
  188. package/tasks/identify/IdentifyProviderBase.js +1 -1
  189. package/tasks/identify/IdentifyService.js +1 -1
  190. package/tasks/identify/ImageryLayerIdentifyProvider.js +1 -1
  191. package/tasks/identify/PointCloudLayerHitTestIdentifyProvider.js +1 -1
  192. package/tasks/identify/SceneLayerHitTestIdentifyProvider.js +1 -1
  193. package/tasks/identify/SceneLayerQueryIdentifyProvider.js +1 -1
  194. package/tasks/identify/StreamLayerClientSideQueryIdentifyProvider.js +1 -1
  195. package/tasks/identify/WMSSublayerIdentifyProvider.js +1 -1
  196. package/tasks/identify/_utilities.js +1 -1
  197. package/tasks/query/ArcGISRelationship.js +1 -1
  198. package/tasks/query/BuildingComponentSublayerClientSideQueryProvider.js +1 -1
  199. package/tasks/query/CSVLayerClientSideQueryProvider.js +1 -1
  200. package/tasks/query/ClientSideQueryProvider.d.ts +5 -0
  201. package/tasks/query/ClientSideQueryProvider.js +1 -1
  202. package/tasks/query/FeatureLayerQueryProvider.js +1 -1
  203. package/tasks/query/ImageryLayerQueryProvider.js +1 -1
  204. package/tasks/query/QueryService.js +1 -1
  205. package/tasks/query/SceneLayerClientSideQueryProvider.js +1 -1
  206. package/tasks/query/SceneLayerQueryProvider.js +1 -1
  207. package/tasks/query/StreamLayerClientSideQueryProvider.d.ts +4 -0
  208. package/tasks/query/StreamLayerClientSideQueryProvider.js +1 -1
  209. package/tasks/search/ArcGISGeocoderSearchProvider.js +1 -1
  210. package/tasks/search/GeocoderSearchProvider.js +1 -1
  211. package/tasks/search/QuerySearchProvider.js +1 -1
  212. package/tasks/search/SearchService.js +1 -1
  213. package/tasks/search/_utilities.js +1 -1
  214. package/utilities/_layers.js +1 -1
  215. package/utilities/arcade.js +1 -1
  216. package/utilities/checkArg.js +1 -1
  217. package/utilities/date.js +1 -1
  218. package/utilities/esri.js +1 -1
  219. package/utilities/extensions.js +1 -1
  220. package/utilities/geometry.js +1 -1
  221. package/utilities/mapping.js +1 -1
  222. package/utilities/number.js +1 -1
  223. package/utilities/portal.js +1 -1
  224. package/utilities/query.js +1 -1
  225. package/utilities/renderers.js +1 -1
  226. package/utilities/scaleRanges.js +1 -1
  227. package/utilities/string.js +1 -1
  228. package/utilities/symbol.js +1 -1
  229. package/utilities/watch.js +1 -1
  230. package/version.d.ts +1 -1
  231. package/version.js +1 -1
package/data/convert.js CHANGED
@@ -1 +1 @@
1
- import Point from"@arcgis/core/geometry/Point";import SpatialReference from"@arcgis/core/geometry/SpatialReference";import{translate}from"../locale/language.js";import{toEsriApiGeometry,toPortalGeometry}from"../portal/Geometry.js";import{checkArg,assertNever}from"../utilities/checkArg.js";import{parse as parseDate,format as formatDate,DEFAULT_PARSING_FORMATS,DateFormat,INVALID_DATE}from"../utilities/date.js";import{esriToWKT,esriToGeoJSON,geoJSONToEsri,wktToEsri,esriWkidToWkt,esriWktToWkid,project,isPoint,isMultipoint,isPolyline,isPolygon,isExtent}from"../utilities/geometry.js";import{getLogger}from"../utilities/log.js";import{parse as parseNumber,format as formatNumber,NumberFormat,isNumeric}from"../utilities/number.js";import{Feature}from"./Feature.js";import{FeatureSet}from"./FeatureSet.js";const FORMULA_TRIGGER_CHARS=["=","-","+","@"],QUOTE='"',FIELD_NAME_REGEX=/[^a-zA-Z\d_]/g,DEFAULT_WINDOWS_ROW_DELIMITER="\r\n",DEFAULT_UNIX_ROW_DELIMITER="\n",DEFAULT_SHEET_NAME="sheet1",DEFAULT_EXCEL_DATE_FORMATS=[...DEFAULT_PARSING_FORMATS.map(_convertToExcelDateFormatString),"M/d/yy"],shapefileNameRegex=/(\w+)_(point|multipoint|polyline|polygon)z?/;var DBaseTypes;function _getConvertLogger(){return getLogger("geocortex.api.data.convert")}!function(e){e.DATE="D",e.NUMBER="N",e.STRING="C",e.BOOLEAN="L"}(DBaseTypes||(DBaseTypes={}));export var GeometryFormat;!function(e){e.NONE="NONE",e.WKT="WKT",e.XY="XY",e.XYZ="XYZ",e.LAT_LON="LAT_LONG",e.GEO_JSON="GEO_JSON",e.ARCGIS_JSON="ARCGIS_JSON"}(GeometryFormat||(GeometryFormat={}));export async function toCsv(e,t){checkArg("featureSet",e).isNotMissing();const r=Array.from(e),o={...{useFormattedValues:!1,alwaysQuote:!1,escapeFormulaChars:!0,delimiter:",",dateFormat:DateFormat.ROUND_TRIP,geometryFormat:r.some((e=>void 0!==e.geometry&&null!==e.geometry))?GeometryFormat.WKT:GeometryFormat.NONE,includeByteOrderMark:!0,outSpatialReference:SpatialReference.WGS84,includeHeaderRow:!0,outFields:_getDefaultOutFields(e.source),rowDelimiter:navigator.platform.startsWith("Win")?"\r\n":"\n"},...t},{includeByteOrderMark:a,includeHeaderRow:n,delimiter:i,outFields:s,rowDelimiter:m}=o,l=[];a&&l.push("\ufeff");const u=_getGeometryColumns(r,o),c=_getAttributeColumns(r,s,e.schema,!0),f=_getAttributeColumns(r,s,e.schema,!1);if(n){const e=[];for(const t of u)e.push(_quotify(t,o));for(const t of c)e.push(_quotify(t,o));for(const t of f)e.push(_quotify(t,o));const t=e.join(i)+m;l.push(t)}await Promise.all(r.map((async e=>{const t=[],r=(t,r)=>_quotify(_stringify(_getAttributeValue(e,t,r),r),r);t.push(...await _getCSVGeometry(e.geometry,o)),t.push(...c.map((e=>r(e,o)))),t.push(...f.map((e=>r(e,o))));const a=`${t.join(i)}${m}`;l.push(a)})));return new Blob(l,{type:"text/plain",endings:"\n"===m||"\r\n"===m?"transparent":"native"})}export async function csvToFeatureSet(e,t){let r;if(checkArg("csvData",e).isNotMissing(),e instanceof Blob){const t=new Promise(((t,r)=>{const o=new FileReader;o.onload=()=>{t(o.result)},o.onerror=()=>{r(o.error)},o.readAsText(e)}));r=await t}else r=e;const o={...{delimiter:",",escapeFormulaChars:!0,includeHeaderRow:!0,outFields:["*"],inSpatialReference:SpatialReference.WGS84,generatePrimaryKey:!0,primaryKeyField:"OBJECTID"},...t,detectOid:!(null==t?void 0:t.primaryKeyField)},a=_parseCSV(r,o.rowDelimiter||_parseRowDelimiter(r),o.delimiter),n=_parseGeometries(a,o),i=_parseSchema(a,n,o),s=await _parseFeatures(a,n,i,o);return new FeatureSet({features:s,schema:i})}export async function toXLSX(e,t){var r;checkArg("featureSet",e).isNotMissing();const o=Array.from(e),a={...{useFormattedValues:!1,includeHeaderRow:!0,escapeFormulaChars:!0,geometryFormat:o.some((e=>void 0!==e.geometry&&null!==e.geometry))?GeometryFormat.WKT:GeometryFormat.NONE,outFields:_getDefaultOutFields(e.source),outSpatialReference:SpatialReference.WGS84,dateFormat:DateFormat.DEFAULT,numberFormat:NumberFormat.DEFAULT,sheetName:"sheet1"},...t},{outFields:n,includeHeaderRow:i,numberFormat:s}=a,m=[],l=_getGeometryColumns(o,a),u=_getAttributeColumns(o,n,e.schema,!0),c=_getAttributeColumns(o,n,e.schema,!1);if(i){const t=l.concat(u).concat(_getXlsxColumnName(c,e.source));m.push(t)}await Promise.all(o.map((async e=>{const t=[];t.push(...await _getGeometry(e.geometry,a));for(const r of u){const o=_toXLSXValue(e.attributes.get(r),a);t.push(o)}for(const r of c){const o=_toXLSXValue(_getAttributeValue(e,r,a),a);t.push(o)}m.push(t)})));const f=await import("xlsx"),p={SheetNames:[],Sheets:{}},d=f.utils.aoa_to_sheet(m,{cellDates:!0});for(const e of Object.keys(d).filter((e=>!e.startsWith("!")))){const t=d[e];"d"===t.t?t.z=_convertToExcelDateFormatString(null!==(r=a.dateFormat)&&void 0!==r?r:DateFormat.ROUND_TRIP):"n"===t.t&&(t.z=_convertToExcelNumberFormatString(s))}p.SheetNames.push(a.sheetName),p.Sheets[a.sheetName]=d;const y=f.write(p,{type:"binary",bookType:"xlsx",compression:!0,bookSST:!0,cellDates:!0}),g=new Uint8Array(y.length);for(let e=0;e<y.length;e++)g[e]=y.charCodeAt(e);return new Blob([g.buffer],{type:"text/plain"})}export async function xlsxToFeatureSet(e,t){checkArg("xlsxData",e).isNotMissing();const r={...{includeHeaderRow:!0,escapeFormulaChars:!0,outFields:["*"],inSpatialReference:SpatialReference.WGS84,generatePrimaryKey:!0,primaryKeyField:"OBJECTID"},...t,detectOid:!(null==t?void 0:t.primaryKeyField)},o=await _parseXLSX(e,r),a=_parseGeometries(o,r),n=_parseSchema(o,a,r),i=await _parseFeatures(o,a,n,r);return new FeatureSet({features:i,schema:n})}export async function toShapefile(e,t){checkArg("featureSet",e).isNotMissing();const[{default:r},o]=await Promise.all([import("jszip"),import("../forked-libs/shp-write/index.js")]),a=Array.from(e),n={...{useFormattedValues:!1,outFields:_getDefaultOutFields(e.source),fileName:e.title||"export"},...t},{outFields:i,outSpatialReference:s,fileName:m}=n,l=e=>e.geometry.hasZ||e.geometry.hasM,u=new Map,c=a.filter((e=>isPoint(e.geometry)));u.set("POINTZ",c.filter(l)),u.set("POINT",c.filter((e=>!l(e))));const f=a.filter((e=>isMultipoint(e.geometry)));u.set("MULTIPOINTZ",f.filter(l)),u.set("MULTIPOINT",f.filter((e=>!l(e))));const p=a.filter((e=>isPolyline(e.geometry)));u.set("POLYLINEZ",p.filter(l)),u.set("POLYLINE",p.filter((e=>!l(e))));const d=a.filter((e=>isPolygon(e.geometry)||isExtent(e.geometry)));u.set("POLYGONZ",d.filter(l)),u.set("POLYGON",d.filter((e=>!l(e))));const y=_getAttributeColumns(a,i,e.schema,!0);let g=_getAttributeColumns(a,i,e.schema,!1);g=y.concat(g);const h=new r,F=Array.from(u.keys()).filter((e=>u.get(e).length>0));await Promise.all(F.map((async t=>{const r=u.get(t),a=await Promise.all(r.map((e=>_projectGeometry(e.geometry,s)))),i=await _getDBaseSpatialReferenceWKT(a),l=n.useFormattedValues?Object.assign({},...g.map((e=>({[e]:DBaseTypes.STRING})))):_getDBaseColumnTypes(r,g,e.schema,"timestamp"===n.dateFormat),c=_getDBaseGeometries(a),f=_getDbaseValues(r,g,l,n);o.write(f,t,c,((e,r)=>{const o=F.length>1?`${m}_${t.toLowerCase()}`:m;h.file(`${o}.shp`,r.shp.buffer,{binary:!0}),h.file(`${o}.shx`,r.shx.buffer,{binary:!0}),h.file(`${o}.dbf`,r.dbf.buffer,{binary:!0}),h.file(`${o}.prj`,i)}))})));const _=await h.generateAsync({type:"uint8array"});return new Blob([_.buffer],{type:"text/plain"})}export async function shapefileToFeatureSet(e,t){checkArg("shapefileData",e).isNotMissing();const r={outFields:["*"],includeHeaderRow:!0,generatePrimaryKey:!0,primaryKeyField:"OBJECTID",...t,detectOid:!(null==t?void 0:t.primaryKeyField)},o=new Promise(((t,r)=>{const o=new FileReader;o.onload=()=>{t(o.result)},o.onerror=()=>{r(o.error)},o.readAsArrayBuffer(e)})),[{default:a},n]=await Promise.all([import("jszip"),import("shpjs")]),i=await o,s=await a.loadAsync(new Uint8Array(i)),m=s.filter((()=>!0)).map((e=>e.name));let l,u=m.filter((e=>e.endsWith(".shp"))).map((e=>e.substring(0,e.length-4)));if(u=_parseShapefileNames(u),m.some((e=>e.endsWith(".prj")))&&!u.every((e=>m.includes(`${e}.prj`))))throw new Error("Shapefile zip must contain the same prj file for each separate shapefile");await Promise.all(m.filter((e=>e.endsWith(".prj"))).map((async e=>{const t=await s.file(e).async("string");if(l){if(t!==l)throw new Error("Shapefile zip must contain the same prj file for each separate shapefile")}else l=t})));const c={geometries:[],columnCount:0,columnIndex:0};let f=[];for(const e of u){if(!m.includes(`${e}.shx`)||!m.includes(`${e}.dbf`))throw new Error("Shapefile must contain shp, shx, and dbf files.");const t=await s.file(`${e}.shp`).async("uint8array"),r=n.parseShp(t),o=await s.file(`${e}.dbf`).async("uint8array"),a=n.parseDbf(o);if(a.length!==r.length)throw new Error("Shapefile must contain shp, shx, and dbf files.");const i=await Promise.all(r.map((e=>_parseShpGeometry(e,l))));c.geometries=c.geometries.concat(i),f=f.concat(a)}const p=_parseDBaseData(f),d=_parseSchema(p,c,r),y=await _parseFeatures(p,c,d,r);return new FeatureSet({features:y,schema:d})}function _getGeometryColumns(e,t){return t.geometryFormat===GeometryFormat.XYZ?["x","y","z"]:t.geometryFormat===GeometryFormat.XY?["x","y"]:t.geometryFormat===GeometryFormat.LAT_LON?["latitude","longitude"]:t.geometryFormat===GeometryFormat.NONE?[]:["geometry"]}function _getAttributeColumns(e,t,r,o){const a=r.fields.filter((e=>"oid"===e.type)).map((e=>e.name)).toArray();if(o)return a;if(t&&!t.includes("*"))return t.filter((e=>!a.includes(e)));{const t=r.fields.filter((e=>"oid"!==e.type)).map((e=>e.name)).toArray();let o=[];for(const r of e)for(const e of r.attributes.keys())t.includes(e)||a.includes(e)||o.includes(e)||o.push(e);return o=o.sort(),t.concat(o)}}function _getXlsxColumnName(e,t){var r;const o=null===(r=null==t?void 0:t.schema)||void 0===r?void 0:r.fieldExtensions.initializedItems.map((e=>e.field));return e.map((e=>{var t,r;return null!==(r=null===(t=null==o?void 0:o.find((t=>t.name===e)))||void 0===t?void 0:t.alias)&&void 0!==r?r:e}))}function _getDefaultOutFields(e){var t,r,o,a,n,i,s,m;if(!e)return["*"];const l=null===(t=e.featureSettings.popupTemplate)||void 0===t?void 0:t.content,u=Array.isArray(l)?null===(a=null===(o=null===(r=l.find((e=>"fields"===e.type)))||void 0===r?void 0:r.fieldInfos)||void 0===o?void 0:o.filter((e=>e.visible)))||void 0===a?void 0:a.map((e=>e.fieldName)):void 0;return null!==(m=null!=u?u:null===(s=null===(i=null===(n=e.featureSettings.popupTemplate)||void 0===n?void 0:n.fieldInfos)||void 0===i?void 0:i.filter((e=>e.visible)))||void 0===s?void 0:s.map((e=>e.fieldName)))&&void 0!==m?m:["*"]}async function _getCSVGeometry(e,t){let r=await _getGeometry(e,t);return t.geometryFormat!==GeometryFormat.XYZ&&t.geometryFormat!==GeometryFormat.XY&&t.geometryFormat!==GeometryFormat.LAT_LON||(r=r.map((e=>void 0===e?"":_stringify(e,t)))),r.map((e=>""===e?"":_quotify(e,t)))}async function _getGeometry(e,t){const r=await _projectGeometry(e,t.outSpatialReference);if(t.geometryFormat===GeometryFormat.XYZ){if(!r)return["","",""];if(!isPoint(r))throw new Error("Cannot use geometry format XYZ with non-point geometry");return[r.x,r.y,r.z]}if(t.geometryFormat===GeometryFormat.XY){if(!r)return["",""];if(!isPoint(r))throw new Error("Cannot use geometry format XY with non-point geometry");return[r.x,r.y]}if(t.geometryFormat===GeometryFormat.LAT_LON){if(!r)return["",""];if(!isPoint(r))throw new Error("Cannot use geometry format LAT_LONG with non-point geometry");return[r.y,r.x]}return t.geometryFormat===GeometryFormat.ARCGIS_JSON?r?[JSON.stringify(toPortalGeometry(r))]:[""]:t.geometryFormat===GeometryFormat.WKT?r?[esriToWKT(r)]:[""]:t.geometryFormat===GeometryFormat.GEO_JSON?r?[JSON.stringify(esriToGeoJSON(r))]:[""]:[]}async function _projectGeometry(e,t){return(null==e?void 0:e.spatialReference)&&!e.spatialReference.equals(t)&&t?(await project([e],t))[0]:e}function _quotify(e,t){const r=[t.delimiter,'"',"\r","\n",t.rowDelimiter];if(t.alwaysQuote||r.some((t=>e.includes(t)))){return`"${e.replace(new RegExp('"',"g"),'""')}"`}return e}function _stringify(e,t){if(null==e)return"";if(!t.useFormattedValues){if("number"==typeof e){const r=t.numberFormat||NumberFormat.ROUND_TRIP;return formatNumber(r,e)}if(e instanceof Date)return"timestamp"===t.dateFormat?e.getTime().toString():formatDate({format:t.dateFormat,timeZone:"UTC"},e)}let r=e.toString();return t.escapeFormulaChars&&(r=escapeFormulaChars(r)),r}function _getAttributeValue(e,t,r){var o,a,n;if(r.useFormattedValues||_hasCodedDomain(e,t))return null!==(o=e.presentableAttributes.get(t))&&void 0!==o?o:e.attributes.get(t);if("date"===(null===(a=e.schema.findFieldByName(t))||void 0===a?void 0:a.type)){const r=parseDate(e.attributes.get(t));if(!isNaN(r.getTime()))return r}return null!==(n=e.attributes.get(t))&&void 0!==n?n:e.presentableAttributes.get(t)}function _hasCodedDomain(e,t){var r,o,a,n,i;return t===e.schema.typeIdField||("coded-value"===(null===(a=null===(o=null===(r=e.type)||void 0===r?void 0:r.domains)||void 0===o?void 0:o[t])||void 0===a?void 0:a.type)||"coded-value"===(null===(i=null===(n=e.schema.findFieldByName(t))||void 0===n?void 0:n.domain)||void 0===i?void 0:i.type))}function escapeFormulaChars(e){for(const t of FORMULA_TRIGGER_CHARS)if(e.startsWith(t))return`\t${e}`;return e}function _parseRowDelimiter(e){let t="\n";return _forDelimiter(e,"\r\n",((r,o)=>(0===r&&o===e.length||(t="\r\n"),!1))),t}function _parseCSV(e,t,r){const o=[];if(_forDelimiter(e,t,((t,a)=>{const n=e.substring(t,a);return n.length>0&&o.push(((e,t)=>{const o=[];return _forDelimiter(e,r,((r,a)=>{const n=e.substring(r,a);return o.push({raw:_parseQuotes(n,t,o.length)}),!0})),o})(n,o.length)),!0})),o.length){const e=o[0].length;o.forEach(((t,r)=>{if(t.length!==e)throw new Error(`Detected invalid CSV: Row ${r} does not have expected number of columns: ${e}`)}))}return o}function _parseQuotes(e,t,r){const o=e.startsWith('"'),a=e.endsWith('"');if(o&&!a||!o&&a)throw new Error(`Detected invalid CSV: Missing opening or closing quote for value at row:${t} column:${r}`);const n=o?e.substring('"'.length,e.length-'"'.length):e;let i=-1;return _forDelimiter(n,'"',((e,o)=>{if(o===n.length)return!0;if(i<0){if(o!==n.length)return i=o,!0}else if(o===i+'"'.length)return i=-1,!0;throw new Error(`Detected invalid CSV: Non-escaped quote for value at row:${t} column:${r}`)})),n.replace(new RegExp('""',"g"),'"')}function _forDelimiter(e,t,r){let o,a=!1,n=0,i=0;for(;o=e.indexOf(t,n),!(o<0);){for(let t=n;t<o;)e.substring(t).startsWith('"')?(a=!a,t+='"'.length):t++;const s=o+t.length;if(!a){const e=r(i,o);if(i=s,!e)break}n=s}r(i,e.length)}const geometryTypeHeaders={[GeometryFormat.XYZ]:[["x","y","z"]],[GeometryFormat.XY]:[["x","y"]],[GeometryFormat.LAT_LON]:[["lat","lon"],["lat","long"],["latitude","longitude"]],[GeometryFormat.ARCGIS_JSON]:[["geometry"]],[GeometryFormat.GEO_JSON]:[["geometry"]],[GeometryFormat.WKT]:[["geometry"]]};function _parseArcGisJson(e,t){const r=JSON.parse(e),o=toEsriApiGeometry(r);return r.spatialReference||(o.spatialReference=t),o}function _parseGeoJson(e,t){const r=geoJSONToEsri(JSON.parse(e));return r.spatialReference=t,r}function _parseWkt(e,t){const r=wktToEsri(e);return r.spatialReference=t,r}function _findGeometryFormatIndex(e,t){const r=geometryTypeHeaders[t];for(const t of r){const r=e.findIndex(((r,o)=>!(o+t.length>e.length)&&t.every(((t,r)=>e[o+r].raw.toString().toLowerCase()===t))));if(-1!==r)return r}}function _detectGeometry(e,t){return e.map(((e,r)=>{const o=null==e?void 0:e.raw;if("string"==typeof o&&""!==o)try{return t(o,void 0),r}catch{return}})).find((e=>void 0!==e))}function _parseGeometries(e,t){const r=t.includeHeaderRow?e.slice(1):e;if(t.geometryFormat===GeometryFormat.NONE)return{columnCount:0,columnIndex:0};const o=(e,o)=>{const a=o===GeometryFormat.XYZ,n=o===GeometryFormat.LAT_LON,i=a?3:2;return{columnCount:i,columnIndex:e,geometries:r.map((r=>{if(r.length>=e+i&&isNumeric(r[e+0].raw)&&isNumeric(r[e+1].raw)&&(!a||isNumeric(r[e+2].raw)))return new Point({x:parseNumber(n?r[e+1].raw:r[e+0].raw),y:parseNumber(n?r[e+0].raw:r[e+1].raw),z:a?parseNumber(r[e+2].raw):0,spatialReference:t.inSpatialReference})}))}},a=(e,o)=>({columnCount:1,columnIndex:e,geometries:r.map((t=>t[e])).map((e=>{if(""!==e.raw)return o(e.raw.toString(),t.inSpatialReference)}))});if(t.geometryFormat){const r=_findGeometryFormatIndex(e[0],t.geometryFormat);if(t.includeHeaderRow&&void 0===r)throw new Error(`Error parsing CSV: Expected geometry columns ${geometryTypeHeaders[t.geometryFormat][0].join(",")} are missing for GeometryType.${t.geometryFormat}`);return((e,t)=>{switch(t){case GeometryFormat.NONE:return{columnCount:0,columnIndex:0};case GeometryFormat.LAT_LON:case GeometryFormat.XYZ:case GeometryFormat.XY:return o(e,t);case GeometryFormat.ARCGIS_JSON:return a(e,_parseArcGisJson);case GeometryFormat.GEO_JSON:return a(e,_parseGeoJson);case GeometryFormat.WKT:return a(e,_parseWkt);default:return assertNever(t,new Error(`Unknown geometry format "${t}".`))}})(null!=r?r:0,t.geometryFormat)}if(t.includeHeaderRow){const t=_findGeometryFormatIndex(e[0],GeometryFormat.ARCGIS_JSON);if(void 0!==t)for(const e of[_parseArcGisJson,_parseGeoJson,_parseWkt])try{return a(t,e)}catch(e){}const r=[GeometryFormat.XYZ,GeometryFormat.XY,GeometryFormat.LAT_LON];for(const t of r){const r=_findGeometryFormatIndex(e[0],t);if(void 0!==r)return o(r,t)}}for(const e of[_parseArcGisJson,_parseGeoJson,_parseWkt])try{const t=_detectGeometry(r[0],e);return a(t,e)}catch(e){}return{columnCount:0,columnIndex:0}}function _parseSchema(e,t,r){var o;const a={fields:[]};let n=0;for(let o=t.columnCount;o<e[0].length;o++){if(i=o,0!==t.columnCount&&i>=t.columnIndex&&i<t.columnIndex+t.columnCount)continue;const s=_parseFieldType(e,o,r);let m=e[0][o].raw.toString(),l=m.replace(FIELD_NAME_REGEX,"_");if(r.includeHeaderRow||(l="field"+ ++n,m=translate("gcx.api.data.convert.import-field-alias",n)),!l)throw new Error("Error parsing CSV or XLSX: Header cannot contain blank values");a.fields.push({alias:m,name:l,type:s})}var i;if(a.spatialReference=r.outSpatialReference,null===(o=t.geometries)||void 0===o?void 0:o.length){const e=t.geometries.filter((e=>void 0!==e)).map((e=>e.type)),r=e[0];a.geometryType=e.every((e=>e===r))?r:void 0}if(r.generatePrimaryKey&&!a.fields.find((e=>"esriFieldTypeOID"===e.type))){const e=a.fields.length+1,t=!!a.fields.find((e=>"id"===e.name.toLowerCase()));a.fields.push({name:t?`field${e}`:"id",alias:t?translate("gcx.api.data.convert.import-field-alias",e):"id",type:"esriFieldTypeOID"})}return a}function _parseFieldType(e,t,r){var o;let a=!1,n=!0,i=!0,s=!0;const m=new Set,l=r.includeHeaderRow?e[0]:[],u=r.includeHeaderRow?e.slice(1):e;for(const e of u){const o=e[t];""!==o.raw&&(m.add(o.raw),a=!0,n&&(n=isNumeric(o.raw)||Number.isNaN(o.raw)),i&&(i=o.raw instanceof Date||parseDate(r.dateFormat||DEFAULT_PARSING_FORMATS,o.raw)!==INVALID_DATE),s&&(s=parseDate(r.dateFormat||DEFAULT_EXCEL_DATE_FORMATS,o.formatted)!==INVALID_DATE))}const c=m.size===u.length;return r.primaryKeyField&&(null===(o=l[t])||void 0===o?void 0:o.raw)===r.primaryKeyField||r.detectOid&&a&&c&&n?(r.detectOid=!1,"esriFieldTypeOID"):a&&s?"esriFieldTypeDate":a&&n?"esriFieldTypeDouble":a&&i?"esriFieldTypeDate":"esriFieldTypeString"}async function _parseFeatures(e,t,r,o){const a=[],n=o.includeHeaderRow?e.slice(1):e,i=(e,r)=>0===t.columnCount||(r<t.columnIndex||r>=t.columnIndex+t.columnCount);return await Promise.all(n.map((async(e,n)=>{var s;const m=new Feature;for(let t=0;t<r.fields.length;t++){const a=r.fields[t],l=e.filter(i);if(o.outFields.includes("*")||o.outFields.includes(a.name)){let e=await _parseValue(null===(s=l[t])||void 0===s?void 0:s.raw,a,o);"esriFieldTypeOID"===a.type&&null===e&&(e=n),m.attributes.set(a.name,e)}}t.geometries&&(m.geometry=await _projectGeometry(t.geometries[n],o.outSpatialReference)),a.push(m)}))),a}async function _parseValue(e,t,r){if("esriFieldTypeDouble"===t.type||"esriFieldTypeOID"===t.type)return"number"==typeof e?e:e?parseNumber(e):null;if("esriFieldTypeDate"===t.type){if(e instanceof Date)return e.getTime();if("number"==typeof e){const t=(await import("xlsx")).SSF.parse_date_code(e);return t?new Date(t.y,t.m-1,t.d,t.H,t.M,t.S).getTime():void 0}return""===e?null:parseDate(e).getTime()}const o=e.toString();if(r.escapeFormulaChars&&o.startsWith("\t"))for(const e of FORMULA_TRIGGER_CHARS)if(o.length>1&&o.charAt(1)===e)return o.substring(1);return o}function _convertToExcelDateFormatString(e){switch(e){case DateFormat.DATE_SHORT:return"dd/MM/yyyy";case DateFormat.DATE_LONG:return"MMMM d, yyyy";case DateFormat.TIME_SHORT:return"h:mm AM/PM";case DateFormat.TIME_LONG:return"h:mm:ss AM/PM";case DateFormat.DATE_TIME_SHORT:case DateFormat.DEFAULT:return"MMM d yyyy h:mm AM/PM";case DateFormat.DATE_TIME_LONG:return"MMMM d yyyy h:mm AM/PM";case DateFormat.FULL:return"dddd, MMMM d yyyy h:mm AM/PM";case DateFormat.ISO_8601:case DateFormat.ROUND_TRIP:return'yyyy-MM-dd"T"HH:mm:ss';default:{const t=e.replace(/tt/g,"AM/PM");return t.includes("z")&&_getConvertLogger().warn("Warning: Excel will not recognize timezone format 'z', 'zz', or 'zzz'"),t.includes("h")&&!t.includes("AM/PM")&&_getConvertLogger().warn("Warning: Excel will interpret 'h' as 'H' if the format does not have an AM/PM designator"),t}}}function _convertToExcelNumberFormatString(e){switch(e){case NumberFormat.ACCOUNTING:return'_("$"* #,##0.00_);_("$"* (#,##0.00);_("$"* "-"??_);_(@_)';case NumberFormat.CURRENCY:return'"$"#,##0.00';case NumberFormat.FIXED_POINT:case NumberFormat.DEFAULT:return"0.0000";case NumberFormat.NUMBER:return"#,##0.0000";case NumberFormat.PERCENT:return"0%";case NumberFormat.ROUND_TRIP:return"0.00000";default:return e}}function _toXLSXValue(e,t){if(null==e)return"";if(!t.useFormattedValues){if("number"==typeof e)return e;if(e instanceof Date)return"timestamp"===t.dateFormat?e.getTime():e}let r=e.toString();return t.escapeFormulaChars&&(r=escapeFormulaChars(r)),r}async function _parseXLSX(e,t){const r=await import("xlsx"),o=new Promise(((o,a)=>{const n=new FileReader;n.onload=()=>{const e=new Uint8Array(n.result);let a="";for(const t of e)a+=String.fromCharCode(t);const i=r.read(a,{type:"binary",cellDates:!0}),s=t.sheetName||i.SheetNames[0],m=i.Sheets[s];o(m)},n.onerror=()=>{a(n.error)},n.readAsArrayBuffer(e)})),a=await o,n=r.utils.decode_range(a["!ref"]),i=[];for(let e=n.s.r;e<=n.e.r;e++){const t=[];for(let o=n.s.c;o<=n.e.c;o++){const n=a[`${r.utils.encode_cell({r:e,c:o})}`];t.push(n?{raw:n.v,formatted:"s"===n.t?void 0:n.w}:{raw:""})}i.push(t)}return i}async function _getDBaseSpatialReferenceWKT(e){const{wkid:t,wkt:r}=e[0].spatialReference;if(!e.every((e=>e.spatialReference.wkid===t&&e.spatialReference.wkt===r)))throw new Error("Cannot create shapefile that contains geometries with different spatial references.");return null!=r?r:esriWkidToWkt(null!=t?t:SpatialReference.WGS84.wkid)}function _getDBaseColumnTypes(e,t,r,o){const a={};for(const n of t){if(e.some((e=>_hasCodedDomain(e,n)))){a[n]=DBaseTypes.STRING;continue}const t=r?r.fields.find((e=>e.name===n)):void 0;if(t){switch(t.type){case"oid":case"double":case"integer":case"single":case"small-integer":a[n]=DBaseTypes.NUMBER;break;case"date":a[n]=o?DBaseTypes.NUMBER:DBaseTypes.DATE;break;default:a[n]=DBaseTypes.STRING}continue}const i=(e,t)=>{var r;return null!==(r=e.attributes.get(t))&&void 0!==r?r:e.presentableAttributes.get(t)};e.every((e=>i(e,n)instanceof Date||void 0===i(e,n)))&&e.some((e=>i(e,n)instanceof Date))?a[n]=o?DBaseTypes.NUMBER:DBaseTypes.DATE:e.every((e=>"number"==typeof i(e,n)||void 0===i(e,n)))&&e.some((e=>"number"==typeof i(e,n)))?a[n]=DBaseTypes.NUMBER:e.every((e=>"boolean"==typeof i(e,n)||void 0===i(e,n)))&&e.some((e=>"boolean"==typeof i(e,n)))?a[n]=DBaseTypes.BOOLEAN:a[n]=DBaseTypes.STRING}return a}function _getDBaseGeometries(e){return e.map((e=>{if(isPoint(e)){const{x:t,y:r,z:o,m:a}=e,n=[t,r];return e.hasZ&&n.push(o),e.hasM&&n.push(a),_padZValues(n,e)}if(isMultipoint(e))return _padZValuesArray(e.points,e);if(isPolyline(e))return _padZValues2DArray(e.paths,e);if(isPolygon(e))return _padZValues2DArray(e.rings,e);if(isExtent(e)){const t=[e.xmin,e.ymax];return[[t,[e.xmax,e.ymax],[e.xmax,e.ymin],[e.xmin,e.ymin],t]]}throw new Error("Unsupported geometry type.")}))}function _padZValues(e,t){return 3===e.length&&!t.hasZ&&t.hasM?[e[0],e[1],void 0,e[2]]:e}function _padZValuesArray(e,t){return e.map((e=>_padZValues(e,t)))}function _padZValues2DArray(e,t){return e.map((e=>_padZValuesArray(e,t)))}function _getDbaseValues(e,t,r,o){const a=[];for(const n of e){const e={};for(const a of t){let t=_getAttributeValue(n,a,o);if(null==t&&(t=""),o.useFormattedValues)t=t.toString();else{t=getDbaseValue(t,r[a],o)}e[a]=t}a.push(e)}return a}function getDbaseValue(e,t,r){var o,a;switch(t){case DBaseTypes.NUMBER:return e instanceof Date?e.getTime():parseNumber(e);case DBaseTypes.STRING:return e instanceof Date?formatDate({format:null!==(o=r.dateFormat)&&void 0!==o?o:DateFormat.ROUND_TRIP,timeZone:"UTC"},e):"number"==typeof e?formatNumber(null!==(a=r.numberFormat)&&void 0!==a?a:NumberFormat.DEFAULT,e):e.toString();case DBaseTypes.BOOLEAN:return!!e;case DBaseTypes.DATE:return parseDate(e);default:return e.toString()}}function _parseShapefileNames(e){if(!e.length)return[];let t=e[0];const r=t.match(shapefileNameRegex);return r?(t=r[1],e.filter((e=>{const r=e.match(shapefileNameRegex);return r&&r[1]===t}))):[t]}function _parseDBaseData(e){const t=e.map((e=>Object.keys(e))).reduce(((e,t)=>e.concat(t.filter((t=>!e.includes(t))))),[]);return[t.map((e=>({raw:e}))),...e.map((e=>t.map((t=>({raw:e[t]})))))]}function _parseShpPointGeometry(e){checkArg("geometry.coordinates",e.type).matches("Point"),checkArg("geometry.coordinates",e.coordinates).satisfies((e=>"number"==typeof e||Array.isArray(e)));const[t,r,o]=e.coordinates,a=new Point({x:t,y:r,spatialReference:SpatialReference.WGS84});if(Array.isArray(o)){const[e,t]=o;!e&&!t||e?a.z=e:a.m=t}return a}async function _parseShpGeometry(e,t){const r=isPoint(e)?_parseShpPointGeometry(e):geoJSONToEsri(e);if(t){let e;try{const r=await esriWktToWkid(t);e=new SpatialReference({wkid:parseNumber(r)})}catch{}e||(e=new SpatialReference({wkt:t})),r.spatialReference=e}return r}
1
+ import Point from"@arcgis/core/geometry/Point";import SpatialReference from"@arcgis/core/geometry/SpatialReference";import{translate}from"../locale/language.js";import{toEsriApiGeometry,toPortalGeometry}from"../portal/Geometry.js";import{checkArg,assertNever}from"../utilities/checkArg.js";import{parse as parseDate,format as formatDate,DEFAULT_PARSING_FORMATS,DateFormat,INVALID_DATE}from"../utilities/date.js";import{esriToWKT,esriToGeoJSON,geoJSONToEsri,wktToEsri,esriWkidToWkt,esriWktToWkid,project,isPoint,isMultipoint,isPolyline,isPolygon,isExtent}from"../utilities/geometry.js";import{getLogger}from"../utilities/log.js";import{parse as parseNumber,format as formatNumber,NumberFormat,isNumeric}from"../utilities/number.js";import{Feature}from"./Feature.js";import{FeatureSet}from"./FeatureSet.js";const FORMULA_TRIGGER_CHARS=["=","-","+","@"],QUOTE='"',FIELD_NAME_REGEX=/[^a-zA-Z\d_]/g,DEFAULT_WINDOWS_ROW_DELIMITER="\r\n",DEFAULT_UNIX_ROW_DELIMITER="\n",DEFAULT_SHEET_NAME="sheet1",DEFAULT_EXCEL_DATE_FORMATS=[...DEFAULT_PARSING_FORMATS.map(_convertToExcelDateFormatString),"M/d/yy"],shapefileNameRegex=/(\w+)_(point|multipoint|polyline|polygon)z?/;var DBaseTypes;function _getConvertLogger(){return getLogger("geocortex.api.data.convert")}!function(e){e.DATE="D",e.NUMBER="N",e.STRING="C",e.BOOLEAN="L"}(DBaseTypes||(DBaseTypes={}));export var GeometryFormat;!function(e){e.NONE="NONE",e.WKT="WKT",e.XY="XY",e.XYZ="XYZ",e.LAT_LON="LAT_LONG",e.GEO_JSON="GEO_JSON",e.ARCGIS_JSON="ARCGIS_JSON"}(GeometryFormat||(GeometryFormat={}));export async function toCsv(e,t){checkArg("featureSet",e).isNotMissing();const r=Array.from(e),o={...{useFormattedValues:!1,alwaysQuote:!1,escapeFormulaChars:!0,delimiter:",",dateFormat:DateFormat.ROUND_TRIP,geometryFormat:r.some((e=>void 0!==e.geometry&&null!==e.geometry))?GeometryFormat.WKT:GeometryFormat.NONE,includeByteOrderMark:!0,outSpatialReference:SpatialReference.WGS84,includeHeaderRow:!0,outFields:_getDefaultOutFields(e.source),rowDelimiter:navigator.platform.startsWith("Win")?"\r\n":"\n"},...t},{includeByteOrderMark:a,includeHeaderRow:n,delimiter:s,outFields:i,rowDelimiter:m}=o,u=[];a&&u.push("\ufeff");const l=_getGeometryColumns(r,o),c=_getAttributeColumns(r,i,e.schema,!0),f=_getAttributeColumns(r,i,e.schema,!1);if(n){const e=[];for(const t of l)e.push(_quotify(t,o));for(const t of c)e.push(_quotify(t,o));for(const t of f)e.push(_quotify(t,o));const t=e.join(s)+m;u.push(t)}await Promise.all(r.map((async e=>{const t=[],r=(t,r)=>_quotify(_stringify(_getAttributeValue(e,t,r),r),r);t.push(...await _getCSVGeometry(e.geometry,o)),t.push(...c.map((e=>r(e,o)))),t.push(...f.map((e=>r(e,o))));const a=`${t.join(s)}${m}`;u.push(a)})));return new Blob(u,{type:"text/plain",endings:"\n"===m||"\r\n"===m?"transparent":"native"})}export async function csvToFeatureSet(e,t){let r;if(checkArg("csvData",e).isNotMissing(),e instanceof Blob){const t=new Promise(((t,r)=>{const o=new FileReader;o.onload=()=>{t(o.result)},o.onerror=()=>{r(o.error)},o.readAsText(e)}));r=await t}else r=e;const o={...{delimiter:",",escapeFormulaChars:!0,includeHeaderRow:!0,outFields:["*"],inSpatialReference:SpatialReference.WGS84,generatePrimaryKey:!0,primaryKeyField:"OBJECTID"},...t,detectOid:!t?.primaryKeyField},a=_parseCSV(r,o.rowDelimiter||_parseRowDelimiter(r),o.delimiter),n=_parseGeometries(a,o),s=_parseSchema(a,n,o),i=await _parseFeatures(a,n,s,o);return new FeatureSet({features:i,schema:s})}export async function toXLSX(e,t){checkArg("featureSet",e).isNotMissing();const r=Array.from(e),o={...{useFormattedValues:!1,includeHeaderRow:!0,escapeFormulaChars:!0,geometryFormat:r.some((e=>void 0!==e.geometry&&null!==e.geometry))?GeometryFormat.WKT:GeometryFormat.NONE,outFields:_getDefaultOutFields(e.source),outSpatialReference:SpatialReference.WGS84,dateFormat:DateFormat.DEFAULT,numberFormat:NumberFormat.DEFAULT,sheetName:"sheet1"},...t},{outFields:a,includeHeaderRow:n,numberFormat:s}=o,i=[],m=_getGeometryColumns(r,o),u=_getAttributeColumns(r,a,e.schema,!0),l=_getAttributeColumns(r,a,e.schema,!1);if(n){const t=m.concat(u).concat(_getXlsxColumnName(l,e.source));i.push(t)}await Promise.all(r.map((async e=>{const t=[];t.push(...await _getGeometry(e.geometry,o));for(const r of u){const a=_toXLSXValue(e.attributes.get(r),o);t.push(a)}for(const r of l){const a=_toXLSXValue(_getAttributeValue(e,r,o),o);t.push(a)}t.every((e=>"string"!=typeof e||e.length<=32767))?i.push(t):_getConvertLogger().warn(`toXLSX cell limit exceeded, feature (${e.primaryKey??e.id}) omitted.`)})));const c=await import("xlsx"),f={SheetNames:[],Sheets:{}},p=c.utils.aoa_to_sheet(i,{cellDates:!0});for(const e of Object.keys(p).filter((e=>!e.startsWith("!")))){const t=p[e];"d"===t.t?t.z=_convertToExcelDateFormatString(o.dateFormat??DateFormat.ROUND_TRIP):"n"===t.t&&(t.z=_convertToExcelNumberFormatString(s))}f.SheetNames.push(o.sheetName),f.Sheets[o.sheetName]=p;const y=c.write(f,{type:"binary",bookType:"xlsx",compression:!0,bookSST:!0,cellDates:!0}),d=new Uint8Array(y.length);for(let e=0;e<y.length;e++)d[e]=y.charCodeAt(e);return new Blob([d.buffer],{type:"text/plain"})}export async function xlsxToFeatureSet(e,t){checkArg("xlsxData",e).isNotMissing();const r={...{includeHeaderRow:!0,escapeFormulaChars:!0,outFields:["*"],inSpatialReference:SpatialReference.WGS84,generatePrimaryKey:!0,primaryKeyField:"OBJECTID"},...t,detectOid:!t?.primaryKeyField},o=await _parseXLSX(e,r),a=_parseGeometries(o,r),n=_parseSchema(o,a,r),s=await _parseFeatures(o,a,n,r);return new FeatureSet({features:s,schema:n})}export async function toShapefile(e,t){checkArg("featureSet",e).isNotMissing();const[{default:r},o]=await Promise.all([import("jszip"),import("../forked-libs/shp-write/index.js")]),a=Array.from(e),n={...{useFormattedValues:!1,outFields:_getDefaultOutFields(e.source),fileName:e.title||"export"},...t},{outFields:s,outSpatialReference:i,fileName:m}=n,u=e=>e.geometry.hasZ||e.geometry.hasM,l=new Map,c=a.filter((e=>isPoint(e.geometry)));l.set("POINTZ",c.filter(u)),l.set("POINT",c.filter((e=>!u(e))));const f=a.filter((e=>isMultipoint(e.geometry)));l.set("MULTIPOINTZ",f.filter(u)),l.set("MULTIPOINT",f.filter((e=>!u(e))));const p=a.filter((e=>isPolyline(e.geometry)));l.set("POLYLINEZ",p.filter(u)),l.set("POLYLINE",p.filter((e=>!u(e))));const y=a.filter((e=>isPolygon(e.geometry)||isExtent(e.geometry)));l.set("POLYGONZ",y.filter(u)),l.set("POLYGON",y.filter((e=>!u(e))));const d=_getAttributeColumns(a,s,e.schema,!0);let g=_getAttributeColumns(a,s,e.schema,!1);g=d.concat(g);const h=new r,F=Array.from(l.keys()).filter((e=>l.get(e).length>0));await Promise.all(F.map((async t=>{const r=l.get(t),a=await Promise.all(r.map((e=>_projectGeometry(e.geometry,i)))),s=await _getDBaseSpatialReferenceWKT(a),u=n.useFormattedValues?Object.assign({},...g.map((e=>({[e]:DBaseTypes.STRING})))):_getDBaseColumnTypes(r,g,e.schema,"timestamp"===n.dateFormat),c=_getDBaseGeometries(a),f=_getDbaseValues(r,g,u,n);o.write(f,t,c,((e,r)=>{const o=F.length>1?`${m}_${t.toLowerCase()}`:m;h.file(`${o}.shp`,r.shp.buffer,{binary:!0}),h.file(`${o}.shx`,r.shx.buffer,{binary:!0}),h.file(`${o}.dbf`,r.dbf.buffer,{binary:!0}),h.file(`${o}.prj`,s)}))})));const _=await h.generateAsync({type:"uint8array"});return new Blob([_.buffer],{type:"text/plain"})}export async function shapefileToFeatureSet(e,t){checkArg("shapefileData",e).isNotMissing();const r={outFields:["*"],includeHeaderRow:!0,generatePrimaryKey:!0,primaryKeyField:"OBJECTID",...t,detectOid:!t?.primaryKeyField},o=new Promise(((t,r)=>{const o=new FileReader;o.onload=()=>{t(o.result)},o.onerror=()=>{r(o.error)},o.readAsArrayBuffer(e)})),[{default:a},n]=await Promise.all([import("jszip"),import("shpjs")]),s=await o,i=await a.loadAsync(new Uint8Array(s)),m=i.filter((()=>!0)).map((e=>e.name));let u,l=m.filter((e=>e.endsWith(".shp"))).map((e=>e.substring(0,e.length-4)));if(l=_parseShapefileNames(l),m.some((e=>e.endsWith(".prj")))&&!l.every((e=>m.includes(`${e}.prj`))))throw new Error("Shapefile zip must contain the same prj file for each separate shapefile");await Promise.all(m.filter((e=>e.endsWith(".prj"))).map((async e=>{const t=await i.file(e).async("string");if(u){if(t!==u)throw new Error("Shapefile zip must contain the same prj file for each separate shapefile")}else u=t})));const c={geometries:[],columnCount:0,columnIndex:0};let f=[];for(const e of l){if(!m.includes(`${e}.shx`)||!m.includes(`${e}.dbf`))throw new Error("Shapefile must contain shp, shx, and dbf files.");const t=await i.file(`${e}.shp`).async("uint8array"),r=n.parseShp(t),o=await i.file(`${e}.dbf`).async("uint8array"),a=n.parseDbf(o);if(a.length!==r.length)throw new Error("Shapefile must contain shp, shx, and dbf files.");const s=await Promise.all(r.map((e=>_parseShpGeometry(e,u))));c.geometries=c.geometries.concat(s),f=f.concat(a)}const p=_parseDBaseData(f),y=_parseSchema(p,c,r),d=await _parseFeatures(p,c,y,r);return new FeatureSet({features:d,schema:y})}function _getGeometryColumns(e,t){return t.geometryFormat===GeometryFormat.XYZ?["x","y","z"]:t.geometryFormat===GeometryFormat.XY?["x","y"]:t.geometryFormat===GeometryFormat.LAT_LON?["latitude","longitude"]:t.geometryFormat===GeometryFormat.NONE?[]:["geometry"]}function _getAttributeColumns(e,t,r,o){const a=r.fields.filter((e=>"oid"===e.type)).map((e=>e.name)).toArray();if(o)return a;if(t&&!t.includes("*"))return t.filter((e=>!a.includes(e)));{const t=r.fields.filter((e=>"oid"!==e.type)).map((e=>e.name)).toArray();let o=[];for(const r of e)for(const e of r.attributes.keys())t.includes(e)||a.includes(e)||o.includes(e)||o.push(e);return o=o.sort(),t.concat(o)}}function _getXlsxColumnName(e,t){const r=t?.schema?.fieldExtensions.initializedItems.map((e=>e.field));return e.map((e=>r?.find((t=>t.name===e))?.alias??e))}function _getDefaultOutFields(e){if(!e)return["*"];const t=e.featureSettings.popupTemplate?.content;return(Array.isArray(t)?t.find((e=>"fields"===e.type))?.fieldInfos?.filter((e=>e.visible))?.map((e=>e.fieldName)):void 0)??e.featureSettings.popupTemplate?.fieldInfos?.filter((e=>e.visible))?.map((e=>e.fieldName))??["*"]}async function _getCSVGeometry(e,t){let r=await _getGeometry(e,t);return t.geometryFormat!==GeometryFormat.XYZ&&t.geometryFormat!==GeometryFormat.XY&&t.geometryFormat!==GeometryFormat.LAT_LON||(r=r.map((e=>void 0===e?"":_stringify(e,t)))),r.map((e=>""===e?"":_quotify(e,t)))}async function _getGeometry(e,t){const r=await _projectGeometry(e,t.outSpatialReference);if(t.geometryFormat===GeometryFormat.XYZ){if(!r)return["","",""];if(!isPoint(r))throw new Error("Cannot use geometry format XYZ with non-point geometry");return[r.x,r.y,r.z]}if(t.geometryFormat===GeometryFormat.XY){if(!r)return["",""];if(!isPoint(r))throw new Error("Cannot use geometry format XY with non-point geometry");return[r.x,r.y]}if(t.geometryFormat===GeometryFormat.LAT_LON){if(!r)return["",""];if(!isPoint(r))throw new Error("Cannot use geometry format LAT_LONG with non-point geometry");return[r.y,r.x]}return t.geometryFormat===GeometryFormat.ARCGIS_JSON?r?[JSON.stringify(toPortalGeometry(r))]:[""]:t.geometryFormat===GeometryFormat.WKT?r?[esriToWKT(r)]:[""]:t.geometryFormat===GeometryFormat.GEO_JSON?r?[JSON.stringify(esriToGeoJSON(r))]:[""]:[]}async function _projectGeometry(e,t){return e?.spatialReference&&!e.spatialReference.equals(t)&&t?(await project([e],t))[0]:e}function _quotify(e,t){const r=[t.delimiter,'"',"\r","\n",t.rowDelimiter];if(t.alwaysQuote||r.some((t=>e.includes(t)))){return`"${e.replace(new RegExp('"',"g"),'""')}"`}return e}function _stringify(e,t){if(null==e)return"";if(!t.useFormattedValues){if("number"==typeof e){const r=t.numberFormat||NumberFormat.ROUND_TRIP;return formatNumber(r,e)}if(e instanceof Date)return"timestamp"===t.dateFormat?e.getTime().toString():formatDate({format:t.dateFormat,timeZone:"UTC"},e)}let r=e.toString();return t.escapeFormulaChars&&(r=escapeFormulaChars(r)),r}function _getAttributeValue(e,t,r){if(r.useFormattedValues||_hasCodedDomain(e,t))return e.presentableAttributes.get(t)??e.attributes.get(t);if("date"===e.schema.findFieldByName(t)?.type){const r=parseDate(e.attributes.get(t));if(!isNaN(r.getTime()))return r}return e.attributes.get(t)??e.presentableAttributes.get(t)}function _hasCodedDomain(e,t){return t===e.schema.typeIdField||("coded-value"===e.type?.domains?.[t]?.type||"coded-value"===e.schema.findFieldByName(t)?.domain?.type)}function escapeFormulaChars(e){for(const t of FORMULA_TRIGGER_CHARS)if(e.startsWith(t))return`\t${e}`;return e}function _parseRowDelimiter(e){let t="\n";return _forDelimiter(e,"\r\n",((r,o)=>(0===r&&o===e.length||(t="\r\n"),!1))),t}function _parseCSV(e,t,r){const o=[];if(_forDelimiter(e,t,((t,a)=>{const n=e.substring(t,a);return n.length>0&&o.push(((e,t)=>{const o=[];return _forDelimiter(e,r,((r,a)=>{const n=e.substring(r,a);return o.push({raw:_parseQuotes(n,t,o.length)}),!0})),o})(n,o.length)),!0})),o.length){const e=o[0].length;o.forEach(((t,r)=>{if(t.length!==e)throw new Error(`Detected invalid CSV: Row ${r} does not have expected number of columns: ${e}`)}))}return o}function _parseQuotes(e,t,r){const o=e.startsWith('"'),a=e.endsWith('"');if(o&&!a||!o&&a)throw new Error(`Detected invalid CSV: Missing opening or closing quote for value at row:${t} column:${r}`);const n=o?e.substring('"'.length,e.length-'"'.length):e;let s=-1;return _forDelimiter(n,'"',((e,o)=>{if(o===n.length)return!0;if(s<0){if(o!==n.length)return s=o,!0}else if(o===s+'"'.length)return s=-1,!0;throw new Error(`Detected invalid CSV: Non-escaped quote for value at row:${t} column:${r}`)})),n.replace(new RegExp('""',"g"),'"')}function _forDelimiter(e,t,r){let o,a=!1,n=0,s=0;for(;o=e.indexOf(t,n),!(o<0);){for(let t=n;t<o;)e.substring(t).startsWith('"')?(a=!a,t+='"'.length):t++;const i=o+t.length;if(!a){const e=r(s,o);if(s=i,!e)break}n=i}r(s,e.length)}const geometryTypeHeaders={[GeometryFormat.XYZ]:[["x","y","z"]],[GeometryFormat.XY]:[["x","y"]],[GeometryFormat.LAT_LON]:[["lat","lon"],["lat","long"],["latitude","longitude"]],[GeometryFormat.ARCGIS_JSON]:[["geometry"]],[GeometryFormat.GEO_JSON]:[["geometry"]],[GeometryFormat.WKT]:[["geometry"]]};function _parseArcGisJson(e,t){const r=JSON.parse(e),o=toEsriApiGeometry(r);return r.spatialReference||(o.spatialReference=t),o}function _parseGeoJson(e,t){const r=geoJSONToEsri(JSON.parse(e));return r.spatialReference=t,r}function _parseWkt(e,t){const r=wktToEsri(e);return r.spatialReference=t,r}function _findGeometryFormatIndex(e,t){const r=geometryTypeHeaders[t];for(const t of r){const r=e.findIndex(((r,o)=>!(o+t.length>e.length)&&t.every(((t,r)=>e[o+r].raw.toString().toLowerCase()===t))));if(-1!==r)return r}}function _detectGeometry(e,t){return e.map(((e,r)=>{const o=e?.raw;if("string"==typeof o&&""!==o)try{return t(o,void 0),r}catch{return}})).find((e=>void 0!==e))}function _parseGeometries(e,t){const r=t.includeHeaderRow?e.slice(1):e;if(t.geometryFormat===GeometryFormat.NONE)return{columnCount:0,columnIndex:0};const o=(e,o)=>{const a=o===GeometryFormat.XYZ,n=o===GeometryFormat.LAT_LON,s=a?3:2;return{columnCount:s,columnIndex:e,geometries:r.map((r=>{if(r.length>=e+s&&isNumeric(r[e+0].raw)&&isNumeric(r[e+1].raw)&&(!a||isNumeric(r[e+2].raw)))return new Point({x:parseNumber(n?r[e+1].raw:r[e+0].raw),y:parseNumber(n?r[e+0].raw:r[e+1].raw),z:a?parseNumber(r[e+2].raw):0,spatialReference:t.inSpatialReference})}))}},a=(e,o)=>({columnCount:1,columnIndex:e,geometries:r.map((t=>t[e])).map((e=>{if(""!==e.raw)return o(e.raw.toString(),t.inSpatialReference)}))});if(t.geometryFormat){const r=_findGeometryFormatIndex(e[0],t.geometryFormat);if(t.includeHeaderRow&&void 0===r)throw new Error(`Error parsing CSV: Expected geometry columns ${geometryTypeHeaders[t.geometryFormat][0].join(",")} are missing for GeometryType.${t.geometryFormat}`);return((e,t)=>{switch(t){case GeometryFormat.NONE:return{columnCount:0,columnIndex:0};case GeometryFormat.LAT_LON:case GeometryFormat.XYZ:case GeometryFormat.XY:return o(e,t);case GeometryFormat.ARCGIS_JSON:return a(e,_parseArcGisJson);case GeometryFormat.GEO_JSON:return a(e,_parseGeoJson);case GeometryFormat.WKT:return a(e,_parseWkt);default:return assertNever(t,new Error(`Unknown geometry format "${t}".`))}})(r??0,t.geometryFormat)}if(t.includeHeaderRow){const t=_findGeometryFormatIndex(e[0],GeometryFormat.ARCGIS_JSON);if(void 0!==t)for(const e of[_parseArcGisJson,_parseGeoJson,_parseWkt])try{return a(t,e)}catch(e){}const r=[GeometryFormat.XYZ,GeometryFormat.XY,GeometryFormat.LAT_LON];for(const t of r){const r=_findGeometryFormatIndex(e[0],t);if(void 0!==r)return o(r,t)}}for(const e of[_parseArcGisJson,_parseGeoJson,_parseWkt])try{const t=_detectGeometry(r[0],e);return a(t,e)}catch(e){}return{columnCount:0,columnIndex:0}}function _parseSchema(e,t,r){const o={fields:[]};let a=0;for(let s=t.columnCount;s<e[0].length;s++){if(n=s,0!==t.columnCount&&n>=t.columnIndex&&n<t.columnIndex+t.columnCount)continue;const i=_parseFieldType(e,s,r);let m=e[0][s].raw.toString(),u=m.replace(FIELD_NAME_REGEX,"_");if(r.includeHeaderRow||(u="field"+ ++a,m=translate("gcx.api.data.convert.import-field-alias",a)),!u)throw new Error("Error parsing CSV or XLSX: Header cannot contain blank values");o.fields.push({alias:m,name:u,type:i})}var n;if(o.spatialReference=r.outSpatialReference,t.geometries?.length){const e=t.geometries.filter((e=>void 0!==e)).map((e=>e.type)),r=e[0];o.geometryType=e.every((e=>e===r))?r:void 0}if(r.generatePrimaryKey&&!o.fields.find((e=>"esriFieldTypeOID"===e.type))){const e=o.fields.length+1,t=!!o.fields.find((e=>"id"===e.name.toLowerCase()));o.fields.push({name:t?`field${e}`:"id",alias:t?translate("gcx.api.data.convert.import-field-alias",e):"id",type:"esriFieldTypeOID"})}return o}function _parseFieldType(e,t,r){let o=!1,a=!0,n=!0,s=!0;const i=new Set,m=r.includeHeaderRow?e[0]:[],u=r.includeHeaderRow?e.slice(1):e;for(const e of u){const m=e[t];""!==m.raw&&(i.add(m.raw),o=!0,a&&(a=isNumeric(m.raw)||Number.isNaN(m.raw)),n&&(n=m.raw instanceof Date||parseDate(r.dateFormat||DEFAULT_PARSING_FORMATS,m.raw)!==INVALID_DATE),s&&(s=parseDate(r.dateFormat||DEFAULT_EXCEL_DATE_FORMATS,m.formatted)!==INVALID_DATE))}const l=i.size===u.length;return r.primaryKeyField&&m[t]?.raw===r.primaryKeyField||r.detectOid&&o&&l&&a?(r.detectOid=!1,"esriFieldTypeOID"):o&&s?"esriFieldTypeDate":o&&a?"esriFieldTypeDouble":o&&n?"esriFieldTypeDate":"esriFieldTypeString"}async function _parseFeatures(e,t,r,o){const a=[],n=o.includeHeaderRow?e.slice(1):e,s=(e,r)=>0===t.columnCount||(r<t.columnIndex||r>=t.columnIndex+t.columnCount);return await Promise.all(n.map((async(e,n)=>{const i=new Feature;for(let t=0;t<r.fields.length;t++){const a=r.fields[t],m=e.filter(s);if(o.outFields.includes("*")||o.outFields.includes(a.name)){let e=await _parseValue(m[t]?.raw,a,o);"esriFieldTypeOID"===a.type&&null===e&&(e=n),i.attributes.set(a.name,e)}}t.geometries&&(i.geometry=await _projectGeometry(t.geometries[n],o.outSpatialReference)),a.push(i)}))),a}async function _parseValue(e,t,r){if("esriFieldTypeDouble"===t.type||"esriFieldTypeOID"===t.type)return"number"==typeof e?e:e?parseNumber(e):null;if("esriFieldTypeDate"===t.type){if(e instanceof Date)return e.getTime();if("number"==typeof e){const t=(await import("xlsx")).SSF.parse_date_code(e);return t?new Date(t.y,t.m-1,t.d,t.H,t.M,t.S).getTime():void 0}return""===e?null:parseDate(e).getTime()}const o=e.toString();if(r.escapeFormulaChars&&o.startsWith("\t"))for(const e of FORMULA_TRIGGER_CHARS)if(o.length>1&&o.charAt(1)===e)return o.substring(1);return o}function _convertToExcelDateFormatString(e){switch(e){case DateFormat.DATE_SHORT:return"dd/MM/yyyy";case DateFormat.DATE_LONG:return"MMMM d, yyyy";case DateFormat.TIME_SHORT:return"h:mm AM/PM";case DateFormat.TIME_LONG:return"h:mm:ss AM/PM";case DateFormat.DATE_TIME_SHORT:case DateFormat.DEFAULT:return"MMM d yyyy h:mm AM/PM";case DateFormat.DATE_TIME_LONG:return"MMMM d yyyy h:mm AM/PM";case DateFormat.FULL:return"dddd, MMMM d yyyy h:mm AM/PM";case DateFormat.ISO_8601:case DateFormat.ROUND_TRIP:return'yyyy-MM-dd"T"HH:mm:ss';default:{const t=e.replace(/tt/g,"AM/PM");return t.includes("z")&&_getConvertLogger().warn("Warning: Excel will not recognize timezone format 'z', 'zz', or 'zzz'"),t.includes("h")&&!t.includes("AM/PM")&&_getConvertLogger().warn("Warning: Excel will interpret 'h' as 'H' if the format does not have an AM/PM designator"),t}}}function _convertToExcelNumberFormatString(e){switch(e){case NumberFormat.ACCOUNTING:return'_("$"* #,##0.00_);_("$"* (#,##0.00);_("$"* "-"??_);_(@_)';case NumberFormat.CURRENCY:return'"$"#,##0.00';case NumberFormat.FIXED_POINT:case NumberFormat.DEFAULT:return"0.0000";case NumberFormat.NUMBER:return"#,##0.0000";case NumberFormat.PERCENT:return"0%";case NumberFormat.ROUND_TRIP:return"0.00000";default:return e}}function _toXLSXValue(e,t){if(null==e)return"";if(!t.useFormattedValues){if("number"==typeof e)return e;if(e instanceof Date)return"timestamp"===t.dateFormat?e.getTime():e}let r=e.toString();return t.escapeFormulaChars&&(r=escapeFormulaChars(r)),r}async function _parseXLSX(e,t){const r=await import("xlsx"),o=new Promise(((o,a)=>{const n=new FileReader;n.onload=()=>{const e=new Uint8Array(n.result);let a="";for(const t of e)a+=String.fromCharCode(t);const s=r.read(a,{type:"binary",cellDates:!0}),i=t.sheetName||s.SheetNames[0],m=s.Sheets[i];o(m)},n.onerror=()=>{a(n.error)},n.readAsArrayBuffer(e)})),a=await o,n=r.utils.decode_range(a["!ref"]),s=[];for(let e=n.s.r;e<=n.e.r;e++){const t=[];for(let o=n.s.c;o<=n.e.c;o++){const n=a[`${r.utils.encode_cell({r:e,c:o})}`];t.push(n?{raw:n.v,formatted:"s"===n.t?void 0:n.w}:{raw:""})}s.push(t)}return s}async function _getDBaseSpatialReferenceWKT(e){const{wkid:t,wkt:r}=e[0].spatialReference;if(!e.every((e=>e.spatialReference.wkid===t&&e.spatialReference.wkt===r)))throw new Error("Cannot create shapefile that contains geometries with different spatial references.");return r??esriWkidToWkt(t??SpatialReference.WGS84.wkid)}function _getDBaseColumnTypes(e,t,r,o){const a={};for(const n of t){if(e.some((e=>_hasCodedDomain(e,n)))){a[n]=DBaseTypes.STRING;continue}const t=r?r.fields.find((e=>e.name===n)):void 0;if(t){switch(t.type){case"oid":case"double":case"integer":case"single":case"small-integer":a[n]=DBaseTypes.NUMBER;break;case"date":a[n]=o?DBaseTypes.NUMBER:DBaseTypes.DATE;break;default:a[n]=DBaseTypes.STRING}continue}const s=(e,t)=>e.attributes.get(t)??e.presentableAttributes.get(t);e.every((e=>s(e,n)instanceof Date||void 0===s(e,n)))&&e.some((e=>s(e,n)instanceof Date))?a[n]=o?DBaseTypes.NUMBER:DBaseTypes.DATE:e.every((e=>"number"==typeof s(e,n)||void 0===s(e,n)))&&e.some((e=>"number"==typeof s(e,n)))?a[n]=DBaseTypes.NUMBER:e.every((e=>"boolean"==typeof s(e,n)||void 0===s(e,n)))&&e.some((e=>"boolean"==typeof s(e,n)))?a[n]=DBaseTypes.BOOLEAN:a[n]=DBaseTypes.STRING}return a}function _getDBaseGeometries(e){return e.map((e=>{if(isPoint(e)){const{x:t,y:r,z:o,m:a}=e,n=[t,r];return e.hasZ&&n.push(o),e.hasM&&n.push(a),_padZValues(n,e)}if(isMultipoint(e))return _padZValuesArray(e.points,e);if(isPolyline(e))return _padZValues2DArray(e.paths,e);if(isPolygon(e))return _padZValues2DArray(e.rings,e);if(isExtent(e)){const t=[e.xmin,e.ymax];return[[t,[e.xmax,e.ymax],[e.xmax,e.ymin],[e.xmin,e.ymin],t]]}throw new Error("Unsupported geometry type.")}))}function _padZValues(e,t){return 3===e.length&&!t.hasZ&&t.hasM?[e[0],e[1],void 0,e[2]]:e}function _padZValuesArray(e,t){return e.map((e=>_padZValues(e,t)))}function _padZValues2DArray(e,t){return e.map((e=>_padZValuesArray(e,t)))}function _getDbaseValues(e,t,r,o){const a=[];for(const n of e){const e={};for(const a of t){let t=_getAttributeValue(n,a,o);if(null==t&&(t=""),o.useFormattedValues)t=t.toString();else{t=getDbaseValue(t,r[a],o)}e[a]=t}a.push(e)}return a}function getDbaseValue(e,t,r){switch(t){case DBaseTypes.NUMBER:return e instanceof Date?e.getTime():parseNumber(e);case DBaseTypes.STRING:return e instanceof Date?formatDate({format:r.dateFormat??DateFormat.ROUND_TRIP,timeZone:"UTC"},e):"number"==typeof e?formatNumber(r.numberFormat??NumberFormat.DEFAULT,e):e.toString();case DBaseTypes.BOOLEAN:return!!e;case DBaseTypes.DATE:return parseDate(e);default:return e.toString()}}function _parseShapefileNames(e){if(!e.length)return[];let t=e[0];const r=t.match(shapefileNameRegex);return r?(t=r[1],e.filter((e=>{const r=e.match(shapefileNameRegex);return r&&r[1]===t}))):[t]}function _parseDBaseData(e){const t=e.map((e=>Object.keys(e))).reduce(((e,t)=>e.concat(t.filter((t=>!e.includes(t))))),[]);return[t.map((e=>({raw:e}))),...e.map((e=>t.map((t=>({raw:e[t]})))))]}function _parseShpPointGeometry(e){checkArg("geometry.coordinates",e.type).matches("Point"),checkArg("geometry.coordinates",e.coordinates).satisfies((e=>"number"==typeof e||Array.isArray(e)));const[t,r,o]=e.coordinates,a=new Point({x:t,y:r,spatialReference:SpatialReference.WGS84});if(Array.isArray(o)){const[e,t]=o;!e&&!t||e?a.z=e:a.m=t}return a}async function _parseShpGeometry(e,t){const r=isPoint(e)?_parseShpPointGeometry(e):geoJSONToEsri(e);if(t){let e;try{const r=await esriWktToWkid(t);e=new SpatialReference({wkid:parseNumber(r)})}catch{}e||(e=new SpatialReference({wkt:t})),r.spatialReference=e}return r}
@@ -1 +1 @@
1
- import{ArgumentError}from"../../ArgumentError.js";import{InvalidOperationError}from"../../InvalidOperationError.js";import{DefaultArcGISRequestHelper}from"../../support/ArcGISRequestHelper.js";import{checkArg}from"../../utilities/checkArg.js";import{isFeatureLayer}from"../../utilities/layers.js";import{toGraphic}from"../Feature.js";const requestHelper=new DefaultArcGISRequestHelper;export async function toAttachmentFile(e,t){var r,o;let a;if(e instanceof File)a=e;else if(null==e?void 0:e.url)try{const t=await requestHelper.request(e.url,{responseType:"blob"});a=new File([t.data],e.title,{type:e.contentType})}catch(e){throw new Error(`${null!==(r=`${t} `)&&void 0!==r?r:""}Failed to fetch attachment from url.`,{cause:e})}if(!a)throw new Error(`${null!==(o=`${t} `)&&void 0!==o?o:""}No attachment data found.`);return a}export function supportsAttachmentEditing(e){var t,r,o,a;return isFeatureLayer(e)&&!!(null===(r=null===(t=e.capabilities)||void 0===t?void 0:t.data)||void 0===r?void 0:r.supportsAttachment)&&((null===(o=e.capabilities.operations)||void 0===o?void 0:o.supportsUpdate)||(null===(a=e.capabilities.operations)||void 0===a?void 0:a.supportsAdd))}export async function addAttachment(e,t,r,o){var a,n,i,s,c,l;if(checkArg("feature",e).isDefined(),checkArg("layer",t).isDefined(),checkArg("attachment",r).isDefined(),e.source&&e.source.layer!==t&&e.source.table!==t)throw new ArgumentError("layer","The feature's source layer/table does not match the layer.");if(!supportsAttachmentEditing(t))throw new InvalidOperationError("Cannot add attachment; the Table does not support attachments.");const d=`Failed to add attachment to ${null!==(a=e.primaryKey)&&void 0!==a?a:e.id} of source ${null!==(i=null===(n=e.source)||void 0===n?void 0:n.title)&&void 0!==i?i:null===(s=e.source)||void 0===s?void 0:s.id}.`,u=await toAttachmentFile(r,d),p=null===(l=null===(c=u.name)||void 0===c?void 0:c.split(".").pop())||void 0===l?void 0:l.toLowerCase();if((null==o?void 0:o.attachmentTypes)&&!isValidFileType(u,o.attachmentTypes))throw new ArgumentError("attachment",`The attachment type '${p}' does not exist in the set of accepted attachment types: ${o.attachmentTypes}.`);let h;const m=new FormData;m.append("attachment",u,u.name);try{const r=await t.addAttachment(toGraphic(e),m);if(r.error)throw new Error(r.error.message);h=`${r.objectId}`}catch(e){throw new Error(d,{cause:e})}return await e.fetchAttachments(),e.attachments.find((e=>e.id===h))}function isValidFileType(e,t){var r,o;if(!t.map((e=>e.toLowerCase())).includes(e.type.toLowerCase())){const a=t.filter((e=>!e.includes("/"))).map((e=>e.toLowerCase())),n=null===(o=null===(r=e.name)||void 0===r?void 0:r.split(".").pop())||void 0===o?void 0:o.toLowerCase();return a.includes(n)}return!0}export function isAttachmentTypeError(e){return ATTACHMENT_TYPE_ERROR_REGEX.test(e.message)}export const ATTACHMENT_TYPE_ERROR_REGEX=/^The attachment type .+ does not exist in the set of accepted attachment types: .+.$/;export async function deleteAttachments(e,t,r){var o,a,n,i;if(checkArg("feature",e).isDefined(),checkArg("layer",t).isDefined(),checkArg("attachments",r).isDefined(),e.source&&e.source.layer!==t&&e.source.table!==t)throw new ArgumentError("layer","The feature's source layer/table does not match the layer.");if(!supportsAttachmentEditing(t))throw new InvalidOperationError("Cannot delete attachments; the layer/table does not support attachments.");const s=`Failed to delete attachment(s) from ${null!==(o=e.primaryKey)&&void 0!==o?o:e.id} of source ${null!==(n=null===(a=e.source)||void 0===a?void 0:a.title)&&void 0!==n?n:null===(i=e.source)||void 0===i?void 0:i.id}.`;try{const o=await t.deleteAttachments(toGraphic(e),r.map((e=>"string"==typeof e?+e:+e.id)));if((null==o?void 0:o.length)>1){const e=o.filter((e=>e.error));if(e.length>0)throw new AggregateError(e.map((e=>new Error(e.error.message))))}else if(null==o?void 0:o[0].error)throw new Error(null==o?void 0:o[0].error.message)}catch(e){throw new Error(s,{cause:e})}await e.fetchAttachments()}
1
+ import{ArgumentError}from"../../ArgumentError.js";import{InvalidOperationError}from"../../InvalidOperationError.js";import{DefaultArcGISRequestHelper}from"../../support/ArcGISRequestHelper.js";import{checkArg}from"../../utilities/checkArg.js";import{isFeatureLayer}from"../../utilities/layers.js";import{toGraphic}from"../Feature.js";const requestHelper=new DefaultArcGISRequestHelper;export async function toAttachmentFile(e,t){let r;if(e instanceof File)r=e;else if(e?.url)try{const t=await requestHelper.request(e.url,{responseType:"blob"});r=new File([t.data],e.title,{type:e.contentType})}catch(e){throw new Error(`${`${t} `??""}Failed to fetch attachment from url.`,{cause:e})}if(!r)throw new Error(`${`${t} `??""}No attachment data found.`);return r}export function supportsAttachmentEditing(e){return isFeatureLayer(e)&&!!e.capabilities?.data?.supportsAttachment&&(e.capabilities.operations?.supportsUpdate||e.capabilities.operations?.supportsAdd)}export async function addAttachment(e,t,r,a){if(checkArg("feature",e).isDefined(),checkArg("layer",t).isDefined(),checkArg("attachment",r).isDefined(),e.source&&e.source.layer!==t&&e.source.table!==t)throw new ArgumentError("layer","The feature's source layer/table does not match the layer.");if(!supportsAttachmentEditing(t))throw new InvalidOperationError("Cannot add attachment; the Table does not support attachments.");const o=`Failed to add attachment to ${e.primaryKey??e.id} of source ${e.source?.title??e.source?.id}.`,n=await toAttachmentFile(r,o),s=n.name?.split(".").pop()?.toLowerCase();if(a?.attachmentTypes&&!isValidFileType(n,a.attachmentTypes))throw new ArgumentError("attachment",`The attachment type '${s}' does not exist in the set of accepted attachment types: ${a.attachmentTypes}.`);let i;const c=new FormData;c.append("attachment",n,n.name);try{const r=await t.addAttachment(toGraphic(e),c);if(r.error)throw new Error(r.error.message);i=`${r.objectId}`}catch(e){throw new Error(o,{cause:e})}return await e.fetchAttachments(),e.attachments.find((e=>e.id===i))}function isValidFileType(e,t){if(!t.map((e=>e.toLowerCase())).includes(e.type.toLowerCase())){const r=t.filter((e=>!e.includes("/"))).map((e=>e.toLowerCase())),a=e.name?.split(".").pop()?.toLowerCase();return r.includes(a)}return!0}export function isAttachmentTypeError(e){return ATTACHMENT_TYPE_ERROR_REGEX.test(e.message)}export const ATTACHMENT_TYPE_ERROR_REGEX=/^The attachment type .+ does not exist in the set of accepted attachment types: .+.$/;export async function deleteAttachments(e,t,r){if(checkArg("feature",e).isDefined(),checkArg("layer",t).isDefined(),checkArg("attachments",r).isDefined(),e.source&&e.source.layer!==t&&e.source.table!==t)throw new ArgumentError("layer","The feature's source layer/table does not match the layer.");if(!supportsAttachmentEditing(t))throw new InvalidOperationError("Cannot delete attachments; the layer/table does not support attachments.");const a=`Failed to delete attachment(s) from ${e.primaryKey??e.id} of source ${e.source?.title??e.source?.id}.`;try{const a=await t.deleteAttachments(toGraphic(e),r.map((e=>"string"==typeof e?+e:+e.id)));if(a?.length>1){const e=a.filter((e=>e.error));if(e.length>0)throw new AggregateError(e.map((e=>new Error(e.error.message))))}else if(a?.[0].error)throw new Error(a?.[0].error.message)}catch(e){throw new Error(a,{cause:e})}await e.fetchAttachments()}
@@ -198,29 +198,20 @@ declare namespace __esri {
198
198
  usesGeometry: boolean | number;
199
199
  }
200
200
 
201
- export interface MapView {
202
- container: string | HTMLDivElement;
203
- }
201
+ // ESRI424 - Check if the extended interfaces below are still necessary.
204
202
 
205
203
  export interface SceneLayer {
206
204
  associatedLayer: __esri.FeatureLayer;
207
205
  }
208
206
 
209
- export interface VectorTileLayer {
210
- loadStyle(style: string | Object): Promise<void>;
211
- }
212
-
213
- // Check if these properties exist in ESRI421.
214
207
  export interface WMSLayer {
215
208
  mapUrl: string;
216
209
  }
217
210
 
218
- // Check if these properties exist in ESRI421.
219
211
  export interface WMSLayerProperties {
220
212
  mapUrl?: string;
221
213
  }
222
214
 
223
- // Check if these properties exist in ESRI421.
224
215
  export interface FeatureLayer {
225
216
  mode: number;
226
217
  deleteAttachments(feature: Graphic, attachmentIds: number[]): Promise<FeatureEditResult[]>;
@@ -230,70 +221,24 @@ declare namespace __esri {
230
221
  clone(): this;
231
222
  }
232
223
 
233
- // Check if VectorFieldRenderer extends Renderer in ESRI422.
224
+ // Check if VectorFieldRenderer extends Renderer.
234
225
  export interface VectorFieldRenderer extends Renderer {}
235
226
 
236
- // Check if WMSSublayer extends these in ESRI421.
237
- export interface WMSSublayer extends JSONSupport {}
238
-
239
- export interface SpatialReferenceConstructor {
240
- // Esri marked these as instance properties, but they are static.
241
- WebMercator: SpatialReference;
242
- WGS84: SpatialReference;
243
- }
244
-
245
- // Check if these properties exist in ESRI421.
246
227
  export interface locatorSuggestLocationsParams {
247
- // These properties are not exposed by the type file provided by esri.
248
228
  searchExtent: Extent;
249
229
  maxSuggestions: number;
250
230
  countryCode: string;
251
231
  }
252
232
 
253
- export interface locator {
254
- // This signature is broken in the typings and documentation. It's
255
- // missing the first `url` parameter. Check if this is fixed in ESRI421.
256
- locationToAddress(
257
- url: string,
258
- params: locatorLocationToAddressParams,
259
- requestOptions?: any
260
- ): Promise<supportAddressCandidate>;
261
- }
262
-
263
- export interface query {
264
- // This signature is broken in the typings and documentation. It's
265
- // missing the first `url` parameter. Check if this is fixed in ESRI421.
266
- executeForCount(
267
- url: string,
268
- query: supportQuery | supportQueryProperties,
269
- requestOptions?: any
270
- ): Promise<number>;
271
- }
272
-
273
- export interface imageService {
274
- // This signature is broken in the typings and documentation. It's
275
- // missing the first `url` parameter. Check if this is fixed in ESRI421.
276
- identify(
277
- url: string,
278
- params: supportImageIdentifyParameters,
279
- requestOptions?: any
280
- ): Promise<supportImageIdentifyResult>;
281
- }
282
-
283
- // Check if layer is present in ESRI421.
284
233
  export interface BuildingSublayer {
285
234
  layer: __esri.BuildingSceneLayer;
286
235
  }
287
236
 
288
- // Check if present in ESRI421.
289
237
  export interface BuildingComponentSublayer {
290
238
  fields: __esri.Field[];
291
239
  objectIdField: string;
292
240
  geometryType: __esri.Geometry["type"];
293
- maxScale: number;
294
241
  capabilities: BuildingComponentSublayerCapabilities;
295
- listMode: "show" | "hide" | "hide-children";
296
- associatedLayer?: __esri.FeatureLayer;
297
242
  }
298
243
  export interface BuildingComponentSublayerCapabilities {
299
244
  /**
@@ -302,41 +247,8 @@ declare namespace __esri {
302
247
  * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-CSVLayer.html#capabilities)
303
248
  */
304
249
  data: BuildingComponentSublayerCapabilitiesData;
305
- /**
306
- * Describes [query](https://developers.arcgis.com/javascript/latest/api-reference/esri-tasks-support-Query.html) operations that can be performed on features in the layer.
307
- *
308
- * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-CSVLayer.html#capabilities)
309
- */
310
- query: BuildingComponentSublayerCapabilitiesQuery;
311
- }
312
- export interface BuildingComponentSublayerCapabilitiesQuery {
313
- maxRecordCount: number;
314
- maxRecordCountFactor: number;
315
- standardMaxRecordCount: number;
316
- supportsCacheHint: boolean;
317
- supportsCentroid: boolean;
318
- supportsDisjointSpatialRelationship: boolean;
319
- supportsDistance: boolean;
320
- supportsDistinct: boolean;
321
- supportsExtent: boolean;
322
- supportsFormatPBF: boolean;
323
- supportsGeometryProperties: boolean;
324
- supportsHavingClause: boolean;
325
- supportsHistoricMoment: boolean;
326
- supportsMaxRecordCountFactor: boolean;
327
- supportsOrderBy: boolean;
328
- supportsPagination: boolean;
329
- supportsPercentileStatistics: boolean;
330
- supportsQuantization: boolean;
331
- supportsQuantizationEditMode: boolean;
332
- supportsQueryByOthers: boolean;
333
- supportsQueryGeometry: boolean;
334
- supportsResultType: boolean;
335
- supportsSqlExpression: boolean;
336
- supportsStandardizedQueriesOnly: boolean;
337
- supportsStatistics: boolean;
338
- tileMaxRecordCount: number;
339
250
  }
251
+
340
252
  export interface BuildingComponentSublayerCapabilitiesData {
341
253
  isVersioned: boolean;
342
254
  supportsM: boolean;
@@ -344,36 +256,10 @@ declare namespace __esri {
344
256
  }
345
257
 
346
258
  export interface ImageryLayer {
347
- // This disappeared in 4.19 for some reason. Check to see if they added it back in ESRI421.
259
+ // This disappeared in 4.19 for some reason.
348
260
  rasterAttributeTableFieldPrefix: string;
349
261
  }
350
262
 
351
- export interface Task extends Accessor {
352
- /**
353
- * The [options](https://developers.arcgis.com/javascript/latest/api-reference/esri-request.html#esriRequest) to be used for data requests. These options can also be controlled through the `requestOptions` method parameter.
354
- *
355
- * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-tasks-Task.html#requestOptions)
356
- */
357
- requestOptions: any;
358
- /**
359
- * The ArcGIS Server REST service URL (usually of a Feature Service Layer or Map Service Layer) for use in a task.
360
- *
361
- * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-tasks-Task.html#url)
362
- */
363
- url: string;
364
-
365
- // Geocortex Edit: Typings seem to be missing execute()
366
- // See API Docs: https://developers.arcgis.com/javascript/latest/api-reference/esri-tasks-ImageServiceIdentifyTask.html#execute
367
- /**
368
- * Sends a request to the ArcGIS REST image service resource to identify content based on the ImageServiceIdentifyParameters specified in the params argument.
369
- */
370
- execute(
371
- params: ImageIdentifyParameters,
372
- requestOptions?: RequestOptions
373
- ): Promise<ImageIdentifyResult>;
374
- }
375
-
376
- // ESRI421: Check if they've added to their documented properties.
377
263
  export interface StreamLayerView {
378
264
  createQuery(): __esri.supportQuery;
379
265
  view: __esri.MapView | __esri.SceneView;
@@ -403,9 +289,14 @@ declare namespace __esri {
403
289
  view: __esri.MapView | __esri.SceneView;
404
290
  }
405
291
 
292
+ export interface EditsResult {
293
+ addFeatureResults: __esri.FeatureEditResult[];
294
+ deleteFeatureResults: __esri.FeatureEditResult[];
295
+ updateFeatureResults: __esri.FeatureEditResult[];
296
+ }
297
+
406
298
  export interface Symbol3DLayerProperties {
407
- // ESRI421: Check if they've added this to the interface. The type
408
- // property is required for autocasting to work.
299
+ // The type property is required for autocasting to work.
409
300
  type: Symbol3DLayer["type"];
410
301
  }
411
302
  }