@arcgis/core 4.28.0-next.20230919 → 4.28.0-next.20230921

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 (412) hide show
  1. package/Color.js +1 -1
  2. package/WebScene.js +1 -1
  3. package/arcade/ArcadeDate.js +1 -1
  4. package/arcade/executionError.js +1 -1
  5. package/arcade/featureset/support/errorsupport.js +1 -1
  6. package/assets/esri/core/workers/RemoteClient.js +1 -1
  7. package/assets/esri/core/workers/chunks/06621efb2573fad23b45.js +1 -0
  8. package/assets/esri/core/workers/chunks/072b4e041b8630c513a0.js +1 -0
  9. package/assets/esri/core/workers/chunks/101f776316a85b708927.js +1 -0
  10. package/assets/esri/core/workers/chunks/107546ef77a45d31c7ac.js +1 -0
  11. package/assets/esri/core/workers/chunks/10fd951bd296b2beeeba.js +1 -0
  12. package/assets/esri/core/workers/chunks/114269dda1d296893908.js +1 -0
  13. package/assets/esri/core/workers/chunks/126df6237fc80608344e.js +1 -0
  14. package/assets/esri/core/workers/chunks/134524cf6b1ebf208338.js +1 -0
  15. package/assets/esri/core/workers/chunks/17a36704e63ca1b34c5d.js +1 -0
  16. package/assets/esri/core/workers/chunks/1c83f47d446f2bca1721.js +1 -0
  17. package/assets/esri/core/workers/chunks/{09d395a9786607294689.js → 1c8469fbde39d85ee622.js} +1 -1
  18. package/assets/esri/core/workers/chunks/1cbaba30f55f00f7498b.js +1 -0
  19. package/assets/esri/core/workers/chunks/21a9c8aa2a9e9990df41.js +1 -0
  20. package/assets/esri/core/workers/chunks/{506874f562ce11f8914a.js → 243a4eed107d363dfad8.js} +1 -1
  21. package/assets/esri/core/workers/chunks/24629402c647ef6b5f6b.js +1 -0
  22. package/assets/esri/core/workers/chunks/2a1c1be9c202462cf54d.js +1 -0
  23. package/assets/esri/core/workers/chunks/2bb69d76a13564e8e455.js +1 -0
  24. package/assets/esri/core/workers/chunks/2d0d03cbea83c868edba.js +1 -0
  25. package/assets/esri/core/workers/chunks/2e130cb2f1038055c07b.js +1 -0
  26. package/assets/esri/core/workers/chunks/32ba4eba730e9232d964.js +1 -0
  27. package/assets/esri/core/workers/chunks/{b428fcb53ecc82b49e66.js → 332689bf60d246485993.js} +1 -1
  28. package/assets/esri/core/workers/chunks/3619e04cbb6691549014.js +1 -0
  29. package/assets/esri/core/workers/chunks/37116fb4c68cf3c3890a.js +1 -0
  30. package/assets/esri/core/workers/chunks/{3a7ad0d24264e2bc2e87.js → 3ca759f72d3bb29e9ea9.js} +22 -22
  31. package/assets/esri/core/workers/chunks/3dbfb4f370a874393822.js +1 -0
  32. package/assets/esri/core/workers/chunks/3f4e9b1663ec521bfe00.js +1 -0
  33. package/assets/esri/core/workers/chunks/406db5c90271a3a203d4.js +1 -0
  34. package/assets/esri/core/workers/chunks/4339ce8aaf87fabb80cc.js +1 -0
  35. package/assets/esri/core/workers/chunks/4369a6c1e0a82ab4db6a.js +1 -0
  36. package/assets/esri/core/workers/chunks/43ba2bacd0f7d19915f7.js +1 -0
  37. package/assets/esri/core/workers/chunks/44b8e75593b7df1843e1.js +1 -0
  38. package/assets/esri/core/workers/chunks/467a821d05df8ec0dc1c.js +1 -0
  39. package/assets/esri/core/workers/chunks/47be4c75dd6372b96fe4.js +1 -0
  40. package/assets/esri/core/workers/chunks/53097659f31750c03a6d.js +1 -0
  41. package/assets/esri/core/workers/chunks/{c1141056581af072aee9.js → 580039dd491854ca325c.js} +1 -1
  42. package/assets/esri/core/workers/chunks/59c00d6fba0fd1c03d01.js +1 -0
  43. package/assets/esri/core/workers/chunks/5a5720caa64a46daadf9.js +1 -0
  44. package/assets/esri/core/workers/chunks/5edb99b58549cd66b394.js +1 -0
  45. package/assets/esri/core/workers/chunks/6203ddf6caad3d356327.js +1 -0
  46. package/assets/esri/core/workers/chunks/652749dc847fcb887234.js +1 -0
  47. package/assets/esri/core/workers/chunks/6c495077cc79e1898927.js +1 -0
  48. package/assets/esri/core/workers/chunks/{e5c3beebd507e1dda35f.js → 749fc49246093d693227.js} +1 -1
  49. package/assets/esri/core/workers/chunks/74d3ecb1a06d9f81e2c5.js +1 -0
  50. package/assets/esri/core/workers/chunks/77c15b1c2729c780f75a.js +1 -0
  51. package/assets/esri/core/workers/chunks/7ea33aa455c5143affb1.js +1 -0
  52. package/assets/esri/core/workers/chunks/7ed70c96fbfe00792e7c.js +1 -0
  53. package/assets/esri/core/workers/chunks/8ab832468300cc4feb5a.js +1 -0
  54. package/assets/esri/core/workers/chunks/90771b0de3e520a1df9a.js +1 -0
  55. package/assets/esri/core/workers/chunks/94188fe381239d48a975.js +1 -0
  56. package/assets/esri/core/workers/chunks/a277c980ba8704939688.js +1 -0
  57. package/assets/esri/core/workers/chunks/b1746c022fe6edaeda55.js +1 -0
  58. package/assets/esri/core/workers/chunks/b449d6bd5851187d419f.js +1 -0
  59. package/assets/esri/core/workers/chunks/bbc0dcd316c5598bc9ad.js +1 -0
  60. package/assets/esri/core/workers/chunks/bc1dc6383e60e7e61d50.js +1 -0
  61. package/assets/esri/core/workers/chunks/bc6323bdc98013da6fe5.js +1 -0
  62. package/assets/esri/core/workers/chunks/bde89b2684b6185992ef.js +1 -0
  63. package/assets/esri/core/workers/chunks/c4bb67150ccd01ea6014.js +1 -0
  64. package/assets/esri/core/workers/chunks/{727548fffd4e270617d3.js → c6ea5aac232d1eca04dd.js} +1 -1
  65. package/assets/esri/core/workers/chunks/c8438c2d9ac48afe4033.js +1 -0
  66. package/assets/esri/core/workers/chunks/c9dfb145f0c1d93e0fbd.js +1 -0
  67. package/assets/esri/core/workers/chunks/cad260881653567bc8f9.js +1 -0
  68. package/assets/esri/core/workers/chunks/cec607d0138351a4952e.js +1 -0
  69. package/assets/esri/core/workers/chunks/d24afa6d8fd0061d9f00.js +1 -0
  70. package/assets/esri/core/workers/chunks/{f147269d85adfb4588ed.js → d9061beaa43065316062.js} +1 -1
  71. package/assets/esri/core/workers/chunks/dd7508d4016715371e0c.js +1 -0
  72. package/assets/esri/core/workers/chunks/dff1c3c38dda2bd1a9d6.js +1 -0
  73. package/assets/esri/core/workers/chunks/e55f7fc7eff0074ce0fc.js +1 -0
  74. package/assets/esri/core/workers/chunks/eb01f4cdb9b918cc61e7.js +1 -0
  75. package/assets/esri/core/workers/chunks/ec8258c9dc1491e97fc8.js +1 -0
  76. package/assets/esri/core/workers/chunks/ed1fbc1bc8d50453e2f5.js +1 -0
  77. package/assets/esri/core/workers/chunks/eeac53da496de4cd4182.js +1 -0
  78. package/assets/esri/core/workers/chunks/eef27d305023034084a4.js +1 -0
  79. package/assets/esri/core/workers/chunks/f38c54ada9e7012a2960.js +1 -0
  80. package/assets/esri/core/workers/chunks/f508ccfde6425dabe9ac.js +1 -0
  81. package/assets/esri/core/workers/chunks/f5e0ff5292b9fd18fc92.js +1 -0
  82. package/assets/esri/core/workers/chunks/f5eb8b5021620be7538e.js +1 -0
  83. package/assets/esri/images/portal/onlinemedialayer16.png +0 -0
  84. package/assets/esri/themes/base/widgets/_FeatureForm.scss +2 -1
  85. package/assets/esri/themes/dark/main.css +1 -1
  86. package/assets/esri/themes/light/main.css +1 -1
  87. package/assets/esri/themes/light/view.css +1 -1
  88. package/assets/esri/widgets/FeatureForm/t9n/FeatureForm.json +1 -1
  89. package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_ar.json +1 -1
  90. package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_bg.json +1 -1
  91. package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_bs.json +1 -1
  92. package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_ca.json +1 -1
  93. package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_cs.json +1 -1
  94. package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_da.json +1 -1
  95. package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_de.json +1 -1
  96. package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_el.json +1 -1
  97. package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_en.json +1 -1
  98. package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_es.json +1 -1
  99. package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_et.json +1 -1
  100. package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_fi.json +1 -1
  101. package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_fr.json +1 -1
  102. package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_he.json +1 -1
  103. package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_hr.json +1 -1
  104. package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_hu.json +1 -1
  105. package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_id.json +1 -1
  106. package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_it.json +1 -1
  107. package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_ja.json +1 -1
  108. package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_ko.json +1 -1
  109. package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_lt.json +1 -1
  110. package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_lv.json +1 -1
  111. package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_nb.json +1 -1
  112. package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_nl.json +1 -1
  113. package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_pl.json +1 -1
  114. package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_pt-BR.json +1 -1
  115. package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_pt-PT.json +1 -1
  116. package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_ro.json +1 -1
  117. package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_ru.json +1 -1
  118. package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_sk.json +1 -1
  119. package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_sl.json +1 -1
  120. package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_sr.json +1 -1
  121. package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_sv.json +1 -1
  122. package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_th.json +1 -1
  123. package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_tr.json +1 -1
  124. package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_uk.json +1 -1
  125. package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_vi.json +1 -1
  126. package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_zh-CN.json +1 -1
  127. package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_zh-HK.json +1 -1
  128. package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_zh-TW.json +1 -1
  129. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace.json +1 -1
  130. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_ar.json +1 -1
  131. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_bg.json +1 -1
  132. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_bs.json +1 -1
  133. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_ca.json +1 -1
  134. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_cs.json +1 -1
  135. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_da.json +1 -1
  136. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_de.json +1 -1
  137. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_el.json +1 -1
  138. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_en.json +1 -1
  139. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_es.json +1 -1
  140. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_et.json +1 -1
  141. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_fi.json +1 -1
  142. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_fr.json +1 -1
  143. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_he.json +1 -1
  144. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_hr.json +1 -1
  145. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_hu.json +1 -1
  146. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_id.json +1 -1
  147. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_it.json +1 -1
  148. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_ja.json +1 -1
  149. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_ko.json +1 -1
  150. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_lt.json +1 -1
  151. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_lv.json +1 -1
  152. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_nb.json +1 -1
  153. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_nl.json +1 -1
  154. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_pl.json +1 -1
  155. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_pt-BR.json +1 -1
  156. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_pt-PT.json +1 -1
  157. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_ro.json +1 -1
  158. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_ru.json +1 -1
  159. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_sk.json +1 -1
  160. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_sl.json +1 -1
  161. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_sr.json +1 -1
  162. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_sv.json +1 -1
  163. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_th.json +1 -1
  164. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_tr.json +1 -1
  165. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_uk.json +1 -1
  166. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_vi.json +1 -1
  167. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_zh-CN.json +1 -1
  168. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_zh-HK.json +1 -1
  169. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_zh-TW.json +1 -1
  170. package/chunks/LaserlinePath.glsl.js +5 -1
  171. package/core/HandleOwner.js +1 -1
  172. package/core/MemCache.js +1 -1
  173. package/core/date.js +5 -0
  174. package/core/sql.js +1 -1
  175. package/core/string.js +1 -1
  176. package/interfaces.d.ts +60 -43
  177. package/intl/date.js +1 -1
  178. package/layers/GeoJSONLayer.js +1 -1
  179. package/layers/ImageryLayer.js +1 -1
  180. package/layers/VoxelWasmPerSceneView.js +1 -1
  181. package/layers/WFSLayer.js +1 -1
  182. package/layers/graphics/sources/GeoJSONSource.js +1 -1
  183. package/layers/graphics/sources/MemorySource.js +1 -1
  184. package/layers/graphics/sources/WFSSource.js +1 -1
  185. package/layers/graphics/sources/WFSSourceWorker.js +1 -1
  186. package/layers/graphics/sources/csv/csv.js +1 -1
  187. package/layers/graphics/sources/geojson/GeoJSONSourceWorker.js +1 -1
  188. package/layers/graphics/sources/geojson/geojson.js +1 -1
  189. package/layers/graphics/sources/support/CSVSourceWorker.js +1 -1
  190. package/layers/graphics/sources/support/MemorySourceWorker.js +1 -1
  191. package/{views/interactive/tooltip/tooltipInfoUnion.js → layers/graphics/sources/support/QueryEngineBuildLayer.js} +1 -0
  192. package/layers/graphics/sources/support/sourceUtils.js +1 -1
  193. package/layers/mixins/SceneService.js +1 -1
  194. package/layers/ogc/wfsUtils.js +1 -1
  195. package/layers/save/utils.js +1 -1
  196. package/layers/support/editableLayers.js +1 -1
  197. package/layers/support/fieldUtils.js +1 -1
  198. package/layers/support/labelFormatUtils.js +1 -1
  199. package/layers/support/layersCreator.js +1 -1
  200. package/layers/support/rasterFunctionUtils.js +1 -1
  201. package/layers/support/rasterFunctions/creators/createBandIndexFunctions.js +1 -1
  202. package/layers/support/rasterFunctions/creators/createDataManagementFunctions.js +1 -1
  203. package/layers/support/rasterFunctions/creators/createLocalFunctions.js +1 -1
  204. package/networks/support/utils.js +1 -1
  205. package/package.json +1 -1
  206. package/portal/PortalItem.js +1 -1
  207. package/portal/support/layersLoader.js +1 -1
  208. package/rest/geometryService/cut.js +1 -1
  209. package/rest/query/operations/query.js +1 -1
  210. package/rest/versionManagement/deleteVersion.js +1 -1
  211. package/rest/versionManagement/gdbVersion/alterVersion.js +1 -1
  212. package/rest/versionManagement/gdbVersion/post.js +1 -1
  213. package/rest/versionManagement/gdbVersion/reconcile.js +1 -1
  214. package/rest/versionManagement/gdbVersion/serverVersionUtils.js +5 -0
  215. package/support/revision.js +1 -1
  216. package/time/timeZoneUtils.js +1 -1
  217. package/views/2d/engine/Stage.js +1 -1
  218. package/views/2d/engine/webgl/mesh/factories/WGLMeshFactory.js +1 -1
  219. package/views/2d/layers/features/controllers/FeatureController2D.js +1 -1
  220. package/views/2d/layers/features/sources/BaseFeatureSource.js +1 -1
  221. package/views/2d/layers/features/sources/DataTileSource.js +1 -1
  222. package/views/2d/layers/features/sources/StreamSource.js +1 -1
  223. package/views/2d/layers/features/support/whereUtils.js +1 -1
  224. package/views/3d/analysis/AreaMeasurement/support/AreaMeasurementVisualization.js +1 -1
  225. package/views/3d/analysis/Dimension/LengthDimensionSubTool.js +1 -1
  226. package/views/3d/analysis/Dimension/lengthDimensionConstraintUtils.js +1 -1
  227. package/views/3d/analysis/Slice/RotateManipulator.js +1 -1
  228. package/views/3d/environment/EnvironmentRenderer.js +1 -1
  229. package/views/3d/environment/LocalAtmosphere.js +1 -1
  230. package/views/3d/externalRenderers/StageRenderer.js +1 -1
  231. package/views/3d/interactive/manipulatorUtils.js +1 -1
  232. package/views/3d/interactive/measurementTools/areaMeasurement3D/AreaMeasurement3DTool.js +1 -1
  233. package/views/3d/interactive/visualElements/MeasurementAreaVisualElement.js +1 -1
  234. package/views/3d/interactive/visualElements/OutlineVisualElement.js +1 -1
  235. package/views/3d/interactive/visualElements/PointVisualElement.js +1 -1
  236. package/views/3d/interactive/visualElements/RightAngleQuadVisualElement.js +1 -1
  237. package/views/3d/layers/MediaLayerView3D.js +1 -1
  238. package/views/3d/layers/SceneLayerGraphicsView3D.js +1 -1
  239. package/views/3d/layers/graphics/Deconflictor.js +1 -1
  240. package/views/3d/layers/graphics/ElevationAligners.js +1 -1
  241. package/views/3d/layers/graphics/Graphics3DExtrudeSymbolLayer.js +1 -1
  242. package/views/3d/layers/graphics/Graphics3DLineCalloutSymbolLayer.js +1 -1
  243. package/views/3d/layers/graphics/Graphics3DMeshFillSymbolLayer.js +1 -1
  244. package/views/3d/layers/graphics/Graphics3DObjectSymbolLayer.js +1 -1
  245. package/views/3d/layers/graphics/objectResourceUtils.js +1 -1
  246. package/views/3d/layers/graphics/polygonUtils.js +1 -1
  247. package/views/3d/layers/graphics/wosrLoader.js +1 -1
  248. package/views/3d/layers/i3s/I3SUtil.js +1 -1
  249. package/views/3d/layers/i3s/PointRenderer.js +1 -1
  250. package/views/3d/layers/support/HeatmapFeatureProcessor.js +1 -1
  251. package/views/3d/layers/support/overlayImageUtils.js +1 -1
  252. package/views/3d/layers/support/patternUtils.js +1 -1
  253. package/views/3d/support/LaserLineRenderer.js +1 -1
  254. package/views/3d/support/StreamDataLoader.js +1 -1
  255. package/views/3d/support/dito.js +1 -1
  256. package/views/3d/support/engineContent/line.js +1 -1
  257. package/views/3d/support/pointsOfInterest/CenterOnSurface.js +1 -1
  258. package/views/3d/support/pointsOfInterest/Focus.js +1 -1
  259. package/views/3d/terrain/OverlayRenderer.js +1 -1
  260. package/views/3d/terrain/TerrainRenderer.js +1 -1
  261. package/views/3d/terrain/TileRenderer.js +1 -1
  262. package/views/3d/webgl-engine/collections/Component/ComponentIntersectionData.js +1 -1
  263. package/views/3d/webgl-engine/collections/Component/IntersectionGeometry.js +1 -1
  264. package/views/3d/webgl-engine/core/FBOCache.js +1 -1
  265. package/views/3d/webgl-engine/core/renderPasses/RenderPassManager.js +1 -1
  266. package/views/3d/webgl-engine/core/shaderLibrary/attributes/InstancedDoublePrecision.glsl.js +6 -6
  267. package/views/3d/webgl-engine/core/shaderLibrary/hud/AlignPixel.glsl.js +10 -12
  268. package/views/3d/webgl-engine/core/shaderLibrary/hud/HUDVisibility.glsl.js +8 -21
  269. package/views/3d/webgl-engine/effects/RenderPluginManager.js +1 -1
  270. package/views/3d/webgl-engine/effects/highlight/Highlight.js +1 -1
  271. package/views/3d/webgl-engine/effects/highlight/ShadowHighlight.js +1 -1
  272. package/views/3d/webgl-engine/effects/smaa/SMAA.js +1 -1
  273. package/views/3d/webgl-engine/effects/ssao/SSAO.js +1 -1
  274. package/views/3d/webgl-engine/lib/Attribute.js +1 -1
  275. package/views/3d/webgl-engine/lib/BoundingInfo.js +1 -1
  276. package/views/3d/webgl-engine/lib/Camera.js +1 -1
  277. package/views/3d/webgl-engine/lib/DrapedHeatmapRenderer.js +1 -1
  278. package/views/3d/webgl-engine/lib/Geometry.js +1 -1
  279. package/views/3d/webgl-engine/lib/GeometryUtil.js +1 -1
  280. package/views/3d/webgl-engine/lib/GridLocalOriginFactory.js +1 -1
  281. package/views/3d/webgl-engine/lib/PathGeometryData.js +1 -1
  282. package/views/3d/webgl-engine/lib/RenderGeometry.js +1 -1
  283. package/views/3d/webgl-engine/lib/Renderer.js +1 -1
  284. package/views/3d/webgl-engine/lib/SortedRenderGeometryRenderer.js +1 -1
  285. package/views/3d/webgl-engine/lib/TextTextureAtlas.js +1 -1
  286. package/views/3d/webgl-engine/lib/edgeRendering/EdgeView.js +1 -1
  287. package/views/3d/webgl-engine/lib/geometryDataUtils.js +1 -1
  288. package/views/3d/webgl-engine/lib/lodRendering/LodRenderer.js +1 -1
  289. package/views/3d/webgl-engine/lib/lodRendering/LodResources.js +1 -1
  290. package/views/3d/webgl-engine/materials/DefaultBufferWriter.js +1 -1
  291. package/views/3d/webgl-engine/materials/HUDMaterial.js +1 -1
  292. package/views/3d/webgl-engine/materials/HeatmapDensityMaterial.js +1 -1
  293. package/views/3d/webgl-engine/materials/ImageMaterial.js +1 -1
  294. package/views/3d/webgl-engine/materials/LineCalloutMaterial.js +1 -1
  295. package/views/3d/webgl-engine/materials/LineMarkerMaterial.js +1 -1
  296. package/views/3d/webgl-engine/materials/MeasurementArrowMaterial.js +1 -1
  297. package/views/3d/webgl-engine/materials/NativeLineMaterial.js +1 -1
  298. package/views/3d/webgl-engine/materials/PatternMaterial.js +1 -1
  299. package/views/3d/webgl-engine/materials/RibbonLineMaterial.js +1 -1
  300. package/views/3d/webgl-engine/materials/ShadedColorMaterial.js +1 -1
  301. package/views/3d/webgl-engine/materials/internal/MaterialUtil.js +1 -1
  302. package/views/3d/webgl-engine/materials/internal/bufferWriterUtils.js +1 -1
  303. package/views/3d/webgl-engine/materials/renderers/MergedRenderer.js +1 -1
  304. package/views/View.js +1 -1
  305. package/views/draw/DrawGraphicTool.js +1 -1
  306. package/views/draw/support/HighlightHelper.js +1 -1
  307. package/views/draw/support/Reshape.js +1 -1
  308. package/views/draw/support/layerUtils.js +1 -1
  309. package/views/interactive/SegmentLabels.js +1 -1
  310. package/views/interactive/keybindings.js +1 -1
  311. package/views/interactive/tooltip/SketchTooltipInfo.js +1 -1
  312. package/views/interactive/tooltip/TooltipContentWithHelpMessage.js +1 -1
  313. package/views/interactive/tooltip/TooltipEditableField.js +1 -1
  314. package/views/interactive/tooltip/TranslateTooltipInfos.js +1 -1
  315. package/views/interactive/tooltip/content/Fields.js +5 -0
  316. package/views/interactive/tooltip/content/TooltipContentDrawPoint.js +1 -1
  317. package/views/interactive/tooltip/content/TooltipContentDrawPolygon.js +1 -1
  318. package/views/interactive/tooltip/content/TooltipContentDrawPolyline.js +1 -1
  319. package/views/layers/FeatureLayerView.js +1 -1
  320. package/views/webgl/FramebufferObject.js +1 -1
  321. package/webdoc/saveAPIKeyUtils.js +5 -0
  322. package/webdoc/webdocSaveUtils.js +1 -1
  323. package/widgets/BasemapGallery.js +1 -1
  324. package/widgets/BasemapLayerList.js +1 -1
  325. package/widgets/Bookmarks.js +1 -1
  326. package/widgets/Editor/CreateFeaturesWorkflow.js +1 -1
  327. package/widgets/Editor/EditorViewModel.js +1 -1
  328. package/widgets/Editor/UpdateRecordWorkflow.js +1 -1
  329. package/widgets/Editor/UpdateWorkflow.js +1 -1
  330. package/widgets/Expand.js +1 -1
  331. package/widgets/Feature/FeatureRelationship.js +1 -1
  332. package/widgets/Feature/support/featureUtils.js +1 -1
  333. package/widgets/FeatureForm/EditableInput.js +1 -1
  334. package/widgets/FeatureForm/FeatureFormViewModel.js +1 -1
  335. package/widgets/FeatureForm/RelationshipInput.js +1 -1
  336. package/widgets/FeatureForm.js +1 -1
  337. package/widgets/FeatureTemplates/FeatureTemplatesViewModel.js +1 -1
  338. package/widgets/Fullscreen.js +1 -1
  339. package/widgets/Legend/support/ActiveLayerInfo.js +1 -1
  340. package/widgets/Search.js +1 -1
  341. package/widgets/Swipe.js +1 -1
  342. package/widgets/UtilityNetworkTrace/UtilityNetworkTraceViewModel.js +1 -1
  343. package/widgets/UtilityNetworkTrace/support/ResultAreaHandler.js +1 -1
  344. package/widgets/UtilityNetworkTrace/support/UtilityHelper.js +1 -1
  345. package/widgets/UtilityNetworkTrace.js +1 -1
  346. package/widgets/support/SketchTooltipControls.js +1 -1
  347. package/widgets/support/globalCss.js +1 -1
  348. package/assets/esri/core/workers/chunks/0274b84548cb048562e4.js +0 -1
  349. package/assets/esri/core/workers/chunks/034accc7cab6c88a3b31.js +0 -1
  350. package/assets/esri/core/workers/chunks/0839b45999fcb556e460.js +0 -1
  351. package/assets/esri/core/workers/chunks/09589852b129bfb5624f.js +0 -1
  352. package/assets/esri/core/workers/chunks/132e9e6147304ffd128d.js +0 -1
  353. package/assets/esri/core/workers/chunks/1790ca4193d730f5f206.js +0 -1
  354. package/assets/esri/core/workers/chunks/1a449168d30a688e6128.js +0 -1
  355. package/assets/esri/core/workers/chunks/1c94624fd001c803a814.js +0 -1
  356. package/assets/esri/core/workers/chunks/25ab3bec45de900be36e.js +0 -1
  357. package/assets/esri/core/workers/chunks/273167b2dd46e58b8739.js +0 -1
  358. package/assets/esri/core/workers/chunks/2c5eb8aaad696fa16744.js +0 -1
  359. package/assets/esri/core/workers/chunks/353bad8530710a284592.js +0 -1
  360. package/assets/esri/core/workers/chunks/357d452b8522185cc433.js +0 -1
  361. package/assets/esri/core/workers/chunks/3c2be3d204e6bf87266a.js +0 -1
  362. package/assets/esri/core/workers/chunks/3c2c64832fb498bbaa83.js +0 -1
  363. package/assets/esri/core/workers/chunks/3c4d59018ce8502c65e7.js +0 -1
  364. package/assets/esri/core/workers/chunks/43eff89599f36d83924b.js +0 -1
  365. package/assets/esri/core/workers/chunks/4632ada4af99cab70a61.js +0 -1
  366. package/assets/esri/core/workers/chunks/481eab7879ed5d8a1f67.js +0 -1
  367. package/assets/esri/core/workers/chunks/4b3a5cc435435c81e6a5.js +0 -1
  368. package/assets/esri/core/workers/chunks/4f34fd8c2bb769541e9c.js +0 -1
  369. package/assets/esri/core/workers/chunks/4f5a0bc7411c0db33662.js +0 -1
  370. package/assets/esri/core/workers/chunks/56a4cea67cc579bf7547.js +0 -1
  371. package/assets/esri/core/workers/chunks/56afd89d08c874f620a1.js +0 -1
  372. package/assets/esri/core/workers/chunks/5b08d578521562b166e3.js +0 -1
  373. package/assets/esri/core/workers/chunks/5f938d6da9fd3f3edc74.js +0 -1
  374. package/assets/esri/core/workers/chunks/6108d72faf48a592c8ba.js +0 -1
  375. package/assets/esri/core/workers/chunks/656a8be4ce1bec721366.js +0 -1
  376. package/assets/esri/core/workers/chunks/7531ebc60e9ae61220e0.js +0 -1
  377. package/assets/esri/core/workers/chunks/77923afde29ae1ff10ca.js +0 -1
  378. package/assets/esri/core/workers/chunks/79683324be49aab79dd8.js +0 -1
  379. package/assets/esri/core/workers/chunks/7cdb4416afd5922cf5f3.js +0 -1
  380. package/assets/esri/core/workers/chunks/7e87bc83a0a2715e3016.js +0 -1
  381. package/assets/esri/core/workers/chunks/7f680cf24dd97d61bcd2.js +0 -1
  382. package/assets/esri/core/workers/chunks/7f797fed73cf7b48a686.js +0 -1
  383. package/assets/esri/core/workers/chunks/861609ebd3a77b787b0f.js +0 -1
  384. package/assets/esri/core/workers/chunks/869c3927f1e246cd1e42.js +0 -1
  385. package/assets/esri/core/workers/chunks/95371c0f5464f5daae9f.js +0 -1
  386. package/assets/esri/core/workers/chunks/962b99fd273709c726d3.js +0 -1
  387. package/assets/esri/core/workers/chunks/98fbcbb2115376d7ff62.js +0 -1
  388. package/assets/esri/core/workers/chunks/9abcd1d11bfd92f872ab.js +0 -1
  389. package/assets/esri/core/workers/chunks/9b54b5bdb6367c36f6e9.js +0 -1
  390. package/assets/esri/core/workers/chunks/9dab9f6c07ececa7f851.js +0 -1
  391. package/assets/esri/core/workers/chunks/9ff6ce486898713af7e2.js +0 -1
  392. package/assets/esri/core/workers/chunks/a98a435d4dbea73f7517.js +0 -1
  393. package/assets/esri/core/workers/chunks/b05bb6e784e5453696be.js +0 -1
  394. package/assets/esri/core/workers/chunks/b51d0ec283f61f638a48.js +0 -1
  395. package/assets/esri/core/workers/chunks/b5ee6c0c07fa50410370.js +0 -1
  396. package/assets/esri/core/workers/chunks/b9cf8f02974aeb3ce208.js +0 -1
  397. package/assets/esri/core/workers/chunks/bdf13091bd0e1ab0db7e.js +0 -1
  398. package/assets/esri/core/workers/chunks/bef1a1218a94ab6e2b51.js +0 -1
  399. package/assets/esri/core/workers/chunks/c22c2b15fe5f2c97a2ae.js +0 -1
  400. package/assets/esri/core/workers/chunks/c880d2f0ff06b3bf731f.js +0 -1
  401. package/assets/esri/core/workers/chunks/c88869d2a647c22dc3e6.js +0 -1
  402. package/assets/esri/core/workers/chunks/cc96be71fee49f07dcd4.js +0 -1
  403. package/assets/esri/core/workers/chunks/e4237360eef474d1f0ac.js +0 -1
  404. package/assets/esri/core/workers/chunks/e54ae2a4281dd58e0707.js +0 -1
  405. package/assets/esri/core/workers/chunks/e977e721f6f50e3c5f13.js +0 -1
  406. package/assets/esri/core/workers/chunks/ed31cf6688c0f7dac1f9.js +0 -1
  407. package/assets/esri/core/workers/chunks/f07a0ea10428adecea1a.js +0 -1
  408. package/assets/esri/core/workers/chunks/f1eab5c67ed808c18f86.js +0 -1
  409. package/assets/esri/core/workers/chunks/f2e7142a8db164940544.js +0 -1
  410. package/assets/esri/core/workers/chunks/f939b4166f76975f5da0.js +0 -1
  411. package/assets/esri/core/workers/chunks/ff4f4107a866e4a68386.js +0 -1
  412. package/layers/ogc/dateUtils.js +0 -5
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.28/esri/copyright.txt for details.
4
4
  */
5
- import{_ as e}from"../../../chunks/tslib.es6.js";import"../../../geometry.js";import t from"../../../Graphic.js";import r from"../../../core/Collection.js";import s from"../../../core/Error.js";import has from"../../../core/has.js";import o from"../../../core/Loadable.js";import i from"../../../core/Logger.js";import{EsriPromiseMixin as n}from"../../../core/Promise.js";import{open as a}from"../../../core/workers/workers.js";import{property as l}from"../../../core/accessorSupport/decorators/property.js";import{ensureType as u}from"../../../core/accessorSupport/ensureType.js";import"../../../core/arrayUtils.js";import{shared as p}from"../../../core/accessorSupport/decorators/shared.js";import{subclass as c}from"../../../core/accessorSupport/decorators/subclass.js";import{unapplyEditsZUnitScaling as d}from"../../../rest/query/operations/editsZScale.js";import{applyFeatureSetZUnitScaling as h}from"../../../rest/query/operations/queryZScale.js";import y from"../../../rest/support/FeatureSet.js";import m from"../../../geometry/Extent.js";import f from"../../../geometry/Polygon.js";import{typeKebabDictionary as g}from"../../../geometry/support/typeUtils.js";let _=0;const S="esri.layers.graphics.sources.MemorySource",T=i.getLogger(S);let j=class extends(o.LoadableMixin(n(r))){constructor(e){super(e),this._idToClientGraphic=null,this.type="memory"}load(e){const t=null!=e?e.signal:null;return this.addResolvingPromise(this._startWorker(t)),Promise.resolve(this)}destroy(){this._connection?.close(),this._connection=null}get _workerGeometryType(){const e=this.layer?.geometryType;return e?this._geometryTypeRequiresClientGraphicMapping(e)?"polygon":e:null}applyEdits(e){return this.load().then((()=>this._applyEdits(e)))}openPorts(){return this.load().then((()=>this._connection.openPorts()))}async queryFeatures(e,t={}){await this.load(t);const r=await this._connection.invoke("queryFeatures",e?e.toJSON():null,t);h(e,this.layer.spatialReference,r);const s=y.fromJSON(r);if(!this._requiresClientGraphicMapping())return s;const o=this.layer.objectIdField;for(const i of s.features){const e=i.attributes[o],t=this._idToClientGraphic.get(e);t&&(i.geometry=t.geometry)}return s.geometryType=this.layer.geometryType,s}async queryFeaturesJSON(e,t={}){if(this._requiresClientGraphicMapping())throw new s("query-features-json:unsupported","Cannot query in JSON format for client only geometry types (mesh and extent)");await this.load(t);const r=await this._connection.invoke("queryFeatures",e?e.toJSON():null,t);return h(e,this.layer.spatialReference,r),r}queryFeatureCount(e,t={}){return this.load(t).then((()=>this._connection.invoke("queryFeatureCount",e?e.toJSON():null,t)))}queryObjectIds(e,t={}){return this.load(t).then((()=>this._connection.invoke("queryObjectIds",e?e.toJSON():null,t)))}queryExtent(e,t={}){return this.load(t).then((()=>this._connection.invoke("queryExtent",e?e.toJSON():null,t))).then((e=>({count:e.count,extent:m.fromJSON(e.extent)})))}querySnapping(e,t={}){return this.load(t).then((()=>this._connection.invoke("querySnapping",e,t)))}async _applyEdits(e){if(!this._connection)throw new s("feature-layer-source:edit-failure","Memory source not loaded");const t=this.layer.objectIdField;let r=null;const o=[],i=[];await Promise.all([this._prepareClientMapping(e.addFeatures,null),this._prepareClientMapping(e.updateFeatures,null)]);const n=e=>"objectId"in e&&null!=e.objectId?e.objectId:"attributes"in e&&null!=e.attributes[t]?e.attributes[t]:null;if(e.addFeatures&&(r=this._prepareAddFeatures(e.addFeatures)),e.deleteFeatures)for(const s of e.deleteFeatures){const e=n(s);null!=e&&o.push(e)}const a=e.updateFeatures&&this._idToClientGraphic?new Map:null;if(e.updateFeatures)for(const s of e.updateFeatures)if(i.push(this._serializeFeature(s)),a){const e=n(s);null!=e&&a.set(e,s)}d(r?r.features:null,i,this.layer.spatialReference);const{fullExtent:l,featureEditResults:u}=await this._connection.invoke("applyEdits",{adds:r?r.features:[],updates:i,deletes:o});return this.fullExtent=l,r&&r.finish(u.uidToObjectId),this._updateClientGraphicIds(a,u),this._createEditsResult(u)}async _prepareClientMapping(e,t){if("mesh"!==this._layerOrSourceGeometryType||null==e)return;const r=[];for(const{geometry:s}of e)null==s||"mesh"!==s.type||s.hasExtent||s.loaded||r.push(s.load({signal:t}));r.length&&await Promise.all(r)}_updateClientGraphicIds(e,t){if(this._idToClientGraphic){if(e)for(const r of t.updateResults){if(!r.success)continue;const t=e.get(r.objectId);null!=t&&this._addIdToClientGraphic(t)}for(const e of t.deleteResults)e.success&&this._idToClientGraphic.delete(e.objectId)}}_createEditsResult(e){return{addFeatureResults:e.addResults?e.addResults.map(this._createFeatureEditResult,this):[],updateFeatureResults:e.updateResults?e.updateResults.map(this._createFeatureEditResult,this):[],deleteFeatureResults:e.deleteResults?e.deleteResults.map(this._createFeatureEditResult,this):[],addAttachmentResults:[],updateAttachmentResults:[],deleteAttachmentResults:[]}}_createFeatureEditResult(e){const t=!0===e.success?null:e.error||{code:void 0,description:void 0};return{objectId:e.objectId,globalId:e.globalId,error:t?new s("feature-layer-source:edit-failure",t.description,{code:t.code}):null}}_prepareAddFeatures(e){const t=new Map,r=new Array(e.length);let s=null;for(let i=0;i<e.length;i++){const o=e[i],n=this._serializeFeature(o);s||null==o.geometry||(s=o.geometry.type),r[i]=n,t.set(`${n.uid}`,o)}const o=this;return{features:r,inferredGeometryType:s,finish(e){const r=o.sourceJSON.objectIdField;for(const s in e){const i=e[s],n=t.get(s);n&&(n.attributes||(n.attributes={}),-1===i?delete n.attributes[r]:n.attributes[r]=i,o._addIdToClientGraphic(n))}}}}_addIdToClientGraphic(e){if(!this._idToClientGraphic)return;const t=this.sourceJSON.objectIdField,r=e.attributes&&e.attributes[t];null!=r&&this._idToClientGraphic.set(r,e)}get _layerOrSourceGeometryType(){return this.layer?.geometryType??this.sourceJSON?.geometryType}_requiresClientGraphicMapping(){return this._geometryTypeRequiresClientGraphicMapping(this._layerOrSourceGeometryType)}_geometryRequiresClientGraphicMapping(e){return this._geometryTypeRequiresClientGraphicMapping(e.type)}_geometryTypeRequiresClientGraphicMapping(e){return"mesh"===e||"multipatch"===e||"extent"===e}_serializeFeature(e){const{attributes:t}=e,r=this._geometryForSerialization(e),s=(_++).toString();return r?{uid:s,geometry:r.toJSON(),attributes:t}:{uid:s,attributes:t}}_geometryForSerialization(e){const{geometry:t}=e;if(null==t)return null;if(this._geometryRequiresClientGraphicMapping(t)){return t.extent?f.fromExtent(t.extent):null}return t}async _startWorker(e){this._connection=await a("MemorySourceWorker",{strategy:has("feature-layers-workers")?"dedicated":"local",signal:e,registryTarget:this});const{fields:t,spatialReference:r,objectIdField:s,hasM:o,hasZ:i,timeInfo:n}=this.layer,l="defaults"===this.layer.originOf("spatialReference");await this._prepareClientMapping(this.items,e);const u=this._prepareAddFeatures(this.items);this.addHandles(this.on("before-changes",(e=>{T.error("Source modifications will not propagate after layer has been loaded. Please use .applyEdits() instead"),e.preventDefault()})));const p={features:u.features,fields:t&&t.map((e=>e.toJSON())),geometryType:g.toJSON(this._workerGeometryType),hasM:"mesh"!==this._layerOrSourceGeometryType&&o,hasZ:"mesh"===this._layerOrSourceGeometryType||i,objectIdField:s,spatialReference:l?null:r&&r.toJSON(),timeInfo:n?n.toJSON():null},c=await this._connection.invoke("load",p,{signal:e});for(const a of c.warnings)T.warn(a.message,{layer:this.layer,warning:a});c.featureErrors.length&&T.warn(`Encountered ${c.featureErrors.length} validation errors while loading features`,c.featureErrors);const d=c.layerDefinition;this._geometryTypeRequiresClientGraphicMapping(u.inferredGeometryType)&&(d.geometryType=g.toJSON(u.inferredGeometryType)),this.sourceJSON=d,this._requiresClientGraphicMapping()&&(this._idToClientGraphic=new Map),u.finish(c.assignedObjectIds)}};e([p({Type:t,ensureType:u(t)})],j.prototype,"itemType",void 0),e([l()],j.prototype,"type",void 0),e([l({constructOnly:!0})],j.prototype,"layer",void 0),e([l({readOnly:!0})],j.prototype,"_workerGeometryType",null),e([l()],j.prototype,"sourceJSON",void 0),j=e([c(S)],j);export{j as MemorySource};
5
+ import{_ as e}from"../../../chunks/tslib.es6.js";import"../../../geometry.js";import t from"../../../Graphic.js";import r from"../../../core/Collection.js";import s from"../../../core/Error.js";import has from"../../../core/has.js";import i from"../../../core/Loadable.js";import o from"../../../core/Logger.js";import{EsriPromiseMixin as n}from"../../../core/Promise.js";import{open as a}from"../../../core/workers/workers.js";import{property as l}from"../../../core/accessorSupport/decorators/property.js";import{ensureType as u}from"../../../core/accessorSupport/ensureType.js";import"../../../core/arrayUtils.js";import{shared as p}from"../../../core/accessorSupport/decorators/shared.js";import{subclass as c}from"../../../core/accessorSupport/decorators/subclass.js";import{unapplyEditsZUnitScaling as d}from"../../../rest/query/operations/editsZScale.js";import{applyFeatureSetZUnitScaling as h}from"../../../rest/query/operations/queryZScale.js";import y from"../../../rest/support/FeatureSet.js";import m from"../../../geometry/Extent.js";import f from"../../../geometry/Polygon.js";import{typeKebabDictionary as g}from"../../../geometry/support/typeUtils.js";let _=0,S=class extends(i.LoadableMixin(n(r))){constructor(e){super(e),this._idToClientGraphic=null,this.type="memory"}load(e){const t=null!=e?e.signal:null;return this.addResolvingPromise(this._startWorker(t)),Promise.resolve(this)}destroy(){this._connection?.close(),this._connection=null}get _workerGeometryType(){const e=this.layer?.geometryType;return e?this._geometryTypeRequiresClientGraphicMapping(e)?"polygon":e:null}applyEdits(e){return this.load().then((()=>this._applyEdits(e)))}openPorts(){return this.load().then((()=>this._connection.openPorts()))}async queryFeatures(e,t={}){await this.load(t);const r=await this._connection.invoke("queryFeatures",e?e.toJSON():null,t);h(e,this.layer.spatialReference,r);const s=y.fromJSON(r);if(!this._requiresClientGraphicMapping())return s;const i=this.layer.objectIdField;for(const o of s.features){const e=o.attributes[i],t=this._idToClientGraphic.get(e);t&&(o.geometry=t.geometry)}return s.geometryType=this.layer.geometryType,s}async queryFeaturesJSON(e,t={}){if(this._requiresClientGraphicMapping())throw new s("query-features-json:unsupported","Cannot query in JSON format for client only geometry types (mesh and extent)");await this.load(t);const r=await this._connection.invoke("queryFeatures",e?e.toJSON():null,t);return h(e,this.layer.spatialReference,r),r}queryFeatureCount(e,t={}){return this.load(t).then((()=>this._connection.invoke("queryFeatureCount",e?e.toJSON():null,t)))}queryObjectIds(e,t={}){return this.load(t).then((()=>this._connection.invoke("queryObjectIds",e?e.toJSON():null,t)))}queryExtent(e,t={}){return this.load(t).then((()=>this._connection.invoke("queryExtent",e?e.toJSON():null,t))).then((e=>({count:e.count,extent:m.fromJSON(e.extent)})))}querySnapping(e,t={}){return this.load(t).then((()=>this._connection.invoke("querySnapping",e,t)))}async _applyEdits(e){if(!this._connection)throw new s("feature-layer-source:edit-failure","Memory source not loaded");const t=this.layer.objectIdField;let r=null;const i=[],o=[];await Promise.all([this._prepareClientMapping(e.addFeatures,null),this._prepareClientMapping(e.updateFeatures,null)]);const n=e=>"objectId"in e&&null!=e.objectId?e.objectId:"attributes"in e&&null!=e.attributes[t]?e.attributes[t]:null;if(e.addFeatures&&(r=this._prepareAddFeatures(e.addFeatures)),e.deleteFeatures)for(const s of e.deleteFeatures){const e=n(s);null!=e&&i.push(e)}const a=e.updateFeatures&&this._idToClientGraphic?new Map:null;if(e.updateFeatures)for(const s of e.updateFeatures)if(o.push(this._serializeFeature(s)),a){const e=n(s);null!=e&&a.set(e,s)}d(r?r.features:null,o,this.layer.spatialReference);const{fullExtent:l,featureEditResults:u}=await this._connection.invoke("applyEdits",{adds:r?r.features:[],updates:o,deletes:i});return this.fullExtent=l,r&&r.finish(u.uidToObjectId),this._updateClientGraphicIds(a,u),this._createEditsResult(u)}async _prepareClientMapping(e,t){if("mesh"!==this._layerOrSourceGeometryType||null==e)return;const r=[];for(const{geometry:s}of e)null==s||"mesh"!==s.type||s.hasExtent||s.loaded||r.push(s.load({signal:t}));r.length&&await Promise.all(r)}_updateClientGraphicIds(e,t){if(this._idToClientGraphic){if(e)for(const r of t.updateResults){if(!r.success)continue;const t=e.get(r.objectId);null!=t&&this._addIdToClientGraphic(t)}for(const e of t.deleteResults)e.success&&this._idToClientGraphic.delete(e.objectId)}}_createEditsResult(e){return{addFeatureResults:e.addResults?e.addResults.map(this._createFeatureEditResult,this):[],updateFeatureResults:e.updateResults?e.updateResults.map(this._createFeatureEditResult,this):[],deleteFeatureResults:e.deleteResults?e.deleteResults.map(this._createFeatureEditResult,this):[],addAttachmentResults:[],updateAttachmentResults:[],deleteAttachmentResults:[]}}_createFeatureEditResult(e){const t=!0===e.success?null:e.error||{code:void 0,description:void 0};return{objectId:e.objectId,globalId:e.globalId,error:t?new s("feature-layer-source:edit-failure",t.description,{code:t.code}):null}}_prepareAddFeatures(e){const t=new Map,r=new Array(e.length);let s=null;for(let o=0;o<e.length;o++){const i=e[o],n=this._serializeFeature(i);s||null==i.geometry||(s=i.geometry.type),r[o]=n,t.set(`${n.uid}`,i)}const i=this;return{features:r,inferredGeometryType:s,finish(e){const r=i.sourceJSON.objectIdField;for(const s in e){const o=e[s],n=t.get(s);n&&(n.attributes||(n.attributes={}),-1===o?delete n.attributes[r]:n.attributes[r]=o,i._addIdToClientGraphic(n))}}}}_addIdToClientGraphic(e){if(!this._idToClientGraphic)return;const t=this.sourceJSON.objectIdField,r=e.attributes&&e.attributes[t];null!=r&&this._idToClientGraphic.set(r,e)}get _layerOrSourceGeometryType(){return this.layer?.geometryType??this.sourceJSON?.geometryType}_requiresClientGraphicMapping(){return this._geometryTypeRequiresClientGraphicMapping(this._layerOrSourceGeometryType)}_geometryRequiresClientGraphicMapping(e){return this._geometryTypeRequiresClientGraphicMapping(e.type)}_geometryTypeRequiresClientGraphicMapping(e){return"mesh"===e||"multipatch"===e||"extent"===e}_serializeFeature(e){const{attributes:t}=e,r=this._geometryForSerialization(e),s=(_++).toString();return r?{uid:s,geometry:r.toJSON(),attributes:t}:{uid:s,attributes:t}}_geometryForSerialization(e){const{geometry:t}=e;if(null==t)return null;if(this._geometryRequiresClientGraphicMapping(t)){return t.extent?f.fromExtent(t.extent):null}return t}async _startWorker(e){this._connection=await a("MemorySourceWorker",{strategy:has("feature-layers-workers")?"dedicated":"local",signal:e,registryTarget:this});const{fields:t,spatialReference:r,objectIdField:s,hasM:i,hasZ:n,timeInfo:l}=this.layer,u="defaults"===this.layer.originOf("spatialReference");await this._prepareClientMapping(this.items,e);const p=this._prepareAddFeatures(this.items);this.addHandles(this.on("before-changes",(e=>{o.getLogger(this).error("Source modifications will not propagate after layer has been loaded. Please use .applyEdits() instead"),e.preventDefault()})));const c={features:p.features,fields:t&&t.map((e=>e.toJSON())),geometryType:g.toJSON(this._workerGeometryType),hasM:"mesh"!==this._layerOrSourceGeometryType&&i,hasZ:"mesh"===this._layerOrSourceGeometryType||n,objectIdField:s,spatialReference:u?null:r&&r.toJSON(),timeInfo:l?l.toJSON():null},d=await this._connection.invoke("load",c,{signal:e});for(const a of d.warnings)o.getLogger(this.layer).warn("#load()",`${a.message} (title: '${this.layer.title||"no title"}', id: '${this.layer.id??"no id"}')`,{warning:a});d.featureErrors.length&&o.getLogger(this.layer).warn("#load()",`Encountered ${d.featureErrors.length} validation errors while loading features. (title: '${this.layer.title||"no title"}', id: '${this.layer.id??"no id"}')`,{errors:d.featureErrors});const h=d.layerDefinition;this._geometryTypeRequiresClientGraphicMapping(p.inferredGeometryType)&&(h.geometryType=g.toJSON(p.inferredGeometryType)),this.sourceJSON=h,this._requiresClientGraphicMapping()&&(this._idToClientGraphic=new Map),p.finish(d.assignedObjectIds)}};e([p({Type:t,ensureType:u(t)})],S.prototype,"itemType",void 0),e([l()],S.prototype,"type",void 0),e([l({constructOnly:!0})],S.prototype,"layer",void 0),e([l({readOnly:!0})],S.prototype,"_workerGeometryType",null),e([l()],S.prototype,"sourceJSON",void 0),S=e([c("esri.layers.graphics.sources.MemorySource")],S);export{S as MemorySource};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.28/esri/copyright.txt for details.
4
4
  */
5
- import{_ as e}from"../../../chunks/tslib.es6.js";import"../../../geometry.js";import t from"../../../core/Error.js";import has from"../../../core/has.js";import r from"../../../core/Loadable.js";import{debounce as s,eachAlways as o}from"../../../core/promiseUtils.js";import{open as a}from"../../../core/workers/workers.js";import{property as i}from"../../../core/accessorSupport/decorators/property.js";import"../../../core/accessorSupport/ensureType.js";import"../../../core/arrayUtils.js";import{subclass as n}from"../../../core/accessorSupport/decorators/subclass.js";import{featureGeometryTypeKebabDictionary as c}from"../../../geometry/support/typeUtils.js";import{createCapabilities as p,createDrawingInfo as l}from"./support/clientSideDefaults.js";import{getCapabilities as u,getWFSLayerInfo as m,prepareWFSLayerFields as y,findFeatureType as d}from"../../ogc/wfsUtils.js";import f from"../../../rest/support/FeatureSet.js";import h from"../../../geometry/Extent.js";let w=class extends r{constructor(){super(...arguments),this._connection=null,this.capabilities=p(!1,!1),this.type="wfs",this.refresh=s((async e=>{await this.load();const{extent:t}=await this._connection.invoke("refresh",e);return t&&(this.sourceJSON.extent=t),{dataChanged:!0,updates:{extent:this.sourceJSON.extent}}}))}load(e){const t=null!=e?e.signal:null;return this.addResolvingPromise(this._startWorker({signal:t})),Promise.resolve(this)}destroy(){this._connection?.close(),this._connection=null}async openPorts(){return await this.load(),this._connection.openPorts()}async queryFeatures(e,t={}){await this.load(t);const r=await this._connection.invoke("queryFeatures",e?e.toJSON():null,t);return f.fromJSON(r)}async queryFeaturesJSON(e,t={}){return await this.load(t),this._connection.invoke("queryFeatures",e?e.toJSON():null,t)}async queryFeatureCount(e,t={}){return await this.load(t),this._connection.invoke("queryFeatureCount",e?e.toJSON():null,t)}async queryObjectIds(e,t={}){return await this.load(t),this._connection.invoke("queryObjectIds",e?e.toJSON():null,t)}async queryExtent(e,t={}){await this.load(t);const r=await this._connection.invoke("queryExtent",e?e.toJSON():null,t);return{count:r.count,extent:h.fromJSON(r.extent)}}async querySnapping(e,t={}){return await this.load(t),this._connection.invoke("querySnapping",e,t)}async _createLoadOptions(e){const{url:r,customParameters:s,name:o,namespaceUri:a,fields:i,geometryType:n,swapXY:p}=this.layer,l="defaults"===this.layer.originOf("spatialReference")?void 0:this.layer.spatialReference;if(!r)throw new t("wfs-layer:missing-url","WFSLayer must be created with a url");this.wfsCapabilities||(this.wfsCapabilities=await u(r,{customParameters:s,...e}));const f=["fields","geometryType","name","namespaceUri","swapXY"].some((e=>null==this.layer[e])),h=f?await m(this.wfsCapabilities,o,a,{spatialReference:l,customParameters:s,signal:e?.signal}):{...y(i??[]),geometryType:n,name:o,namespaceUri:a,spatialReference:l,swapXY:p},w=d(this.wfsCapabilities.readFeatureTypes(),h.name,h.namespaceUri),g=c.toJSON(h.geometryType);return{customParameters:s,featureType:w,fields:h.fields?.map((e=>e.toJSON()))??[],geometryField:h.geometryField,geometryType:g,getFeatureUrl:this.wfsCapabilities.operations.GetFeature.url,getFeatureOutputFormat:this.wfsCapabilities.operations.GetFeature.outputFormat,objectIdField:h.objectIdField,spatialReference:h.spatialReference?.toJSON(),swapXY:!!h.swapXY}}async _startWorker(e){const[t,r]=await o([this._createLoadOptions(e),a("WFSSourceWorker",{...e,strategy:has("feature-layers-workers")?"dedicated":"local",registryTarget:this})]),s=t.error||r.error||null,i=r.value||null;if(s)throw i&&i.close(),s;const n=t.value;this._connection=r.value;const c=(await this._connection.invoke("load",n,e)).extent;this.sourceJSON={extent:c,fields:n.fields,geometryType:n.geometryType,objectIdField:n.objectIdField,geometryField:n.geometryField,drawingInfo:l(n.geometryType),name:n.featureType.title,wfsInfo:{name:n.featureType.name,featureUrl:n.getFeatureUrl,maxFeatures:3e3,swapXY:n.swapXY,supportedSpatialReferences:n.featureType.supportedSpatialReferences,version:"2.0.0",wfsNamespace:n.featureType.namespaceUri}}}};e([i()],w.prototype,"capabilities",void 0),e([i({constructOnly:!0})],w.prototype,"layer",void 0),e([i()],w.prototype,"sourceJSON",void 0),e([i()],w.prototype,"type",void 0),e([i()],w.prototype,"wfsCapabilities",void 0),w=e([n("esri.layers.graphics.sources.WFSSource")],w);export{w as WFSSource};
5
+ import{_ as e}from"../../../chunks/tslib.es6.js";import"../../../geometry.js";import t from"../../../core/Error.js";import has from"../../../core/has.js";import r from"../../../core/Loadable.js";import{debounce as s,eachAlways as o}from"../../../core/promiseUtils.js";import{open as a}from"../../../core/workers/workers.js";import{property as i}from"../../../core/accessorSupport/decorators/property.js";import"../../../core/accessorSupport/ensureType.js";import"../../../core/arrayUtils.js";import{subclass as n}from"../../../core/accessorSupport/decorators/subclass.js";import{featureGeometryTypeKebabDictionary as c}from"../../../geometry/support/typeUtils.js";import{createCapabilities as p,createDrawingInfo as l}from"./support/clientSideDefaults.js";import{getCapabilities as u,getWFSLayerInfo as m,prepareWFSLayerFields as y,findFeatureType as d}from"../../ogc/wfsUtils.js";import f from"../../../rest/support/FeatureSet.js";import{utc as h}from"../../../time/timeZoneUtils.js";import w from"../../../geometry/Extent.js";let g=class extends r{constructor(){super(...arguments),this._connection=null,this.capabilities=p(!1,!1),this.type="wfs",this.refresh=s((async e=>{await this.load();const{extent:t}=await this._connection.invoke("refresh",e);return t&&(this.sourceJSON.extent=t),{dataChanged:!0,updates:{extent:this.sourceJSON.extent}}}))}load(e){const t=null!=e?e.signal:null;return this.addResolvingPromise(this._startWorker({signal:t})),Promise.resolve(this)}destroy(){this._connection?.close(),this._connection=null}async openPorts(){return await this.load(),this._connection.openPorts()}async queryFeatures(e,t={}){await this.load(t);const r=await this._connection.invoke("queryFeatures",e?e.toJSON():null,t);return f.fromJSON(r)}async queryFeaturesJSON(e,t={}){return await this.load(t),this._connection.invoke("queryFeatures",e?e.toJSON():null,t)}async queryFeatureCount(e,t={}){return await this.load(t),this._connection.invoke("queryFeatureCount",e?e.toJSON():null,t)}async queryObjectIds(e,t={}){return await this.load(t),this._connection.invoke("queryObjectIds",e?e.toJSON():null,t)}async queryExtent(e,t={}){await this.load(t);const r=await this._connection.invoke("queryExtent",e?e.toJSON():null,t);return{count:r.count,extent:w.fromJSON(r.extent)}}async querySnapping(e,t={}){return await this.load(t),this._connection.invoke("querySnapping",e,t)}async _createLoadOptions(e){const{url:r,customParameters:s,name:o,namespaceUri:a,fields:i,geometryType:n,swapXY:p}=this.layer,l="defaults"===this.layer.originOf("spatialReference")?void 0:this.layer.spatialReference;if(!r)throw new t("wfs-layer:missing-url","WFSLayer must be created with a url");this.wfsCapabilities||(this.wfsCapabilities=await u(r,{customParameters:s,...e}));const f=["fields","geometryType","name","namespaceUri","swapXY"].some((e=>null==this.layer[e])),h=f?await m(this.wfsCapabilities,o,a,{spatialReference:l,customParameters:s,signal:e?.signal}):{...y(i??[]),geometryType:n,name:o,namespaceUri:a,spatialReference:l,swapXY:p},w=d(this.wfsCapabilities.readFeatureTypes(),h.name,h.namespaceUri),g=c.toJSON(h.geometryType);return{customParameters:s,featureType:w,fields:h.fields?.map((e=>e.toJSON()))??[],geometryField:h.geometryField,geometryType:g,getFeatureUrl:this.wfsCapabilities.operations.GetFeature.url,getFeatureOutputFormat:this.wfsCapabilities.operations.GetFeature.outputFormat,objectIdField:h.objectIdField,spatialReference:h.spatialReference?.toJSON(),swapXY:!!h.swapXY}}async _startWorker(e){const[t,r]=await o([this._createLoadOptions(e),a("WFSSourceWorker",{...e,strategy:has("feature-layers-workers")?"dedicated":"local",registryTarget:this})]),s=t.error||r.error||null,i=r.value||null;if(s)throw i&&i.close(),s;const n=t.value;this._connection=r.value;const c=(await this._connection.invoke("load",n,e)).extent;this.sourceJSON={dateFieldsTimeReference:{timeZoneIANA:h},extent:c,fields:n.fields,geometryType:n.geometryType,objectIdField:n.objectIdField,geometryField:n.geometryField,drawingInfo:l(n.geometryType),name:n.featureType.title,wfsInfo:{name:n.featureType.name,featureUrl:n.getFeatureUrl,maxFeatures:3e3,swapXY:n.swapXY,supportedSpatialReferences:n.featureType.supportedSpatialReferences,version:"2.0.0",wfsNamespace:n.featureType.namespaceUri}}}};e([i()],g.prototype,"capabilities",void 0),e([i({constructOnly:!0})],g.prototype,"layer",void 0),e([i()],g.prototype,"sourceJSON",void 0),e([i()],g.prototype,"type",void 0),e([i()],g.prototype,"wfsCapabilities",void 0),g=e([n("esri.layers.graphics.sources.WFSSource")],g);export{g as WFSSource};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.28/esri/copyright.txt for details.
4
4
  */
5
- import{createTask as e}from"../../../core/asyncUtils.js";import t from"../../../core/Error.js";import r from"../../../core/Logger.js";import{throwIfAborted as s,isAbortError as a}from"../../../core/promiseUtils.js";import{equals as i}from"../../../geometry/support/spatialReferenceUtils.js";import{convertFromGeometry as n,convertToGeometry as o}from"../featureConversionUtils.js";import u from"../data/FeatureStore.js";import{project as p,checkProjectionSupport as h}from"../data/projectionSupport.js";import{QueryEngine as l}from"../data/QueryEngine.js";import{validateGeoJSON as c,createOptimizedFeatures as y}from"./geojson/geojson.js";import{mixAttributes as m}from"./support/sourceUtils.js";import{getFeature as g}from"../../ogc/wfsUtils.js";import f from"../../support/FieldsIndex.js";class d{constructor(){this._queryEngine=null,this._customParameters=null,this._snapshotFeatures=async e=>{const{objectIdField:t}=this._queryEngine,r=await g(this._getFeatureUrl??"",this._featureType.typeName,this._getFeatureSpatialReference,this._getFeatureOutputFormat,{customParameters:this._customParameters,dateFields:this._queryEngine.fieldsIndex.dateFields.map((e=>e.name)),signal:e});await c(r,this._getFeatureSpatialReference.wkid),s(e);const a=y(r,{geometryType:this._queryEngine.geometryType,hasZ:!1,objectIdField:t});if(!i(this._queryEngine.spatialReference,this._getFeatureSpatialReference))for(const s of a)null!=s.geometry&&(s.geometry=n(p(o(s.geometry,this._queryEngine.geometryType,!1,!1),this._getFeatureSpatialReference,this._queryEngine.spatialReference)));let u=1;for(const s of a){const e={};m(this._fieldsIndex,e,s.attributes,!0),s.attributes=e,null==s.attributes[t]&&(s.objectId=s.attributes[t]=u++)}return a}}destroy(){this._queryEngine?.destroy(),this._queryEngine=null}async load(e,r){const{getFeatureUrl:a,getFeatureOutputFormat:i,fields:n,geometryType:o,featureType:p,objectIdField:c,customParameters:y}=e,m={wkid:p.defaultSpatialReference},g=e.spatialReference??m,d=g.wkid&&p.supportedSpatialReferences.includes(g.wkid)?{wkid:g.wkid}:{wkid:p.defaultSpatialReference};this._featureType=p,this._customParameters=y,this._getFeatureUrl=a,this._getFeatureOutputFormat=i,this._getFeatureSpatialReference=d,this._fieldsIndex=new f(n);try{await h(d,g)}catch{throw new t("unsupported-projection","Projection not supported",{inSpatialReference:d,outSpatialReference:g})}s(r),this._queryEngine=new l({fields:n,geometryType:o,hasM:!1,hasZ:!1,objectIdField:c,spatialReference:g,timeInfo:null,featureStore:new u({geometryType:o,hasM:!1,hasZ:!1})});const _=await this._snapshotFeatures(r.signal);return this._queryEngine.featureStore.addMany(_),{extent:(await this._queryEngine.fetchRecomputedExtents()).fullExtent}}async applyEdits(){throw new t("wfs-source:editing-not-supported","applyEdits() is not supported on WFSLayer")}async queryFeatures(e={},t={}){return await this._waitSnapshotComplete(),this._queryEngine.executeQuery(e,t.signal)}async queryFeatureCount(e={},t={}){return await this._waitSnapshotComplete(),this._queryEngine.executeQueryForCount(e,t.signal)}async queryObjectIds(e={},t={}){return await this._waitSnapshotComplete(),this._queryEngine.executeQueryForIds(e,t.signal)}async queryExtent(e={},t={}){return await this._waitSnapshotComplete(),this._queryEngine.executeQueryForExtent(e,t.signal)}async querySnapping(e,t={}){return await this._waitSnapshotComplete(),this._queryEngine.executeQueryForSnapping(e,t.signal)}async refresh(s){return this._customParameters=s,this._snapshotTask?.abort(),this._snapshotTask=e(this._snapshotFeatures),this._snapshotTask.promise.then((e=>{this._queryEngine.featureStore.clear(),e&&this._queryEngine.featureStore.addMany(e)}),(e=>{this._queryEngine.featureStore.clear(),a(e)||r.getLogger("esri.layers.WFSLayer").error(new t("wfs-layer:getfeature-error","An error occurred during the GetFeature request",{error:e}))})),await this._waitSnapshotComplete(),{extent:(await this._queryEngine.fetchRecomputedExtents()).fullExtent}}async _waitSnapshotComplete(){if(this._snapshotTask&&!this._snapshotTask.finished){try{await this._snapshotTask.promise}catch{}return this._waitSnapshotComplete()}}}export{d as default};
5
+ import{createTask as e}from"../../../core/asyncUtils.js";import t from"../../../core/Error.js";import r from"../../../core/Logger.js";import{throwIfAborted as s,isAbortError as a}from"../../../core/promiseUtils.js";import{equals as i}from"../../../geometry/support/spatialReferenceUtils.js";import{convertFromGeometry as n,convertToGeometry as o}from"../featureConversionUtils.js";import{checkProjectionSupport as u,project as p}from"../data/projectionSupport.js";import{validateGeoJSON as h,createOptimizedFeatures as l}from"./geojson/geojson.js";import{mixAttributes as c,parseStringDateFieldValues as y}from"./support/sourceUtils.js";import{getGetFeatureSpatialReference as m,getFeature as g}from"../../ogc/wfsUtils.js";import f from"../../support/FieldsIndex.js";class d{constructor(){this._queryEngine=null,this._customParameters=null}destroy(){this._queryEngine?.destroy(),this._queryEngine=null}async load(e,r){const{getFeatureUrl:a,getFeatureOutputFormat:i,fields:n,geometryType:o,featureType:p,objectIdField:h,customParameters:l}=e,{spatialReference:c,getFeatureSpatialReference:y}=m(a,p,e.spatialReference);this._featureType=p,this._customParameters=l,this._getFeatureUrl=a,this._getFeatureOutputFormat=i,this._getFeatureSpatialReference=y,this._fieldsIndex=new f(n);try{await u(y,c)}catch{throw new t("unsupported-projection","Projection not supported",{inSpatialReference:y,outSpatialReference:c})}s(r);const[g,{QueryEngine:d,FeatureStore:_}]=await Promise.all([this._snapshotFeatures({fieldsIndex:this._fieldsIndex,geometryType:o,objectIdField:h,spatialReference:c},r.signal),import("./support/QueryEngineBuildLayer.js")]);return this._queryEngine=new d({fields:n,geometryType:o,hasM:!1,hasZ:!1,objectIdField:h,spatialReference:c,timeInfo:null,featureStore:new _({geometryType:o,hasM:!1,hasZ:!1})}),this._queryEngine.featureStore.addMany(g),{extent:(await this._queryEngine.fetchRecomputedExtents()).fullExtent}}async applyEdits(){throw new t("wfs-source:editing-not-supported","applyEdits() is not supported on WFSLayer")}async queryFeatures(e={},t={}){return await this._waitSnapshotComplete(),this._queryEngine.executeQuery(e,t.signal)}async queryFeatureCount(e={},t={}){return await this._waitSnapshotComplete(),this._queryEngine.executeQueryForCount(e,t.signal)}async queryObjectIds(e={},t={}){return await this._waitSnapshotComplete(),this._queryEngine.executeQueryForIds(e,t.signal)}async queryExtent(e={},t={}){return await this._waitSnapshotComplete(),this._queryEngine.executeQueryForExtent(e,t.signal)}async querySnapping(e,t={}){return await this._waitSnapshotComplete(),this._queryEngine.executeQueryForSnapping(e,t.signal)}async refresh(s){return this._customParameters=s,this._snapshotTask?.abort(),this._snapshotTask=e((e=>this._snapshotFeatures(this._queryEngine,e))),this._snapshotTask.promise.then((e=>{this._queryEngine.featureStore.clear(),e&&this._queryEngine.featureStore.addMany(e)}),(e=>{this._queryEngine.featureStore.clear(),a(e)||r.getLogger("esri.layers.WFSLayer").error(new t("wfs-layer:getfeature-error","An error occurred during the GetFeature request",{error:e}))})),await this._waitSnapshotComplete(),{extent:(await this._queryEngine.fetchRecomputedExtents()).fullExtent}}async _waitSnapshotComplete(){if(this._snapshotTask&&!this._snapshotTask.finished){try{await this._snapshotTask.promise}catch{}return this._waitSnapshotComplete()}}async _snapshotFeatures({objectIdField:e,geometryType:t,spatialReference:r,fieldsIndex:a},u){const m=await g(this._getFeatureUrl??"",this._featureType.typeName,this._getFeatureSpatialReference,this._getFeatureOutputFormat,{customParameters:this._customParameters,signal:u});await h(m,this._getFeatureSpatialReference.wkid),s(u);const f=l(m,{geometryType:t,hasZ:!1,objectIdField:e});if(!i(r,this._getFeatureSpatialReference))for(const s of f)null!=s.geometry&&(s.geometry=n(p(o(s.geometry,t,!1,!1),this._getFeatureSpatialReference,r)));let d=1;const _=a.dateFields;for(const s of f){const t={};c(a,t,s.attributes,!0),y(_,t),s.attributes=t,null==t[e]&&(s.objectId=t[e]=d++)}return f}}export{d as default};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.28/esri/copyright.txt for details.
4
4
  */
5
- import{_parseInfo as e}from"../../../../core/number.js";import{normalizeFieldName as t}from"../../../support/fieldUtils.js";const n=/^\s*"([\S\s]*)"\s*$/,i=/""/g,r="\n",l=[","," ",";","|","\t"];function*o(e,t,n){let i=0;for(;i<=e.length;){const r=e.indexOf(t,i),l=e.substring(i,r>-1?r:void 0);i+=l.length+t.length,n&&!l.trim()||(yield l)}}function s(e){const t=e.includes("\r\n")?"\r\n":r;return o(e,t,!0)}function u(e,t){return o(e,t,!1)}function c(e,t,n){e=e.trim(),t=t?.trim();const i=[],r=Array.from(new Set([n?.delimiter,...l])).filter((e=>null!=e));for(const l of r){const n=d(e,l).length,r=d(t,l).length??n;n>1&&i.push({weight:Math.min(n,r),delimiter:l})}const o=i.sort((({weight:e},{weight:t})=>t-e)).map((({delimiter:e})=>e));for(const l of o){const t=m(f(e,l).names,n?.longitudeField,n?.latitudeField);if(t.longitudeFieldName&&t.latitudeFieldName)return{delimiter:l,locationInfo:t}}return{delimiter:o[0],locationInfo:null}}function*a(e,t,l,o=(()=>Object.create(null))){const c=s(e);c.next();let a="",f="",d=0,m=o(),p=0;e:for(const s of c){const e=u(s,l);for(const r of e)if(a+=f+r,f="",d+=g(r),d%2==0){if(d>0){const e=n.exec(a);if(!e){m=o(),p=0,a="",d=0;continue e}m[t[p]]=e[1].replaceAll(i,'"'),p++}else m[t[p]]=a,p++;a="",d=0}else f=l;0===d?(yield m,m=o(),p=0):f=r}}function f(e,n){const i=d(e,n).filter((e=>null!=e)),r=i.map((e=>t(e)));for(let t=r.length-1;t>=0;t--)r[t]||(r.splice(t,1),i.splice(t,1));return{names:r,aliases:i}}function d(e,t){if(!e?.length)return[];const r=[];let l="",o="",s=0;const c=u(e,t);for(const u of c)if(l+=o+u,o="",s+=g(u),s%2==0){if(s>0){const e=n.exec(l);e&&r.push(e[1].replaceAll(i,'"'))}else r.push(l);l="",s=0}else o=t;return r}function g(e){let t=0,n=0;for(n=e.indexOf('"',n);n>=0;)t++,n=e.indexOf('"',n+1);return t}function m(e,n,i){n=t(n)?.toLowerCase(),i=t(i)?.toLowerCase();const r=e.map((e=>e.toLowerCase())),l=n?e[r.indexOf(n)]:null,o=i?e[r.indexOf(i)]:null;return{longitudeFieldName:l||e[r.indexOf(w.find((e=>r.includes(e))))],latitudeFieldName:o||e[r.indexOf(F.find((e=>r.includes(e))))]}}function p(e,t,n,i,r){const l=[],o=a(e,n,t),s=[];for(const u of o){if(10===s.length)break;s.push(u)}for(let u=0;u<n.length;u++){const e=n[u],t=i[u];if(e===r.longitudeFieldName||e===r.latitudeFieldName)l.push({name:e,type:"esriFieldTypeDouble",alias:t});else{let n,i;switch(b(s.map((t=>t[e])))){case"integer":n="esriFieldTypeInteger";break;case"double":n="esriFieldTypeDouble";break;case"date":n="esriFieldTypeDate",i=36;break;default:n="esriFieldTypeString",i=255}l.push({name:e,type:n,alias:t,length:i})}}return l}function b(e){if(!e.length)return"string";const t=/[^+\-.,0-9]/;return e.map((e=>{let n=!1;if(""!==e){if(t.test(e))n=!0;else{let t=N(e);if(!isNaN(t))return/[.,]/.test(e)||!Number.isInteger(t)||t>214783647||t<-214783648?"double":"integer";if(e.includes("E")){if(t=Number(e),!isNaN(t))return"double";if(e.includes(",")){if(e=e.replace(",","."),t=Number(e),!isNaN(t))return"double";n=!0}else n=!0}else n=!0}if(n){if(!/^[-]?\d*[.,]?\d*$/.test(e)){return h(new Date(e),e)?"date":"string"}return"string"}return"string"}})).reduce(((e,t)=>void 0===e?t:void 0===t?e:e===t?t:"string"===e||"string"===t?"string":"double"===e||"double"===t?"double":void 0))}function h(e,t){if(!e||"[object Date]"!==Object.prototype.toString.call(e)||isNaN(e.getTime()))return!1;let n=!0;if(!y&&/\d+\W*$/.test(t)){const e=t.match(/[a-zA-Z]{2,}/);if(e){let t=!1,i=0;for(;!t&&i<=e.length;)t=!x.test(e[i]),i++;n=!t}}return n}const N=function(){const t=e(),n=new RegExp("^"+t.regexp+"$"),i=new RegExp("["+t.group+"\\s\\xa0]","g"),r=t.factor;return e=>{const l=n.exec(e);if(t.factor=r,!l)return NaN;let o=l[1];if(!l[1]){if(!l[2])return NaN;o=l[2],t.factor*=-1}return o=o.replace(i,"").replace(t.decimal,"."),+o*t.factor}}(),x=/^((jan(uary)?)|(feb(ruary)?)|(mar(ch)?)|(apr(il)?)|(may)|(jun(e)?)|(jul(y)?)|(aug(ust)?)|(sep(tember)?)|(oct(ober)?)|(nov(ember)?)|(dec(ember)?)|(am)|(pm)|(gmt)|(utc))$/i,y=Number.isNaN(new Date("technology 10").getTime()),F=["lat","latitude","latitude83","latdecdeg","lat_dd","y","ycenter","point_y"],w=["lon","lng","long","longitude","longitude83","longdecdeg","long_dd","x","xcenter","point_x"];export{f as extractFieldNamesAndAliasesFromRow,c as inferDelimiterAndLocationInfo,b as inferFieldType,p as inferFields,h as isValidDate,N as parseNumber,a as parseRows,u as readRowParts,s as readRows,d as splitSingleRow};
5
+ import{isDateString as e}from"../../../../core/date.js";import{_parseInfo as t}from"../../../../core/number.js";import{normalizeFieldName as n}from"../../../support/fieldUtils.js";const i=/^\s*"([\S\s]*)"\s*$/,r=/""/g,l="\n",o=[","," ",";","|","\t"];function*s(e,t,n){let i=0;for(;i<=e.length;){const r=e.indexOf(t,i),l=e.substring(i,r>-1?r:void 0);i+=l.length+t.length,n&&!l.trim()||(yield l)}}function u(e){const t=e.includes("\r\n")?"\r\n":l;return s(e,t,!0)}function c(e,t){return s(e,t,!1)}function d(e,t,n){e=e.trim(),t=t?.trim();const i=[],r=Array.from(new Set([n?.delimiter,...o])).filter((e=>null!=e));for(const o of r){const n=g(e,o).length,r=g(t,o).length??n;n>1&&i.push({weight:Math.min(n,r),delimiter:o})}const l=i.sort((({weight:e},{weight:t})=>t-e)).map((({delimiter:e})=>e));for(const o of l){const t=p(a(e,o).names,n?.longitudeField,n?.latitudeField);if(t.longitudeFieldName&&t.latitudeFieldName)return{delimiter:o,locationInfo:t}}return{delimiter:l[0],locationInfo:null}}function*f(e,t,n,o=(()=>Object.create(null))){const s=u(e);s.next();let d="",f="",a=0,g=o(),p=0;e:for(const u of s){const e=c(u,n);for(const l of e)if(d+=f+l,f="",a+=m(l),a%2==0){if(a>0){const e=i.exec(d);if(!e){g=o(),p=0,d="",a=0;continue e}g[t[p]]=e[1].replaceAll(r,'"'),p++}else g[t[p]]=d,p++;d="",a=0}else f=n;0===a?(yield g,g=o(),p=0):f=l}}function a(e,t){const i=g(e,t).filter((e=>null!=e)),r=i.map((e=>n(e)));for(let n=r.length-1;n>=0;n--)r[n]||(r.splice(n,1),i.splice(n,1));return{names:r,aliases:i}}function g(e,t){if(!e?.length)return[];const n=[];let l="",o="",s=0;const u=c(e,t);for(const c of u)if(l+=o+c,o="",s+=m(c),s%2==0){if(s>0){const e=i.exec(l);e&&n.push(e[1].replaceAll(r,'"'))}else n.push(l);l="",s=0}else o=t;return n}function m(e){let t=0,n=0;for(n=e.indexOf('"',n);n>=0;)t++,n=e.indexOf('"',n+1);return t}function p(e,t,i){t=n(t)?.toLowerCase(),i=n(i)?.toLowerCase();const r=e.map((e=>e.toLowerCase())),l=t?e[r.indexOf(t)]:null,o=i?e[r.indexOf(i)]:null;return{longitudeFieldName:l||e[r.indexOf(y.find((e=>r.includes(e))))],latitudeFieldName:o||e[r.indexOf(x.find((e=>r.includes(e))))]}}function h(e,t,n,i,r){const l=[],o=f(e,n,t),s=[];for(const u of o){if(10===s.length)break;s.push(u)}for(let u=0;u<n.length;u++){const e=n[u],t=i[u];if(e===r.longitudeFieldName||e===r.latitudeFieldName)l.push({name:e,type:"esriFieldTypeDouble",alias:t});else{let n,i;switch(b(s.map((t=>t[e])))){case"integer":n="esriFieldTypeInteger";break;case"double":n="esriFieldTypeDouble";break;case"date":n="esriFieldTypeDate",i=36;break;default:n="esriFieldTypeString",i=255}l.push({name:e,type:n,alias:t,length:i})}}return l}function b(t){if(!t.length)return"string";const n=/[^+\-.,0-9]/;return t.map((t=>{if(""!==t){if(!n.test(t)){let e=N(t);if(!isNaN(e))return/[.,]/.test(t)||!Number.isInteger(e)||e>214783647||e<-214783648?"double":"integer";if(t.includes("E")){if(e=Number(t),!Number.isNaN(e))return"double";if(t.includes(",")&&(t=t.replace(",","."),e=Number(t),!Number.isNaN(e)))return"double"}}return e(t)?"date":"string"}})).reduce(((e,t)=>void 0===e?t:void 0===t?e:e===t?t:"string"===e||"string"===t?"string":"double"===e||"double"===t?"double":void 0))}const N=function(){const e=t(),n=new RegExp("^"+e.regexp+"$"),i=new RegExp("["+e.group+"\\s\\xa0]","g"),r=e.factor;return t=>{const l=n.exec(t);if(e.factor=r,!l)return NaN;let o=l[1];if(!l[1]){if(!l[2])return NaN;o=l[2],e.factor*=-1}return o=o.replace(i,"").replace(e.decimal,"."),+o*e.factor}}(),x=["lat","latitude","latitude83","latdecdeg","lat_dd","y","ycenter","point_y"],y=["lon","lng","long","longitude","longitude83","longdecdeg","long_dd","x","xcenter","point_x"];export{a as extractFieldNamesAndAliasesFromRow,d as inferDelimiterAndLocationInfo,b as inferFieldType,h as inferFields,N as parseNumber,f as parseRows,c as readRowParts,u as readRows,g as splitSingleRow};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.28/esri/copyright.txt for details.
4
4
  */
5
- import e from"../../../../request.js";import{createTask as t}from"../../../../core/asyncUtils.js";import s from"../../../../core/Error.js";import i from"../../../../core/Logger.js";import{isAbortError as r}from"../../../../core/promiseUtils.js";import{getJsonType as n}from"../../../../geometry/support/jsonUtils.js";import{WGS84 as a,equals as o}from"../../../../geometry/support/spatialReferenceUtils.js";import{convertFromGeometry as l,convertToGeometry as u,convertFromFeatures as d,convertToFeature as p,convertFromFeature as c}from"../../featureConversionUtils.js";import h from"../../data/FeatureStore.js";import{checkProjectionSupport as y,project as m}from"../../data/projectionSupport.js";import{QueryEngine as f}from"../../data/QueryEngine.js";import{inferLayerProperties as g,createOptimizedFeatures as _,validateGeoJSON as I}from"./geojson.js";import{createDrawingInfo as j,createDefaultTemplate as F,createDefaultAttributesFunction as E}from"../support/clientSideDefaults.js";import{loadGeometryEngineForSimplify as b,mixAttributes as w,createFeatureEditSuccessResult as T,createFeatureEditErrorResult as x,simplify as q}from"../support/sourceUtils.js";import S from"../../../support/FieldsIndex.js";import{kebabDict as R}from"../../../support/fieldType.js";import{getFieldDefaultValue as k}from"../../../support/fieldUtils.js";const O={hasAttachments:!1,capabilities:"query, editing, create, delete, update",useStandardizedQueries:!0,supportsCoordinatesQuantization:!0,supportsReturningQueryGeometry:!0,advancedQueryCapabilities:{supportsQueryAttachments:!1,supportsStatistics:!0,supportsPercentileStatistics:!0,supportsReturningGeometryCentroid:!0,supportsQueryWithDistance:!0,supportsDistinct:!0,supportsReturningQueryExtent:!0,supportsReturningGeometryProperties:!1,supportsHavingClause:!0,supportsOrderBy:!0,supportsPagination:!0,supportsQueryWithResultType:!1,supportsSqlExpression:!0,supportsDisjointSpatialRel:!0}};class C{constructor(){this._queryEngine=null,this._snapshotFeatures=async e=>{const t=await this._fetch(e);return this._createFeatures(t)}}destroy(){this._queryEngine?.destroy(),this._queryEngine=this._fieldsIndex=this._createDefaultAttributes=null}async load(e,t={}){this._loadOptions={url:e.url,customParameters:e.customParameters};const i=[];await this._checkProjection(e.spatialReference);let r=null;e.url&&(r=await this._fetch(t?.signal));const n=g(r,{geometryType:e.geometryType}),o=e.fields||n.fields||[],l=null!=e.hasZ?e.hasZ:n.hasZ,u=n.geometryType;let d=e.objectIdField||n.objectIdFieldName||"__OBJECTID";const p=e.spatialReference||a;let c=e.timeInfo;o===n.fields&&n.unknownFields.length>0&&i.push({name:"geojson-layer:unknown-field-types",message:"Some fields types couldn't be inferred from the features and were dropped",details:{unknownFields:n.unknownFields}});let y=new S(o).get(d);y?("esriFieldTypeString"!==y.type&&(y.type="esriFieldTypeOID"),y.editable=!1,y.nullable=!1,d=y.name):(y={alias:d,name:d,type:"string"===n.objectIdFieldType?"esriFieldTypeString":"esriFieldTypeOID",editable:!1,nullable:!1},o.unshift(y));const m={};for(const a of o){if(null==a.name&&(a.name=a.alias),null==a.alias&&(a.alias=a.name),!a.name)throw new s("geojson-layer:invalid-field-name","field name is missing",{field:a});if(!R.jsonValues.includes(a.type))throw new s("geojson-layer:invalid-field-type",`invalid type for field "${a.name}"`,{field:a});if(a.name!==y.name){const e=k(a);void 0!==e&&(m[a.name]=e)}}this._fieldsIndex=new S(o);const _=this._fieldsIndex.requiredFields.indexOf(y);if(_>-1&&this._fieldsIndex.requiredFields.splice(_,1),c){if(c.startTimeField){const e=this._fieldsIndex.get(c.startTimeField);e?(c.startTimeField=e.name,e.type="esriFieldTypeDate"):c.startTimeField=null}if(c.endTimeField){const e=this._fieldsIndex.get(c.endTimeField);e?(c.endTimeField=e.name,e.type="esriFieldTypeDate"):c.endTimeField=null}if(c.trackIdField){const e=this._fieldsIndex.get(c.trackIdField);e?c.trackIdField=e.name:(c.trackIdField=null,i.push({name:"geojson-layer:invalid-timeInfo-trackIdField",message:"trackIdField is missing",details:{timeInfo:c}}))}c.startTimeField||c.endTimeField||(i.push({name:"geojson-layer:invalid-timeInfo",message:"startTimeField and endTimeField are missing",details:{timeInfo:c}}),c=null)}const I=u?j(u):void 0,b={warnings:i,featureErrors:[],layerDefinition:{...O,drawingInfo:I??void 0,templates:F(m),extent:void 0,geometryType:u,objectIdField:d,fields:o,hasZ:!!l,timeInfo:c}};this._queryEngine=new f({fields:o,geometryType:u,hasM:!1,hasZ:l,objectIdField:d,spatialReference:p,timeInfo:c,featureStore:new h({geometryType:u,hasM:!1,hasZ:l}),cacheSpatialQueries:!0}),this._createDefaultAttributes=E(m,d);const w=await this._createFeatures(r);this._objectIdGenerator=this._createObjectIdGenerator(this._queryEngine,w);const T=this._normalizeFeatures(w,b.warnings,b.featureErrors);this._queryEngine.featureStore.addMany(T);const{fullExtent:x,timeExtent:q}=await this._queryEngine.fetchRecomputedExtents();if(b.layerDefinition.extent=x,q){const{start:e,end:t}=q;b.layerDefinition.timeInfo.timeExtent=[e,t]}return b}async applyEdits(e){const{spatialReference:t,geometryType:s}=this._queryEngine;return await Promise.all([b(t,s),y(e.adds,t),y(e.updates,t)]),await this._waitSnapshotComplete(),this._applyEdits(e)}async queryFeatures(e={},t={}){return await this._waitSnapshotComplete(),this._queryEngine.executeQuery(e,t.signal)}async queryFeatureCount(e={},t={}){return await this._waitSnapshotComplete(),this._queryEngine.executeQueryForCount(e,t.signal)}async queryObjectIds(e={},t={}){return await this._waitSnapshotComplete(),this._queryEngine.executeQueryForIds(e,t.signal)}async queryExtent(e={},t={}){return await this._waitSnapshotComplete(),this._queryEngine.executeQueryForExtent(e,t.signal)}async querySnapping(e,t={}){return await this._waitSnapshotComplete(),this._queryEngine.executeQueryForSnapping(e,t.signal)}async refresh(e){this._loadOptions.customParameters=e,this._snapshotTask?.abort(),this._snapshotTask=t(this._snapshotFeatures),this._snapshotTask.promise.then((e=>{this._queryEngine.featureStore.clear(),this._objectIdGenerator=this._createObjectIdGenerator(this._queryEngine,e);const t=this._normalizeFeatures(e);t&&this._queryEngine.featureStore.addMany(t)}),(e=>{this._queryEngine.featureStore.clear(),r(e)||i.getLogger("esri.layers.GeoJSONLayer").error(new s("geojson-layer:refresh","An error occurred during refresh",{error:e}))})),await this._waitSnapshotComplete();const{fullExtent:n,timeExtent:a}=await this._queryEngine.fetchRecomputedExtents();return{extent:n,timeExtent:a}}async _createFeatures(e){if(null==e)return[];const{geometryType:t,hasZ:s,objectIdField:i}=this._queryEngine,r=_(e,{geometryType:t,hasZ:s,objectIdField:i});if(!o(this._queryEngine.spatialReference,a))for(const n of r)null!=n.geometry&&(n.geometry=l(m(u(n.geometry,this._queryEngine.geometryType,this._queryEngine.hasZ,!1),a,this._queryEngine.spatialReference)));return r}async _waitSnapshotComplete(){if(this._snapshotTask&&!this._snapshotTask.finished){try{await this._snapshotTask.promise}catch{}return this._waitSnapshotComplete()}}async _fetch(t){const{url:s,customParameters:i}=this._loadOptions,r=(await e(s,{responseType:"json",query:{...i},signal:t})).data;return await I(r),r}_normalizeFeatures(e,t,s){const{objectIdField:i}=this._queryEngine,r=[];for(const n of e){const e=this._createDefaultAttributes(),a=w(this._fieldsIndex,e,n.attributes,!0,t);a?s?.push(a):(this._assignObjectId(e,n.attributes,!0),n.attributes=e,n.objectId=e[i],r.push(n))}return r}async _applyEdits(e){const{adds:t,updates:s,deletes:i}=e,r={addResults:[],deleteResults:[],updateResults:[],uidToObjectId:{}};if(t&&t.length&&this._applyAddEdits(r,t),s&&s.length&&this._applyUpdateEdits(r,s),i&&i.length){for(const e of i)r.deleteResults.push(T(e));this._queryEngine.featureStore.removeManyById(i)}const{fullExtent:n,timeExtent:a}=await this._queryEngine.fetchRecomputedExtents();return{extent:n,timeExtent:a,featureEditResults:r}}_applyAddEdits(e,t){const{addResults:s}=e,{geometryType:i,hasM:r,hasZ:a,objectIdField:o,spatialReference:l,featureStore:u}=this._queryEngine,p=[];for(const d of t){if(d.geometry&&i!==n(d.geometry)){s.push(x("Incorrect geometry type."));continue}const t=this._createDefaultAttributes(),r=w(this._fieldsIndex,t,d.attributes);if(r)s.push(r);else{if(this._assignObjectId(t,d.attributes),d.attributes=t,null!=d.uid){const t=d.attributes[o];e.uidToObjectId[d.uid]=t}if(null!=d.geometry){const e=d.geometry.spatialReference??l;d.geometry=m(q(d.geometry,e),e,l)}p.push(d),s.push(T(d.attributes[o]))}}u.addMany(d([],p,i,a,r,o))}_applyUpdateEdits({updateResults:e},t){const{geometryType:s,hasM:i,hasZ:r,objectIdField:a,spatialReference:o,featureStore:l}=this._queryEngine;for(const u of t){const{attributes:t,geometry:d}=u,h=t&&t[a];if(null==h){e.push(x(`Identifier field ${a} missing`));continue}if(!l.has(h)){e.push(x(`Feature with object id ${h} missing`));continue}const y=p(l.getFeature(h),s,r,i);if(null!=d){if(s!==n(d)){e.push(x("Incorrect geometry type."));continue}const t=d.spatialReference??o;y.geometry=m(q(d,t),t,o)}if(t){const s=w(this._fieldsIndex,y.attributes,t);if(s){e.push(s);continue}}l.add(c(y,s,r,i,a)),e.push(T(h))}}_createObjectIdGenerator(e,t){const s=e.fieldsIndex.get(e.objectIdField);if("esriFieldTypeString"===s.type)return()=>s.name+"-"+Date.now().toString(16);let i=Number.NEGATIVE_INFINITY;for(const r of t)r.objectId&&(i=Math.max(i,r.objectId));return i=Math.max(0,i)+1,()=>i++}_assignObjectId(e,t,s=!1){const i=this._queryEngine.objectIdField;e[i]=s&&i in t?t[i]:this._objectIdGenerator()}async _checkProjection(e){try{await y(a,e)}catch{throw new s("geojson-layer","Projection not supported")}}}export{C as default};
5
+ import e from"../../../../request.js";import{createTask as t}from"../../../../core/asyncUtils.js";import s from"../../../../core/Error.js";import i from"../../../../core/Logger.js";import{isAbortError as r}from"../../../../core/promiseUtils.js";import{getJsonType as n}from"../../../../geometry/support/jsonUtils.js";import{WGS84 as a,equals as o}from"../../../../geometry/support/spatialReferenceUtils.js";import{convertFromGeometry as l,convertToGeometry as u,convertFromFeatures as d,convertToFeature as p,convertFromFeature as c}from"../../featureConversionUtils.js";import{checkProjectionSupport as h,project as y}from"../../data/projectionSupport.js";import{inferLayerProperties as m,createOptimizedFeatures as f,validateGeoJSON as g}from"./geojson.js";import{createDrawingInfo as _,createDefaultTemplate as I,createDefaultAttributesFunction as F}from"../support/clientSideDefaults.js";import{loadGeometryEngineForSimplify as j,mixAttributes as E,parseStringDateFieldValues as b,createFeatureEditSuccessResult as w,createFeatureEditErrorResult as T,simplify as x}from"../support/sourceUtils.js";import q from"../../../support/FieldsIndex.js";import{kebabDict as S}from"../../../support/fieldType.js";import{getFieldDefaultValue as R}from"../../../support/fieldUtils.js";import{utc as k}from"../../../../time/timeZoneUtils.js";const O={hasAttachments:!1,capabilities:"query, editing, create, delete, update",useStandardizedQueries:!0,supportsCoordinatesQuantization:!0,supportsReturningQueryGeometry:!0,advancedQueryCapabilities:{supportsQueryAttachments:!1,supportsStatistics:!0,supportsPercentileStatistics:!0,supportsReturningGeometryCentroid:!0,supportsQueryWithDistance:!0,supportsDistinct:!0,supportsReturningQueryExtent:!0,supportsReturningGeometryProperties:!1,supportsHavingClause:!0,supportsOrderBy:!0,supportsPagination:!0,supportsQueryWithResultType:!1,supportsSqlExpression:!0,supportsDisjointSpatialRel:!0}};class C{constructor(){this._queryEngine=null,this._snapshotFeatures=async e=>{const t=await this._fetch(e);return this._createFeatures(t)}}destroy(){this._queryEngine?.destroy(),this._queryEngine=this._fieldsIndex=this._createDefaultAttributes=null}async load(e,t={}){this._loadOptions={url:e.url,customParameters:e.customParameters};const i=[],[r,{QueryEngine:n,FeatureStore:o}]=await Promise.all([e.url?this._fetch(t?.signal):null,import("../support/QueryEngineBuildLayer.js"),this._checkProjection(e.spatialReference)]),l=m(r,{geometryType:e.geometryType}),u=e.fields||l.fields||[],d=null!=e.hasZ?e.hasZ:l.hasZ,p=l.geometryType;let c=e.objectIdField||l.objectIdFieldName||"__OBJECTID";const h=e.spatialReference||a;let y=e.timeInfo;u===l.fields&&l.unknownFields.length>0&&i.push({name:"geojson-layer:unknown-field-types",message:"Some fields types couldn't be inferred from the features and were dropped",details:{unknownFields:l.unknownFields}});let f=new q(u).get(c);f?("esriFieldTypeString"!==f.type&&(f.type="esriFieldTypeOID"),f.editable=!1,f.nullable=!1,c=f.name):(f={alias:c,name:c,type:"string"===l.objectIdFieldType?"esriFieldTypeString":"esriFieldTypeOID",editable:!1,nullable:!1},u.unshift(f));const g={};for(const a of u){if(null==a.name&&(a.name=a.alias),null==a.alias&&(a.alias=a.name),!a.name)throw new s("geojson-layer:invalid-field-name","field name is missing",{field:a});if(!S.jsonValues.includes(a.type))throw new s("geojson-layer:invalid-field-type",`invalid type for field "${a.name}"`,{field:a});if(a.name!==f.name){const e=R(a);void 0!==e&&(g[a.name]=e)}}this._fieldsIndex=new q(u);const j=this._fieldsIndex.requiredFields.indexOf(f);if(j>-1&&this._fieldsIndex.requiredFields.splice(j,1),y){if(y.startTimeField){const e=this._fieldsIndex.get(y.startTimeField);e?(y.startTimeField=e.name,e.type="esriFieldTypeDate"):y.startTimeField=null}if(y.endTimeField){const e=this._fieldsIndex.get(y.endTimeField);e?(y.endTimeField=e.name,e.type="esriFieldTypeDate"):y.endTimeField=null}if(y.trackIdField){const e=this._fieldsIndex.get(y.trackIdField);e?y.trackIdField=e.name:(y.trackIdField=null,i.push({name:"geojson-layer:invalid-timeInfo-trackIdField",message:"trackIdField is missing",details:{timeInfo:y}}))}y.startTimeField||y.endTimeField||(i.push({name:"geojson-layer:invalid-timeInfo",message:"startTimeField and endTimeField are missing",details:{timeInfo:y}}),y=null)}const E=p?_(p):void 0,b={warnings:i,featureErrors:[],layerDefinition:{...O,drawingInfo:E??void 0,templates:I(g),extent:void 0,geometryType:p,objectIdField:c,fields:u,hasZ:!!d,timeInfo:y,dateFieldsTimeReference:{timeZoneIANA:k}}};this._queryEngine=new n({fields:u,geometryType:p,hasM:!1,hasZ:d,objectIdField:c,spatialReference:h,timeInfo:y,featureStore:new o({geometryType:p,hasM:!1,hasZ:d}),cacheSpatialQueries:!0}),this._createDefaultAttributes=F(g,c);const w=await this._createFeatures(r);this._objectIdGenerator=this._createObjectIdGenerator(this._queryEngine,w);const T=this._normalizeFeatures(w,b.warnings,b.featureErrors);this._queryEngine.featureStore.addMany(T);const{fullExtent:x,timeExtent:C}=await this._queryEngine.fetchRecomputedExtents();if(b.layerDefinition.extent=x,C){const{start:e,end:t}=C;b.layerDefinition.timeInfo.timeExtent=[e,t]}return b}async applyEdits(e){const{spatialReference:t,geometryType:s}=this._queryEngine;return await Promise.all([j(t,s),h(e.adds,t),h(e.updates,t)]),await this._waitSnapshotComplete(),this._applyEdits(e)}async queryFeatures(e={},t={}){return await this._waitSnapshotComplete(),this._queryEngine.executeQuery(e,t.signal)}async queryFeatureCount(e={},t={}){return await this._waitSnapshotComplete(),this._queryEngine.executeQueryForCount(e,t.signal)}async queryObjectIds(e={},t={}){return await this._waitSnapshotComplete(),this._queryEngine.executeQueryForIds(e,t.signal)}async queryExtent(e={},t={}){return await this._waitSnapshotComplete(),this._queryEngine.executeQueryForExtent(e,t.signal)}async querySnapping(e,t={}){return await this._waitSnapshotComplete(),this._queryEngine.executeQueryForSnapping(e,t.signal)}async refresh(e){this._loadOptions.customParameters=e,this._snapshotTask?.abort(),this._snapshotTask=t(this._snapshotFeatures),this._snapshotTask.promise.then((e=>{this._queryEngine.featureStore.clear(),this._objectIdGenerator=this._createObjectIdGenerator(this._queryEngine,e);const t=this._normalizeFeatures(e);t&&this._queryEngine.featureStore.addMany(t)}),(e=>{this._queryEngine.featureStore.clear(),r(e)||i.getLogger("esri.layers.GeoJSONLayer").error(new s("geojson-layer:refresh","An error occurred during refresh",{error:e}))})),await this._waitSnapshotComplete();const{fullExtent:n,timeExtent:a}=await this._queryEngine.fetchRecomputedExtents();return{extent:n,timeExtent:a}}async _createFeatures(e){if(null==e)return[];const{geometryType:t,hasZ:s,objectIdField:i}=this._queryEngine,r=f(e,{geometryType:t,hasZ:s,objectIdField:i});if(!o(this._queryEngine.spatialReference,a))for(const n of r)null!=n.geometry&&(n.geometry=l(y(u(n.geometry,this._queryEngine.geometryType,this._queryEngine.hasZ,!1),a,this._queryEngine.spatialReference)));return r}async _waitSnapshotComplete(){if(this._snapshotTask&&!this._snapshotTask.finished){try{await this._snapshotTask.promise}catch{}return this._waitSnapshotComplete()}}async _fetch(t){const{url:s,customParameters:i}=this._loadOptions,r=(await e(s,{responseType:"json",query:{...i},signal:t})).data;return await g(r),r}_normalizeFeatures(e,t,s){const{objectIdField:i}=this._queryEngine,r=this._fieldsIndex.dateFields,n=[];for(const a of e){const e=this._createDefaultAttributes(),o=E(this._fieldsIndex,e,a.attributes,!0,t);o?s?.push(o):(this._assignObjectId(e,a.attributes,!0),b(r,e),a.attributes=e,a.objectId=e[i],n.push(a))}return n}async _applyEdits(e){const{adds:t,updates:s,deletes:i}=e,r={addResults:[],deleteResults:[],updateResults:[],uidToObjectId:{}};if(t&&t.length&&this._applyAddEdits(r,t),s&&s.length&&this._applyUpdateEdits(r,s),i&&i.length){for(const e of i)r.deleteResults.push(w(e));this._queryEngine.featureStore.removeManyById(i)}const{fullExtent:n,timeExtent:a}=await this._queryEngine.fetchRecomputedExtents();return{extent:n,timeExtent:a,featureEditResults:r}}_applyAddEdits(e,t){const{addResults:s}=e,{geometryType:i,hasM:r,hasZ:a,objectIdField:o,spatialReference:l,featureStore:u}=this._queryEngine,p=[];for(const d of t){if(d.geometry&&i!==n(d.geometry)){s.push(T("Incorrect geometry type."));continue}const t=this._createDefaultAttributes(),r=E(this._fieldsIndex,t,d.attributes);if(r)s.push(r);else{if(this._assignObjectId(t,d.attributes),d.attributes=t,null!=d.uid){const t=d.attributes[o];e.uidToObjectId[d.uid]=t}if(null!=d.geometry){const e=d.geometry.spatialReference??l;d.geometry=y(x(d.geometry,e),e,l)}p.push(d),s.push(w(d.attributes[o]))}}u.addMany(d([],p,i,a,r,o))}_applyUpdateEdits({updateResults:e},t){const{geometryType:s,hasM:i,hasZ:r,objectIdField:a,spatialReference:o,featureStore:l}=this._queryEngine;for(const u of t){const{attributes:t,geometry:d}=u,h=t&&t[a];if(null==h){e.push(T(`Identifier field ${a} missing`));continue}if(!l.has(h)){e.push(T(`Feature with object id ${h} missing`));continue}const m=p(l.getFeature(h),s,r,i);if(null!=d){if(s!==n(d)){e.push(T("Incorrect geometry type."));continue}const t=d.spatialReference??o;m.geometry=y(x(d,t),t,o)}if(t){const s=E(this._fieldsIndex,m.attributes,t);if(s){e.push(s);continue}}l.add(c(m,s,r,i,a)),e.push(w(h))}}_createObjectIdGenerator(e,t){const s=e.fieldsIndex.get(e.objectIdField);if("esriFieldTypeString"===s.type)return()=>s.name+"-"+Date.now().toString(16);let i=Number.NEGATIVE_INFINITY;for(const r of t)r.objectId&&(i=Math.max(i,r.objectId));return i=Math.max(0,i)+1,()=>i++}_assignObjectId(e,t,s=!1){const i=this._queryEngine.objectIdField;e[i]=s&&i in t?t[i]:this._objectIdGenerator()}async _checkProjection(e){try{await h(a,e)}catch{throw new s("geojson-layer","Projection not supported")}}}export{C as default};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.28/esri/copyright.txt for details.
4
4
  */
5
- import e from"../../../../core/Error.js";import{isWGS84 as t}from"../../../../geometry/support/spatialReferenceUtils.js";import{OptimizedFeature as n}from"../../OptimizedFeature.js";import o from"../../OptimizedGeometry.js";import{normalizeFieldName as r,isNumericField as i}from"../../../support/fieldUtils.js";const s={LineString:"esriGeometryPolyline",MultiLineString:"esriGeometryPolyline",MultiPoint:"esriGeometryMultipoint",Point:"esriGeometryPoint",Polygon:"esriGeometryPolygon",MultiPolygon:"esriGeometryPolygon"};function c(e){return s[e]}function*u(e){switch(e.type){case"Feature":yield e;break;case"FeatureCollection":for(const t of e.features)t&&(yield t)}}function*l(e){if(e)switch(e.type){case"Point":yield e.coordinates;break;case"LineString":case"MultiPoint":yield*e.coordinates;break;case"MultiLineString":case"Polygon":for(const t of e.coordinates)yield*t;break;case"MultiPolygon":for(const t of e.coordinates)for(const e of t)yield*e}}function*f(e,t={}){const{geometryType:r,objectIdField:i}=t;for(const s of e){const{geometry:e,properties:u,id:l}=s;if(e&&c(e.type)!==r)continue;const f=u||{};let p;i&&(p=f[i],null==l||p||(f[i]=p=l));const a=new n(e?m(new o,e,t):null,f,null,p??void 0);yield a}}function p(e){for(const t of e)if(t.length>2)return!0;return!1}function a(e){return!d(e)}function y(e){return d(e)}function d(e){let t=0;for(let n=0;n<e.length;n++){const o=e[n],r=e[(n+1)%e.length];t+=o[0]*r[1]-r[0]*o[1]}return t<=0}function g(e){const t=e[0],n=e[e.length-1];return t[0]===n[0]&&t[1]===n[1]&&t[2]===n[2]||e.push(t),e}function m(e,t,n){switch(t.type){case"LineString":return h(e,t,n);case"MultiLineString":return w(e,t,n);case"MultiPoint":return P(e,t,n);case"MultiPolygon":return j(e,t,n);case"Point":return b(e,t,n);case"Polygon":return S(e,t,n)}}function h(e,t,n){return k(e,t.coordinates,n),e}function w(e,t,n){for(const o of t.coordinates)k(e,o,n);return e}function P(e,t,n){return k(e,t.coordinates,n),e}function j(e,t,n){for(const o of t.coordinates){F(e,o[0],n);for(let t=1;t<o.length;t++)G(e,o[t],n)}return e}function b(e,t,n){return O(e,t.coordinates,n),e}function S(e,t,n){const o=t.coordinates;F(e,o[0],n);for(let r=1;r<o.length;r++)G(e,o[r],n);return e}function F(e,t,n){const o=g(t);a(o)?M(e,o,n):k(e,o,n)}function G(e,t,n){const o=g(t);y(o)?M(e,o,n):k(e,o,n)}function k(e,t,n){for(const o of t)O(e,o,n);e.lengths.push(t.length)}function M(e,t,n){for(let o=t.length-1;o>=0;o--)O(e,t[o],n);e.lengths.push(t.length)}function O(e,t,n){const[o,r,i]=t;e.coords.push(o,r),n.hasZ&&e.coords.push(i||0)}function T(e){switch(typeof e){case"string":return"esriFieldTypeString";case"number":return"esriFieldTypeDouble";default:return"unknown"}}function L(n,o=4326){if(!n)throw new e("geojson-layer:empty","GeoJSON data is empty");if("Feature"!==n.type&&"FeatureCollection"!==n.type)throw new e("geojson-layer:unsupported-geojson-object","missing or not supported GeoJSON object type",{data:n});const{crs:r}=n;if(!r)return;const i="string"==typeof r?r:"name"===r.type?r.properties.name:"EPSG"===r.type?r.properties.code:null,s=t({wkid:o})?new RegExp(".*(CRS84H?|4326)$","i"):new RegExp(`.*(${o})$`,"i");if(!i||!s.test(i))throw new e("geojson:unsupported-crs","unsupported GeoJSON 'crs' member",{crs:r})}function E(e,t={}){const n=[],o=new Set,s=new Set;let f,a=!1,y=null,d=!1,{geometryType:g=null}=t,m=!1;for(const i of u(e)){const{geometry:e,properties:t,id:u}=i;if(!e||(g||(g=c(e.type)),c(e.type)===g)){if(!a){a=p(l(e))}if(d||(d=null!=u,d&&(f=typeof u,t&&(y=Object.keys(t).filter((e=>t[e]===u))))),t&&y&&d&&null!=u&&(y.length>1?y=y.filter((e=>t[e]===u)):1===y.length&&(y=t[y[0]]===u?y:[])),!m&&t){let e=!0;for(const i in t){if(o.has(i))continue;const c=t[i];if(null==c){e=!1,s.add(i);continue}const u=T(c);if("unknown"===u){s.add(i);continue}s.delete(i),o.add(i);const l=r(i);l&&n.push({name:l,alias:i,type:u})}m=e}}}const h=r(1===y?.length&&y[0]||null)??void 0;if(h)for(const r of n)if(r.name===h&&i(r)){r.type="esriFieldTypeOID";break}return{fields:n,geometryType:g,hasZ:a,objectIdFieldName:h,objectIdFieldType:f,unknownFields:Array.from(s)}}function I(e,t){return Array.from(f(u(e),t))}export{I as createOptimizedFeatures,c as getGeometryType,E as inferLayerProperties,L as validateGeoJSON};
5
+ import{isDateString as e}from"../../../../core/date.js";import t from"../../../../core/Error.js";import{isWGS84 as n}from"../../../../geometry/support/spatialReferenceUtils.js";import{OptimizedFeature as o}from"../../OptimizedFeature.js";import r from"../../OptimizedGeometry.js";import{normalizeFieldName as i,isNumericField as s}from"../../../support/fieldUtils.js";const c={LineString:"esriGeometryPolyline",MultiLineString:"esriGeometryPolyline",MultiPoint:"esriGeometryMultipoint",Point:"esriGeometryPoint",Polygon:"esriGeometryPolygon",MultiPolygon:"esriGeometryPolygon"};function u(e){return c[e]}function*l(e){switch(e.type){case"Feature":yield e;break;case"FeatureCollection":for(const t of e.features)t&&(yield t)}}function*f(e){if(e)switch(e.type){case"Point":yield e.coordinates;break;case"LineString":case"MultiPoint":yield*e.coordinates;break;case"MultiLineString":case"Polygon":for(const t of e.coordinates)yield*t;break;case"MultiPolygon":for(const t of e.coordinates)for(const e of t)yield*e}}function*p(e,t={}){const{geometryType:n,objectIdField:i}=t;for(const s of e){const{geometry:e,properties:c,id:l}=s;if(e&&u(e.type)!==n)continue;const f=c||{};let p;i&&(p=f[i],null==l||p||(f[i]=p=l));const a=new o(e?h(new r,e,t):null,f,null,p??void 0);yield a}}function a(e){for(const t of e)if(t.length>2)return!0;return!1}function y(e){return!g(e)}function d(e){return g(e)}function g(e){let t=0;for(let n=0;n<e.length;n++){const o=e[n],r=e[(n+1)%e.length];t+=o[0]*r[1]-r[0]*o[1]}return t<=0}function m(e){const t=e[0],n=e[e.length-1];return t[0]===n[0]&&t[1]===n[1]&&t[2]===n[2]||e.push(t),e}function h(e,t,n){switch(t.type){case"LineString":return w(e,t,n);case"MultiLineString":return P(e,t,n);case"MultiPoint":return j(e,t,n);case"MultiPolygon":return b(e,t,n);case"Point":return S(e,t,n);case"Polygon":return F(e,t,n)}}function w(e,t,n){return M(e,t.coordinates,n),e}function P(e,t,n){for(const o of t.coordinates)M(e,o,n);return e}function j(e,t,n){return M(e,t.coordinates,n),e}function b(e,t,n){for(const o of t.coordinates){G(e,o[0],n);for(let t=1;t<o.length;t++)k(e,o[t],n)}return e}function S(e,t,n){return O(e,t.coordinates,n),e}function F(e,t,n){const o=t.coordinates;G(e,o[0],n);for(let r=1;r<o.length;r++)k(e,o[r],n);return e}function G(e,t,n){const o=m(t);y(o)?T(e,o,n):M(e,o,n)}function k(e,t,n){const o=m(t);d(o)?T(e,o,n):M(e,o,n)}function M(e,t,n){for(const o of t)O(e,o,n);e.lengths.push(t.length)}function T(e,t,n){for(let o=t.length-1;o>=0;o--)O(e,t[o],n);e.lengths.push(t.length)}function O(e,t,n){const[o,r,i]=t;e.coords.push(o,r),n.hasZ&&e.coords.push(i||0)}function L(t){switch(typeof t){case"string":return e(t)?"esriFieldTypeDate":"esriFieldTypeString";case"number":return"esriFieldTypeDouble";default:return"unknown"}}function E(e,o=4326){if(!e)throw new t("geojson-layer:empty","GeoJSON data is empty");if("Feature"!==e.type&&"FeatureCollection"!==e.type)throw new t("geojson-layer:unsupported-geojson-object","missing or not supported GeoJSON object type",{data:e});const{crs:r}=e;if(!r)return;const i="string"==typeof r?r:"name"===r.type?r.properties.name:"EPSG"===r.type?r.properties.code:null,s=n({wkid:o})?new RegExp(".*(CRS84H?|4326)$","i"):new RegExp(`.*(${o})$`,"i");if(!i||!s.test(i))throw new t("geojson:unsupported-crs","unsupported GeoJSON 'crs' member",{crs:r})}function I(e,t={}){const n=[],o=new Set,r=new Set;let c,p=!1,y=null,d=!1,{geometryType:g=null}=t,m=!1;for(const s of l(e)){const{geometry:e,properties:t,id:l}=s;if(!e||(g||(g=u(e.type)),u(e.type)===g)){if(!p){p=a(f(e))}if(d||(d=null!=l,d&&(c=typeof l,t&&(y=Object.keys(t).filter((e=>t[e]===l))))),t&&y&&d&&null!=l&&(y.length>1?y=y.filter((e=>t[e]===l)):1===y.length&&(y=t[y[0]]===l?y:[])),!m&&t){let e=!0;for(const s in t){if(o.has(s))continue;const c=t[s];if(null==c){e=!1,r.add(s);continue}const u=L(c);if("unknown"===u){r.add(s);continue}r.delete(s),o.add(s);const l=i(s);l&&n.push({name:l,alias:s,type:u})}m=e}}}const h=i(1===y?.length&&y[0]||null)??void 0;if(h)for(const i of n)if(i.name===h&&s(i)){i.type="esriFieldTypeOID";break}return{fields:n,geometryType:g,hasZ:p,objectIdFieldName:h,objectIdFieldType:c,unknownFields:Array.from(r)}}function N(e,t){return Array.from(p(l(e),t))}export{N as createOptimizedFeatures,u as getGeometryType,I as inferLayerProperties,E as validateGeoJSON};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.28/esri/copyright.txt for details.
4
4
  */
5
- import"../../../../geometry.js";import e from"../../../../request.js";import{createTask as t}from"../../../../core/asyncUtils.js";import i from"../../../../core/Error.js";import n from"../../../../core/Logger.js";import{isAbortError as r}from"../../../../core/promiseUtils.js";import{urlToObject as s,getFilename as o}from"../../../../core/urlUtils.js";import{projectMany as a}from"../../../../geometry/projection.js";import{jsonAdapter as l}from"../../../../geometry/geometryAdapters/json.js";import{equals as c,isWebMercator as m,WGS84 as d}from"../../../../geometry/support/spatialReferenceUtils.js";import{lngLatToXY as u}from"../../../../geometry/support/webMercatorUtils.js";import{OptimizedFeature as p}from"../../OptimizedFeature.js";import f from"../../OptimizedGeometry.js";import y from"../../data/FeatureStore.js";import{checkProjectionSupport as h}from"../../data/projectionSupport.js";import{QueryEngine as g}from"../../data/QueryEngine.js";import{parseRows as _,isValidDate as I,parseNumber as F,readRows as w,inferDelimiterAndLocationInfo as E,extractFieldNamesAndAliasesFromRow as T,inferFields as j}from"../csv/csv.js";import{createDefaultAttributesFunction as x,createDrawingInfo as N}from"./clientSideDefaults.js";import S from"../../../support/FieldsIndex.js";import{getFieldDefaultValue as q}from"../../../support/fieldUtils.js";import b from"../../../../geometry/SpatialReference.js";const C=N("esriGeometryPoint"),v=["csv"],O=[0,0];class D{constructor(e,t){this.x=e,this.y=t}}class k{constructor(){this._queryEngine=null,this._snapshotFeatures=async e=>{const t=await this._fetch(e);return this._createFeatures(t)}}destroy(){this._queryEngine?.destroy(),this._queryEngine=null}async load(e,t={}){this._loadOptions=e;const[i]=await Promise.all([this._fetch(t.signal),this._checkProjection(e?.parsingOptions?.spatialReference)]),n=P(i,e);this._locationInfo=n.locationInfo,this._delimiter=n.delimiter,this._queryEngine=this._createQueryEngine(n);const r=await this._createFeatures(i);this._queryEngine.featureStore.addMany(r);const{fullExtent:s,timeExtent:o}=await this._queryEngine.fetchRecomputedExtents();if(n.layerDefinition.extent=s,o){const{start:e,end:t}=o;n.layerDefinition.timeInfo.timeExtent=[e,t]}return n}async applyEdits(){throw new i("csv-layer:editing-not-supported","applyEdits() is not supported on CSVLayer")}async queryFeatures(e={},t={}){return await this._waitSnapshotComplete(),this._queryEngine.executeQuery(e,t.signal)}async queryFeatureCount(e={},t={}){return await this._waitSnapshotComplete(),this._queryEngine.executeQueryForCount(e,t.signal)}async queryObjectIds(e={},t={}){return await this._waitSnapshotComplete(),this._queryEngine.executeQueryForIds(e,t.signal)}async queryExtent(e={},t={}){return await this._waitSnapshotComplete(),this._queryEngine.executeQueryForExtent(e,t.signal)}async querySnapping(e,t={}){return await this._waitSnapshotComplete(),this._queryEngine.executeQueryForSnapping(e,t.signal)}async refresh(e){this._loadOptions.customParameters=e,this._snapshotTask?.abort(),this._snapshotTask=t(this._snapshotFeatures),this._snapshotTask.promise.then((e=>{this._queryEngine.featureStore.clear(),e&&this._queryEngine.featureStore.addMany(e)}),(e=>{this._queryEngine.featureStore.clear(),r(e)||n.getLogger("esri.layers.CSVLayer").error(new i("csv-layer:refresh","An error occurred during refresh",{error:e}))})),await this._waitSnapshotComplete();const{fullExtent:s,timeExtent:o}=await this._queryEngine.fetchRecomputedExtents();return{extent:s,timeExtent:o}}async _waitSnapshotComplete(){if(this._snapshotTask&&!this._snapshotTask.finished){try{await this._snapshotTask.promise}catch{}return this._waitSnapshotComplete()}}async _fetch(t){const{url:n,customParameters:r}=this._loadOptions;if(!n)throw new i("csv-layer:invalid-source","url not defined");const o=s(n);return(await e(o.path,{query:{...o.query,...r},responseType:"text",signal:t})).data}_createQueryEngine(e){const{objectIdField:t,fields:i,extent:n,timeInfo:r}=e.layerDefinition,s=new y({geometryType:"esriGeometryPoint",hasM:!1,hasZ:!1});return new g({fields:i,geometryType:"esriGeometryPoint",hasM:!1,hasZ:!1,timeInfo:r,objectIdField:t,spatialReference:n.spatialReference||{wkid:4326},cacheSpatialQueries:!0,featureStore:s})}async _createFeatures(e){const{latitudeFieldName:t,longitudeFieldName:i}=this._locationInfo,{objectIdField:n,fieldsIndex:r,spatialReference:s}=this._queryEngine;let o=[];const d=[],y=r.fields.filter((e=>e.name!==n)).map((e=>e.name));let h=0;const g={};for(const a of r.fields)if("esriFieldTypeOID"!==a.type&&"esriFieldTypeGlobalID"!==a.type){const e=q(a);void 0!==e&&(g[a.name]=e)}const w=_(e,y,this._delimiter,x(g,n));for(const a of w){const e=this._parseCoordinateValue(a[t]),s=this._parseCoordinateValue(a[i]);if(null!=s&&null!=e&&!isNaN(e)&&!isNaN(s)){a[t]=e,a[i]=s;for(const e in a)if(e!==t&&e!==i)if(r.isDateField(e)){const t=new Date(a[e]);a[e]=I(t,a[e])?t.getTime():null}else if(r.isNumericField(e)){const t=F(a[e]);isNaN(t)?a[e]=null:a[e]=t}a[n]=h,h++,o.push(new D(s,e)),d.push(a)}}if(!c({wkid:4326},s))if(m(s))for(const a of o)[a.x,a.y]=u(a.x,a.y,O);else o=a(l,o,b.WGS84,s,null,null);const E=[];for(let a=0;a<o.length;a++){const{x:e,y:t}=o[a],i=d[a];i[n]=a+1,E.push(new p(new f([],[e,t]),i,null,i[n]))}return E}_parseCoordinateValue(e){if(null==e||""===e)return null;let t=F(e);return(isNaN(t)||Math.abs(t)>181)&&(t=parseFloat(e)),t}async _checkProjection(e){try{await h(d,e)}catch{throw new i("csv-layer:projection-not-supported","Projection not supported")}}}function P(e,t){const n=t.parsingOptions||{},r={delimiter:n.delimiter,layerDefinition:null,locationInfo:{latitudeFieldName:n.latitudeField,longitudeFieldName:n.longitudeField}},s=r.layerDefinition={name:o(t.url,v)||"csv",drawingInfo:C,geometryType:"esriGeometryPoint",objectIdField:null,fields:[],timeInfo:n.timeInfo,extent:{xmin:Number.POSITIVE_INFINITY,ymin:Number.POSITIVE_INFINITY,xmax:Number.NEGATIVE_INFINITY,ymax:Number.NEGATIVE_INFINITY,spatialReference:n.spatialReference||{wkid:4326}}},a=w(e),l=a.next().value?.trim(),c=a.next().value?.trim();if(!l)throw new i("csv-layer:empty-csv","CSV is empty",{csv:e});const{delimiter:m,locationInfo:d}=E(l,c,n);if(!m)throw new i("csv-layer:invalid-delimiter","Unable to detect the delimiter from CSV",{firstLine:l,secondLine:c,parsingOptions:n});if(!d)throw new i("csv-layer:location-fields-not-found","Unable to identify latitude and longitude fields from the CSV file",{firstLine:l,secondLine:c,parsingOptions:n});r.locationInfo=d,r.delimiter=m;const{names:u,aliases:p}=T(l,m),f=j(e,r.delimiter,u,p,r.locationInfo);if(n.fields?.length){const e=new S(n.fields);for(const t of f){const i=e.get(t.name);i&&Object.assign(t,i)}}if(!f.some((e=>"esriFieldTypeOID"===e.type&&(s.objectIdField=e.name,!0)))){const e={name:"__OBJECTID",alias:"__OBJECTID",type:"esriFieldTypeOID",editable:!1,nullable:!1};s.objectIdField=e.name,f.unshift(e)}s.fields=f;const y=new S(s.fields);if(r.locationInfo&&(r.locationInfo.latitudeFieldName=y.get(r.locationInfo.latitudeFieldName).name,r.locationInfo.longitudeFieldName=y.get(r.locationInfo.longitudeFieldName).name),s.timeInfo){const e=s.timeInfo;if(e.startTimeField){const t=y.get(e.startTimeField);t?(e.startTimeField=t.name,t.type="esriFieldTypeDate"):e.startTimeField=null}if(e.endTimeField){const t=y.get(e.endTimeField);t?(e.endTimeField=t.name,t.type="esriFieldTypeDate"):e.endTimeField=null}if(e.trackIdField){const t=y.get(e.trackIdField);e.trackIdField=t?t.name:null}e.startTimeField||e.endTimeField||(s.timeInfo=null)}return r}export{k as default};
5
+ import"../../../../geometry.js";import e from"../../../../request.js";import{createTask as t}from"../../../../core/asyncUtils.js";import{parseDate as i}from"../../../../core/date.js";import n from"../../../../core/Error.js";import r from"../../../../core/Logger.js";import{isAbortError as s}from"../../../../core/promiseUtils.js";import{urlToObject as o,getFilename as a}from"../../../../core/urlUtils.js";import{projectMany as l}from"../../../../geometry/projection.js";import{jsonAdapter as c}from"../../../../geometry/geometryAdapters/json.js";import{equals as m,isWebMercator as d,WGS84 as u}from"../../../../geometry/support/spatialReferenceUtils.js";import{lngLatToXY as p}from"../../../../geometry/support/webMercatorUtils.js";import{OptimizedFeature as f}from"../../OptimizedFeature.js";import y from"../../OptimizedGeometry.js";import{checkProjectionSupport as h}from"../../data/projectionSupport.js";import{parseRows as g,parseNumber as _,readRows as I,inferDelimiterAndLocationInfo as F,extractFieldNamesAndAliasesFromRow as w,inferFields as E}from"../csv/csv.js";import{createDefaultAttributesFunction as j,createDrawingInfo as T}from"./clientSideDefaults.js";import x from"../../../support/FieldsIndex.js";import{getFieldDefaultValue as N}from"../../../support/fieldUtils.js";import{utc as S}from"../../../../time/timeZoneUtils.js";import q from"../../../../geometry/SpatialReference.js";const b=T("esriGeometryPoint"),C=["csv"],v=[0,0];class O{constructor(e,t){this.x=e,this.y=t}}class D{constructor(){this._queryEngine=null,this._snapshotFeatures=async e=>{const t=await this._fetch(e);return this._createFeatures(t)}}destroy(){this._queryEngine?.destroy(),this._queryEngine=null}async load(e,t={}){this._loadOptions=e;const[i,{QueryEngine:n,FeatureStore:r}]=await Promise.all([this._fetch(t.signal),import("./QueryEngineBuildLayer.js"),this._checkProjection(e?.parsingOptions?.spatialReference)]),s=k(i,e);this._locationInfo=s.locationInfo,this._delimiter=s.delimiter,this._queryEngine=this._createQueryEngine(n,r,s);const o=await this._createFeatures(i);this._queryEngine.featureStore.addMany(o);const{fullExtent:a,timeExtent:l}=await this._queryEngine.fetchRecomputedExtents();if(s.layerDefinition.extent=a,l){const{start:e,end:t}=l;s.layerDefinition.timeInfo.timeExtent=[e,t]}return s}async applyEdits(){throw new n("csv-layer:editing-not-supported","applyEdits() is not supported on CSVLayer")}async queryFeatures(e={},t={}){return await this._waitSnapshotComplete(),this._queryEngine.executeQuery(e,t.signal)}async queryFeatureCount(e={},t={}){return await this._waitSnapshotComplete(),this._queryEngine.executeQueryForCount(e,t.signal)}async queryObjectIds(e={},t={}){return await this._waitSnapshotComplete(),this._queryEngine.executeQueryForIds(e,t.signal)}async queryExtent(e={},t={}){return await this._waitSnapshotComplete(),this._queryEngine.executeQueryForExtent(e,t.signal)}async querySnapping(e,t={}){return await this._waitSnapshotComplete(),this._queryEngine.executeQueryForSnapping(e,t.signal)}async refresh(e){this._loadOptions.customParameters=e,this._snapshotTask?.abort(),this._snapshotTask=t(this._snapshotFeatures),this._snapshotTask.promise.then((e=>{this._queryEngine.featureStore.clear(),e&&this._queryEngine.featureStore.addMany(e)}),(e=>{this._queryEngine.featureStore.clear(),s(e)||r.getLogger("esri.layers.CSVLayer").error(new n("csv-layer:refresh","An error occurred during refresh",{error:e}))})),await this._waitSnapshotComplete();const{fullExtent:i,timeExtent:o}=await this._queryEngine.fetchRecomputedExtents();return{extent:i,timeExtent:o}}async _waitSnapshotComplete(){if(this._snapshotTask&&!this._snapshotTask.finished){try{await this._snapshotTask.promise}catch{}return this._waitSnapshotComplete()}}async _fetch(t){const{url:i,customParameters:r}=this._loadOptions;if(!i)throw new n("csv-layer:invalid-source","url not defined");const s=o(i);return(await e(s.path,{query:{...s.query,...r},responseType:"text",signal:t})).data}_createQueryEngine(e,t,i){const{objectIdField:n,fields:r,extent:s,timeInfo:o}=i.layerDefinition,a=new t({geometryType:"esriGeometryPoint",hasM:!1,hasZ:!1});return new e({fields:r,geometryType:"esriGeometryPoint",hasM:!1,hasZ:!1,timeInfo:o,objectIdField:n,spatialReference:s.spatialReference||{wkid:4326},cacheSpatialQueries:!0,featureStore:a})}async _createFeatures(e){const{latitudeFieldName:t,longitudeFieldName:n}=this._locationInfo,{objectIdField:r,fieldsIndex:s,spatialReference:o}=this._queryEngine;let a=[];const u=[],h=s.fields.filter((e=>e.name!==r)).map((e=>e.name));let I=0;const F={};for(const i of s.fields)if("esriFieldTypeOID"!==i.type&&"esriFieldTypeGlobalID"!==i.type){const e=N(i);void 0!==e&&(F[i.name]=e)}const w=g(e,h,this._delimiter,j(F,r));for(const l of w){const e=this._parseCoordinateValue(l[t]),o=this._parseCoordinateValue(l[n]);if(null!=o&&null!=e&&!isNaN(e)&&!isNaN(o)){l[t]=e,l[n]=o;for(const e in l)if(e!==t&&e!==n)if(s.isDateField(e))l[e]=i(l[e]);else if(s.isNumericField(e)){const t=_(l[e]);isNaN(t)?l[e]=null:l[e]=t}l[r]=I,I++,a.push(new O(o,e)),u.push(l)}}if(!m({wkid:4326},o))if(d(o))for(const i of a)[i.x,i.y]=p(i.x,i.y,v);else a=l(c,a,q.WGS84,o,null,null);const E=[];for(let i=0;i<a.length;i++){const{x:e,y:t}=a[i],n=u[i];n[r]=i+1,E.push(new f(new y([],[e,t]),n,null,n[r]))}return E}_parseCoordinateValue(e){if(null==e||""===e)return null;let t=_(e);return(isNaN(t)||Math.abs(t)>181)&&(t=parseFloat(e)),t}async _checkProjection(e){try{await h(u,e)}catch{throw new n("csv-layer:projection-not-supported","Projection not supported")}}}function k(e,t){const i=t.parsingOptions||{},r={delimiter:i.delimiter,layerDefinition:null,locationInfo:{latitudeFieldName:i.latitudeField,longitudeFieldName:i.longitudeField}},s=r.layerDefinition={name:a(t.url,C)||"csv",dateFieldsTimeReference:{timeZoneIANA:S},drawingInfo:b,geometryType:"esriGeometryPoint",objectIdField:null,fields:[],timeInfo:i.timeInfo,extent:{xmin:Number.POSITIVE_INFINITY,ymin:Number.POSITIVE_INFINITY,xmax:Number.NEGATIVE_INFINITY,ymax:Number.NEGATIVE_INFINITY,spatialReference:i.spatialReference||{wkid:4326}}},o=I(e),l=o.next().value?.trim(),c=o.next().value?.trim();if(!l)throw new n("csv-layer:empty-csv","CSV is empty",{csv:e});const{delimiter:m,locationInfo:d}=F(l,c,i);if(!m)throw new n("csv-layer:invalid-delimiter","Unable to detect the delimiter from CSV",{firstLine:l,secondLine:c,parsingOptions:i});if(!d)throw new n("csv-layer:location-fields-not-found","Unable to identify latitude and longitude fields from the CSV file",{firstLine:l,secondLine:c,parsingOptions:i});r.locationInfo=d,r.delimiter=m;const{names:u,aliases:p}=w(l,m),f=E(e,r.delimiter,u,p,r.locationInfo);if(i.fields?.length){const e=new x(i.fields);for(const t of f){const i=e.get(t.name);i&&Object.assign(t,i)}}if(!f.some((e=>"esriFieldTypeOID"===e.type&&(s.objectIdField=e.name,!0)))){const e={name:"__OBJECTID",alias:"__OBJECTID",type:"esriFieldTypeOID",editable:!1,nullable:!1};s.objectIdField=e.name,f.unshift(e)}s.fields=f;const y=new x(s.fields);if(r.locationInfo&&(r.locationInfo.latitudeFieldName=y.get(r.locationInfo.latitudeFieldName).name,r.locationInfo.longitudeFieldName=y.get(r.locationInfo.longitudeFieldName).name),s.timeInfo){const e=s.timeInfo;if(e.startTimeField){const t=y.get(e.startTimeField);t?(e.startTimeField=t.name,t.type="esriFieldTypeDate"):e.startTimeField=null}if(e.endTimeField){const t=y.get(e.endTimeField);t?(e.endTimeField=t.name,t.type="esriFieldTypeDate"):e.endTimeField=null}if(e.trackIdField){const t=y.get(e.trackIdField);e.trackIdField=t?t.name:null}e.startTimeField||e.endTimeField||(s.timeInfo=null)}return r}export{D as default};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.28/esri/copyright.txt for details.
4
4
  */
5
- import e from"../../../../core/Error.js";import{getJsonType as t,isPoint as i}from"../../../../geometry/support/jsonUtils.js";import{WGS84 as s}from"../../../../geometry/support/spatialReferenceUtils.js";import{convertFromFeatures as n,convertToFeature as r,convertFromFeature as a}from"../../featureConversionUtils.js";import{initialObjectId as l,findLastObjectIdFromFeatures as o}from"../../objectIdUtils.js";import u from"../../data/FeatureStore.js";import{checkProjectionSupport as d,project as p}from"../../data/projectionSupport.js";import{QueryEngine as f}from"../../data/QueryEngine.js";import{createDefaultAttributesFunction as c,createDrawingInfo as y,createDefaultTemplate as m}from"./clientSideDefaults.js";import{loadGeometryEngineForSimplify as h,createFeatureEditErrorResult as g,mixAttributes as I,createFeatureEditSuccessResult as b,simplify as F}from"./sourceUtils.js";import j from"../../../support/FieldsIndex.js";import{kebabDict as _}from"../../../support/fieldType.js";import{getFieldDefaultValue as E}from"../../../support/fieldUtils.js";const x=s,T={xmin:-180,ymin:-90,xmax:180,ymax:90,spatialReference:s},R={hasAttachments:!1,capabilities:"query, editing, create, delete, update",useStandardizedQueries:!0,supportsCoordinatesQuantization:!0,supportsReturningQueryGeometry:!0,advancedQueryCapabilities:{supportsQueryAttachments:!1,supportsStatistics:!0,supportsPercentileStatistics:!0,supportsReturningGeometryCentroid:!0,supportsQueryWithDistance:!0,supportsDistinct:!0,supportsReturningQueryExtent:!0,supportsReturningGeometryProperties:!1,supportsHavingClause:!0,supportsOrderBy:!0,supportsPagination:!0,supportsQueryWithResultType:!1,supportsSqlExpression:!0,supportsDisjointSpatialRel:!0}};function q(e){return i(e)?null!=e.z:!!e.hasZ}function w(e){return i(e)?null!=e.m:!!e.hasM}class D{constructor(){this._queryEngine=null,this._nextObjectId=null}destroy(){this._queryEngine&&this._queryEngine&&this._queryEngine.destroy(),this._queryEngine=this._fieldsIndex=this._createDefaultAttributes=null}async load(t){const i=[],{features:s}=t,n=this._inferLayerProperties(s,t.fields),r=t.fields||[],a=null!=t.hasM?t.hasM:!!n.hasM,p=null!=t.hasZ?t.hasZ:!!n.hasZ,h=!t.spatialReference&&!n.spatialReference,g=h?x:t.spatialReference||n.spatialReference,I=h?T:null,b=t.geometryType||n.geometryType,F=!b;let q=t.objectIdField||n.objectIdField,w=t.timeInfo;if(!F&&(h&&i.push({name:"feature-layer:spatial-reference-not-found",message:"Spatial reference not provided or found in features. Defaults to WGS84"}),!b))throw new e("feature-layer:missing-property","geometryType not set and couldn't be inferred from the provided features");if(!q)throw new e("feature-layer:missing-property","objectIdField not set and couldn't be found in the provided fields");if(n.objectIdField&&q!==n.objectIdField&&(i.push({name:"feature-layer:duplicated-oid-field",message:`Provided objectIdField "${q}" doesn't match the field name "${n.objectIdField}", found in the provided fields`}),q=n.objectIdField),q&&!n.objectIdField){let e=null;r.some((t=>t.name===q&&(e=t,!0)))?(e.type="esriFieldTypeOID",e.editable=!1,e.nullable=!1):r.unshift({alias:q,name:q,type:"esriFieldTypeOID",editable:!1,nullable:!1})}for(const l of r){if(null==l.name&&(l.name=l.alias),null==l.alias&&(l.alias=l.name),!l.name)throw new e("feature-layer:invalid-field-name","field name is missing",{field:l});if(l.name===q&&(l.type="esriFieldTypeOID"),!_.jsonValues.includes(l.type))throw new e("feature-layer:invalid-field-type",`invalid type for field "${l.name}"`,{field:l})}const D={};for(const e of r)if("esriFieldTypeOID"!==e.type&&"esriFieldTypeGlobalID"!==e.type){const t=E(e);void 0!==t&&(D[e.name]=t)}if(this._fieldsIndex=new j(r),this._createDefaultAttributes=c(D,q),w){if(w.startTimeField){const e=this._fieldsIndex.get(w.startTimeField);e?(w.startTimeField=e.name,e.type="esriFieldTypeDate"):w.startTimeField=null}if(w.endTimeField){const e=this._fieldsIndex.get(w.endTimeField);e?(w.endTimeField=e.name,e.type="esriFieldTypeDate"):w.endTimeField=null}if(w.trackIdField){const e=this._fieldsIndex.get(w.trackIdField);e?w.trackIdField=e.name:(w.trackIdField=null,i.push({name:"feature-layer:invalid-timeInfo-trackIdField",message:"trackIdField is missing",details:{timeInfo:w}}))}w.startTimeField||w.endTimeField||(i.push({name:"feature-layer:invalid-timeInfo",message:"startTimeField and endTimeField are missing or invalid",details:{timeInfo:w}}),w=null)}const O={warnings:i,featureErrors:[],layerDefinition:{...R,drawingInfo:y(b),templates:m(D),extent:I,geometryType:b,objectIdField:q,fields:r,hasZ:p,hasM:a,timeInfo:w},assignedObjectIds:{}};if(this._queryEngine=new f({fields:r,geometryType:b,hasM:a,hasZ:p,objectIdField:q,spatialReference:g,featureStore:new u({geometryType:b,hasM:a,hasZ:p}),timeInfo:w,cacheSpatialQueries:!0}),!s||!s.length)return this._nextObjectId=l,O;const S=o(q,s);return this._nextObjectId=S+1,await d(s,g),this._loadInitialFeatures(O,s)}async applyEdits(e){const{spatialReference:t,geometryType:i}=this._queryEngine;return await Promise.all([h(t,i),d(e.adds,t),d(e.updates,t)]),this._applyEdits(e)}queryFeatures(e,t={}){return this._queryEngine.executeQuery(e,t.signal)}queryFeatureCount(e,t={}){return this._queryEngine.executeQueryForCount(e,t.signal)}queryObjectIds(e,t={}){return this._queryEngine.executeQueryForIds(e,t.signal)}queryExtent(e,t={}){return this._queryEngine.executeQueryForExtent(e,t.signal)}querySnapping(e,t={}){return this._queryEngine.executeQueryForSnapping(e,t.signal)}_inferLayerProperties(e,i){let s,n,r=null,a=null,l=null;for(const o of e){const e=o.geometry;if(null!=e&&(r||(r=t(e)),a||(a=e.spatialReference),null==s&&(s=q(e)),null==n&&(n=w(e)),r&&a&&null!=s&&null!=n))break}if(i&&i.length){let e=null;i.some((t=>{const i="esriFieldTypeOID"===t.type,s=!t.type&&t.name&&"objectid"===t.name.toLowerCase();return e=t,i||s}))&&(l=e.name)}return{geometryType:r,spatialReference:a,objectIdField:l,hasM:n,hasZ:s}}async _loadInitialFeatures(e,i){const{geometryType:s,hasM:r,hasZ:a,objectIdField:l,spatialReference:o,featureStore:u}=this._queryEngine,d=[];for(const n of i){if(null!=n.uid&&(e.assignedObjectIds[n.uid]=-1),n.geometry&&s!==t(n.geometry)){e.featureErrors.push(g("Incorrect geometry type."));continue}const i=this._createDefaultAttributes(),r=I(this._fieldsIndex,i,n.attributes,!0,e.warnings);r?e.featureErrors.push(r):(this._assignObjectId(i,n.attributes,!0),n.attributes=i,null!=n.uid&&(e.assignedObjectIds[n.uid]=n.attributes[l]),null!=n.geometry&&(n.geometry=p(n.geometry,n.geometry.spatialReference,o)),d.push(n))}u.addMany(n([],d,s,a,r,l));const{fullExtent:f,timeExtent:c}=await this._queryEngine.fetchRecomputedExtents();if(e.layerDefinition.extent=f,c){const{start:t,end:i}=c;e.layerDefinition.timeInfo.timeExtent=[t,i]}return e}async _applyEdits(e){const{adds:t,updates:i,deletes:s}=e,n={addResults:[],deleteResults:[],updateResults:[],uidToObjectId:{}};if(t&&t.length&&this._applyAddEdits(n,t),i&&i.length&&this._applyUpdateEdits(n,i),s&&s.length){for(const e of s)n.deleteResults.push(b(e));this._queryEngine.featureStore.removeManyById(s)}const{fullExtent:r,timeExtent:a}=await this._queryEngine.fetchRecomputedExtents();return{extent:r,timeExtent:a,featureEditResults:n}}_applyAddEdits(e,i){const{addResults:s}=e,{geometryType:r,hasM:a,hasZ:l,objectIdField:o,spatialReference:u,featureStore:d}=this._queryEngine,f=[];for(const n of i){if(n.geometry&&r!==t(n.geometry)){s.push(g("Incorrect geometry type."));continue}const i=this._createDefaultAttributes(),a=I(this._fieldsIndex,i,n.attributes);if(a)s.push(a);else{if(this._assignObjectId(i,n.attributes),n.attributes=i,null!=n.uid){const t=n.attributes[o];e.uidToObjectId[n.uid]=t}if(null!=n.geometry){const e=n.geometry.spatialReference??u;n.geometry=p(F(n.geometry,e),e,u)}f.push(n),s.push(b(n.attributes[o]))}}d.addMany(n([],f,r,l,a,o))}_applyUpdateEdits({updateResults:e},i){const{geometryType:s,hasM:n,hasZ:l,objectIdField:o,spatialReference:u,featureStore:d}=this._queryEngine;for(const f of i){const{attributes:i,geometry:c}=f,y=i&&i[o];if(null==y){e.push(g(`Identifier field ${o} missing`));continue}if(!d.has(y)){e.push(g(`Feature with object id ${y} missing`));continue}const m=r(d.getFeature(y),s,l,n);if(null!=c){if(s!==t(c)){e.push(g("Incorrect geometry type."));continue}const i=c.spatialReference??u;m.geometry=p(F(c,i),i,u)}if(i){const t=I(this._fieldsIndex,m.attributes,i);if(t){e.push(t);continue}}d.add(a(m,s,l,n,o)),e.push(b(y))}}_assignObjectId(e,t,i=!1){const s=this._queryEngine.objectIdField;i&&t&&isFinite(t[s])?e[s]=t[s]:e[s]=this._nextObjectId++}}export{D as default};
5
+ import e from"../../../../core/Error.js";import{getJsonType as t,isPoint as i}from"../../../../geometry/support/jsonUtils.js";import{WGS84 as s}from"../../../../geometry/support/spatialReferenceUtils.js";import{convertFromFeatures as n,convertToFeature as r,convertFromFeature as a}from"../../featureConversionUtils.js";import{initialObjectId as l,findLastObjectIdFromFeatures as o}from"../../objectIdUtils.js";import{checkProjectionSupport as u,project as d}from"../../data/projectionSupport.js";import{createDefaultAttributesFunction as p,createDrawingInfo as f,createDefaultTemplate as c}from"./clientSideDefaults.js";import{loadGeometryEngineForSimplify as y,createFeatureEditErrorResult as m,mixAttributes as h,createFeatureEditSuccessResult as g,simplify as I}from"./sourceUtils.js";import b from"../../../support/FieldsIndex.js";import{kebabDict as F}from"../../../support/fieldType.js";import{getFieldDefaultValue as j}from"../../../support/fieldUtils.js";const _=s,E={xmin:-180,ymin:-90,xmax:180,ymax:90,spatialReference:s},x={hasAttachments:!1,capabilities:"query, editing, create, delete, update",useStandardizedQueries:!0,supportsCoordinatesQuantization:!0,supportsReturningQueryGeometry:!0,advancedQueryCapabilities:{supportsQueryAttachments:!1,supportsStatistics:!0,supportsPercentileStatistics:!0,supportsReturningGeometryCentroid:!0,supportsQueryWithDistance:!0,supportsDistinct:!0,supportsReturningQueryExtent:!0,supportsReturningGeometryProperties:!1,supportsHavingClause:!0,supportsOrderBy:!0,supportsPagination:!0,supportsQueryWithResultType:!1,supportsSqlExpression:!0,supportsDisjointSpatialRel:!0}};function T(e){return i(e)?null!=e.z:!!e.hasZ}function R(e){return i(e)?null!=e.m:!!e.hasM}class q{constructor(){this._queryEngine=null,this._nextObjectId=null}destroy(){this._queryEngine&&this._queryEngine&&this._queryEngine.destroy(),this._queryEngine=this._fieldsIndex=this._createDefaultAttributes=null}async load(t){const i=[],{features:s}=t,n=this._inferLayerProperties(s,t.fields),r=t.fields||[],a=null!=t.hasM?t.hasM:!!n.hasM,d=null!=t.hasZ?t.hasZ:!!n.hasZ,y=!t.spatialReference&&!n.spatialReference,m=y?_:t.spatialReference||n.spatialReference,h=y?E:null,g=t.geometryType||n.geometryType,I=!g;let T=t.objectIdField||n.objectIdField,R=t.timeInfo;if(!I&&(y&&i.push({name:"feature-layer:spatial-reference-not-found",message:"Spatial reference not provided or found in features. Defaults to WGS84"}),!g))throw new e("feature-layer:missing-property","geometryType not set and couldn't be inferred from the provided features");if(!T)throw new e("feature-layer:missing-property","objectIdField not set and couldn't be found in the provided fields");if(n.objectIdField&&T!==n.objectIdField&&(i.push({name:"feature-layer:duplicated-oid-field",message:`Provided objectIdField "${T}" doesn't match the field name "${n.objectIdField}", found in the provided fields`}),T=n.objectIdField),T&&!n.objectIdField){let e=null;r.some((t=>t.name===T&&(e=t,!0)))?(e.type="esriFieldTypeOID",e.editable=!1,e.nullable=!1):r.unshift({alias:T,name:T,type:"esriFieldTypeOID",editable:!1,nullable:!1})}for(const l of r){if(null==l.name&&(l.name=l.alias),null==l.alias&&(l.alias=l.name),!l.name)throw new e("feature-layer:invalid-field-name","field name is missing",{field:l});if(l.name===T&&(l.type="esriFieldTypeOID"),!F.jsonValues.includes(l.type))throw new e("feature-layer:invalid-field-type",`invalid type for field "${l.name}"`,{field:l})}const q={};for(const e of r)if("esriFieldTypeOID"!==e.type&&"esriFieldTypeGlobalID"!==e.type){const t=j(e);void 0!==t&&(q[e.name]=t)}if(this._fieldsIndex=new b(r),this._createDefaultAttributes=p(q,T),R){if(R.startTimeField){const e=this._fieldsIndex.get(R.startTimeField);e?(R.startTimeField=e.name,e.type="esriFieldTypeDate"):R.startTimeField=null}if(R.endTimeField){const e=this._fieldsIndex.get(R.endTimeField);e?(R.endTimeField=e.name,e.type="esriFieldTypeDate"):R.endTimeField=null}if(R.trackIdField){const e=this._fieldsIndex.get(R.trackIdField);e?R.trackIdField=e.name:(R.trackIdField=null,i.push({name:"feature-layer:invalid-timeInfo-trackIdField",message:"trackIdField is missing",details:{timeInfo:R}}))}R.startTimeField||R.endTimeField||(i.push({name:"feature-layer:invalid-timeInfo",message:"startTimeField and endTimeField are missing or invalid",details:{timeInfo:R}}),R=null)}const w={warnings:i,featureErrors:[],layerDefinition:{...x,dateFieldsTimeReference:{timeZoneIANA:"UTC"},drawingInfo:f(g),templates:c(q),extent:h,geometryType:g,objectIdField:T,fields:r,hasZ:d,hasM:a,timeInfo:R},assignedObjectIds:{}},{QueryEngine:D,FeatureStore:O}=await import("./QueryEngineBuildLayer.js");if(this._queryEngine=new D({fields:r,geometryType:g,hasM:a,hasZ:d,objectIdField:T,spatialReference:m,featureStore:new O({geometryType:g,hasM:a,hasZ:d}),timeInfo:R,cacheSpatialQueries:!0}),!s||!s.length)return this._nextObjectId=l,w;const S=o(T,s);return this._nextObjectId=S+1,await u(s,m),this._loadInitialFeatures(w,s)}async applyEdits(e){const{spatialReference:t,geometryType:i}=this._queryEngine;return await Promise.all([y(t,i),u(e.adds,t),u(e.updates,t)]),this._applyEdits(e)}queryFeatures(e,t={}){return this._queryEngine.executeQuery(e,t.signal)}queryFeatureCount(e,t={}){return this._queryEngine.executeQueryForCount(e,t.signal)}queryObjectIds(e,t={}){return this._queryEngine.executeQueryForIds(e,t.signal)}queryExtent(e,t={}){return this._queryEngine.executeQueryForExtent(e,t.signal)}querySnapping(e,t={}){return this._queryEngine.executeQueryForSnapping(e,t.signal)}_inferLayerProperties(e,i){let s,n,r=null,a=null,l=null;for(const o of e){const e=o.geometry;if(null!=e&&(r||(r=t(e)),a||(a=e.spatialReference),null==s&&(s=T(e)),null==n&&(n=R(e)),r&&a&&null!=s&&null!=n))break}if(i&&i.length){let e=null;i.some((t=>{const i="esriFieldTypeOID"===t.type,s=!t.type&&t.name&&"objectid"===t.name.toLowerCase();return e=t,i||s}))&&(l=e.name)}return{geometryType:r,spatialReference:a,objectIdField:l,hasM:n,hasZ:s}}async _loadInitialFeatures(e,i){const{geometryType:s,hasM:r,hasZ:a,objectIdField:l,spatialReference:o,featureStore:u}=this._queryEngine,p=[];for(const n of i){if(null!=n.uid&&(e.assignedObjectIds[n.uid]=-1),n.geometry&&s!==t(n.geometry)){e.featureErrors.push(m("Incorrect geometry type."));continue}const i=this._createDefaultAttributes(),r=h(this._fieldsIndex,i,n.attributes,!0,e.warnings);r?e.featureErrors.push(r):(this._assignObjectId(i,n.attributes,!0),n.attributes=i,null!=n.uid&&(e.assignedObjectIds[n.uid]=n.attributes[l]),null!=n.geometry&&(n.geometry=d(n.geometry,n.geometry.spatialReference,o)),p.push(n))}u.addMany(n([],p,s,a,r,l));const{fullExtent:f,timeExtent:c}=await this._queryEngine.fetchRecomputedExtents();if(e.layerDefinition.extent=f,c){const{start:t,end:i}=c;e.layerDefinition.timeInfo.timeExtent=[t,i]}return e}async _applyEdits(e){const{adds:t,updates:i,deletes:s}=e,n={addResults:[],deleteResults:[],updateResults:[],uidToObjectId:{}};if(t&&t.length&&this._applyAddEdits(n,t),i&&i.length&&this._applyUpdateEdits(n,i),s&&s.length){for(const e of s)n.deleteResults.push(g(e));this._queryEngine.featureStore.removeManyById(s)}const{fullExtent:r,timeExtent:a}=await this._queryEngine.fetchRecomputedExtents();return{extent:r,timeExtent:a,featureEditResults:n}}_applyAddEdits(e,i){const{addResults:s}=e,{geometryType:r,hasM:a,hasZ:l,objectIdField:o,spatialReference:u,featureStore:p}=this._queryEngine,f=[];for(const n of i){if(n.geometry&&r!==t(n.geometry)){s.push(m("Incorrect geometry type."));continue}const i=this._createDefaultAttributes(),a=h(this._fieldsIndex,i,n.attributes);if(a)s.push(a);else{if(this._assignObjectId(i,n.attributes),n.attributes=i,null!=n.uid){const t=n.attributes[o];e.uidToObjectId[n.uid]=t}if(null!=n.geometry){const e=n.geometry.spatialReference??u;n.geometry=d(I(n.geometry,e),e,u)}f.push(n),s.push(g(n.attributes[o]))}}p.addMany(n([],f,r,l,a,o))}_applyUpdateEdits({updateResults:e},i){const{geometryType:s,hasM:n,hasZ:l,objectIdField:o,spatialReference:u,featureStore:p}=this._queryEngine;for(const f of i){const{attributes:i,geometry:c}=f,y=i&&i[o];if(null==y){e.push(m(`Identifier field ${o} missing`));continue}if(!p.has(y)){e.push(m(`Feature with object id ${y} missing`));continue}const b=r(p.getFeature(y),s,l,n);if(null!=c){if(s!==t(c)){e.push(m("Incorrect geometry type."));continue}const i=c.spatialReference??u;b.geometry=d(I(c,i),i,u)}if(i){const t=h(this._fieldsIndex,b.attributes,i);if(t){e.push(t);continue}}p.add(a(b,s,l,n,o)),e.push(g(y))}}_assignObjectId(e,t,i=!1){const s=this._queryEngine.objectIdField;i&&t&&isFinite(t[s])?e[s]=t[s]:e[s]=this._nextObjectId++}}export{q as default};
@@ -2,3 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.28/esri/copyright.txt for details.
4
4
  */
5
+ export{QueryEngine}from"../../data/QueryEngine.js";export{default as FeatureStore}from"../../data/FeatureStore.js";
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.28/esri/copyright.txt for details.
4
4
  */
5
- import{isValid as e}from"../../../../geometry/support/spatialReferenceUtils.js";import{validateFieldValue as t,validationErrorToString as n,isNumericField as i,isStringField as r,sanitizeNullFieldValue as s}from"../../../support/fieldUtils.js";class o{constructor(){this.code=null,this.description=null}}class l{constructor(e){this.error=new o,this.globalId=null,this.objectId=null,this.success=!1,this.uniqueId=null,this.error.description=e}}function u(e){return new l(e)}class a{constructor(e){this.globalId=null,this.success=!0,this.objectId=this.uniqueId=e}}function c(e){return new a(e)}const f=new Set;function d(e,i,r,s=!1,o){f.clear();for(const l in r){const a=e.get(l);if(!a)continue;const c=r[l],d=m(a,c);if(d!==c&&o&&o.push({name:"invalid-value-type",message:"attribute value was converted to match the field type",details:{field:a,originalValue:c,sanitizedValue:d}}),f.add(a.name),a&&(s||a.editable)){const e=t(a,d);if(e)return u(n(e,a,d));i[a.name]=d}}for(const t of e?.requiredFields??[])if(!f.has(t.name))return u(`missing required field "${t.name}"`);return null}function m(e,t){let n=t;return"string"==typeof t&&i(e)?n=parseFloat(t):null!=t&&r(e)&&"string"!=typeof t&&(n=String(t)),s(n)}let p;function h(t,n){if(!t||!e(n))return t;if("rings"in t||"paths"in t){if(null==p)throw new TypeError("geometry engine not loaded");return p.simplify(n,t)}return t}async function g(){return null==p&&(p=await import("../../../../geometry/geometryEngineJSON.js")),p}async function y(t,n){!e(t)||"esriGeometryPolygon"!==n&&"esriGeometryPolyline"!==n||await g()}export{u as createFeatureEditErrorResult,c as createFeatureEditSuccessResult,y as loadGeometryEngineForSimplify,d as mixAttributes,h as simplify};
5
+ import{parseDate as e}from"../../../../core/date.js";import{isValid as t}from"../../../../geometry/support/spatialReferenceUtils.js";import{validateFieldValue as n,validationErrorToString as i,isNumericField as r,isStringField as o,sanitizeNullFieldValue as s}from"../../../support/fieldUtils.js";class l{constructor(){this.code=null,this.description=null}}class u{constructor(e){this.error=new l,this.globalId=null,this.objectId=null,this.success=!1,this.uniqueId=null,this.error.description=e}}function c(e){return new u(e)}class a{constructor(e){this.globalId=null,this.success=!0,this.objectId=this.uniqueId=e}}function f(e){return new a(e)}const d=new Set;function m(e,t,r,o=!1,s){d.clear();for(const l in r){const u=e.get(l);if(!u)continue;const a=r[l],f=g(u,a);if(f!==a&&s&&s.push({name:"invalid-value-type",message:"attribute value was converted to match the field type",details:{field:u,originalValue:a,sanitizedValue:f}}),d.add(u.name),u&&(o||u.editable)){const e=n(u,f);if(e)return c(i(e,u,f));t[u.name]=f}}for(const n of e?.requiredFields??[])if(!d.has(n.name))return c(`missing required field "${n.name}"`);return null}function p(t,n){if(t?.length)for(const{name:i}of t)"string"==typeof n[i]&&(n[i]=e(n[i]))}function g(e,t){let n=t;return"string"==typeof t&&r(e)?n=parseFloat(t):null!=t&&o(e)&&"string"!=typeof t&&(n=String(t)),s(n)}let h;function y(e,n){if(!e||!t(n))return e;if("rings"in e||"paths"in e){if(null==h)throw new TypeError("geometry engine not loaded");return h.simplify(n,e)}return e}async function w(){return null==h&&(h=await import("../../../../geometry/geometryEngineJSON.js")),h}async function b(e,n){!t(e)||"esriGeometryPolygon"!==n&&"esriGeometryPolyline"!==n||await w()}export{c as createFeatureEditErrorResult,f as createFeatureEditSuccessResult,b as loadGeometryEngineForSimplify,m as mixAttributes,p as parseStringDateFieldValues,y as simplify};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.28/esri/copyright.txt for details.
4
4
  */
5
- import{_ as e}from"../../chunks/tslib.es6.js";import t from"../../request.js";import r from"../../core/Error.js";import o from"../../core/Logger.js";import{debounce as i}from"../../core/promiseUtils.js";import{urlToObject as s}from"../../core/urlUtils.js";import{property as a}from"../../core/accessorSupport/decorators/property.js";import"../../core/accessorSupport/ensureType.js";import"../../core/arrayUtils.js";import"../../core/has.js";import{reader as n}from"../../core/accessorSupport/decorators/reader.js";import{subclass as l}from"../../core/accessorSupport/decorators/subclass.js";import{writer as p}from"../../core/accessorSupport/decorators/writer.js";import{updateOrigins as c}from"../../core/accessorSupport/originUtils.js";import d from"../../geometry/Extent.js";import u from"../../geometry/HeightModelInfo.js";import m from"../../geometry/SpatialReference.js";import{titleFromUrlAndName as h,parse as y,cleanTitle as f,sanitizeUrlWithLayerId as v,writeUrlWithLayerId as S}from"../support/arcgisLayerUrl.js";import{id as g,url as w}from"../support/commonProperties.js";import{fetchIndexInfo as I}from"../support/I3SIndexInfo.js";import{getLoader as x}from"../support/schemaValidatorLoader.js";import b from"../../portal/Portal.js";import _ from"../../portal/PortalItem.js";import{saveResources as j,updateItemWithResources as R}from"../../webdoc/support/saveUtils.js";const A="esri.layers.mixins.SceneService",N=o.getLogger(A),E=o=>{let E=class extends o{constructor(){super(...arguments),this.spatialReference=null,this.fullExtent=null,this.heightModelInfo=null,this.minScale=0,this.maxScale=0,this.version={major:Number.NaN,minor:Number.NaN,versionString:""},this.copyright=null,this.sublayerTitleMode="item-title",this.title=null,this.layerId=null,this.indexInfo=null,this._debouncedSaveOperations=i((async(e,t,r)=>{switch(e){case L.SAVE:return this._save(t);case L.SAVE_AS:return this._saveAs(r,t)}}))}readSpatialReference(e,t){return this._readSpatialReference(t)}_readSpatialReference(e){if(null!=e.spatialReference)return m.fromJSON(e.spatialReference);{const t=e.store,r=t.indexCRS||t.geographicCRS,o=r&&parseInt(r.substring(r.lastIndexOf("/")+1,r.length),10);return null!=o?new m(o):null}}readFullExtent(e,t,r){if(null!=e&&"object"==typeof e){const o=null==e.spatialReference?{...e,spatialReference:this._readSpatialReference(t)}:e;return d.fromJSON(o,r)}const o=t.store,i=this._readSpatialReference(t);return null==i||null==o||null==o.extent||!Array.isArray(o.extent)||o.extent.some((e=>e<U))?null:new d({xmin:o.extent[0],ymin:o.extent[1],xmax:o.extent[2],ymax:o.extent[3],spatialReference:i})}parseVersionString(e){const t={major:Number.NaN,minor:Number.NaN,versionString:e},r=e.split(".");return r.length>=2&&(t.major=parseInt(r[0],10),t.minor=parseInt(r[1],10)),t}readVersion(e,t){const r=t.store,o=null!=r.version?r.version.toString():"";return this.parseVersionString(o)}readTitlePortalItem(e){return"item-title"!==this.sublayerTitleMode?void 0:e}readTitleService(e,t){const r=this.portalItem&&this.portalItem.title;if("item-title"===this.sublayerTitleMode)return h(this.url,t.name);let o=t.name;if(!o&&this.url){const e=y(this.url);null!=e&&(o=e.title)}return"item-title-and-service-name"===this.sublayerTitleMode&&r&&(o=r+" - "+o),f(o)}set url(e){const t=v({layer:this,url:e,nonStandardUrlAllowed:!1,logger:N});this._set("url",t.url),null!=t.layerId&&this._set("layerId",t.layerId)}writeUrl(e,t,r,o){S(this,e,"layers",t,o)}get parsedUrl(){const e=this._get("url"),t=s(e);return null!=this.layerId&&(t.path=`${t.path}/layers/${this.layerId}`),t}async _fetchIndexAndUpdateExtent(e,t){this.indexInfo=I(this.parsedUrl.path,this.rootNode,e,this.apiKey,N,t),null==this.fullExtent||this.fullExtent.hasZ||this._updateExtent(await this.indexInfo)}_updateExtent(e){if("page"===e?.type){const t=e.rootIndex%e.pageSize,o=e.rootPage?.nodes?.[t];if(null==o||null==o.obb||null==o.obb.center||null==o.obb.halfSize)throw new r("sceneservice:invalid-node-page","Invalid node page.");if(o.obb.center[0]<U||null==this.fullExtent||this.fullExtent.hasZ)return;const i=o.obb.halfSize,s=o.obb.center[2],a=Math.sqrt(i[0]*i[0]+i[1]*i[1]+i[2]*i[2]);this.fullExtent.zmin=s-a,this.fullExtent.zmax=s+a}else if("node"===e?.type){const t=e.rootNode?.mbs;if(!Array.isArray(t)||4!==t.length||t[0]<U)return;const r=t[2],o=t[3],{fullExtent:i}=this;i&&(i.zmin=r-o,i.zmax=r+o)}}async _fetchService(e){if(null==this.url)throw new r("sceneservice:url-not-set","Scene service can not be loaded without valid portal item or url");if(null==this.layerId&&/SceneServer\/*$/i.test(this.url)){const t=await this._fetchFirstLayerId(e);null!=t&&(this.layerId=t)}return this._fetchServiceLayer(e)}async _fetchFirstLayerId(e){const r=await t(this.url,{query:{f:"json",token:this.apiKey},responseType:"json",signal:e});if(r.data&&Array.isArray(r.data.layers)&&r.data.layers.length>0)return r.data.layers[0].id}async _fetchServiceLayer(e){const r=await t(this.parsedUrl?.path??"",{query:{f:"json",token:this.apiKey},responseType:"json",signal:e});r.ssl&&(this.url=this.url.replace(/^http:/i,"https:"));let o=!1;if(r.data.layerType&&"Voxel"===r.data.layerType&&(o=!0),o)return this._fetchVoxelServiceLayer();const i=r.data;this.read(i,this._getServiceContext()),this.validateLayer(i)}async _fetchVoxelServiceLayer(e){const r=(await t(this.parsedUrl?.path+"/layer",{query:{f:"json",token:this.apiKey},responseType:"json",signal:e})).data;this.read(r,this._getServiceContext()),this.validateLayer(r)}_getServiceContext(){return{origin:"service",portalItem:this.portalItem,portal:this.portalItem?.portal,url:this.parsedUrl}}async _ensureLoadBeforeSave(){await this.load(),"beforeSave"in this&&"function"==typeof this.beforeSave&&await this.beforeSave()}validateLayer(e){}_updateTypeKeywords(e,t,r){e.typeKeywords||(e.typeKeywords=[]);const o=t.getTypeKeywords();for(const i of o)e.typeKeywords.push(i);e.typeKeywords&&(e.typeKeywords=e.typeKeywords.filter(((e,t,r)=>r.indexOf(e)===t)),r===T.newItem&&(e.typeKeywords=e.typeKeywords.filter((e=>"Hosted Service"!==e))))}async _saveAs(e,t){const o={...K,...t};let i=_.from(e);i||(N.error("_saveAs(): requires a portal item parameter"),await Promise.reject(new r("sceneservice:portal-item-required","_saveAs() requires a portal item to save to"))),i.id&&(i=i.clone(),i.id=null);const s=i.portal||b.getDefault();await this._ensureLoadBeforeSave(),i.type=O,i.portal=s;const a={origin:"portal-item",url:null,messages:[],portal:s,portalItem:i,writtenProperties:[],blockedRelativeUrls:[],resources:{toAdd:[],toUpdate:[],toKeep:[],pendingOperations:[]}},n={layers:[this.write({},a)]};return await Promise.all(a.resources.pendingOperations??[]),await this._validateAgainstJSONSchema(n,a,o),i.url=this.url,i.title||(i.title=this.title),this._updateTypeKeywords(i,o,T.newItem),await s.signIn(),await(s.user?.addItem({item:i,folder:o&&o.folder,data:n})),await j(this.resourceReferences,a,null),this.portalItem=i,c(a),a.portalItem=i,i}async _save(e){const t={...K,...e};if(!this.portalItem)throw N.error("_save(): requires the .portalItem property to be set"),new r("sceneservice:portal-item-not-set","Portal item to save to has not been set on this SceneService");if(this.portalItem.type!==O)throw N.error("_save(): Non-matching portal item type. Got "+this.portalItem.type+", expected "+O),new r("sceneservice:portal-item-wrong-type",`Portal item needs to have type "${O}"`);await this._ensureLoadBeforeSave();const o={origin:"portal-item",url:this.portalItem.itemUrl&&s(this.portalItem.itemUrl),messages:[],portal:this.portalItem.portal||b.getDefault(),portalItem:this.portalItem,writtenProperties:[],blockedRelativeUrls:[],resources:{toAdd:[],toUpdate:[],toKeep:[],pendingOperations:[]}},i={layers:[this.write({},o)]};return await Promise.all(o.resources.pendingOperations??[]),await this._validateAgainstJSONSchema(i,o,t),this.portalItem.url=this.url,this.portalItem.title||(this.portalItem.title=this.title),this._updateTypeKeywords(this.portalItem,t,T.existingItem),await R(this.portalItem,i,this.resourceReferences,o,null),c(o),this.portalItem}async _validateAgainstJSONSchema(e,t,o){let i=t.messages?.filter((e=>"error"===e.type)).map((e=>new r(e.name,e.message,e.details)))??[];o?.validationOptions?.ignoreUnsupported&&(i=i.filter((e=>"layer:unsupported"!==e.name&&"symbol:unsupported"!==e.name&&"symbol-layer:unsupported"!==e.name&&"property:unsupported"!==e.name&&"url:unsupported"!==e.name&&"scenemodification:unsupported"!==e.name)));const s=o?.validationOptions,a=s?.enabled,n=x();if(a&&n){const t=(await n()).validate(e,o.portalItemLayerType);if(t.length>0){const e=`Layer item did not validate:\n${t.join("\n")}`;if(N.error(`_validateAgainstJSONSchema(): ${e}`),"throw"===s.failPolicy){const e=t.map((e=>new r("sceneservice:schema-validation",e))).concat(i);throw new r("sceneservice-validate:error","Failed to save layer item due to schema validation, see `details.errors`.",{combined:e})}}}if(i.length>0)throw new r("sceneservice:save","Failed to save SceneService due to unsupported or invalid content. See 'details.errors' for more detailed information",{errors:i})}};return e([a(g)],E.prototype,"id",void 0),e([a({type:m})],E.prototype,"spatialReference",void 0),e([n("spatialReference",["spatialReference","store.indexCRS","store.geographicCRS"])],E.prototype,"readSpatialReference",null),e([a({type:d})],E.prototype,"fullExtent",void 0),e([n("fullExtent",["fullExtent","store.extent","spatialReference","store.indexCRS","store.geographicCRS"])],E.prototype,"readFullExtent",null),e([a({readOnly:!0,type:u})],E.prototype,"heightModelInfo",void 0),e([a({type:Number,json:{name:"layerDefinition.minScale",write:!0,origins:{service:{read:{source:"minScale"},write:!1}}}})],E.prototype,"minScale",void 0),e([a({type:Number,json:{name:"layerDefinition.maxScale",write:!0,origins:{service:{read:{source:"maxScale"},write:!1}}}})],E.prototype,"maxScale",void 0),e([a({readOnly:!0})],E.prototype,"version",void 0),e([n("version",["store.version"])],E.prototype,"readVersion",null),e([a({type:String,json:{read:{source:"copyrightText"}}})],E.prototype,"copyright",void 0),e([a({type:String,json:{read:!1}})],E.prototype,"sublayerTitleMode",void 0),e([a({type:String})],E.prototype,"title",void 0),e([n("portal-item","title")],E.prototype,"readTitlePortalItem",null),e([n("service","title",["name"])],E.prototype,"readTitleService",null),e([a({type:Number,json:{origins:{service:{read:{source:"id"}},"portal-item":{write:{target:"id",isRequired:!0,ignoreOrigin:!0},read:!1}}}})],E.prototype,"layerId",void 0),e([a(w)],E.prototype,"url",null),e([p("url")],E.prototype,"writeUrl",null),e([a()],E.prototype,"parsedUrl",null),e([a({readOnly:!0})],E.prototype,"store",void 0),e([a({type:String,readOnly:!0,json:{read:{source:"store.rootNode"}}})],E.prototype,"rootNode",void 0),E=e([l(A)],E),E},U=-1e38;var T;!function(e){e[e.existingItem=0]="existingItem",e[e.newItem=1]="newItem"}(T||(T={}));const O="Scene Service",K={getTypeKeywords:()=>[],portalItemLayerType:"unknown",validationOptions:{enabled:!0,ignoreUnsupported:!1,failPolicy:"throw"}};var L;!function(e){e[e.SAVE=0]="SAVE",e[e.SAVE_AS=1]="SAVE_AS"}(L||(L={}));export{L as SaveOperationType,E as SceneService,O as sceneServiceItemType};
5
+ import{_ as e}from"../../chunks/tslib.es6.js";import t from"../../request.js";import r from"../../core/Error.js";import o from"../../core/Logger.js";import{debounce as i}from"../../core/promiseUtils.js";import{urlToObject as s}from"../../core/urlUtils.js";import{property as a}from"../../core/accessorSupport/decorators/property.js";import"../../core/accessorSupport/ensureType.js";import"../../core/arrayUtils.js";import"../../core/has.js";import{reader as n}from"../../core/accessorSupport/decorators/reader.js";import{subclass as l}from"../../core/accessorSupport/decorators/subclass.js";import{writer as p}from"../../core/accessorSupport/decorators/writer.js";import{updateOrigins as c}from"../../core/accessorSupport/originUtils.js";import d from"../../geometry/Extent.js";import u from"../../geometry/HeightModelInfo.js";import m from"../../geometry/SpatialReference.js";import{titleFromUrlAndName as h,parse as y,cleanTitle as f,sanitizeUrlWithLayerId as v,writeUrlWithLayerId as S}from"../support/arcgisLayerUrl.js";import{id as g,url as w}from"../support/commonProperties.js";import{fetchIndexInfo as I}from"../support/I3SIndexInfo.js";import{getLoader as x}from"../support/schemaValidatorLoader.js";import b from"../../portal/Portal.js";import j from"../../portal/PortalItem.js";import{validateSaveAPIKey as _}from"../../webdoc/saveAPIKeyUtils.js";import{saveResources as R,updateItemWithResources as A}from"../../webdoc/support/saveUtils.js";const N="esri.layers.mixins.SceneService",U=o.getLogger(N),E=o=>{let E=class extends o{constructor(){super(...arguments),this.spatialReference=null,this.fullExtent=null,this.heightModelInfo=null,this.minScale=0,this.maxScale=0,this.version={major:Number.NaN,minor:Number.NaN,versionString:""},this.copyright=null,this.sublayerTitleMode="item-title",this.title=null,this.layerId=null,this.indexInfo=null,this._debouncedSaveOperations=i((async(e,t,r)=>{switch(e){case P.SAVE:return this._save(t);case P.SAVE_AS:return this._saveAs(r,t)}}))}readSpatialReference(e,t){return this._readSpatialReference(t)}_readSpatialReference(e){if(null!=e.spatialReference)return m.fromJSON(e.spatialReference);{const t=e.store,r=t.indexCRS||t.geographicCRS,o=r&&parseInt(r.substring(r.lastIndexOf("/")+1,r.length),10);return null!=o?new m(o):null}}readFullExtent(e,t,r){if(null!=e&&"object"==typeof e){const o=null==e.spatialReference?{...e,spatialReference:this._readSpatialReference(t)}:e;return d.fromJSON(o,r)}const o=t.store,i=this._readSpatialReference(t);return null==i||null==o||null==o.extent||!Array.isArray(o.extent)||o.extent.some((e=>e<T))?null:new d({xmin:o.extent[0],ymin:o.extent[1],xmax:o.extent[2],ymax:o.extent[3],spatialReference:i})}parseVersionString(e){const t={major:Number.NaN,minor:Number.NaN,versionString:e},r=e.split(".");return r.length>=2&&(t.major=parseInt(r[0],10),t.minor=parseInt(r[1],10)),t}readVersion(e,t){const r=t.store,o=null!=r.version?r.version.toString():"";return this.parseVersionString(o)}readTitlePortalItem(e){return"item-title"!==this.sublayerTitleMode?void 0:e}readTitleService(e,t){const r=this.portalItem&&this.portalItem.title;if("item-title"===this.sublayerTitleMode)return h(this.url,t.name);let o=t.name;if(!o&&this.url){const e=y(this.url);null!=e&&(o=e.title)}return"item-title-and-service-name"===this.sublayerTitleMode&&r&&(o=r+" - "+o),f(o)}set url(e){const t=v({layer:this,url:e,nonStandardUrlAllowed:!1,logger:U});this._set("url",t.url),null!=t.layerId&&this._set("layerId",t.layerId)}writeUrl(e,t,r,o){S(this,e,"layers",t,o)}get parsedUrl(){const e=this._get("url"),t=s(e);return null!=this.layerId&&(t.path=`${t.path}/layers/${this.layerId}`),t}async _fetchIndexAndUpdateExtent(e,t){this.indexInfo=I(this.parsedUrl.path,this.rootNode,e,this.apiKey,U,t),null==this.fullExtent||this.fullExtent.hasZ||this._updateExtent(await this.indexInfo)}_updateExtent(e){if("page"===e?.type){const t=e.rootIndex%e.pageSize,o=e.rootPage?.nodes?.[t];if(null==o||null==o.obb||null==o.obb.center||null==o.obb.halfSize)throw new r("sceneservice:invalid-node-page","Invalid node page.");if(o.obb.center[0]<T||null==this.fullExtent||this.fullExtent.hasZ)return;const i=o.obb.halfSize,s=o.obb.center[2],a=Math.sqrt(i[0]*i[0]+i[1]*i[1]+i[2]*i[2]);this.fullExtent.zmin=s-a,this.fullExtent.zmax=s+a}else if("node"===e?.type){const t=e.rootNode?.mbs;if(!Array.isArray(t)||4!==t.length||t[0]<T)return;const r=t[2],o=t[3],{fullExtent:i}=this;i&&(i.zmin=r-o,i.zmax=r+o)}}async _fetchService(e){if(null==this.url)throw new r("sceneservice:url-not-set","Scene service can not be loaded without valid portal item or url");if(null==this.layerId&&/SceneServer\/*$/i.test(this.url)){const t=await this._fetchFirstLayerId(e);null!=t&&(this.layerId=t)}return this._fetchServiceLayer(e)}async _fetchFirstLayerId(e){const r=await t(this.url,{query:{f:"json",token:this.apiKey},responseType:"json",signal:e});if(r.data&&Array.isArray(r.data.layers)&&r.data.layers.length>0)return r.data.layers[0].id}async _fetchServiceLayer(e){const r=await t(this.parsedUrl?.path??"",{query:{f:"json",token:this.apiKey},responseType:"json",signal:e});r.ssl&&(this.url=this.url.replace(/^http:/i,"https:"));let o=!1;if(r.data.layerType&&"Voxel"===r.data.layerType&&(o=!0),o)return this._fetchVoxelServiceLayer();const i=r.data;this.read(i,this._getServiceContext()),this.validateLayer(i)}async _fetchVoxelServiceLayer(e){const r=(await t(this.parsedUrl?.path+"/layer",{query:{f:"json",token:this.apiKey},responseType:"json",signal:e})).data;this.read(r,this._getServiceContext()),this.validateLayer(r)}_getServiceContext(){return{origin:"service",portalItem:this.portalItem,portal:this.portalItem?.portal,url:this.parsedUrl}}async _ensureLoadBeforeSave(){await this.load(),"beforeSave"in this&&"function"==typeof this.beforeSave&&await this.beforeSave()}validateLayer(e){}_updateTypeKeywords(e,t,r){e.typeKeywords||(e.typeKeywords=[]);const o=t.getTypeKeywords();for(const i of o)e.typeKeywords.push(i);e.typeKeywords&&(e.typeKeywords=e.typeKeywords.filter(((e,t,r)=>r.indexOf(e)===t)),r===O.newItem&&(e.typeKeywords=e.typeKeywords.filter((e=>"Hosted Service"!==e))))}async _saveAs(e,t){const o={...L,...t};let i=j.from(e);if(!i)throw new r("sceneservice:portal-item-required","_saveAs() requires a portal item to save to");_(i),i.id&&(i=i.clone(),i.id=null);const s=i.portal||b.getDefault();await this._ensureLoadBeforeSave(),i.type=K,i.portal=s;const a={origin:"portal-item",url:null,messages:[],portal:s,portalItem:i,writtenProperties:[],blockedRelativeUrls:[],resources:{toAdd:[],toUpdate:[],toKeep:[],pendingOperations:[]}},n={layers:[this.write({},a)]};return await Promise.all(a.resources.pendingOperations??[]),await this._validateAgainstJSONSchema(n,a,o),i.url=this.url,i.title||(i.title=this.title),this._updateTypeKeywords(i,o,O.newItem),await s.signIn(),await(s.user?.addItem({item:i,folder:o&&o.folder,data:n})),await R(this.resourceReferences,a,null),this.portalItem=i,c(a),a.portalItem=i,i}async _save(e){const t={...L,...e};if(!this.portalItem)throw new r("sceneservice:portal-item-not-set","Portal item to save to has not been set on this SceneService");if(_(this.portalItem),this.portalItem.type!==K)throw new r("sceneservice:portal-item-wrong-type",`Portal item needs to have type "${K}"`);await this._ensureLoadBeforeSave();const o={origin:"portal-item",url:this.portalItem.itemUrl&&s(this.portalItem.itemUrl),messages:[],portal:this.portalItem.portal||b.getDefault(),portalItem:this.portalItem,writtenProperties:[],blockedRelativeUrls:[],resources:{toAdd:[],toUpdate:[],toKeep:[],pendingOperations:[]}},i={layers:[this.write({},o)]};return await Promise.all(o.resources.pendingOperations??[]),await this._validateAgainstJSONSchema(i,o,t),this.portalItem.url=this.url,this.portalItem.title||(this.portalItem.title=this.title),this._updateTypeKeywords(this.portalItem,t,O.existingItem),await A(this.portalItem,i,this.resourceReferences,o,null),c(o),this.portalItem}async _validateAgainstJSONSchema(e,t,o){let i=t.messages?.filter((e=>"error"===e.type)).map((e=>new r(e.name,e.message,e.details)))??[];o?.validationOptions?.ignoreUnsupported&&(i=i.filter((e=>"layer:unsupported"!==e.name&&"symbol:unsupported"!==e.name&&"symbol-layer:unsupported"!==e.name&&"property:unsupported"!==e.name&&"url:unsupported"!==e.name&&"scenemodification:unsupported"!==e.name)));const s=o?.validationOptions,a=s?.enabled,n=x();if(a&&n){const t=(await n()).validate(e,o.portalItemLayerType);if(t.length>0){const e=`Layer item did not validate:\n${t.join("\n")}`;if(U.error(`_validateAgainstJSONSchema(): ${e}`),"throw"===s.failPolicy){const e=t.map((e=>new r("sceneservice:schema-validation",e))).concat(i);throw new r("sceneservice-validate:error","Failed to save layer item due to schema validation, see `details.errors`.",{combined:e})}}}if(i.length>0)throw new r("sceneservice:save","Failed to save SceneService due to unsupported or invalid content. See 'details.errors' for more detailed information",{errors:i})}};return e([a(g)],E.prototype,"id",void 0),e([a({type:m})],E.prototype,"spatialReference",void 0),e([n("spatialReference",["spatialReference","store.indexCRS","store.geographicCRS"])],E.prototype,"readSpatialReference",null),e([a({type:d})],E.prototype,"fullExtent",void 0),e([n("fullExtent",["fullExtent","store.extent","spatialReference","store.indexCRS","store.geographicCRS"])],E.prototype,"readFullExtent",null),e([a({readOnly:!0,type:u})],E.prototype,"heightModelInfo",void 0),e([a({type:Number,json:{name:"layerDefinition.minScale",write:!0,origins:{service:{read:{source:"minScale"},write:!1}}}})],E.prototype,"minScale",void 0),e([a({type:Number,json:{name:"layerDefinition.maxScale",write:!0,origins:{service:{read:{source:"maxScale"},write:!1}}}})],E.prototype,"maxScale",void 0),e([a({readOnly:!0})],E.prototype,"version",void 0),e([n("version",["store.version"])],E.prototype,"readVersion",null),e([a({type:String,json:{read:{source:"copyrightText"}}})],E.prototype,"copyright",void 0),e([a({type:String,json:{read:!1}})],E.prototype,"sublayerTitleMode",void 0),e([a({type:String})],E.prototype,"title",void 0),e([n("portal-item","title")],E.prototype,"readTitlePortalItem",null),e([n("service","title",["name"])],E.prototype,"readTitleService",null),e([a({type:Number,json:{origins:{service:{read:{source:"id"}},"portal-item":{write:{target:"id",isRequired:!0,ignoreOrigin:!0},read:!1}}}})],E.prototype,"layerId",void 0),e([a(w)],E.prototype,"url",null),e([p("url")],E.prototype,"writeUrl",null),e([a()],E.prototype,"parsedUrl",null),e([a({readOnly:!0})],E.prototype,"store",void 0),e([a({type:String,readOnly:!0,json:{read:{source:"store.rootNode"}}})],E.prototype,"rootNode",void 0),E=e([l(N)],E),E},T=-1e38;var O;!function(e){e[e.existingItem=0]="existingItem",e[e.newItem=1]="newItem"}(O||(O={}));const K="Scene Service",L={getTypeKeywords:()=>[],portalItemLayerType:"unknown",validationOptions:{enabled:!0,ignoreUnsupported:!1,failPolicy:"throw"}};var P;!function(e){e[e.SAVE=0]="SAVE",e[e.SAVE_AS=1]="SAVE_AS"}(P||(P={}));export{P as SaveOperationType,E as SceneService,K as sceneServiceItemType};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.28/esri/copyright.txt for details.
4
4
  */
5
- import"../../geometry.js";import e from"../../request.js";import t from"../../core/Error.js";import{cache as r,find as n}from"../../core/iteratorUtils.js";import{isHTTPSProtocol as a,hasSameOrigin as o,toHTTPS as s}from"../../core/urlUtils.js";import{initializeProjection as i,project as p}from"../../geometry/projection.js";import{WGS84 as u,equals as l}from"../../geometry/support/spatialReferenceUtils.js";import{featureGeometryTypeKebabDictionary as c}from"../../geometry/support/typeUtils.js";import{getGeometryType as m}from"../graphics/sources/geojson/geojson.js";import{parseDate as y}from"./dateUtils.js";import{visitXML as f,iterateXML as d}from"./xmlUtils.js";import g from"../support/Field.js";import w from"../../geometry/SpatialReference.js";import b from"../../geometry/Extent.js";const h="xlink:href",T="2.0.0",F="__esri_wfs_id__",S="wfs-layer:getWFSLayerTypeInfo-error",x="wfs-layer:empty-service",C="wfs-layer:feature-type-not-found",E="wfs-layer:geojson-not-supported",R="wfs-layer:kvp-encoding-not-supported",P="wfs-layer:malformed-json",N="wfs-layer:unknown-geometry-type",j="wfs-layer:unknown-field-type",k="wfs-layer:unsupported-spatial-reference",A="wfs-layer:unsupported-wfs-version";async function G(t,r){const n=v((await e(t,{responseType:"text",query:{SERVICE:"WFS",REQUEST:"GetCapabilities",VERSION:T,...r?.customParameters},signal:r?.signal})).data);return D(t,n),n}function v(e){const t=Z(e);te(t),re(t);const n=t.firstElementChild,a=r(O(n));return{operations:I(n),get featureTypes(){return Array.from(a())},readFeatureTypes:a}}const U=new Set(["json","application/json","geojson","application/json; subtype=geojson"]);function I(e){let r=!1;const n={GetCapabilities:{url:""},DescribeFeatureType:{url:""},GetFeature:{url:"",outputFormat:null,supportsPagination:!1}};if(f(e,{OperationsMetadata:{Operation:e=>{switch(e.getAttribute("name")){case"GetCapabilities":return{DCP:{HTTP:{Get:e=>{n.GetCapabilities.url=e.getAttribute(h)}}}};case"DescribeFeatureType":return{DCP:{HTTP:{Get:e=>{n.DescribeFeatureType.url=e.getAttribute(h)}}}};case"GetFeature":return{DCP:{HTTP:{Get:e=>{n.GetFeature.url=e.getAttribute(h)}}},Parameter:e=>{if("outputFormat"===e.getAttribute("name"))return{AllowedValues:{Value:e=>{const t=e.textContent;t&&U.has(t.toLowerCase())&&(n.GetFeature.outputFormat=t)}}}}}}},Constraint:e=>{switch(e.getAttribute("name")){case"KVPEncoding":return{DefaultValue:e=>{r="true"===e.textContent.toLowerCase()}};case"ImplementsResultPaging":return{DefaultValue:e=>{n.GetFeature.supportsPagination="true"===e.textContent.toLowerCase()}}}}}}),!r)throw new t(R,"WFS service doesn't support key/value pair (KVP) encoding");if(null==n.GetFeature.outputFormat)throw new t(E,"WFS service doesn't support GeoJSON output format");return n}function D(e,t){a(e)&&(o(e,t.operations.DescribeFeatureType.url,!0)&&(t.operations.DescribeFeatureType.url=s(t.operations.DescribeFeatureType.url)),o(e,t.operations.GetFeature.url,!0)&&(t.operations.GetFeature.url=s(t.operations.GetFeature.url)))}function L(e){const t=parseInt(e.textContent?.match(/(?<wkid>\d+$)/i)?.groups?.wkid??"",10);if(!Number.isNaN(t))return t}function O(e){return d(e,{FeatureTypeList:{FeatureType:e=>{const t={typeName:"undefined:undefined",name:"",title:"",description:"",extent:null,namespacePrefix:"",namespaceUri:"",defaultSpatialReference:4326,supportedSpatialReferences:[]},r=new Set;return f(e,{Name:e=>{const{name:r,prefix:n}=ee(e.textContent);t.typeName=`${n}:${r}`,t.name=r,t.namespacePrefix=n,t.namespaceUri=e.lookupNamespaceURI(n)},Abstract:e=>{t.description=e.textContent},Title:e=>{t.title=e.textContent},WGS84BoundingBox:e=>{t.extent=$(e)},DefaultCRS:e=>{const n=L(e);n&&(t.defaultSpatialReference=n,r.add(n))},OtherCRS:e=>{const t=L(e);t&&r.add(t)}}),t.title||(t.title=t.name),r.add(4326),t.supportedSpatialReferences.push(...r),t}}})}function $(e){let t,r,n,a;for(const o of e.children)switch(o.localName){case"LowerCorner":[t,r]=o.textContent.split(" ").map((e=>Number.parseFloat(e)));break;case"UpperCorner":[n,a]=o.textContent.split(" ").map((e=>Number.parseFloat(e)))}return{xmin:t,ymin:r,xmax:n,ymax:a,spatialReference:u}}function M(e,t,r){return n(e,(e=>r?e.name===t&&e.namespaceUri===r:e.typeName===t||e.name===t))}async function V(e,t,r,n={}){const{featureType:a,extent:o}=await W(e,t,r,n),{fields:s,geometryType:i,swapXY:p,objectIdField:u,geometryField:l}=await X(e,a,n);return{url:e.operations.GetCapabilities.url,name:a.name,namespaceUri:a.namespaceUri,fields:s,geometryField:l,geometryType:i,objectIdField:u,spatialReference:n.spatialReference??new w({wkid:a.defaultSpatialReference}),extent:o,swapXY:p,wfsCapabilities:e,customParameters:n.customParameters}}async function W(e,r,n,a={}){const o=e.readFeatureTypes(),s=r?M(o,r,n):o.next().value,{spatialReference:u=new w({wkid:s?.defaultSpatialReference})}=a;if(null==s)throw r?new t(C,`The type '${r}' could not be found in the service`):new t(x,"The service is empty");let c=new b({...s.extent,spatialReference:w.WGS84});if(!l(c.spatialReference,u))try{await i(c.spatialReference,u,void 0,a),c=p(c,u)}catch{throw new t(k,"Projection not supported")}return{extent:c,spatialReference:u,featureType:s}}async function X(e,r,n={}){const{typeName:a,defaultSpatialReference:o}=r,[s,i]=await Promise.allSettled([z(e.operations.DescribeFeatureType.url,a,n),q(e,a,o,n)]),p=e=>new t(S,`An error occurred while getting info about the feature type '${a}'`,{error:e});if("rejected"===s.status)throw p(s.reason);if("rejected"===i.status)throw p(i.reason);const{fields:u,errors:l}=s.value??{},c=s.value?.geometryType||i.value?.geometryType,m=i.value?.swapXY??!1;if(null==c)throw new t(N,`The geometry type could not be determined for type '${a}`,{typeName:a,geometryType:c,fields:u,errors:l});return{...Y(u??[]),geometryType:c,swapXY:m}}function Y(e){const t=e.find((e=>"geometry"===e.type));let r=e.find((e=>"oid"===e.type));return e=e.filter((e=>"geometry"!==e.type)),r||(r=new g({name:F,type:"oid",alias:F}),e.unshift(r)),{geometryField:t?.name??null,objectIdField:r.name,fields:e}}async function q(t,r,n,a={}){let o,s=!1;const[i,p]=await Promise.all([H(t.operations.GetFeature.url,r,n,t.operations.GetFeature.outputFormat,{...a,count:1}),e(t.operations.GetFeature.url,{responseType:"text",query:B(r,n,void 0,{...a,count:1}),signal:a?.signal})]),u="FeatureCollection"===i.type&&i.features[0]?.geometry;if(u){let e;switch(o=c.fromJSON(m(u.type)),u.type){case"Point":e=u.coordinates;break;case"LineString":case"MultiPoint":e=u.coordinates[0];break;case"MultiLineString":case"Polygon":e=u.coordinates[0][0];break;case"MultiPolygon":e=u.coordinates[0][0][0]}const t=/<[^>]*pos[^>]*> *(-?\d+(?:\.\d+)?) (-?\d+(?:\.\d+)?)/.exec(p.data);if(t){const r=e[0].toFixed(3),n=e[1].toFixed(3),a=parseFloat(t[1]).toFixed(3);r===parseFloat(t[2]).toFixed(3)&&n===a&&(s=!0)}}return{geometryType:o,swapXY:s}}async function z(t,r,n){return _(r,(await e(t,{responseType:"text",query:{SERVICE:"WFS",REQUEST:"DescribeFeatureType",VERSION:T,TYPENAME:r,...n?.customParameters},signal:n?.signal})).data)}function _(e,r){const{name:a}=ee(e),o=Z(r);re(o);const s=n(d(o.firstElementChild,{element:e=>({name:e.getAttribute("name"),typeName:ee(e.getAttribute("type")).name})}),(({name:e})=>e===a));if(null!=s){const e=n(d(o.firstElementChild,{complexType:e=>e}),(e=>e.getAttribute("name")===s.typeName));if(null!=e)return Q(e)}throw new t(C,`Type '${e}' not found in document`,{document:(new XMLSerializer).serializeToString(o)})}const J=new Set(["objectid","fid"]);function Q(e){const r=[],n=[];let a;const o=d(e,{complexContent:{extension:{sequence:{element:e=>e}}}});for(const s of o){const o=s.getAttribute("name");if(!o)continue;let i,p;if(s.hasAttribute("type")?i=ee(s.getAttribute("type")).name:f(s,{simpleType:{restriction:e=>(i=ee(e.getAttribute("base")).name,{maxLength:e=>{p=+e.getAttribute("value")}})}}),!i)continue;const u="true"===s.getAttribute("nillable");let l=!1;switch(i.toLowerCase()){case"integer":case"nonpositiveinteger":case"negativeinteger":case"long":case"int":case"short":case"byte":case"nonnegativeinteger":case"unsignedlong":case"unsignedint":case"unsignedshort":case"unsignedbyte":case"positiveinteger":n.push(new g({name:o,alias:o,type:"integer",nullable:u}));break;case"float":case"double":case"decimal":n.push(new g({name:o,alias:o,type:"double",nullable:u}));break;case"boolean":case"string":case"gyearmonth":case"gyear":case"gmonthday":case"gday":case"gmonth":case"anyuri":case"qname":case"notation":case"normalizedstring":case"token":case"language":case"idrefs":case"entities":case"nmtoken":case"nmtokens":case"name":case"ncname":case"id":case"idref":case"entity":case"duration":case"time":n.push(new g({name:o,alias:o,type:"string",nullable:u,length:p??255}));break;case"datetime":case"date":n.push(new g({name:o,alias:o,type:"date",nullable:u,length:p??36}));break;case"pointpropertytype":a="point",l=!0;break;case"multipointpropertytype":a="multipoint",l=!0;break;case"curvepropertytype":case"multicurvepropertytype":case"multilinestringpropertytype":a="polyline",l=!0;break;case"surfacepropertytype":case"multisurfacepropertytype":case"multipolygonpropertytype":a="polygon",l=!0;break;case"geometrypropertytype":case"multigeometrypropertytype":l=!0,r.push(new t(N,`geometry type '${i}' is not supported`,{type:(new XMLSerializer).serializeToString(e)}));break;default:r.push(new t(j,`Unknown field type '${i}'`,{type:(new XMLSerializer).serializeToString(e)}))}l&&n.push(new g({name:o,alias:o,type:"geometry",nullable:u}))}for(const t of n)if("integer"===t.type&&!t.nullable&&J.has(t.name.toLowerCase())){t.type="oid";break}return{geometryType:a,fields:n,errors:r}}async function H(r,n,a,o,s){let{data:i}=await e(r,{responseType:"text",query:B(n,a,o,s),signal:s?.signal});i=i.replaceAll(/": +(-?\d+),(\d+)(,)?/g,'": $1.$2$3');try{if(s?.dateFields?.length){const e=new Set(s.dateFields);return JSON.parse(i,((t,r)=>e.has(t)?y(r):r))}return JSON.parse(i)}catch(p){throw new t(P,"Error while parsing the response",{response:i,error:p})}}function B(e,t,r,n){const a="number"==typeof t?t:t.wkid;return{SERVICE:"WFS",REQUEST:"GetFeature",VERSION:T,TYPENAMES:e,OUTPUTFORMAT:r,SRSNAME:"EPSG:"+a,STARTINDEX:n?.startIndex,COUNT:n?.count,...n?.customParameters}}async function K(t,r,n){const a=Z((await e(t,{responseType:"text",query:{SERVICE:"WFS",REQUEST:"GetFeature",VERSION:T,TYPENAMES:r,RESULTTYPE:"hits",...n?.customParameters},signal:n?.signal})).data);re(a);const o=Number.parseFloat(a.firstElementChild.getAttribute("numberMatched"));return Number.isNaN(o)?0:o}function Z(e){return(new DOMParser).parseFromString(e.trim(),"text/xml")}function ee(e){const[t,r]=e.split(":");return{prefix:r?t:"",name:r??t}}function te(e){const r=e.firstElementChild?.getAttribute("version");if(r&&r!==T)throw new t(A,`Unsupported WFS version ${r}. Supported version: ${T}`)}function re(e){let r="",n="";if(f(e.firstElementChild,{Exception:e=>(r=e.getAttribute("exceptionCode"),{ExceptionText:e=>{n=e.textContent}})}),r)throw new t(`wfs-layer:${r}`,n)}export{z as describeFeatureType,M as findFeatureType,G as getCapabilities,H as getFeature,K as getFeatureCount,W as getFeatureTypeInfo,V as getWFSLayerInfo,_ as parseDescribeFeatureTypeResponse,v as parseGetCapabilitiesResponse,Y as prepareWFSLayerFields,F as wfsOidFieldName};
5
+ import"../../geometry.js";import e from"../../request.js";import t from"../../core/Error.js";import{cache as r,find as n}from"../../core/iteratorUtils.js";import{isHTTPSProtocol as a,hasSameOrigin as o,toHTTPS as s}from"../../core/urlUtils.js";import{initializeProjection as i,project as p}from"../../geometry/projection.js";import{WGS84 as u,equals as l}from"../../geometry/support/spatialReferenceUtils.js";import{featureGeometryTypeKebabDictionary as c}from"../../geometry/support/typeUtils.js";import{getGeometryType as m}from"../graphics/sources/geojson/geojson.js";import{visitXML as y,iterateXML as f}from"./xmlUtils.js";import{isArcGISUrl as d}from"../support/arcgisLayerUrl.js";import g from"../support/Field.js";import w from"../../geometry/SpatialReference.js";import b from"../../geometry/Extent.js";const T="xlink:href",F="2.0.0",h="__esri_wfs_id__",S="wfs-layer:getWFSLayerTypeInfo-error",x="wfs-layer:empty-service",C="wfs-layer:feature-type-not-found",E="wfs-layer:geojson-not-supported",R="wfs-layer:kvp-encoding-not-supported",k="wfs-layer:malformed-json",P="wfs-layer:unknown-geometry-type",N="wfs-layer:unknown-field-type",j="wfs-layer:unsupported-spatial-reference",A="wfs-layer:unsupported-wfs-version";async function G(t,r){const n=v((await e(t,{responseType:"text",query:{SERVICE:"WFS",REQUEST:"GetCapabilities",VERSION:F,...r?.customParameters},signal:r?.signal})).data);return D(t,n),n}function v(e){const t=Z(e);te(t),re(t);const n=t.firstElementChild,a=r($(n));return{operations:I(n),get featureTypes(){return Array.from(a())},readFeatureTypes:a}}const U=new Set(["json","application/json","geojson","application/json; subtype=geojson"]);function I(e){let r=!1;const n={GetCapabilities:{url:""},DescribeFeatureType:{url:""},GetFeature:{url:"",outputFormat:null,supportsPagination:!1}};if(y(e,{OperationsMetadata:{Operation:e=>{switch(e.getAttribute("name")){case"GetCapabilities":return{DCP:{HTTP:{Get:e=>{n.GetCapabilities.url=e.getAttribute(T)}}}};case"DescribeFeatureType":return{DCP:{HTTP:{Get:e=>{n.DescribeFeatureType.url=e.getAttribute(T)}}}};case"GetFeature":return{DCP:{HTTP:{Get:e=>{n.GetFeature.url=e.getAttribute(T)}}},Parameter:e=>{if("outputFormat"===e.getAttribute("name"))return{AllowedValues:{Value:e=>{const t=e.textContent;t&&U.has(t.toLowerCase())&&(n.GetFeature.outputFormat=t)}}}}}}},Constraint:e=>{switch(e.getAttribute("name")){case"KVPEncoding":return{DefaultValue:e=>{r="true"===e.textContent.toLowerCase()}};case"ImplementsResultPaging":return{DefaultValue:e=>{n.GetFeature.supportsPagination="true"===e.textContent.toLowerCase()}}}}}}),!r)throw new t(R,"WFS service doesn't support key/value pair (KVP) encoding");if(null==n.GetFeature.outputFormat)throw new t(E,"WFS service doesn't support GeoJSON output format");return n}function D(e,t){a(e)&&(o(e,t.operations.DescribeFeatureType.url,!0)&&(t.operations.DescribeFeatureType.url=s(t.operations.DescribeFeatureType.url)),o(e,t.operations.GetFeature.url,!0)&&(t.operations.GetFeature.url=s(t.operations.GetFeature.url)))}function L(e){const t=parseInt(e.textContent?.match(/(?<wkid>\d+$)/i)?.groups?.wkid??"",10);if(!Number.isNaN(t))return t}function $(e){return f(e,{FeatureTypeList:{FeatureType:e=>{const t={typeName:"undefined:undefined",name:"",title:"",description:"",extent:null,namespacePrefix:"",namespaceUri:"",defaultSpatialReference:4326,supportedSpatialReferences:[]},r=new Set;return y(e,{Name:e=>{const{name:r,prefix:n}=ee(e.textContent);t.typeName=`${n}:${r}`,t.name=r,t.namespacePrefix=n,t.namespaceUri=e.lookupNamespaceURI(n)},Abstract:e=>{t.description=e.textContent},Title:e=>{t.title=e.textContent},WGS84BoundingBox:e=>{t.extent=M(e)},DefaultCRS:e=>{const n=L(e);n&&(t.defaultSpatialReference=n,r.add(n))},OtherCRS:e=>{const t=L(e);t&&r.add(t)}}),t.title||(t.title=t.name),r.add(4326),t.supportedSpatialReferences.push(...r),t}}})}function M(e){let t,r,n,a;for(const o of e.children)switch(o.localName){case"LowerCorner":[t,r]=o.textContent.split(" ").map((e=>Number.parseFloat(e)));break;case"UpperCorner":[n,a]=o.textContent.split(" ").map((e=>Number.parseFloat(e)))}return{xmin:t,ymin:r,xmax:n,ymax:a,spatialReference:u}}function O(e,t,r){return n(e,(e=>r?e.name===t&&e.namespaceUri===r:e.typeName===t||e.name===t))}async function V(e,t,r,n={}){const{featureType:a,extent:o}=await W(e,t,r,n),{spatialReference:s}=ne(e.operations.GetFeature.url,a,n.spatialReference),{fields:i,geometryType:p,swapXY:u,objectIdField:l,geometryField:c}=await X(e,a,s,n);return{url:e.operations.GetCapabilities.url,name:a.name,namespaceUri:a.namespaceUri,fields:i,geometryField:c,geometryType:p,objectIdField:l,spatialReference:n.spatialReference??new w({wkid:a.defaultSpatialReference}),extent:o,swapXY:u,wfsCapabilities:e,customParameters:n.customParameters}}async function W(e,r,n,a={}){const o=e.readFeatureTypes(),s=r?O(o,r,n):o.next().value,{spatialReference:u=new w({wkid:s?.defaultSpatialReference})}=a;if(null==s)throw r?new t(C,`The type '${r}' could not be found in the service`):new t(x,"The service is empty");let c=new b({...s.extent,spatialReference:w.WGS84});if(!l(c.spatialReference,u))try{await i(c.spatialReference,u,void 0,a),c=p(c,u)}catch{throw new t(j,"Projection not supported")}return{extent:c,spatialReference:u,featureType:s}}async function X(e,r,n,a={}){const{typeName:o}=r,[s,i]=await Promise.allSettled([z(e.operations.DescribeFeatureType.url,o,a),q(e,o,n,a)]),p=e=>new t(S,`An error occurred while getting info about the feature type '${o}'`,{error:e});if("rejected"===s.status)throw p(s.reason);if("rejected"===i.status)throw p(i.reason);const{fields:u,errors:l}=s.value??{},c=s.value?.geometryType||i.value?.geometryType,m=i.value?.swapXY??!1;if(null==c)throw new t(P,`The geometry type could not be determined for type '${o}`,{typeName:o,geometryType:c,fields:u,errors:l});return{...Y(u??[]),geometryType:c,swapXY:m}}function Y(e){const t=e.find((e=>"geometry"===e.type));let r=e.find((e=>"oid"===e.type));return e=e.filter((e=>"geometry"!==e.type)),r||(r=new g({name:h,type:"oid",alias:h}),e.unshift(r)),{geometryField:t?.name??null,objectIdField:r.name,fields:e}}async function q(t,r,n,a={}){let o,s=!1;const[i,p]=await Promise.all([J(t.operations.GetFeature.url,r,n,t.operations.GetFeature.outputFormat,{...a,count:1}),e(t.operations.GetFeature.url,{responseType:"text",query:B(r,n,void 0,{...a,count:1}),signal:a?.signal})]),u="FeatureCollection"===i.type&&i.features[0]?.geometry;if(u){let e;switch(o=c.fromJSON(m(u.type)),u.type){case"Point":e=u.coordinates;break;case"LineString":case"MultiPoint":e=u.coordinates[0];break;case"MultiLineString":case"Polygon":e=u.coordinates[0][0];break;case"MultiPolygon":e=u.coordinates[0][0][0]}const t=/<[^>]*pos[^>]*> *(-?\d+(?:\.\d+)?) (-?\d+(?:\.\d+)?)/.exec(p.data);if(t){const r=e[0].toFixed(3),n=e[1].toFixed(3),a=parseFloat(t[1]).toFixed(3);r===parseFloat(t[2]).toFixed(3)&&n===a&&(s=!0)}}return{geometryType:o,swapXY:s}}async function z(t,r,n){return _(r,(await e(t,{responseType:"text",query:{SERVICE:"WFS",REQUEST:"DescribeFeatureType",VERSION:F,TYPENAME:r,...n?.customParameters},signal:n?.signal})).data)}function _(e,r){const{name:a}=ee(e),o=Z(r);re(o);const s=n(f(o.firstElementChild,{element:e=>({name:e.getAttribute("name"),typeName:ee(e.getAttribute("type")).name})}),(({name:e})=>e===a));if(null!=s){const e=n(f(o.firstElementChild,{complexType:e=>e}),(e=>e.getAttribute("name")===s.typeName));if(null!=e)return H(e)}throw new t(C,`Type '${e}' not found in document`,{document:(new XMLSerializer).serializeToString(o)})}const Q=new Set(["objectid","fid"]);function H(e){const r=[],n=[];let a;const o=f(e,{complexContent:{extension:{sequence:{element:e=>e}}}});for(const s of o){const o=s.getAttribute("name");if(!o)continue;let i,p;if(s.hasAttribute("type")?i=ee(s.getAttribute("type")).name:y(s,{simpleType:{restriction:e=>(i=ee(e.getAttribute("base")).name,{maxLength:e=>{p=+e.getAttribute("value")}})}}),!i)continue;const u="true"===s.getAttribute("nillable");let l=!1;switch(i.toLowerCase()){case"integer":case"nonpositiveinteger":case"negativeinteger":case"long":case"int":case"short":case"byte":case"nonnegativeinteger":case"unsignedlong":case"unsignedint":case"unsignedshort":case"unsignedbyte":case"positiveinteger":n.push(new g({name:o,alias:o,type:"integer",nullable:u}));break;case"float":case"double":case"decimal":n.push(new g({name:o,alias:o,type:"double",nullable:u}));break;case"boolean":case"string":case"gyearmonth":case"gyear":case"gmonthday":case"gday":case"gmonth":case"anyuri":case"qname":case"notation":case"normalizedstring":case"token":case"language":case"idrefs":case"entities":case"nmtoken":case"nmtokens":case"name":case"ncname":case"id":case"idref":case"entity":case"duration":case"time":n.push(new g({name:o,alias:o,type:"string",nullable:u,length:p??255}));break;case"datetime":case"date":n.push(new g({name:o,alias:o,type:"date",nullable:u,length:p??36}));break;case"pointpropertytype":a="point",l=!0;break;case"multipointpropertytype":a="multipoint",l=!0;break;case"curvepropertytype":case"multicurvepropertytype":case"multilinestringpropertytype":a="polyline",l=!0;break;case"surfacepropertytype":case"multisurfacepropertytype":case"multipolygonpropertytype":a="polygon",l=!0;break;case"geometrypropertytype":case"multigeometrypropertytype":l=!0,r.push(new t(P,`geometry type '${i}' is not supported`,{type:(new XMLSerializer).serializeToString(e)}));break;default:r.push(new t(N,`Unknown field type '${i}'`,{type:(new XMLSerializer).serializeToString(e)}))}l&&n.push(new g({name:o,alias:o,type:"geometry",nullable:u}))}for(const t of n)if("integer"===t.type&&!t.nullable&&Q.has(t.name.toLowerCase())){t.type="oid";break}return{geometryType:a,fields:n,errors:r}}async function J(r,n,a,o,s){let{data:i}=await e(r,{responseType:"text",query:B(n,a,o,s),signal:s?.signal});i=i.replaceAll(/": +(-?\d+),(\d+)(,)?/g,'": $1.$2$3');try{return JSON.parse(i)}catch(p){throw new t(k,"Error while parsing the response",{response:i,error:p})}}function B(e,t,r,n){const a="number"==typeof t?t:t.wkid;return{SERVICE:"WFS",REQUEST:"GetFeature",VERSION:F,TYPENAMES:e,OUTPUTFORMAT:r,SRSNAME:"EPSG:"+a,STARTINDEX:n?.startIndex,COUNT:n?.count,...n?.customParameters}}async function K(t,r,n){const a=Z((await e(t,{responseType:"text",query:{SERVICE:"WFS",REQUEST:"GetFeature",VERSION:F,TYPENAMES:r,RESULTTYPE:"hits",...n?.customParameters},signal:n?.signal})).data);re(a);const o=Number.parseFloat(a.firstElementChild.getAttribute("numberMatched"));return Number.isNaN(o)?0:o}function Z(e){return(new DOMParser).parseFromString(e.trim(),"text/xml")}function ee(e){const[t,r]=e.split(":");return{prefix:r?t:"",name:r??t}}function te(e){const r=e.firstElementChild?.getAttribute("version");if(r&&r!==F)throw new t(A,`Unsupported WFS version ${r}. Supported version: ${F}`)}function re(e){let r="",n="";if(y(e.firstElementChild,{Exception:e=>(r=e.getAttribute("exceptionCode"),{ExceptionText:e=>{n=e.textContent}})}),r)throw new t(`wfs-layer:${r}`,n)}function ne(e,t,r){const n={wkid:t.defaultSpatialReference},a=null!=r?.wkid?{wkid:r.wkid}:n;return{spatialReference:a,getFeatureSpatialReference:d(e)||a.wkid&&t.supportedSpatialReferences.includes(a.wkid)?{wkid:a.wkid}:{wkid:t.defaultSpatialReference}}}export{z as describeFeatureType,O as findFeatureType,G as getCapabilities,J as getFeature,K as getFeatureCount,W as getFeatureTypeInfo,ne as getGetFeatureSpatialReference,V as getWFSLayerInfo,_ as parseDescribeFeatureTypeResponse,v as parseGetCapabilitiesResponse,Y as prepareWFSLayerFields,h as wfsOidFieldName};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.28/esri/copyright.txt for details.
4
4
  */
5
- import e from"../../core/Error.js";import{updateOrigins as t}from"../../core/accessorSupport/originUtils.js";import r from"../../portal/Portal.js";import o from"../../portal/PortalItem.js";import{createForItemWrite as a}from"../../portal/support/jsonContext.js";import{addTypeKeyword as i,TypeKeyword as n}from"../../portal/support/portalItemUtils.js";function s(t,r,o){const a=o(t);if(!a.isValid)throw new e(`${r}:invalid-parameters`,a.errorMessage,{layer:t})}async function l(e){const{layer:t,errorNamePrefix:r,validateLayer:o}=e;await t.load(),s(t,r,o)}function p(e,t){return`Layer (title: ${e.title}, id: ${e.id}) of type '${e.declaredClass}' ${t}`}function m(t,r,o,a){if(t.type!==o)throw new e(`${r}:portal-item-wrong-type`,`Portal item type should be "${o}"`,{item:t,layer:a})}function u(t,r,o){const{portalItem:a}=t;if(!a)throw new e(`${r}:portal-item-not-set`,p(t,"requires the portalItem property to be set"));if(!a.loaded)throw new e(`${r}:portal-item-not-loaded`,p(t,"cannot be saved to a portal item that does not exist or is inaccessible"));m(a,r,o,t)}function d(e,t,a,i){let n=o.from(e);return n.id&&(n=n.clone(),n.id=null),n.type??=a,n.portal??=r.getDefault(),m(n,t,a,i),n}function f(t,r){let o=(t.messages??[]).filter((({type:e})=>"error"===e)).map((({name:t,message:r,details:o})=>new e(t,r,o)));if(r?.ignoreUnsupported&&(o=o.filter((({name:e})=>"layer:unsupported"!==e&&"symbol:unsupported"!==e&&"symbol-layer:unsupported"!==e&&"property:unsupported"!==e&&"url:unsupported"!==e))),o.length>0)throw new e("layer-write:unsupported","Failed to save layer due to unsupported or invalid content. See 'details.errors' for more detailed information",{errors:o})}async function c(e,t,r){"beforeSave"in e&&"function"==typeof e.beforeSave&&await e.beforeSave();const o=e.write({},t);return f(t,r),o}function y(e){i(e,n.JSAPI),e.typeKeywords&&(e.typeKeywords=e.typeKeywords.filter(((e,t,r)=>r.indexOf(e)===t)))}async function w(e,t,r){const o=e.portal;await o.signIn(),await(o.user?.addItem({item:e,data:t,folder:r?.folder}))}async function I(e,r){const{layer:o,createItemData:i,errorNamePrefix:n,itemType:s}=e;await l(e),u(o,n,s);const p=o.portalItem,m=a(p),d=await c(o,m,r),f=await i({layer:o,layerJSON:d},p);return y(p),await p.update({data:f}),t(m),p}async function b(e,r){const{layer:o,createItemData:i,setItemProperties:n,newItem:s,errorNamePrefix:p,itemType:m}=e;await l(e);const u=d(s,p,m,o),f=a(u),I=await c(o,f,r),b=await i({layer:o,layerJSON:I},u);return await n(o,u),y(u),await w(u,b,r),o.portalItem=u,t(f),u}export{w as addItem,p as createErrorMessage,u as ensureItemConfig,s as ensureLayerConfig,c as getLayerJSON,d as getPortalItem,I as save,b as saveAs,y as setCommonItemProperties};
5
+ import e from"../../core/Error.js";import{updateOrigins as t}from"../../core/accessorSupport/originUtils.js";import r from"../../portal/Portal.js";import o from"../../portal/PortalItem.js";import{createForItemWrite as a}from"../../portal/support/jsonContext.js";import{addTypeKeyword as i,TypeKeyword as n}from"../../portal/support/portalItemUtils.js";import{validateSaveAPIKey as s}from"../../webdoc/saveAPIKeyUtils.js";function l(t,r,o){const a=o(t);if(!a.isValid)throw new e(`${r}:invalid-parameters`,a.errorMessage,{layer:t})}async function p(e){const{layer:t,errorNamePrefix:r,validateLayer:o}=e;await t.load(),l(t,r,o)}function m(e,t){return`Layer (title: ${e.title}, id: ${e.id}) of type '${e.declaredClass}' ${t}`}function d(t,r,o,a){if(t.type!==o)throw new e(`${r}:portal-item-wrong-type`,`Portal item type should be "${o}"`,{item:t,layer:a})}function u(t,r,o){const{portalItem:a}=t;if(!a)throw new e(`${r}:portal-item-not-set`,m(t,"requires the portalItem property to be set"));if(!a.loaded)throw new e(`${r}:portal-item-not-loaded`,m(t,"cannot be saved to a portal item that does not exist or is inaccessible"));s(a),d(a,r,o,t)}function f(e,t,a,i){let n=o.from(e);return n.id&&(n=n.clone(),n.id=null),n.type??=a,n.portal??=r.getDefault(),s(n),d(n,t,a,i),n}function c(t,r){let o=(t.messages??[]).filter((({type:e})=>"error"===e)).map((({name:t,message:r,details:o})=>new e(t,r,o)));if(r?.ignoreUnsupported&&(o=o.filter((({name:e})=>"layer:unsupported"!==e&&"symbol:unsupported"!==e&&"symbol-layer:unsupported"!==e&&"property:unsupported"!==e&&"url:unsupported"!==e))),o.length>0)throw new e("layer-write:unsupported","Failed to save layer due to unsupported or invalid content. See 'details.errors' for more detailed information",{errors:o})}async function y(e,t,r){"beforeSave"in e&&"function"==typeof e.beforeSave&&await e.beforeSave();const o=e.write({},t);return c(t,r),o}function w(e){i(e,n.JSAPI),e.typeKeywords&&(e.typeKeywords=e.typeKeywords.filter(((e,t,r)=>r.indexOf(e)===t)))}async function I(e,t,r){const o=e.portal;await o.signIn(),await(o.user?.addItem({item:e,data:t,folder:r?.folder}))}async function b(e,r){const{layer:o,createItemData:i,errorNamePrefix:n,itemType:s}=e;await p(e),u(o,n,s);const l=o.portalItem,m=a(l),d=await y(o,m,r),f=await i({layer:o,layerJSON:d},l);return w(l),await l.update({data:f}),t(m),l}async function g(e,r){const{layer:o,createItemData:i,setItemProperties:n,newItem:s,errorNamePrefix:l,itemType:m}=e;await p(e);const d=f(s,l,m,o),u=a(d),c=await y(o,u,r),b=await i({layer:o,layerJSON:c},d);return await n(o,d),w(d),await I(d,b,r),o.portalItem=d,t(u),d}export{I as addItem,m as createErrorMessage,u as ensureItemConfig,l as ensureLayerConfig,y as getLayerJSON,f as getPortalItem,b as save,g as saveAs,w as setCommonItemProperties};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.28/esri/copyright.txt for details.
4
4
  */
5
- import{getMimeTypeFormatId as o,getFilenameFormatId as t}from"./infoFor3D.js";import{getEffectiveLayerCapabilities as n,getEffectiveEditingEnabled as r}from"./layerUtils.js";function e(o){return!(!(o&&"object"==typeof o&&"loaded"in o&&o.loaded&&n(o)?.operations?.supportsEditing&&"type"in o)||"editingEnabled"in o&&!r(o)||"scene"===o.type&&!i(o))}function i(n){const r=n.infoFor3D;if(!r)return!0;const{supportedFormats:e,queryFormats:i}=r,s=o("model/gltf-binary",e)??t("glb",e);return null!=s&&i.includes(s)}export{e as isEditableLayer};
5
+ import e from"../../core/Logger.js";import{equals as r}from"../../geometry/support/spatialReferenceUtils.js";import{getMimeTypeFormatId as t,getFilenameFormatId as i}from"./infoFor3D.js";import{getEffectiveLayerCapabilities as s,getEffectiveEditingEnabled as a}from"./layerUtils.js";function o(e){return!(!(e&&"object"==typeof e&&"loaded"in e&&e.loaded&&s(e)?.operations?.supportsEditing&&"type"in e)||"editingEnabled"in e&&!a(e)||"scene"===e.type&&!n(e))}function n(s){const{associatedLayer:a}=s,o=a?.infoFor3D;if(!!!o)return!0;const{supportedFormats:n,queryFormats:c}=o,d=t("model/gltf-binary",n)??i("glb",n);if(!(null!=d&&c.includes(d)))return e.getLogger("esri.layers.support.editableLayers").warnOnce(`SceneLayer ${s.uid} is not editable because it does not support GLB queries.`),!1;const l=s.spatialReference,p=a.spatialReference;if(!r(l,p))return e.getLogger("esri.layers.support.editableLayers").warnOnce(`SceneLayer ${s.uid} is not editable because its spatial reference (wkid:${l.wkid}) is different from its associated FeatureLayer's spatial reference (wkid:${p.wkid}).`),!1;const u=a.sourceJSON.sourceSpatialReference;return!(null!=u&&!r(u,p))||(e.getLogger("esri.layers.support.editableLayers").warnOnce(`SceneLayer ${s.uid} is not editable because the spatial reference of its associated FeatureLayer's service (wkid:${p.wkid}) is different from its source spatial reference (wkid:${u.wkid}).`),!1)}export{o as isEditableLayer};