@arcgis/core 4.27.0-next.20230501 → 4.27.0-next.20230504

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 (409) hide show
  1. package/Basemap.js +1 -1
  2. package/arcade/featureset/actions/Adapted.js +1 -1
  3. package/arcade/featureset/support/sqlUtils.js +1 -1
  4. package/arcade/functions/date.js +1 -1
  5. package/arcade/kernel.js +1 -1
  6. package/arcade/lib/error-handler.js +1 -1
  7. package/arcade/validation/arcadeValidator.js +1 -1
  8. package/assets/esri/core/workers/RemoteClient.js +1 -1
  9. package/assets/esri/core/workers/chunks/037236ae290f658f476b.js +1 -0
  10. package/assets/esri/core/workers/chunks/{5f476dbaa2c314037f8a.js → 05acc1c5661a08988583.js} +1 -1
  11. package/assets/esri/core/workers/chunks/0738e8dd038f1364520e.js +1 -0
  12. package/assets/esri/core/workers/chunks/0cbd08192d83a0e1d1a9.js +1 -0
  13. package/assets/esri/core/workers/chunks/{1cf75e69a71e273d26a4.js → 0e37f549a03245e16169.js} +1 -1
  14. package/assets/esri/core/workers/chunks/{8e2a73194de3c7b9cbd1.js → 0e50f78a2752a7ad391a.js} +1 -1
  15. package/assets/esri/core/workers/chunks/{0ffbf37be42f0bdb21c9.js → 0e6589d23a5af6bcbfbc.js} +1 -1
  16. package/assets/esri/core/workers/chunks/1155522774955f0fa41d.js +1 -0
  17. package/assets/esri/core/workers/chunks/152bcc3935f432ee3f27.js +1 -0
  18. package/assets/esri/core/workers/chunks/{46090b69e9161bc05141.js → 17d2abd942d99dd95bfe.js} +1 -1
  19. package/assets/esri/core/workers/chunks/{d610a89ea9b1c19520a7.js → 1c5560cabf52f2fcdcd5.js} +1 -1
  20. package/assets/esri/core/workers/chunks/1caffc86e05647ad7769.js +1 -0
  21. package/assets/esri/core/workers/chunks/2157df02ae18b3794957.js +1 -0
  22. package/assets/esri/core/workers/chunks/{3dc2658836cc7733da61.js → 2409fcc2a4c2e6546654.js} +1 -1
  23. package/assets/esri/core/workers/chunks/2498d329888e523d5700.js +1 -0
  24. package/assets/esri/core/workers/chunks/{9af7179bcbdcfb3c3a6e.js → 2666b628ba4ad4a310a3.js} +1 -1
  25. package/assets/esri/core/workers/chunks/27d88d69db195cbe4f96.js +1 -0
  26. package/assets/esri/core/workers/chunks/2f6bbd0271f02f0d5a07.js +1 -0
  27. package/assets/esri/core/workers/chunks/312483f6daa0c63a0567.js +1 -0
  28. package/assets/esri/core/workers/chunks/317bd5b03292a7114923.js +1 -0
  29. package/assets/esri/core/workers/chunks/{a50d1ef8d9e8d1623ff1.js → 3231a61dd656136a4394.js} +1 -1
  30. package/assets/esri/core/workers/chunks/3bbaa78c68a4bf159722.js +1 -0
  31. package/assets/esri/core/workers/chunks/{c9e10bb18e8e9147ce63.js → 3c5a64a545272f148e93.js} +1 -1
  32. package/assets/esri/core/workers/chunks/4475ba4f17fcc9aa940c.js +1 -0
  33. package/assets/esri/core/workers/chunks/46238d4a0a8e2338232c.js +1 -0
  34. package/assets/esri/core/workers/chunks/{9eebe182ec56486beacb.js → 48b85d28960de4f99deb.js} +1 -1
  35. package/assets/esri/core/workers/chunks/{cc102c8571da3756bc1b.js → 58bea2b13ba5135e7dea.js} +1 -1
  36. package/assets/esri/core/workers/chunks/58dbf0086891cf38bbe2.js +1 -0
  37. package/assets/esri/core/workers/chunks/{1216e939d363f96b6cc6.js → 5909f539e0b0021839a5.js} +1 -1
  38. package/assets/esri/core/workers/chunks/5b88b81442f6ef4644c9.js +1 -0
  39. package/assets/esri/core/workers/chunks/{6267f0327a5f02d323dc.js → 5c8745a08d7cf4c56a27.js} +1 -1
  40. package/assets/esri/core/workers/chunks/618b9dc31aef77a44349.js +1 -0
  41. package/assets/esri/core/workers/chunks/618db3d39b0e0bfb3c60.js +1 -0
  42. package/assets/esri/core/workers/chunks/65b330a03ff80735bec8.js +1 -0
  43. package/assets/esri/core/workers/chunks/{8f5474355f44ad0bb9ad.js → 664c1fcfb2c0cf688e81.js} +1 -1
  44. package/assets/esri/core/workers/chunks/{6f44e537fd307a0f60bf.js → 6a23bb49a83eb5d6823b.js} +1 -1
  45. package/assets/esri/core/workers/chunks/6ec4843b3adb95a6563e.js +1 -0
  46. package/assets/esri/core/workers/chunks/71f92d4e6e44dc5604bb.js +1 -0
  47. package/assets/esri/core/workers/chunks/{4f8a09b61267e5e26712.js → 72b39be11a657e777d43.js} +1 -1
  48. package/assets/esri/core/workers/chunks/758d58dda20265f6be17.js +1 -0
  49. package/assets/esri/core/workers/chunks/7d85883e3adb69c3decd.js +1 -0
  50. package/assets/esri/core/workers/chunks/{bbbdb82e3902389fb8ac.js → 7e041e4458e9d5b1f7dc.js} +1 -1
  51. package/assets/esri/core/workers/chunks/{bad3549ded35929ac863.js → 7ec2e167f03075751138.js} +1 -1
  52. package/assets/esri/core/workers/chunks/{cdf6c503f87be165ecac.js → 7f432b6c77d2b53f31d3.js} +1 -1
  53. package/assets/esri/core/workers/chunks/{3bfcf5759217b5685c3a.js → 82c89556f314dc5a350c.js} +1 -1
  54. package/assets/esri/core/workers/chunks/{aa5dc08b2eaec43de5aa.js → 845420da6f29082e8c36.js} +1 -1
  55. package/assets/esri/core/workers/chunks/84d53ef258a732390697.js +1 -0
  56. package/assets/esri/core/workers/chunks/852af9a28740df6511a7.js +1 -0
  57. package/assets/esri/core/workers/chunks/85dafe561949edf6ee6b.js +1 -0
  58. package/assets/esri/core/workers/chunks/{1b733719e205fc4b0d35.js → 874cf817fd06a2d9a872.js} +30 -30
  59. package/assets/esri/core/workers/chunks/{0bac1f62ac4b77549687.js → 97df1c6650d70e5e30ac.js} +1 -1
  60. package/assets/esri/core/workers/chunks/9c1e785914481f9cade3.js +1 -0
  61. package/assets/esri/core/workers/chunks/9c729904bfa6e61edab3.js +1 -0
  62. package/assets/esri/core/workers/chunks/{61a843d4b8382d763d23.js → 9e22a90115de672e7bb8.js} +1 -1
  63. package/assets/esri/core/workers/chunks/{797c4f8b31a62d49a6b6.js → a0d6b5123439b696a5d6.js} +1 -1
  64. package/assets/esri/core/workers/chunks/{8cf33863b778a6312ed4.js → a1ebcf8c2a780067ea85.js} +1 -1
  65. package/assets/esri/core/workers/chunks/{34695a176f0074b3fd18.js → a211d93528b1b588a49d.js} +1 -1
  66. package/assets/esri/core/workers/chunks/a876d122444bc974b087.js +1 -0
  67. package/assets/esri/core/workers/chunks/{21ddfbc8243b8a097d5b.js → aae0803a90a0c8d020b1.js} +1 -1
  68. package/assets/esri/core/workers/chunks/abeb56b8a60f76100623.js +1 -0
  69. package/assets/esri/core/workers/chunks/{7231f2c2f138996aa022.js → acd2dfca4ae691e32cdd.js} +1 -1
  70. package/assets/esri/core/workers/chunks/b25e57ec9f82901808f0.js +1 -0
  71. package/assets/esri/core/workers/chunks/b2ab214ac4a69bee8b47.js +1 -0
  72. package/assets/esri/core/workers/chunks/b4d56c489521cb6f053d.js +1 -0
  73. package/assets/esri/core/workers/chunks/b5c3e2d0a570f07d8f90.js +1 -0
  74. package/assets/esri/core/workers/chunks/{92862a36f4d84e16e8de.js → b880a5ba6f9d21606000.js} +1 -1
  75. package/assets/esri/core/workers/chunks/ba8bdc1db6c6b8d311d3.js +1 -0
  76. package/assets/esri/core/workers/chunks/bce91e07296ccd7c9cbf.js +1 -0
  77. package/assets/esri/core/workers/chunks/c1f817e1ef9d67c4c8d9.js +1 -0
  78. package/assets/esri/core/workers/chunks/c296ec9b1fb5ab1c7d46.js +1 -0
  79. package/assets/esri/core/workers/chunks/{c727d38f71e52bee17e1.js → c2977f6d3c44c6870371.js} +1 -1
  80. package/assets/esri/core/workers/chunks/c5c376e4fdf6c03ebcb7.js +1 -0
  81. package/assets/esri/core/workers/chunks/{4593074fa99693133908.js → ce63f66f57f6a7f114eb.js} +1 -1
  82. package/assets/esri/core/workers/chunks/cf14565a758b79c104d9.js +1 -0
  83. package/assets/esri/core/workers/chunks/da2760f7e3459ddfc8f7.js +1 -0
  84. package/assets/esri/core/workers/chunks/e1ff08ceaba1537eabb1.js +1 -0
  85. package/assets/esri/core/workers/chunks/{56a343f7dbac311917d2.js → ee2950e2504ef249632a.js} +1 -1
  86. package/assets/esri/core/workers/chunks/{78af07e8ef8bb691b838.js → eeeeda2e5482af78848d.js} +1 -1
  87. package/assets/esri/core/workers/chunks/ef663860abdbfbb1f030.js +1 -0
  88. package/assets/esri/core/workers/chunks/f20bed22fbf5e0a6300f.js +1 -0
  89. package/assets/esri/core/workers/chunks/f48ebf5c900467987c59.js +1 -0
  90. package/assets/esri/core/workers/chunks/{fc07f6e103d7f69a9909.js → f556490dae3c69419052.js} +1 -1
  91. package/assets/esri/core/workers/chunks/f61b577428a26a58ae23.js +1 -0
  92. package/assets/esri/core/workers/chunks/f6c725075a8657266436.js +1 -0
  93. package/assets/esri/core/workers/chunks/f8156cb46075646fe642.js +1 -0
  94. package/assets/esri/core/workers/chunks/{6ce95929a21586d8b6c0.js → fa5adf6bd06be45c427e.js} +1 -1
  95. package/assets/esri/core/workers/chunks/fa6225a1aae5668584fe.js +1 -0
  96. package/assets/esri/core/workers/chunks/{2acf79a7011348764684.js → fe9db31f7146f8442c26.js} +1 -1
  97. package/assets/esri/views/interactive/tooltip/t9n/Tooltip.json +1 -1
  98. package/assets/esri/views/interactive/tooltip/t9n/Tooltip_en.json +1 -1
  99. package/assets/esri/widgets/Editor/t9n/Editor.json +1 -1
  100. package/assets/esri/widgets/Editor/t9n/Editor_ar.json +1 -1
  101. package/assets/esri/widgets/Editor/t9n/Editor_bg.json +1 -1
  102. package/assets/esri/widgets/Editor/t9n/Editor_bs.json +1 -1
  103. package/assets/esri/widgets/Editor/t9n/Editor_ca.json +1 -1
  104. package/assets/esri/widgets/Editor/t9n/Editor_cs.json +1 -1
  105. package/assets/esri/widgets/Editor/t9n/Editor_da.json +1 -1
  106. package/assets/esri/widgets/Editor/t9n/Editor_de.json +1 -1
  107. package/assets/esri/widgets/Editor/t9n/Editor_el.json +1 -1
  108. package/assets/esri/widgets/Editor/t9n/Editor_en.json +1 -1
  109. package/assets/esri/widgets/Editor/t9n/Editor_es.json +1 -1
  110. package/assets/esri/widgets/Editor/t9n/Editor_et.json +1 -1
  111. package/assets/esri/widgets/Editor/t9n/Editor_fi.json +1 -1
  112. package/assets/esri/widgets/Editor/t9n/Editor_fr.json +1 -1
  113. package/assets/esri/widgets/Editor/t9n/Editor_he.json +1 -1
  114. package/assets/esri/widgets/Editor/t9n/Editor_hr.json +1 -1
  115. package/assets/esri/widgets/Editor/t9n/Editor_hu.json +1 -1
  116. package/assets/esri/widgets/Editor/t9n/Editor_id.json +1 -1
  117. package/assets/esri/widgets/Editor/t9n/Editor_it.json +1 -1
  118. package/assets/esri/widgets/Editor/t9n/Editor_ja.json +1 -1
  119. package/assets/esri/widgets/Editor/t9n/Editor_ko.json +1 -1
  120. package/assets/esri/widgets/Editor/t9n/Editor_lt.json +1 -1
  121. package/assets/esri/widgets/Editor/t9n/Editor_lv.json +1 -1
  122. package/assets/esri/widgets/Editor/t9n/Editor_nb.json +1 -1
  123. package/assets/esri/widgets/Editor/t9n/Editor_nl.json +1 -1
  124. package/assets/esri/widgets/Editor/t9n/Editor_pl.json +1 -1
  125. package/assets/esri/widgets/Editor/t9n/Editor_pt-BR.json +1 -1
  126. package/assets/esri/widgets/Editor/t9n/Editor_pt-PT.json +1 -1
  127. package/assets/esri/widgets/Editor/t9n/Editor_ro.json +1 -1
  128. package/assets/esri/widgets/Editor/t9n/Editor_ru.json +1 -1
  129. package/assets/esri/widgets/Editor/t9n/Editor_sk.json +1 -1
  130. package/assets/esri/widgets/Editor/t9n/Editor_sl.json +1 -1
  131. package/assets/esri/widgets/Editor/t9n/Editor_sr.json +1 -1
  132. package/assets/esri/widgets/Editor/t9n/Editor_sv.json +1 -1
  133. package/assets/esri/widgets/Editor/t9n/Editor_th.json +1 -1
  134. package/assets/esri/widgets/Editor/t9n/Editor_tr.json +1 -1
  135. package/assets/esri/widgets/Editor/t9n/Editor_uk.json +1 -1
  136. package/assets/esri/widgets/Editor/t9n/Editor_vi.json +1 -1
  137. package/assets/esri/widgets/Editor/t9n/Editor_zh-CN.json +1 -1
  138. package/assets/esri/widgets/Editor/t9n/Editor_zh-HK.json +1 -1
  139. package/assets/esri/widgets/Editor/t9n/Editor_zh-TW.json +1 -1
  140. package/assets/esri/widgets/Legend/t9n/Legend.json +1 -1
  141. package/assets/esri/widgets/Legend/t9n/Legend_ar.json +1 -1
  142. package/assets/esri/widgets/Legend/t9n/Legend_bg.json +1 -1
  143. package/assets/esri/widgets/Legend/t9n/Legend_bs.json +1 -1
  144. package/assets/esri/widgets/Legend/t9n/Legend_ca.json +1 -1
  145. package/assets/esri/widgets/Legend/t9n/Legend_cs.json +1 -1
  146. package/assets/esri/widgets/Legend/t9n/Legend_da.json +1 -1
  147. package/assets/esri/widgets/Legend/t9n/Legend_de.json +1 -1
  148. package/assets/esri/widgets/Legend/t9n/Legend_el.json +1 -1
  149. package/assets/esri/widgets/Legend/t9n/Legend_en.json +1 -1
  150. package/assets/esri/widgets/Legend/t9n/Legend_es.json +1 -1
  151. package/assets/esri/widgets/Legend/t9n/Legend_et.json +1 -1
  152. package/assets/esri/widgets/Legend/t9n/Legend_fi.json +1 -1
  153. package/assets/esri/widgets/Legend/t9n/Legend_fr.json +1 -1
  154. package/assets/esri/widgets/Legend/t9n/Legend_he.json +1 -1
  155. package/assets/esri/widgets/Legend/t9n/Legend_hr.json +1 -1
  156. package/assets/esri/widgets/Legend/t9n/Legend_hu.json +1 -1
  157. package/assets/esri/widgets/Legend/t9n/Legend_id.json +1 -1
  158. package/assets/esri/widgets/Legend/t9n/Legend_it.json +1 -1
  159. package/assets/esri/widgets/Legend/t9n/Legend_ja.json +1 -1
  160. package/assets/esri/widgets/Legend/t9n/Legend_ko.json +1 -1
  161. package/assets/esri/widgets/Legend/t9n/Legend_lt.json +1 -1
  162. package/assets/esri/widgets/Legend/t9n/Legend_lv.json +1 -1
  163. package/assets/esri/widgets/Legend/t9n/Legend_nb.json +1 -1
  164. package/assets/esri/widgets/Legend/t9n/Legend_nl.json +1 -1
  165. package/assets/esri/widgets/Legend/t9n/Legend_pl.json +1 -1
  166. package/assets/esri/widgets/Legend/t9n/Legend_pt-BR.json +1 -1
  167. package/assets/esri/widgets/Legend/t9n/Legend_pt-PT.json +1 -1
  168. package/assets/esri/widgets/Legend/t9n/Legend_ro.json +1 -1
  169. package/assets/esri/widgets/Legend/t9n/Legend_ru.json +1 -1
  170. package/assets/esri/widgets/Legend/t9n/Legend_sk.json +1 -1
  171. package/assets/esri/widgets/Legend/t9n/Legend_sl.json +1 -1
  172. package/assets/esri/widgets/Legend/t9n/Legend_sr.json +1 -1
  173. package/assets/esri/widgets/Legend/t9n/Legend_sv.json +1 -1
  174. package/assets/esri/widgets/Legend/t9n/Legend_th.json +1 -1
  175. package/assets/esri/widgets/Legend/t9n/Legend_tr.json +1 -1
  176. package/assets/esri/widgets/Legend/t9n/Legend_uk.json +1 -1
  177. package/assets/esri/widgets/Legend/t9n/Legend_vi.json +1 -1
  178. package/assets/esri/widgets/Legend/t9n/Legend_zh-CN.json +1 -1
  179. package/assets/esri/widgets/Legend/t9n/Legend_zh-HK.json +1 -1
  180. package/assets/esri/widgets/Legend/t9n/Legend_zh-TW.json +1 -1
  181. package/chunks/_commonjsHelpers.js +1 -1
  182. package/chunks/languageUtils.js +1 -1
  183. package/core/Accessor.js +1 -1
  184. package/core/LRUCache.js +1 -1
  185. package/core/MemCache.js +1 -1
  186. package/core/Message.js +1 -1
  187. package/core/Version.js +1 -1
  188. package/core/accessorSupport/ObservableBase.js +1 -1
  189. package/core/accessorSupport/testSupport.js +1 -1
  190. package/core/has.js +1 -1
  191. package/core/number.js +1 -1
  192. package/core/sql/StandardizedFunctions.js +1 -1
  193. package/core/sql/WhereClauseCache.js +1 -1
  194. package/core/string.js +1 -1
  195. package/core/support/WatchUpdatingTracking.js +1 -1
  196. package/core/typedArrayUtil.js +1 -1
  197. package/core/urlUtils.js +1 -1
  198. package/core/watchUtils.js +1 -1
  199. package/geometry/coordinateFormatter.js +1 -1
  200. package/geometry/support/meshUtils/loadGLTFMesh.js +1 -1
  201. package/identity/IdentityManagerBase.js +1 -1
  202. package/interfaces.d.ts +514 -63
  203. package/layers/SubtypeGroupLayer.js +1 -1
  204. package/layers/VideoLayer.js +1 -1
  205. package/layers/WMTSLayer.js +1 -1
  206. package/layers/WebTileLayer.js +1 -1
  207. package/layers/graphics/controllers/I3SOnDemandController.js +1 -1
  208. package/layers/graphics/editingSupport.js +1 -1
  209. package/layers/graphics/sources/FeatureLayerSource.js +1 -1
  210. package/layers/graphics/sources/csv/csv.js +1 -1
  211. package/layers/graphics/sources/support/uploadAssets.js +1 -1
  212. package/layers/mixins/ArcGISImageService.js +1 -1
  213. package/layers/ogc/wfsUtils.js +1 -1
  214. package/layers/support/ExportImageServiceParameters.js +1 -1
  215. package/layers/support/MosaicRule.js +1 -1
  216. package/layers/support/TilemapCache.js +1 -1
  217. package/layers/support/arcgisLayerUrl.js +1 -1
  218. package/layers/support/fieldUtils.js +1 -1
  219. package/layers/support/labelFormatUtils.js +1 -1
  220. package/layers/support/labelUtils.js +1 -1
  221. package/layers/support/labelingInfo.js +1 -1
  222. package/layers/support/rasterDatasets/CloudRaster.js +1 -1
  223. package/layers/support/rasterDatasets/pamParser.js +1 -1
  224. package/layers/support/rasterFunctions/customBandIndexUtils.js +1 -1
  225. package/layers/support/wmtsUtils.js +1 -1
  226. package/layers/video/VideoEngine.js +5 -0
  227. package/package.json +1 -1
  228. package/portal/Portal.js +1 -1
  229. package/portal/PortalItem.js +1 -1
  230. package/portal/portalDefault.js +5 -0
  231. package/portal/support/portalLayers.js +1 -1
  232. package/renderers/support/DictionaryLoader.js +1 -1
  233. package/renderers/support/utils.js +1 -1
  234. package/request.js +1 -1
  235. package/rest/imageService/fetchRasterInfo.js +1 -1
  236. package/rest/places.d.ts +4 -0
  237. package/rest/places.js +5 -0
  238. package/rest/print.js +1 -1
  239. package/rest/support/BaseImageMeasureParameters.js +1 -1
  240. package/rest/support/FetchPlaceParameters.d.ts +4 -0
  241. package/rest/support/FetchPlaceParameters.js +5 -0
  242. package/rest/support/ImageAreaParameters.js +1 -1
  243. package/rest/support/ImageDistanceParameters.js +1 -1
  244. package/rest/support/ImageHeightParameters.js +1 -1
  245. package/rest/support/ImageHistogramParameters.js +1 -1
  246. package/rest/support/ImageIdentifyParameters.js +1 -1
  247. package/rest/support/ImagePointParameters.js +1 -1
  248. package/rest/support/PlaceResult.d.ts +4 -0
  249. package/rest/support/PlaceResult.js +5 -0
  250. package/rest/support/PlacesParameters.d.ts +4 -0
  251. package/rest/support/PlacesParameters.js +5 -0
  252. package/rest/support/PlacesQueryResult.d.ts +4 -0
  253. package/rest/support/PlacesQueryResult.js +5 -0
  254. package/rest/support/QueryPlacesParameters.d.ts +4 -0
  255. package/rest/support/QueryPlacesParameters.js +5 -0
  256. package/smartMapping/raster/renderers/classBreaks.js +1 -1
  257. package/smartMapping/raster/renderers/rgb.js +1 -1
  258. package/smartMapping/raster/renderers/stretch.js +1 -1
  259. package/smartMapping/raster/support/adapters/ImageryLayerAdapter.js +1 -1
  260. package/smartMapping/raster/support/adapters/RasterLayerAdapter.js +1 -1
  261. package/smartMapping/raster/support/utils.js +1 -1
  262. package/smartMapping/renderers/pieChart.js +1 -1
  263. package/smartMapping/support/clusterUtils.js +1 -1
  264. package/support/arcadeUtils.js +1 -1
  265. package/support/basemapUtils.js +1 -1
  266. package/support/revision.js +1 -1
  267. package/support/themeUtils.js +1 -1
  268. package/symbols/cim/cimAnalyzer.js +1 -1
  269. package/symbols/cim/placements/PlacementInsidePolygon.js +1 -1
  270. package/symbols/support/gfxUtils.js +1 -1
  271. package/symbols/support/previewCIMSymbol.js +1 -1
  272. package/symbols/support/previewSymbol2D.js +1 -1
  273. package/symbols/support/previewSymbol3D.js +1 -1
  274. package/symbols/support/svgUtils.js +1 -1
  275. package/symbols/support/symbolLayerUtils.js +1 -1
  276. package/symbols/support/symbolUtils.js +1 -1
  277. package/symbols/support/webStyleSymbolUtils.js +1 -1
  278. package/views/2d/engine/flow/FlowView2D.js +1 -1
  279. package/views/2d/engine/vectorTiles/RenderBucket.js +1 -1
  280. package/views/2d/engine/vectorTiles/TileHandler3D.js +1 -1
  281. package/views/2d/engine/vectorTiles/TileManager.js +1 -1
  282. package/views/2d/engine/vectorTiles/VectorTile.js +1 -1
  283. package/views/2d/engine/vectorTiles/buckets/SymbolBucket.js +1 -1
  284. package/views/2d/engine/vectorTiles/decluttering/jobsUtil.js +1 -1
  285. package/views/2d/engine/vectorTiles/style/VectorTilesRequestManager.js +1 -1
  286. package/views/2d/engine/webgl/util/Matcher.js +1 -1
  287. package/views/2d/layerViewModuleImportUtils.js +1 -1
  288. package/views/2d/layers/FeatureLayerView2D.js +1 -1
  289. package/views/2d/layers/features/sources/BaseFeatureSource.js +1 -1
  290. package/views/2d/layers/features/sources/DataTileSource.js +1 -1
  291. package/views/2d/layers/support/webStyleUtils.js +1 -1
  292. package/views/3d/layerViewModuleImportUtils.js +1 -1
  293. package/views/3d/layers/FeatureLikeLayerView3D.js +1 -1
  294. package/views/3d/layers/VectorTileLayerView3D.js +1 -1
  295. package/views/3d/layers/graphics/Deconflictor.js +1 -1
  296. package/views/3d/layers/graphics/GraphicStateTracking.js +1 -1
  297. package/views/3d/layers/graphics/Graphics3DGraphic.js +1 -1
  298. package/views/3d/layers/graphics/Labeler.js +1 -1
  299. package/views/3d/layers/i3s/I3SIndex.js +1 -1
  300. package/views/3d/layers/i3s/I3SOverrides.js +1 -1
  301. package/views/3d/layers/support/FeatureTileTree3D.js +1 -1
  302. package/views/3d/state/ViewStateManager.js +1 -1
  303. package/views/3d/support/MemoryController.js +1 -1
  304. package/views/3d/support/QualitySettings.js +1 -1
  305. package/views/3d/terrain/OverlayFramebufferObject.js +1 -1
  306. package/views/3d/terrain/Tile.js +1 -1
  307. package/views/3d/webgl-engine/collections/Component/ComponentObjectCollection.js +1 -1
  308. package/views/3d/webgl-engine/core/renderPasses/RenderPass.js +1 -1
  309. package/views/3d/webgl-engine/lib/DrapedHeatmapRenderer.js +1 -1
  310. package/views/3d/webgl-engine/lib/OffscreenRendering.js +1 -1
  311. package/views/3d/webgl-engine/lib/RenderFeature.js +1 -1
  312. package/views/3d/webgl-engine/lib/RenderTargetHelper.js +1 -1
  313. package/views/3d/webgl-engine/lib/ShadowHighlight.js +1 -1
  314. package/views/3d/webgl-engine/lib/ShadowMap.js +1 -1
  315. package/views/3d/webgl-engine/lib/edgeRendering/EdgeView.js +1 -1
  316. package/views/3d/webgl-engine/materials/renderers/MergedRenderer.js +1 -1
  317. package/views/3d/webgl-engine/materials/renderers/PerBufferData.js +1 -1
  318. package/views/3d/webgl-engine/materials/renderers/VaoCache.js +1 -1
  319. package/views/3d/webgl-engine/parts/ScreenshotManager.js +1 -1
  320. package/views/draw/DrawGraphicTool.js +1 -1
  321. package/views/draw/support/helpMessageUtils.js +1 -1
  322. package/views/interactive/snapping/featureSources/snappingCandidateElevationAlignment.js +1 -1
  323. package/views/interactive/snapping/featureSources/symbologySnappingCandidates.js +1 -1
  324. package/views/interactive/tooltip/DrawTooltipInfos.js +1 -1
  325. package/views/interactive/tooltip/Tooltip.js +1 -1
  326. package/views/interactive/tooltip/content/TooltipContentDrawMesh.js +5 -0
  327. package/views/interactive/tooltip/content/tooltipContentFactory.js +1 -1
  328. package/views/layers/support/MapServiceLayerViewHelper.js +1 -1
  329. package/views/webgl/BufferObject.js +1 -1
  330. package/views/webgl/FramebufferObject.js +1 -1
  331. package/views/webgl/Parameters.js +5 -0
  332. package/views/webgl/Program.js +1 -1
  333. package/views/webgl/RenderingContext.js +1 -1
  334. package/views/webgl/ShaderTranspiler.js +1 -1
  335. package/views/webgl/Util.js +1 -1
  336. package/views/webgl/VertexArrayObject.js +1 -1
  337. package/webscene/spec-certification/api.js +1 -1
  338. package/webscene/spec-certification/spec.js +1 -1
  339. package/webscene/support/SlideGround.js +1 -1
  340. package/widgets/CoordinateConversion/support/Format.js +1 -1
  341. package/widgets/Editor/CreateFeaturesWorkflow.js +1 -1
  342. package/widgets/Editor/CreateWorkflow.js +1 -1
  343. package/widgets/Editor.js +1 -1
  344. package/widgets/ElevationProfile/ElevationProfileViewModel.js +1 -1
  345. package/widgets/Feature/support/featureUtils.js +1 -1
  346. package/widgets/Histogram.js +1 -1
  347. package/widgets/Legend/styles/Card.js +1 -1
  348. package/widgets/Legend/styles/Classic.js +1 -1
  349. package/widgets/Legend/styles/support/relationshipUtils.js +1 -1
  350. package/widgets/Legend/styles/support/univariateUtils.js +1 -1
  351. package/widgets/Legend/support/ActiveLayerInfo.js +1 -1
  352. package/widgets/Popup.js +1 -1
  353. package/widgets/ScaleRangeSlider.js +1 -1
  354. package/widgets/Search/support/layerSearchUtils.js +1 -1
  355. package/widgets/UtilityNetworkAssociations/UtilityNetworkAssociationsViewModel.js +1 -1
  356. package/widgets/UtilityNetworkTrace.js +1 -1
  357. package/widgets/support/datePickerUtils.js +1 -1
  358. package/widgets/support/geolocationUtils.js +1 -1
  359. package/assets/esri/core/workers/chunks/07ca4bb8507c293f1316.js +0 -1
  360. package/assets/esri/core/workers/chunks/085e9a46ee3a8a1a5e20.js +0 -1
  361. package/assets/esri/core/workers/chunks/0f52e49eb552fbd8cec0.js +0 -1
  362. package/assets/esri/core/workers/chunks/1e7a877c4437e0700cdb.js +0 -1
  363. package/assets/esri/core/workers/chunks/1f202e82ac0970e6b8c8.js +0 -1
  364. package/assets/esri/core/workers/chunks/2014f2cf5f4cb070f59c.js +0 -1
  365. package/assets/esri/core/workers/chunks/25fc1850a0e4f5c3e6f8.js +0 -1
  366. package/assets/esri/core/workers/chunks/2611eb82cf4f18b794a7.js +0 -1
  367. package/assets/esri/core/workers/chunks/2b68a68e045dfe4d0719.js +0 -1
  368. package/assets/esri/core/workers/chunks/33125f2080faf74cccdb.js +0 -1
  369. package/assets/esri/core/workers/chunks/39c0b0279d170197c127.js +0 -1
  370. package/assets/esri/core/workers/chunks/3dace5994b2ba0e89637.js +0 -1
  371. package/assets/esri/core/workers/chunks/3f0a97b6072a15f1dd05.js +0 -1
  372. package/assets/esri/core/workers/chunks/477a69e55ce6f7111ae7.js +0 -1
  373. package/assets/esri/core/workers/chunks/47bf38d910e71ac39bb8.js +0 -1
  374. package/assets/esri/core/workers/chunks/49e5e6e459843f3db235.js +0 -1
  375. package/assets/esri/core/workers/chunks/4c175664eb97689d66b0.js +0 -1
  376. package/assets/esri/core/workers/chunks/5193317f52aec830f80b.js +0 -1
  377. package/assets/esri/core/workers/chunks/5f3899efbb967c6e8422.js +0 -1
  378. package/assets/esri/core/workers/chunks/6047bdaf4855506f8fdb.js +0 -1
  379. package/assets/esri/core/workers/chunks/6412be94b716e8ec5dc1.js +0 -1
  380. package/assets/esri/core/workers/chunks/65976ebffe10de33f875.js +0 -1
  381. package/assets/esri/core/workers/chunks/670a08616a7a3f3e2000.js +0 -1
  382. package/assets/esri/core/workers/chunks/6718ebca33c3d0e1f285.js +0 -1
  383. package/assets/esri/core/workers/chunks/6adb58f1bffc5d1c03bd.js +0 -1
  384. package/assets/esri/core/workers/chunks/6eae9babd221195f0d85.js +0 -1
  385. package/assets/esri/core/workers/chunks/78a76867e78b426a7717.js +0 -1
  386. package/assets/esri/core/workers/chunks/80c95f43f982eab0e2ae.js +0 -1
  387. package/assets/esri/core/workers/chunks/869bb7cf9a70b64f598e.js +0 -1
  388. package/assets/esri/core/workers/chunks/89431e2019d20a04ed4f.js +0 -1
  389. package/assets/esri/core/workers/chunks/8cf07f77d1ca555310cf.js +0 -1
  390. package/assets/esri/core/workers/chunks/945015f35ab7d2d55d2d.js +0 -1
  391. package/assets/esri/core/workers/chunks/9a9cb6e7212ab18f0586.js +0 -1
  392. package/assets/esri/core/workers/chunks/9c1b2f82877ff79969f5.js +0 -1
  393. package/assets/esri/core/workers/chunks/9ee0671827bf221acbb7.js +0 -1
  394. package/assets/esri/core/workers/chunks/a4a78fcd76113e9a73fd.js +0 -1
  395. package/assets/esri/core/workers/chunks/a58343ad9f2c88c2ebbf.js +0 -1
  396. package/assets/esri/core/workers/chunks/a7ce02c50d0c42b90007.js +0 -1
  397. package/assets/esri/core/workers/chunks/a9dc5d6bdfa2d5a50b01.js +0 -1
  398. package/assets/esri/core/workers/chunks/af905cda88053394013e.js +0 -1
  399. package/assets/esri/core/workers/chunks/afe206c2d48e99d0de3f.js +0 -1
  400. package/assets/esri/core/workers/chunks/bf5ad7627991f4d46b83.js +0 -1
  401. package/assets/esri/core/workers/chunks/c97dd52fb06a8bf62b6f.js +0 -1
  402. package/assets/esri/core/workers/chunks/cf7676fdc09ad4835680.js +0 -1
  403. package/assets/esri/core/workers/chunks/d2d96fc03939b0628399.js +0 -1
  404. package/assets/esri/core/workers/chunks/d399b1b9cbf0737d1735.js +0 -1
  405. package/assets/esri/core/workers/chunks/d9290ecbbaac23db6922.js +0 -1
  406. package/assets/esri/core/workers/chunks/efb96aefe979a0f5c632.js +0 -1
  407. package/assets/esri/core/workers/chunks/fa169378e2352266f2e7.js +0 -1
  408. package/assets/esri/core/workers/chunks/ff30e2230de91e2e7f70.js +0 -1
  409. package/core/ItemCache.js +0 -5
package/Basemap.js CHANGED
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.27/esri/copyright.txt for details.
4
4
  */
5
- import{_ as e}from"./chunks/tslib.es6.js";import r from"./core/Collection.js";import{referenceSetter as t}from"./core/collectionUtils.js";import{deprecated as s}from"./core/deprecate.js";import{JSONSupportMixin as o}from"./core/JSONSupport.js";import{isClonable as a,clone as i}from"./core/lang.js";import n from"./core/Loadable.js";import{loadAll as l}from"./core/loadAll.js";import p from"./core/Logger.js";import{throwIfAborted as c,eachAlways as m}from"./core/promiseUtils.js";import{isProtocolRelative as h,urlToObject as u}from"./core/urlUtils.js";import{property as y}from"./core/accessorSupport/decorators/property.js";import"./core/accessorSupport/ensureType.js";import{subclass as d}from"./core/accessorSupport/decorators/subclass.js";import{writer as f}from"./core/accessorSupport/decorators/writer.js";import b from"./geometry/SpatialReference.js";import L from"./portal/Portal.js";import g from"./portal/PortalItem.js";import{getBasemapTitle as w,esriBasemapDefinitions as I}from"./support/basemapDefinitions.js";import{getLayerJSON as j}from"./webdoc/support/writeUtils.js";var S;let v=0;const _="esri.Basemap";let U=S=class extends(o(n)){constructor(e){super(e),this.id=null,this.portalItem=null,this.spatialReference=null,this.thumbnailUrl=null,this.title="Basemap",this.id=Date.now().toString(16)+"-basemap-"+v++,this.baseLayers=new r,this.referenceLayers=new r;const t=e=>{e.parent&&e.parent!==this&&"remove"in e.parent&&e.parent.remove(e),e.parent=this,"elevation"===e.type&&p.getLogger(this.declaredClass).error(`Layer '${e.title}, id:${e.id}' of type '${e.type}' is not supported as a basemap layer and will therefore be ignored.`)},s=e=>{e.parent=null};this.addHandles([this.baseLayers.on("after-add",(e=>t(e.item))),this.referenceLayers.on("after-add",(e=>t(e.item))),this.baseLayers.on("after-remove",(e=>s(e.item))),this.referenceLayers.on("after-remove",(e=>s(e.item)))])}initialize(){this.when().catch((e=>{p.getLogger(this.declaredClass).error("#load()",`Failed to load basemap (title: '${this.title}', id: '${this.id}')`,e)})),this.resourceInfo&&this.read(this.resourceInfo.data,this.resourceInfo.context)}destroy(){const e=this.baseLayers.removeAll();for(const t of e)t.destroy();const r=this.referenceLayers.removeAll();for(const t of r)t.destroy();this.baseLayers.destroy(),this.referenceLayers.destroy(),this.portalItem?.destroy(),this.portalItem=null}normalizeCtorArgs(e){return e&&"resourceInfo"in e&&(this._set("resourceInfo",e.resourceInfo),delete(e={...e}).resourceInfo),e}set baseLayers(e){this._set("baseLayers",t(e,this._get("baseLayers")))}_writeBaseLayers(e,r,t){const s=[];e?(t={...t,layerContainerType:"basemap"},this.baseLayers.forEach((e=>{const r=j(e,t.webmap?t.webmap.getLayerJSONFromResourceInfo(e):null,t);null!=r&&s.push(r)})),this.referenceLayers.forEach((e=>{const r=j(e,t.webmap?t.webmap.getLayerJSONFromResourceInfo(e):null,t);null!=r&&("scene"!==e.type&&(r.isReference=!0),s.push(r))})),r.baseMapLayers=s):r.baseMapLayers=s}set referenceLayers(e){this._set("referenceLayers",t(e,this._get("referenceLayers")))}writeTitle(e,r){r.title=e||"Basemap"}load(e){return this.addResolvingPromise(this._loadFromSource(e)),Promise.resolve(this)}loadAll(){return l(this,(e=>{e(this.baseLayers,this.referenceLayers)}))}clone(){const e={id:this.id,title:this.title,portalItem:this.portalItem,baseLayers:this.baseLayers.map((e=>a(e)?e.clone():e)),referenceLayers:this.referenceLayers.map((e=>a(e)?e.clone():e))};return this.loaded&&(e.loadStatus="loaded"),new S({resourceInfo:this.resourceInfo}).set(e)}read(e,r){this.resourceInfo||this._set("resourceInfo",{data:e,context:r}),super.read(e,r)}write(e,r){return e=e||{},r&&r.origin||(r={origin:"web-map",...r}),super.write(e,r),!this.loaded&&this.resourceInfo&&this.resourceInfo.data.baseMapLayers&&(e.baseMapLayers=this.resourceInfo.data.baseMapLayers.map((e=>{const r=i(e);return r.url&&h(r.url)&&(r.url=`https:${r.url}`),r.templateUrl&&h(r.templateUrl)&&(r.templateUrl=`https:${r.templateUrl}`),r}))),e}async _loadFromSource(e){const{resourceInfo:r,portalItem:t}=this;c(e);const s=[];if(r){const t=r.context?r.context.url:null;if(s.push(this._loadLayersFromJSON(r.data,t,e)),r.data.id&&!r.data.title){const e=r.data.id;s.push(w(e).then((e=>{e&&this.read({title:e},r.context)})))}}else t&&s.push(this._loadFromItem(t,e));await Promise.all(s)}async _loadLayersFromJSON(e,r,t){const s=this.resourceInfo&&this.resourceInfo.context,o=this.portalItem&&this.portalItem.portal||s&&s.portal||null,a=s&&"web-scene"===s.origin?"web-scene":"web-map",{populateOperationalLayers:i}=await import("./layers/support/layersCreator.js"),n=[];if(c(t),e.baseMapLayers&&Array.isArray(e.baseMapLayers)){const t={context:{origin:a,url:r,portal:o,layerContainerType:"basemap"},defaultLayerType:"DefaultTileLayer"},s=e=>"web-scene"===a&&"ArcGISSceneServiceLayer"===e.layerType||e.isReference,l=i(this.baseLayers,e.baseMapLayers.filter((e=>!s(e))),t);n.push(l);const p=i(this.referenceLayers,e.baseMapLayers.filter(s),t);n.push(p)}await m(n)}async _loadFromItem(e,r){const t=await e.load(r),s=await t.fetchData("json",r),o=u(e.itemUrl??"");return this._set("resourceInfo",{data:s.baseMap??{},context:{origin:"Web Scene"===e.type?"web-scene":"web-map",portal:e.portal||L.getDefault(),url:o}}),this.read(this.resourceInfo.data,this.resourceInfo.context),this.read({spatialReference:s.spatialReference},this.resourceInfo.context),this.read({title:e.title,thumbnailUrl:e.thumbnailUrl},{origin:"portal-item",portal:e.portal||L.getDefault(),url:o}),this._loadLayersFromJSON(this.resourceInfo.data,o,r)}static fromId(e){const r=I[e];if(r){if(r.deprecated){let r=null;"dark-gray"===e?r="dark-gray-vector":"gray"===e?r="gray-vector":"streets"===e?r="streets-vector":"topo"===e&&(r="topo-vector"),s(p.getLogger(_),`The ${e} basemap has entered mature support and is no longer being updated.`,{replacement:r,see:"https://arcg.is/1iq8aD",warnOnce:!0})}return S.fromJSON(r)}return null}};e([y({json:{write:{ignoreOrigin:!0,target:"baseMapLayers",writer(e,r,t,s){this._writeBaseLayers(e,r,s)}},origins:{"web-scene":{write:{ignoreOrigin:!0,target:{baseMapLayers:{type:r}},writer(e,r,t,s){this._writeBaseLayers(e,r,s)}}}}}})],U.prototype,"baseLayers",null),e([y({type:String,json:{origins:{"web-scene":{write:!0}}}})],U.prototype,"id",void 0),e([y({type:g})],U.prototype,"portalItem",void 0),e([y()],U.prototype,"referenceLayers",null),e([y({readOnly:!0})],U.prototype,"resourceInfo",void 0),e([y({type:b})],U.prototype,"spatialReference",void 0),e([y()],U.prototype,"thumbnailUrl",void 0),e([y({type:String,json:{origins:{"web-scene":{write:{isRequired:!0}}}}})],U.prototype,"title",void 0),e([f("title")],U.prototype,"writeTitle",null),U=S=e([d(_)],U);const x=U;export{x as default};
5
+ import{_ as e}from"./chunks/tslib.es6.js";import r from"./core/Collection.js";import{referenceSetter as t}from"./core/collectionUtils.js";import{deprecated as s}from"./core/deprecate.js";import{JSONSupportMixin as o}from"./core/JSONSupport.js";import{isClonable as a,clone as i}from"./core/lang.js";import n from"./core/Loadable.js";import{loadAll as l}from"./core/loadAll.js";import p from"./core/Logger.js";import{throwIfAborted as c,eachAlways as m}from"./core/promiseUtils.js";import{isProtocolRelative as h,urlToObject as u}from"./core/urlUtils.js";import{property as y}from"./core/accessorSupport/decorators/property.js";import"./core/accessorSupport/ensureType.js";import{subclass as d}from"./core/accessorSupport/decorators/subclass.js";import{writer as f}from"./core/accessorSupport/decorators/writer.js";import b from"./geometry/SpatialReference.js";import L from"./portal/Portal.js";import g from"./portal/PortalItem.js";import{getBasemapTitle as w,esriBasemapDefinitions as I}from"./support/basemapDefinitions.js";import{getLayerJSON as j}from"./webdoc/support/writeUtils.js";var S;let v=0;const _="esri.Basemap";let U=S=class extends(o(n)){constructor(e){super(e),this.id=null,this.portalItem=null,this.spatialReference=null,this.thumbnailUrl=null,this.title="Basemap",this.id=Date.now().toString(16)+"-basemap-"+v++,this.baseLayers=new r,this.referenceLayers=new r;const t=e=>{e.parent&&e.parent!==this&&"remove"in e.parent&&e.parent.remove(e),e.parent=this,"elevation"===e.type&&p.getLogger(this.declaredClass).error(`Layer '${e.title}, id:${e.id}' of type '${e.type}' is not supported as a basemap layer and will therefore be ignored.`)},s=e=>{e.parent=null};this.addHandles([this.baseLayers.on("after-add",(e=>t(e.item))),this.referenceLayers.on("after-add",(e=>t(e.item))),this.baseLayers.on("after-remove",(e=>s(e.item))),this.referenceLayers.on("after-remove",(e=>s(e.item)))])}initialize(){this.when().catch((e=>{p.getLogger(this.declaredClass).error("#load()",`Failed to load basemap (title: '${this.title}', id: '${this.id}')`,e)})),this.resourceInfo&&this.read(this.resourceInfo.data,this.resourceInfo.context)}destroy(){const e=this.baseLayers.removeAll();for(const t of e)t.destroy();const r=this.referenceLayers.removeAll();for(const t of r)t.destroy();this.baseLayers.destroy(),this.referenceLayers.destroy(),this.portalItem?.destroy(),this.portalItem=null}normalizeCtorArgs(e){return e&&"resourceInfo"in e&&(this._set("resourceInfo",e.resourceInfo),delete(e={...e}).resourceInfo),e}set baseLayers(e){this._set("baseLayers",t(e,this._get("baseLayers")))}_writeBaseLayers(e,r,t){const s=[];e?(t={...t,layerContainerType:"basemap"},this.baseLayers.forEach((e=>{const r=j(e,t.webmap?t.webmap.getLayerJSONFromResourceInfo(e):null,t);null!=r&&s.push(r)})),this.referenceLayers.forEach((e=>{const r=j(e,t.webmap?t.webmap.getLayerJSONFromResourceInfo(e):null,t);null!=r&&("scene"!==e.type&&(r.isReference=!0),s.push(r))})),r.baseMapLayers=s):r.baseMapLayers=s}set referenceLayers(e){this._set("referenceLayers",t(e,this._get("referenceLayers")))}writeTitle(e,r){r.title=e||"Basemap"}load(e){return this.addResolvingPromise(this._loadFromSource(e)),Promise.resolve(this)}loadAll(){return l(this,(e=>{e(this.baseLayers,this.referenceLayers)}))}clone(){const e={id:this.id,title:this.title,portalItem:this.portalItem,baseLayers:this.baseLayers.map((e=>a(e)?e.clone():e)),referenceLayers:this.referenceLayers.map((e=>a(e)?e.clone():e))};return this.loaded&&(e.loadStatus="loaded"),new S({resourceInfo:this.resourceInfo}).set(e)}read(e,r){this.resourceInfo||this._set("resourceInfo",{data:e,context:r}),super.read(e,r)}write(e,r){return e=e||{},r&&r.origin||(r={origin:"web-map",...r}),super.write(e,r),!this.loaded&&this.resourceInfo&&this.resourceInfo.data.baseMapLayers&&(e.baseMapLayers=this.resourceInfo.data.baseMapLayers.map((e=>{const r=i(e);return r.url&&h(r.url)&&(r.url=`https:${r.url}`),r.templateUrl&&h(r.templateUrl)&&(r.templateUrl=`https:${r.templateUrl}`),r}))),e}async _loadFromSource(e){const{resourceInfo:r,portalItem:t}=this;c(e);const s=[];if(r){const t=r.context?r.context.url:null;if(s.push(this._loadLayersFromJSON(r.data,t,e)),r.data.id&&!r.data.title){const e=r.data.id;s.push(w(e).then((e=>{e&&this.read({title:e},r.context)})))}}else t&&s.push(this._loadFromItem(t,e));await Promise.all(s)}async _loadLayersFromJSON(e,r,t){const s=this.resourceInfo&&this.resourceInfo.context,o=this.portalItem&&this.portalItem.portal||s&&s.portal||null,a=s&&"web-scene"===s.origin?"web-scene":"web-map",{populateOperationalLayers:i}=await import("./layers/support/layersCreator.js"),n=[];if(c(t),e.baseMapLayers&&Array.isArray(e.baseMapLayers)){const t={context:{origin:a,url:r,portal:o,layerContainerType:"basemap"},defaultLayerType:"DefaultTileLayer"},s=e=>"web-scene"===a&&"ArcGISSceneServiceLayer"===e.layerType||e.isReference,l=i(this.baseLayers,e.baseMapLayers.filter((e=>!s(e))),t);n.push(l);const p=i(this.referenceLayers,e.baseMapLayers.filter(s),t);n.push(p)}await m(n)}async _loadFromItem(e,r){const t=await e.load(r),s=await t.fetchData("json",r),o=u(e.itemUrl??"");return this._set("resourceInfo",{data:s.baseMap??{},context:{origin:"Web Scene"===e.type?"web-scene":"web-map",portal:e.portal||L.getDefault(),url:o}}),this.read(this.resourceInfo.data,this.resourceInfo.context),this.read({spatialReference:s.spatialReference},this.resourceInfo.context),this.read({title:e.title,thumbnailUrl:e.thumbnailUrl},{origin:"portal-item",portal:e.portal||L.getDefault(),url:o}),this._loadLayersFromJSON(this.resourceInfo.data,o,r)}static fromId(e){const r=I[e];if(!r)return null;if(r.deprecated){let r=null;"dark-gray"===e?r="dark-gray-vector":"gray"===e?r="gray-vector":"streets"===e?r="streets-vector":"topo"===e&&(r="topo-vector"),s(p.getLogger(_),`The ${e} basemap has entered mature support and is no longer being updated.`,{replacement:r,see:"https://arcg.is/1iq8aD",warnOnce:!0})}return S.fromJSON(r)}};e([y({json:{write:{ignoreOrigin:!0,target:"baseMapLayers",writer(e,r,t,s){this._writeBaseLayers(e,r,s)}},origins:{"web-scene":{write:{ignoreOrigin:!0,target:{baseMapLayers:{type:r}},writer(e,r,t,s){this._writeBaseLayers(e,r,s)}}}}}})],U.prototype,"baseLayers",null),e([y({type:String,json:{origins:{"web-scene":{write:!0}}}})],U.prototype,"id",void 0),e([y({type:g})],U.prototype,"portalItem",void 0),e([y()],U.prototype,"referenceLayers",null),e([y({readOnly:!0})],U.prototype,"resourceInfo",void 0),e([y({type:b})],U.prototype,"spatialReference",void 0),e([y()],U.prototype,"thumbnailUrl",void 0),e([y({type:String,json:{origins:{"web-scene":{write:{isRequired:!0}}}}})],U.prototype,"title",void 0),e([f("title")],U.prototype,"writeTitle",null),U=S=e([d(_)],U);const x=U;export{x 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.27/esri/copyright.txt for details.
4
4
  */
5
- import e from"../../../Graphic.js";import{ArcadeDate as t}from"../../ArcadeDate.js";import{cloneGeometry as r}from"../../kernel.js";import{SqlError as s,SqlErrorCodes as a,FeatureSetError as i,FeatureSetErrorCodes as l}from"../support/errorsupport.js";import n from"../support/FeatureSet.js";import o from"../support/IdSet.js";import{cloneField as h,FeatureServiceDatabaseType as u,layerGeometryEsriConstants as c}from"../support/shared.js";import{reformulateWithoutField as d,toWhereClause as p,translateFunctionToDatabaseSpecific as f,makeToday as g,makeDateString as N,arcadeDateToSqlString as _,convertIntervalToSql as S,combine as w,scanForField as m}from"../support/sqlUtils.js";import{unwrapOrThrow as v,assertIsSome as C}from"../../../core/maybe.js";import{WhereClause as T}from"../../../core/sql/WhereClause.js";import F from"../../../geometry/SpatialReference.js";class W{constructor(e){this.field=e,this.sqlRewritable=!1}postInitialization(e,t){}}class E extends W{constructor(e){super(e),this.sqlRewritable=!0}extractValue(e){return e.attributes[this.field.name]}rewriteSql(e){return{rewritten:this.sqlRewritable,where:e}}}class x extends W{constructor(e,t,r){super(h(e)),this.originalField=e,this.sqlRewritable=!0,this.field.name=t,this.field.alias=r}rewriteSql(e,t){return{rewritten:this.sqlRewritable,where:d(e,this.field.name,this.originalField.name,t.getFieldsIndex())}}extractValue(e){return e.attributes[this.originalField.name]}}class A extends W{constructor(e,t,r){super(e),this.codefield=t,this.lkp=r,this.reverseLkp={};for(const s in r)this.reverseLkp[r[s]]=s;this.sqlRewritable=!0}rewriteSql(e,t){const r=this.evaluateNodeToWhereClause(e.parseTree,u.Standardised,this.field.name,this.codefield instanceof T?p(this.codefield,u.Standardised):this.codefield,e.parameters);return r.includes(A.BADNESS)?{rewritten:!1,where:e}:{rewritten:this.sqlRewritable,where:T.create(r,v(t._parent).getFieldsIndex())}}evaluateNodeToWhereClause(e,r,i=null,l=null,n){let o,h,u,c;switch(e.type){case"interval":return S(this.evaluateNodeToWhereClause(e.value,r,i,l,n),e.qualifier,e.op);case"case-expression":{let t=" CASE ";"simple"===e.format&&(t+=this.evaluateNodeToWhereClause(e.operand,r,i,A.BADNESS,n));for(let s=0;s<e.clauses.length;s++)t+=" WHEN "+this.evaluateNodeToWhereClause(e.clauses[s].operand,r,i,A.BADNESS,n)+" THEN "+this.evaluateNodeToWhereClause(e.clauses[s].value,r,i,A.BADNESS,n);return null!==e.else&&(t+=" ELSE "+this.evaluateNodeToWhereClause(e.else,r,i,A.BADNESS,n)),t+=" END ",t}case"parameter":{const s=n[e.value.toLowerCase()];if("string"==typeof s)return"'"+s.toString().replace(/'/g,"''")+"'";if(s instanceof Date)return N(s,r,null);if(s instanceof t)return _(s,r,null);if(s instanceof Array){const e=[];for(let a=0;a<s.length;a++)"string"==typeof s[a]?e.push("'"+s[a].toString().replace(/'/g,"''")+"'"):s[a]instanceof Date?e.push(N(s[a],r,null)):s[a]instanceof t?e.push(_(s[a],r,null)):e.push(s[a].toString());return e}return s.toString()}case"expression-list":h=[];for(const t of e.value)h.push(this.evaluateNodeToWhereClause(t,r,i,l,n));return h;case"unary-expression":return" ( NOT "+this.evaluateNodeToWhereClause(e.expr,r,i,A.BADNESS,n)+" ) ";case"binary-expression":switch(e.operator){case"AND":return" ("+this.evaluateNodeToWhereClause(e.left,r,i,l,n)+" AND "+this.evaluateNodeToWhereClause(e.right,r,i,l,n)+") ";case"OR":return" ("+this.evaluateNodeToWhereClause(e.left,r,i,l,n)+" OR "+this.evaluateNodeToWhereClause(e.right,r,i,l,n)+") ";case"IS":if("null"!==e.right.type)throw new s(a.UnsupportedIsRhs);return" ("+this.evaluateNodeToWhereClause(e.left,r,i,l,n)+" IS NULL )";case"ISNOT":if("null"!==e.right.type)throw new s(a.UnsupportedIsRhs);return" ("+this.evaluateNodeToWhereClause(e.left,r,i,l,n)+" IS NOT NULL )";case"IN":if(o=[],"expression-list"===e.right.type){if("column-reference"===e.left.type&&e.left.column.toUpperCase()===this.field.name.toUpperCase()){const t=[];let s=!0;for(const r of e.right.value){if("string"!==r.type){s=!1;break}if(void 0===this.lkp[r.value]){s=!1;break}t.push(this.lkp[r.value].toString())}if(s)return" ("+this.evaluateNodeToWhereClause(e.left,r,i,l,n)+" IN ("+t.join(",")+")) "}return o=this.evaluateNodeToWhereClause(e.right,r,i,l,n)," ("+this.evaluateNodeToWhereClause(e.left,r,i,l,n)+" IN ("+o.join(",")+")) "}return c=this.evaluateNodeToWhereClause(e.right,r,i,l,n),c instanceof Array?" ("+this.evaluateNodeToWhereClause(e.left,r,i,l,n)+" IN ("+c.join(",")+")) ":" ("+this.evaluateNodeToWhereClause(e.left,r,i,l,n)+" IN ("+c+")) ";case"NOT IN":if(o=[],"expression-list"===e.right.type){if("column-reference"===e.left.type&&e.left.column.toUpperCase()===this.field.name.toUpperCase()){const t=[];let s=!0;for(const r of e.right.value){if("string"!==r.type){s=!1;break}if(void 0===this.lkp[r.value]){s=!1;break}t.push(this.lkp[r.value].toString())}if(s)return" ("+this.evaluateNodeToWhereClause(e.left,r,i,l,n)+" NOT IN ("+t.join(",")+")) "}return o=this.evaluateNodeToWhereClause(e.right,r,i,l,n)," ("+this.evaluateNodeToWhereClause(e.left,r,i,l,n)+" NOT IN ("+o.join(",")+")) "}return c=this.evaluateNodeToWhereClause(e.right,r,i,l,n),c instanceof Array?" ("+this.evaluateNodeToWhereClause(e.left,r,i,l,n)+" NOT IN ("+c.join(",")+")) ":" ("+this.evaluateNodeToWhereClause(e.left,r,i,l,n)+" NOT IN ("+c+")) ";case"BETWEEN":return u=this.evaluateNodeToWhereClause(e.right,r,i,A.BADNESS,n)," ("+this.evaluateNodeToWhereClause(e.left,r,i,A.BADNESS,n)+" BETWEEN "+u[0]+" AND "+u[1]+" ) ";case"NOTBETWEEN":return u=this.evaluateNodeToWhereClause(e.right,r,i,A.BADNESS,n)," ("+this.evaluateNodeToWhereClause(e.left,r,i,A.BADNESS,n)+" NOT BETWEEN "+u[0]+" AND "+u[1]+" ) ";case"LIKE":return""!==e.escape?" ("+this.evaluateNodeToWhereClause(e.left,r,i,A.BADNESS,n)+" LIKE "+this.evaluateNodeToWhereClause(e.right,r,i,A.BADNESS,n)+" ESCAPE '"+e.escape+"') ":" ("+this.evaluateNodeToWhereClause(e.left,r,i,A.BADNESS,n)+" LIKE "+this.evaluateNodeToWhereClause(e.right,r,i,A.BADNESS,n)+") ";case"NOT LIKE":return""!==e.escape?" ("+this.evaluateNodeToWhereClause(e.left,r,i,A.BADNESS,n)+" NOT LIKE "+this.evaluateNodeToWhereClause(e.right,r,i,A.BADNESS,n)+" ESCAPE '"+e.escape+"') ":" ("+this.evaluateNodeToWhereClause(e.left,r,i,A.BADNESS,n)+" NOT LIKE "+this.evaluateNodeToWhereClause(e.right,r,i,A.BADNESS,n)+") ";case"<>":case"=":if("column-reference"===e.left.type&&"string"===e.right.type){if(e.left.column.toUpperCase()===this.field.name.toUpperCase()&&void 0!==this.lkp[e.right.value.toString()])return" ("+l+" "+e.operator+" "+this.lkp[e.right.value.toString()].toString()+") "}else if("column-reference"===e.right.type&&"string"===e.left.type&&e.right.column.toUpperCase()===this.field.name.toUpperCase())return" ("+this.lkp[e.right.value.toString()].toString()+" "+e.operator+" "+l+") ";return" ("+this.evaluateNodeToWhereClause(e.left,r,i,A.BADNESS,n)+" "+e.operator+" "+this.evaluateNodeToWhereClause(e.right,r,i,A.BADNESS,n)+") ";case"<":case">":case">=":case"<=":case"*":case"-":case"+":case"/":case"||":return" ("+this.evaluateNodeToWhereClause(e.left,r,i,A.BADNESS,n)+" "+e.operator+" "+this.evaluateNodeToWhereClause(e.right,r,i,A.BADNESS,n)+") "}case"null":return"null";case"boolean":return!0===e.value?"1":"0";case"string":return"'"+e.value.toString().replace(/'/g,"''")+"'";case"timestamp":case"date":return N(e.value,r,null);case"number":return e.value.toString();case"current-time":return g("date"===e.mode,r);case"column-reference":return i&&i.toLowerCase()===e.column.toLowerCase()?"("+l+")":e.column;case"data-type":return e.value;case"function":{const t=this.evaluateNodeToWhereClause(e.args,r,i,A.BADNESS,n);return f(e.name,t,r)}}throw new s(a.UnsupportedSyntax,{node:e.type})}extractValue(e){return this.codefield instanceof T?this.reverseLkp[this.codefield.calculateValueCompiled(e)]:this.reverseLkp[e.attributes[this.codefield]]}}A.BADNESS="_!!!_BAD_LKP_!!!!";class y extends W{constructor(e,t){super(e),this._sql=t}rewriteSql(e,t){return{rewritten:!0,where:d(e,this.field.name,p(this._sql,u.Standardised),t.getFieldsIndex())}}extractValue(e){return this._sql.calculateValueCompiled(e)}}class D extends n{static findField(e,t){for(const r of e)if(r.name.toLowerCase()===t.toString().toLowerCase())return r;return null}constructor(e){super(e),this._calcFunc=null,this.declaredClass="esri.arcade.featureset.actions.Adapted",this.adaptedFields=[],this._extraFilter=null,this._extraFilter=e.extraFilter,this._parent=e.parentfeatureset,this._maxProcessing=30,this.adaptedFields=e.adaptedFields}_initialiseFeatureSet(){null!==this._parent?(this.geometryType=this._parent.geometryType,this.objectIdField=this._parent.objectIdField,this.globalIdField=this._parent.globalIdField,this.spatialReference=this._parent.spatialReference,this.hasM=this._parent.hasM,this.hasZ=this._parent.hasZ,this.typeIdField=this._parent.typeIdField,this.types=this._parent.types):(this.spatialReference=new F({wkid:4326}),this.objectIdField="",this.globalIdField="",this.geometryType=c.point,this.typeIdField="",this.types=null),this.fields=[];for(const e of this.adaptedFields)e.postInitialization(this,this._parent),this.fields.push(e.field)}async _getSet(e){if(null===this._wset){await this._ensureLoaded();let t=null;return t=this._extraFilter?await this._getFilteredSet("",null,null,null,e):await(this._parent?._getSet(e)),this._checkCancelled(e),C(t),this._wset=new o(t._candidates.slice(0),t._known.slice(0),t._ordered,this._clonePageDefinition(t.pagesDefinition)),this._wset}return this._wset}_isInFeatureSet(e){return v(this._parent)._isInFeatureSet(e)}async _getFeatures(t,s,a,i){const l=[];-1!==s&&void 0===this._featureCache[s]&&l.push(s);const n=this._maxQueryRate();if(!0===this._checkIfNeedToExpandKnownPage(t,n))return await this._expandPagedSet(t,n,0,0,i),this._getFeatures(t,s,a,i);let h=0;for(let e=t._lastFetchedIndex;e<t._known.length&&(h++,h<=a&&(t._lastFetchedIndex+=1),!(void 0===this._featureCache[t._known[e]]&&(t._known[e]!==s&&l.push(t._known[e]),l.length>=n)));e++);if(0===l.length)return"success";t=new o([],l,t._ordered,null);const u=Math.min(l.length,a);await(this._parent?._getFeatures(t,-1,u,i)),this._checkCancelled(i);const c=[];for(let e=0;e<u;e++){const t=this._parent?._featureFromCache(l[e]);void 0!==t&&c.push({geometry:t.geometry,attributes:t.attributes,id:l[e]})}for(const o of c){const t=[];for(const e of this.adaptedFields)t[e.field.name]=e.extractValue(o);this._featureCache[o.id]=new e({attributes:t,geometry:r(o.geometry)})}return"success"}async _fetchAndRefineFeatures(){throw new i(l.NeverReach)}async _getFilteredSet(e,t,r,s,a){let i=!1;const l=this._reformulateWithoutAdaptions(r);i=l.cannot,r=l.where;let n=!1;if(null!==s){n=!0;const e=[];for(const t of this.adaptedFields)if(!(t instanceof E)&&!0===s.scanForField(t.field.name)){if(!(t instanceof x)){s=null,n=!1;break}e.push({field:t.field.name,newfield:t.originalField.name})}s&&e.length>0&&(s=s.replaceFields(e))}null!==r?null!==this._extraFilter&&(r=w(this._extraFilter,r)):r=this._extraFilter,await this._ensureLoaded();const h=await v(this._parent)._getFilteredSet(e,t,r,s,a);let u;return this._checkCancelled(a),u=!0===i?new o(h._candidates.slice(0).concat(h._known.slice(0)),[],!0===n&&h._ordered,this._clonePageDefinition(h.pagesDefinition)):new o(h._candidates.slice(0),h._known.slice(0),!0===n&&h._ordered,this._clonePageDefinition(h.pagesDefinition)),u}_reformulateWithoutAdaptions(e){const t={cannot:!1,where:e};if(null!==e)for(const r of this.adaptedFields)if(!0===m(e,r.field.name)){const s=r.rewriteSql(e,this);if(!0!==s.rewritten){t.cannot=!0,t.where=null;break}t.where=s.where}return t}async _stat(e,t,r,s,a,i,l){let n=!1,o=this._reformulateWithoutAdaptions(t);if(n=o.cannot,t=o.where,o=this._reformulateWithoutAdaptions(a),n=n||o.cannot,null!==(a=o.where)?null!==this._extraFilter&&(a=w(this._extraFilter,a)):a=this._extraFilter,!0===n)return null===a&&""===r&&null===s?this._manualStat(e,t,i,l):{calculated:!1};const h=await v(this._parent)._stat(e,t,r,s,a,i,l);return!1===h.calculated?null===a&&""===r&&null===s?this._manualStat(e,t,i,l):{calculated:!1}:h}async _canDoAggregates(e,t,r,s,a){if(null===this._parent)return!1;for(let n=0;n<e.length;n++)for(const t of this.adaptedFields)if(e[n].toLowerCase()===t.field.name.toLowerCase()&&!(t instanceof E))return!1;const i=[];for(let n=0;n<t.length;n++){const e=t[n];if(null!==e.workingexpr){const t=this._reformulateWithoutAdaptions(e.workingexpr);if(t.cannot)return!1;const r=e.clone();r.workingexpr=t.where,i.push(r)}else i.push(e)}const l=this._reformulateWithoutAdaptions(a);return!l.cannot&&(null!==(a=l.where)?null!==this._extraFilter&&(a=w(this._extraFilter,a)):a=this._extraFilter,this._parent._canDoAggregates(e,i,r,s,a))}async _getAggregatePagesDataSourceDefinition(e,t,r,s,a,n,o){if(null===this._parent)throw new i(l.NeverReach);const h=[];for(let c=0;c<t.length;c++){const e=t[c];if(null!==e.workingexpr){const t=this._reformulateWithoutAdaptions(e.workingexpr);if(t.cannot)throw new i(l.NeverReach);const r=e.clone();r.workingexpr=t.where,h.push(r)}else h.push(e)}const u=this._reformulateWithoutAdaptions(a);if(u.cannot)throw new i(l.NeverReach);return null!==(a=u.where)?null!==this._extraFilter&&(a=w(this._extraFilter,a)):a=this._extraFilter,this._parent._getAggregatePagesDataSourceDefinition(e,h,r,s,a,n,o)}}export{D as AdaptedFeatureSet,W as AdaptedField,x as FieldRename,E as OriginalField,y as SqlExpressionAdapted,A as StringToCodeAdapted};
5
+ import e from"../../../Graphic.js";import{ArcadeDate as t}from"../../ArcadeDate.js";import{cloneGeometry as r}from"../../kernel.js";import{SqlError as s,SqlErrorCodes as a,FeatureSetError as i,FeatureSetErrorCodes as l}from"../support/errorsupport.js";import n from"../support/FeatureSet.js";import o from"../support/IdSet.js";import{cloneField as h,FeatureServiceDatabaseType as u,layerGeometryEsriConstants as c}from"../support/shared.js";import{reformulateWithoutField as d,toWhereClause as p,translateFunctionToDatabaseSpecific as f,makeToday as g,makeDateString as N,arcadeDateToSqlString as _,convertIntervalToSql as S,combine as w,scanForField as m}from"../support/sqlUtils.js";import{unwrapOrThrow as v,assertIsSome as C}from"../../../core/maybe.js";import{WhereClause as T}from"../../../core/sql/WhereClause.js";import F from"../../../geometry/SpatialReference.js";class W{constructor(e){this.field=e,this.sqlRewritable=!1}postInitialization(e,t){}}class A extends W{constructor(e){super(e),this.sqlRewritable=!0}extractValue(e){return e.attributes[this.field.name]}rewriteSql(e){return{rewritten:this.sqlRewritable,where:e}}}class E extends W{constructor(e,t,r){super(h(e)),this.originalField=e,this.sqlRewritable=!0,this.field.name=t,this.field.alias=r}rewriteSql(e,t){return{rewritten:this.sqlRewritable,where:d(e,this.field.name,this.originalField.name,t.getFieldsIndex())}}extractValue(e){return e.attributes[this.originalField.name]}}class x extends W{constructor(e,t,r){super(e),this.codefield=t,this.lkp=r,this.reverseLkp={};for(const s in r)this.reverseLkp[r[s]]=s;this.sqlRewritable=!0}rewriteSql(e,t){const r=this.evaluateNodeToWhereClause(e.parseTree,u.Standardised,this.field.name,this.codefield instanceof T?p(this.codefield,u.Standardised):this.codefield,e.parameters);return r.includes(x.BADNESS)?{rewritten:!1,where:e}:{rewritten:this.sqlRewritable,where:T.create(r,v(t._parent).getFieldsIndex())}}evaluateNodeToWhereClause(e,r,i=null,l=null,n){let o,h,u,c;switch(e.type){case"interval":return S(this.evaluateNodeToWhereClause(e.value,r,i,l,n),e.qualifier,e.op);case"case-expression":{let t=" CASE ";"simple"===e.format&&(t+=this.evaluateNodeToWhereClause(e.operand,r,i,x.BADNESS,n));for(let s=0;s<e.clauses.length;s++)t+=" WHEN "+this.evaluateNodeToWhereClause(e.clauses[s].operand,r,i,x.BADNESS,n)+" THEN "+this.evaluateNodeToWhereClause(e.clauses[s].value,r,i,x.BADNESS,n);return null!==e.else&&(t+=" ELSE "+this.evaluateNodeToWhereClause(e.else,r,i,x.BADNESS,n)),t+=" END ",t}case"parameter":{const s=n[e.value.toLowerCase()];if("string"==typeof s)return"'"+s.toString().replaceAll("'","''")+"'";if(s instanceof Date)return N(s,r,null);if(s instanceof t)return _(s,r,null);if(s instanceof Array){const e=[];for(let a=0;a<s.length;a++)"string"==typeof s[a]?e.push("'"+s[a].toString().replaceAll("'","''")+"'"):s[a]instanceof Date?e.push(N(s[a],r,null)):s[a]instanceof t?e.push(_(s[a],r,null)):e.push(s[a].toString());return e}return s.toString()}case"expression-list":h=[];for(const t of e.value)h.push(this.evaluateNodeToWhereClause(t,r,i,l,n));return h;case"unary-expression":return" ( NOT "+this.evaluateNodeToWhereClause(e.expr,r,i,x.BADNESS,n)+" ) ";case"binary-expression":switch(e.operator){case"AND":return" ("+this.evaluateNodeToWhereClause(e.left,r,i,l,n)+" AND "+this.evaluateNodeToWhereClause(e.right,r,i,l,n)+") ";case"OR":return" ("+this.evaluateNodeToWhereClause(e.left,r,i,l,n)+" OR "+this.evaluateNodeToWhereClause(e.right,r,i,l,n)+") ";case"IS":if("null"!==e.right.type)throw new s(a.UnsupportedIsRhs);return" ("+this.evaluateNodeToWhereClause(e.left,r,i,l,n)+" IS NULL )";case"ISNOT":if("null"!==e.right.type)throw new s(a.UnsupportedIsRhs);return" ("+this.evaluateNodeToWhereClause(e.left,r,i,l,n)+" IS NOT NULL )";case"IN":if(o=[],"expression-list"===e.right.type){if("column-reference"===e.left.type&&e.left.column.toUpperCase()===this.field.name.toUpperCase()){const t=[];let s=!0;for(const r of e.right.value){if("string"!==r.type){s=!1;break}if(void 0===this.lkp[r.value]){s=!1;break}t.push(this.lkp[r.value].toString())}if(s)return" ("+this.evaluateNodeToWhereClause(e.left,r,i,l,n)+" IN ("+t.join(",")+")) "}return o=this.evaluateNodeToWhereClause(e.right,r,i,l,n)," ("+this.evaluateNodeToWhereClause(e.left,r,i,l,n)+" IN ("+o.join(",")+")) "}return c=this.evaluateNodeToWhereClause(e.right,r,i,l,n),c instanceof Array?" ("+this.evaluateNodeToWhereClause(e.left,r,i,l,n)+" IN ("+c.join(",")+")) ":" ("+this.evaluateNodeToWhereClause(e.left,r,i,l,n)+" IN ("+c+")) ";case"NOT IN":if(o=[],"expression-list"===e.right.type){if("column-reference"===e.left.type&&e.left.column.toUpperCase()===this.field.name.toUpperCase()){const t=[];let s=!0;for(const r of e.right.value){if("string"!==r.type){s=!1;break}if(void 0===this.lkp[r.value]){s=!1;break}t.push(this.lkp[r.value].toString())}if(s)return" ("+this.evaluateNodeToWhereClause(e.left,r,i,l,n)+" NOT IN ("+t.join(",")+")) "}return o=this.evaluateNodeToWhereClause(e.right,r,i,l,n)," ("+this.evaluateNodeToWhereClause(e.left,r,i,l,n)+" NOT IN ("+o.join(",")+")) "}return c=this.evaluateNodeToWhereClause(e.right,r,i,l,n),c instanceof Array?" ("+this.evaluateNodeToWhereClause(e.left,r,i,l,n)+" NOT IN ("+c.join(",")+")) ":" ("+this.evaluateNodeToWhereClause(e.left,r,i,l,n)+" NOT IN ("+c+")) ";case"BETWEEN":return u=this.evaluateNodeToWhereClause(e.right,r,i,x.BADNESS,n)," ("+this.evaluateNodeToWhereClause(e.left,r,i,x.BADNESS,n)+" BETWEEN "+u[0]+" AND "+u[1]+" ) ";case"NOTBETWEEN":return u=this.evaluateNodeToWhereClause(e.right,r,i,x.BADNESS,n)," ("+this.evaluateNodeToWhereClause(e.left,r,i,x.BADNESS,n)+" NOT BETWEEN "+u[0]+" AND "+u[1]+" ) ";case"LIKE":return""!==e.escape?" ("+this.evaluateNodeToWhereClause(e.left,r,i,x.BADNESS,n)+" LIKE "+this.evaluateNodeToWhereClause(e.right,r,i,x.BADNESS,n)+" ESCAPE '"+e.escape+"') ":" ("+this.evaluateNodeToWhereClause(e.left,r,i,x.BADNESS,n)+" LIKE "+this.evaluateNodeToWhereClause(e.right,r,i,x.BADNESS,n)+") ";case"NOT LIKE":return""!==e.escape?" ("+this.evaluateNodeToWhereClause(e.left,r,i,x.BADNESS,n)+" NOT LIKE "+this.evaluateNodeToWhereClause(e.right,r,i,x.BADNESS,n)+" ESCAPE '"+e.escape+"') ":" ("+this.evaluateNodeToWhereClause(e.left,r,i,x.BADNESS,n)+" NOT LIKE "+this.evaluateNodeToWhereClause(e.right,r,i,x.BADNESS,n)+") ";case"<>":case"=":if("column-reference"===e.left.type&&"string"===e.right.type){if(e.left.column.toUpperCase()===this.field.name.toUpperCase()&&void 0!==this.lkp[e.right.value.toString()])return" ("+l+" "+e.operator+" "+this.lkp[e.right.value.toString()].toString()+") "}else if("column-reference"===e.right.type&&"string"===e.left.type&&e.right.column.toUpperCase()===this.field.name.toUpperCase())return" ("+this.lkp[e.right.value.toString()].toString()+" "+e.operator+" "+l+") ";return" ("+this.evaluateNodeToWhereClause(e.left,r,i,x.BADNESS,n)+" "+e.operator+" "+this.evaluateNodeToWhereClause(e.right,r,i,x.BADNESS,n)+") ";case"<":case">":case">=":case"<=":case"*":case"-":case"+":case"/":case"||":return" ("+this.evaluateNodeToWhereClause(e.left,r,i,x.BADNESS,n)+" "+e.operator+" "+this.evaluateNodeToWhereClause(e.right,r,i,x.BADNESS,n)+") "}case"null":return"null";case"boolean":return!0===e.value?"1":"0";case"string":return"'"+e.value.toString().replaceAll("'","''")+"'";case"timestamp":case"date":return N(e.value,r,null);case"number":return e.value.toString();case"current-time":return g("date"===e.mode,r);case"column-reference":return i&&i.toLowerCase()===e.column.toLowerCase()?"("+l+")":e.column;case"data-type":return e.value;case"function":{const t=this.evaluateNodeToWhereClause(e.args,r,i,x.BADNESS,n);return f(e.name,t,r)}}throw new s(a.UnsupportedSyntax,{node:e.type})}extractValue(e){return this.codefield instanceof T?this.reverseLkp[this.codefield.calculateValueCompiled(e)]:this.reverseLkp[e.attributes[this.codefield]]}}x.BADNESS="_!!!_BAD_LKP_!!!!";class y extends W{constructor(e,t){super(e),this._sql=t}rewriteSql(e,t){return{rewritten:!0,where:d(e,this.field.name,p(this._sql,u.Standardised),t.getFieldsIndex())}}extractValue(e){return this._sql.calculateValueCompiled(e)}}class D extends n{static findField(e,t){for(const r of e)if(r.name.toLowerCase()===t.toString().toLowerCase())return r;return null}constructor(e){super(e),this._calcFunc=null,this.declaredClass="esri.arcade.featureset.actions.Adapted",this.adaptedFields=[],this._extraFilter=null,this._extraFilter=e.extraFilter,this._parent=e.parentfeatureset,this._maxProcessing=30,this.adaptedFields=e.adaptedFields}_initialiseFeatureSet(){null!==this._parent?(this.geometryType=this._parent.geometryType,this.objectIdField=this._parent.objectIdField,this.globalIdField=this._parent.globalIdField,this.spatialReference=this._parent.spatialReference,this.hasM=this._parent.hasM,this.hasZ=this._parent.hasZ,this.typeIdField=this._parent.typeIdField,this.types=this._parent.types):(this.spatialReference=new F({wkid:4326}),this.objectIdField="",this.globalIdField="",this.geometryType=c.point,this.typeIdField="",this.types=null),this.fields=[];for(const e of this.adaptedFields)e.postInitialization(this,this._parent),this.fields.push(e.field)}async _getSet(e){if(null===this._wset){await this._ensureLoaded();let t=null;return t=this._extraFilter?await this._getFilteredSet("",null,null,null,e):await(this._parent?._getSet(e)),this._checkCancelled(e),C(t),this._wset=new o(t._candidates.slice(0),t._known.slice(0),t._ordered,this._clonePageDefinition(t.pagesDefinition)),this._wset}return this._wset}_isInFeatureSet(e){return v(this._parent)._isInFeatureSet(e)}async _getFeatures(t,s,a,i){const l=[];-1!==s&&void 0===this._featureCache[s]&&l.push(s);const n=this._maxQueryRate();if(!0===this._checkIfNeedToExpandKnownPage(t,n))return await this._expandPagedSet(t,n,0,0,i),this._getFeatures(t,s,a,i);let h=0;for(let e=t._lastFetchedIndex;e<t._known.length&&(h++,h<=a&&(t._lastFetchedIndex+=1),!(void 0===this._featureCache[t._known[e]]&&(t._known[e]!==s&&l.push(t._known[e]),l.length>=n)));e++);if(0===l.length)return"success";t=new o([],l,t._ordered,null);const u=Math.min(l.length,a);await(this._parent?._getFeatures(t,-1,u,i)),this._checkCancelled(i);const c=[];for(let e=0;e<u;e++){const t=this._parent?._featureFromCache(l[e]);void 0!==t&&c.push({geometry:t.geometry,attributes:t.attributes,id:l[e]})}for(const o of c){const t=[];for(const e of this.adaptedFields)t[e.field.name]=e.extractValue(o);this._featureCache[o.id]=new e({attributes:t,geometry:r(o.geometry)})}return"success"}async _fetchAndRefineFeatures(){throw new i(l.NeverReach)}async _getFilteredSet(e,t,r,s,a){let i=!1;const l=this._reformulateWithoutAdaptions(r);i=l.cannot,r=l.where;let n=!1;if(null!==s){n=!0;const e=[];for(const t of this.adaptedFields)if(!(t instanceof A)&&!0===s.scanForField(t.field.name)){if(!(t instanceof E)){s=null,n=!1;break}e.push({field:t.field.name,newfield:t.originalField.name})}s&&e.length>0&&(s=s.replaceFields(e))}null!==r?null!==this._extraFilter&&(r=w(this._extraFilter,r)):r=this._extraFilter,await this._ensureLoaded();const h=await v(this._parent)._getFilteredSet(e,t,r,s,a);let u;return this._checkCancelled(a),u=!0===i?new o(h._candidates.slice(0).concat(h._known.slice(0)),[],!0===n&&h._ordered,this._clonePageDefinition(h.pagesDefinition)):new o(h._candidates.slice(0),h._known.slice(0),!0===n&&h._ordered,this._clonePageDefinition(h.pagesDefinition)),u}_reformulateWithoutAdaptions(e){const t={cannot:!1,where:e};if(null!==e)for(const r of this.adaptedFields)if(!0===m(e,r.field.name)){const s=r.rewriteSql(e,this);if(!0!==s.rewritten){t.cannot=!0,t.where=null;break}t.where=s.where}return t}async _stat(e,t,r,s,a,i,l){let n=!1,o=this._reformulateWithoutAdaptions(t);if(n=o.cannot,t=o.where,o=this._reformulateWithoutAdaptions(a),n=n||o.cannot,null!==(a=o.where)?null!==this._extraFilter&&(a=w(this._extraFilter,a)):a=this._extraFilter,!0===n)return null===a&&""===r&&null===s?this._manualStat(e,t,i,l):{calculated:!1};const h=await v(this._parent)._stat(e,t,r,s,a,i,l);return!1===h.calculated?null===a&&""===r&&null===s?this._manualStat(e,t,i,l):{calculated:!1}:h}async _canDoAggregates(e,t,r,s,a){if(null===this._parent)return!1;for(let n=0;n<e.length;n++)for(const t of this.adaptedFields)if(e[n].toLowerCase()===t.field.name.toLowerCase()&&!(t instanceof A))return!1;const i=[];for(let n=0;n<t.length;n++){const e=t[n];if(null!==e.workingexpr){const t=this._reformulateWithoutAdaptions(e.workingexpr);if(t.cannot)return!1;const r=e.clone();r.workingexpr=t.where,i.push(r)}else i.push(e)}const l=this._reformulateWithoutAdaptions(a);return!l.cannot&&(null!==(a=l.where)?null!==this._extraFilter&&(a=w(this._extraFilter,a)):a=this._extraFilter,this._parent._canDoAggregates(e,i,r,s,a))}async _getAggregatePagesDataSourceDefinition(e,t,r,s,a,n,o){if(null===this._parent)throw new i(l.NeverReach);const h=[];for(let c=0;c<t.length;c++){const e=t[c];if(null!==e.workingexpr){const t=this._reformulateWithoutAdaptions(e.workingexpr);if(t.cannot)throw new i(l.NeverReach);const r=e.clone();r.workingexpr=t.where,h.push(r)}else h.push(e)}const u=this._reformulateWithoutAdaptions(a);if(u.cannot)throw new i(l.NeverReach);return null!==(a=u.where)?null!==this._extraFilter&&(a=w(this._extraFilter,a)):a=this._extraFilter,this._parent._getAggregatePagesDataSourceDefinition(e,h,r,s,a,n,o)}}export{D as AdaptedFeatureSet,W as AdaptedField,E as FieldRename,A as OriginalField,y as SqlExpressionAdapted,x as StringToCodeAdapted};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.27/esri/copyright.txt for details.
4
4
  */
5
- import{ArcadeDate as e}from"../../ArcadeDate.js";import{FeatureServiceDatabaseType as r,isDate as t,isArcadeDate as a}from"./shared.js";import{WhereClause as n}from"../../../core/sql/WhereClause.js";import{SqlError as s,SqlErrorCodes as c}from"./errorsupport.js";import{convertTimeReference as o}from"../../arcadeTimeUtils.js";import{DateTime as i}from"luxon";function u(e,r){return y(e?.parseTree,r,e?.parameters)}function l(e,r,t,a){return d(n.create(e,r.fieldsIndex),t,a)}function d(e,t,a){const n=o(t),s=o(a);return y(e.parseTree,r.Standardised,null,null,null,{inputTimeReference:n,outputTimeReference:s})}function f(e,r,t){return y(e,r,t)}function p(e,t,a,s){return n.create(y(e.parseTree,r.Standardised,e.parameters,t,a),s)}function m(e,t,a="AND"){return n.create("(("+u(e,r.Standardised)+")"+a+"("+u(t,r.Standardised)+"))",e.fieldsIndex)}function y(e,n,o,i=null,u=null,l=null){let d,f,p,m;switch(e.type){case"interval":return R(y(e.value,n,o,i,u,l),e.qualifier,e.op);case"case-expression":{let r=" CASE ";"simple"===e.format&&(r+=y(e.operand,n,o,i,u,l));for(let t=0;t<e.clauses.length;t++)r+=" WHEN "+y(e.clauses[t].operand,n,o,i,u,l)+" THEN "+y(e.clauses[t].value,n,o,i,u,l);return null!==e.else&&(r+=" ELSE "+y(e.else,n,o,i,u,l)),r+=" END ",r}case"parameter":{const r=o[e.value.toLowerCase()];if("string"==typeof r){return"'"+o[e.value.toLowerCase()].toString().replace(/'/g,"''")+"'"}if(t(r))return T(r,n,l);if(a(r))return h(r,n,l);if(r instanceof Array){const e=[];for(let s=0;s<r.length;s++)"string"==typeof r[s]?e.push("'"+r[s].toString().replace(/'/g,"''")+"'"):t(r[s])?e.push(T(r[s],n,l)):a(r[s])?e.push(h(r[s],n,l)):e.push(r[s].toString());return e}return r.toString()}case"expression-list":f=[];for(const r of e.value)f.push(y(r,n,o,i,u,l));return f;case"unary-expression":return" ( NOT "+y(e.expr,n,o,i,u,l)+" ) ";case"binary-expression":switch(e.operator){case"AND":return" ("+y(e.left,n,o,i,u,l)+" AND "+y(e.right,n,o,i,u,l)+") ";case"OR":return" ("+y(e.left,n,o,i,u,l)+" OR "+y(e.right,n,o,i,u,l)+") ";case"IS":if("null"!==e.right.type)throw new s(c.UnsupportedIsRhs);return" ("+y(e.left,n,o,i,u,l)+" IS NULL )";case"ISNOT":if("null"!==e.right.type)throw new s(c.UnsupportedIsRhs);return" ("+y(e.left,n,o,i,u,l)+" IS NOT NULL )";case"IN":return d=[],"expression-list"===e.right.type?(d=y(e.right,n,o,i,u)," ("+y(e.left,n,o,i,u,l)+" IN ("+d.join(",")+")) "):(m=y(e.right,n,o,i,u,l),m instanceof Array?" ("+y(e.left,n,o,i,u,l)+" IN ("+m.join(",")+")) ":" ("+y(e.left,n,o,i,u,l)+" IN ("+m+")) ");case"NOT IN":return d=[],"expression-list"===e.right.type?(d=y(e.right,n,o,i,u)," ("+y(e.left,n,o,i,u,l)+" NOT IN ("+d.join(",")+")) "):(m=y(e.right,n,o,i,u,l),m instanceof Array?" ("+y(e.left,n,o,i,u,l)+" NOT IN ("+m.join(",")+")) ":" ("+y(e.left,n,o,i,u,l)+" NOT IN ("+m+")) ");case"BETWEEN":return p=y(e.right,n,o,i,u,l)," ("+y(e.left,n,o,i,u,l)+" BETWEEN "+p[0]+" AND "+p[1]+" ) ";case"NOTBETWEEN":return p=y(e.right,n,o,i,u,l)," ("+y(e.left,n,o,i,u,l)+" NOT BETWEEN "+p[0]+" AND "+p[1]+" ) ";case"LIKE":return""!==e.escape?" ("+y(e.left,n,o,i,u,l)+" LIKE "+y(e.right,n,o,i,u,l)+" ESCAPE '"+e.escape+"') ":" ("+y(e.left,n,o,i,u,l)+" LIKE "+y(e.right,n,o,i,u,l)+") ";case"NOT LIKE":return""!==e.escape?" ("+y(e.left,n,o,i,u,l)+" NOT LIKE "+y(e.right,n,o,i,u,l)+" ESCAPE '"+e.escape+"') ":" ("+y(e.left,n,o,i,u,l)+" NOT LIKE "+y(e.right,n,o,i,u,l)+") ";case"<>":case"<":case">":case">=":case"<=":case"=":case"*":case"-":case"+":case"/":return" ("+y(e.left,n,o,i,u,l)+" "+e.operator+" "+y(e.right,n,o,i,u,l)+") ";case"||":return" ("+y(e.left,n,o,i,u,l)+" "+(n===r.SqlServer?"+":e.operator)+" "+y(e.right,n,o,i,u,l)+") "}throw new s(c.UnsupportedOperator,{operator:e.operator});case"null":return"null";case"boolean":return!0===e.value?"1":"0";case"string":return"'"+e.value.toString().replace(/'/g,"''")+"'";case"timestamp":case"date":return T(e.value,n,l);case"number":return e.value.toString();case"current-time":return L("date"===e.mode,n);case"column-reference":return i&&i.toLowerCase()===e.column.toLowerCase()?"("+u+")":e.column;case"data-type":return e.value;case"function":{const r=y(e.args,n,o,i,u,l);return g(e.name,r,n)}}throw new s(c.UnsupportedSyntax,{node:e.type})}function g(e,t,a){switch(e.toLowerCase().trim()){case"cos":case"sin":case"tan":case"cosh":case"tanh":case"sinh":case"acos":case"asin":case"atan":case"floor":case"log10":case"log":case"abs":if(1!==t.length)throw new s(c.InvalidFunctionParameters,{function:e.toLowerCase().trim()});return`${e.toUpperCase().trim()}(${t[0]})`;case"ceiling":case"ceil":if(1!==t.length)throw new s(c.InvalidFunctionParameters,{function:"ceiling"});switch(a){case r.Standardised:case r.StandardisedNoInterval:}return"CEILING("+t[0]+")";case"mod":case"power":case"nullif":if(2!==t.length)throw new s(c.InvalidFunctionParameters,{function:e.toLowerCase().trim()});return`${e.toUpperCase().trim()}(${t[0]},${t[1]})`;case"round":if(2===t.length)return"ROUND("+t[0]+","+t[1]+")";if(1===t.length)return"ROUND("+t[0]+")";throw new s(c.InvalidFunctionParameters,{function:"round"});case"truncate":if(t.length<1||t.length>2)throw new s(c.InvalidFunctionParameters,{function:"truncate"});return a===r.SqlServer?"ROUND("+t[0]+(1===t.length?"0":","+t[1])+",1)":"TRUNCATE("+t[0]+(1===t.length?")":","+t[1]+")");case"char_length":case"len":if(1!==t.length)throw new s(c.InvalidFunctionParameters,{function:"char_length"});switch(a){case r.SqlServer:return"LEN("+t[0]+")";case r.Oracle:return"LENGTH("+t[0]+")";default:return"CHAR_LENGTH("+t[0]+")"}case"coalesce":case"concat":{if(t.length<1)throw new s(c.InvalidFunctionParameters,{function:e.toLowerCase()});let r=e.toUpperCase().trim()+"(";for(let e=0;e<t.length;e++)0!==e&&(r+=","),r+=t[e];return r+=")",r}case"lower":case"lcase":if(1!==t.length)throw new s(c.InvalidFunctionParameters,{function:"lower"});return"LOWER("+t[0]+")";case"upper":case"ucase":if(1!==t.length)throw new s(c.InvalidFunctionParameters,{function:"upper"});return"UPPER("+t[0]+")";case"substring":{let e="";switch(a){case r.Oracle:return e="SUBSTR("+t[0]+","+t[1],3===t.length&&(e+=","+t[2]),e+=")",e;case r.SqlServer:return e=3===t.length?"SUBSTRING("+t[0]+","+t[1]+","+t[2]+")":"SUBSTRING("+t[0]+", "+t[1]+", LEN("+t[0]+") - "+t[1]+")",e;default:return e="SUBSTRING("+t[0]+" FROM "+t[1],3===t.length&&(e+=" FOR "+t[2]),e+=")",e}}case"extract":return"EXTRACT("+t[0].replace(/\'/g,"")+" FROM "+t[1]+")";case"cast":{let e="";switch(a){case r.Oracle:switch(t[1].type){case"date":e="DATE";break;case"float":e="DOUBLE";break;case"integer":e="INTEGER";break;case"real":e="REAL";break;case"smallint":e="SMALLINT";break;case"timestamp":e="TIMESTAMP";break;case"varchar":e="VARCHAR("+t[1].size.toString()+")"}return`CAST(${t[0]} AS ${e})`;case r.Postgres:switch(t[1].type){case"date":e="DATE";break;case"float":e="DOUBLE PRECISION";break;case"integer":e="INT";break;case"real":e="REAL";break;case"smallint":e="SMALLINT";break;case"timestamp":e="TIMESTAMP";break;case"varchar":e="VARCHAR("+t[1].size.toString()+")"}return`CAST(${t[0]} AS ${e})`;case r.SqlServer:switch(t[1].type){case"date":e="DATE";break;case"float":e="FLOAT";break;case"integer":e="INT";break;case"real":e="REAL";break;case"smallint":e="SMALLINT";break;case"timestamp":e="DATETIME";break;case"varchar":e="VARCHAR("+t[1].size.toString()+")"}return`CAST(${t[0]} AS ${e})`;default:switch(t[1].type){case"date":e="DATE";break;case"float":e="FLOAT";break;case"integer":e="INTEGER";break;case"real":e="REAL";break;case"smallint":e="SMALLINT";break;case"timestamp":e="TIMESTAMP";break;case"varchar":e="VARCHAR("+t[1].size.toString()+")"}return`CAST(${t[0]} AS ${e})`}}}throw new s(c.InvalidFunctionParameters,{function:e})}function h(t,a,n,s){n?.outputTimeReference&&(t=e.arcadeDateAndZoneToArcadeDate(t,n?.outputTimeReference));const c=t.toDateTime(),o=0===c.hour&&0===c.minute&&0===c.second&&0===c.millisecond;switch(a){case r.FILEGDB:case r.Standardised:case r.StandardisedNoInterval:return o?`date '${c.toFormat("yyyy-LL-dd")}'`:`date '${c.toFormat("yyyy-LL-dd HH:mm:ss")}'`;case r.Oracle:return o?`TO_DATE('${c.toFormat("yyyy-LL-dd")}','YYYY-MM-DD')`:`TO_DATE('${c.toFormat("yyyy-LL-dd HH:mm:ss")}','YYYY-MM-DD HH24:MI:SS')`;case r.SqlServer:return`'${c.toFormat(o?"yyyy-LL-dd":"yyyy-LL-dd HH:mm:ss")}'`;case r.PGDB:return`#${c.toFormat(o?"LL-dd-yyyy":"LL-dd-yyyy HH:mm:ss")}#`;case r.Postgres:return`TIMESTAMP '${c.toFormat(o?"yyyy-LL-dd":"yyyy-LL-dd HH:mm:ss")}'`;default:return`date '${c.toFormat("yyyy-LL-dd HH:mm:ss")}'`}}function T(e,a,n,s){let c=t(e)?i.fromJSDate(e):i.fromSQL(e);const o=0===c.hour&&0===c.minute&&0===c.second&&0===c.millisecond;switch(n?.inputTimeReference&&(c=i.fromObject({day:c.day,year:c.year,month:c.month,hour:c.hour,minute:c.minute,second:c.second,millisecond:c.millisecond},{zone:n.inputTimeReference})),n?.outputTimeReference&&(c=c.setZone(n.outputTimeReference)),a){case r.FILEGDB:case r.Standardised:case r.StandardisedNoInterval:return o?`date '${c.toFormat("yyyy-LL-dd")}'`:`date '${c.toFormat("yyyy-LL-dd HH:mm:ss")}'`;case r.Oracle:return o?`TO_DATE('${c.toFormat("yyyy-LL-dd")}','YYYY-MM-DD')`:`TO_DATE('${c.toFormat("yyyy-LL-dd HH:mm:ss")}','YYYY-MM-DD HH24:MI:SS')`;case r.SqlServer:return`'${c.toFormat(o?"yyyy-LL-dd":"yyyy-LL-dd HH:mm:ss")}'`;case r.PGDB:return`#${c.toFormat(o?"LL-dd-yyyy":"LL-dd-yyyy HH:mm:ss")}#`;case r.Postgres:return`TIMESTAMP '${c.toFormat(o?"yyyy-LL-dd":"yyyy-LL-dd HH:mm:ss")}'`;default:return`date '${c.toFormat("yyyy-LL-dd HH:mm:ss")}'`}}function L(e,t){switch(t){case r.FILEGDB:case r.Standardised:case r.StandardisedNoInterval:case r.Oracle:return e?"CURRENT_DATE":"CURRENT_TIMESTAMP";case r.SqlServer:return e?"CAST(GETDATE() AS DATE)":"GETDATE()";case r.PGDB:case r.Postgres:default:return e?"CURRENT_DATE":"CURRENT_TIMESTAMP"}}function S(e,r,t={}){const a={},n={},s={esriFieldTypeSmallInteger:"integer",esriFieldTypeInteger:"integer",esriFieldTypeSingle:"double",esriFieldTypeDouble:"double",esriFieldTypeString:"string",esriFieldTypeDate:"date",esriFieldTypeOID:"integer",esriFieldTypeGUID:"guid",esriFieldTypeGlobalID:"guid",oid:"integer",long:"integer","small-integer":"integer",integer:"integer",single:"double",double:"double",date:"date",guid:"guid",globalid:"guid",string:"string"};for(const c of r){const e=c.type?s[c.type]:void 0;a[c.name.toLowerCase()]=void 0===e?"":e}for(const c in t){const e=s[t[c]];n[c.toLowerCase()]=void 0===e?"":e}switch(E(a,e.parseTree,e.parameters,n)){case"double":return"double";case"integer":return"integer";case"date":return"date";case"string":return"string";case"global-id":case"guid":return"guid"}return""}function E(e,r,n,o){let i;switch(r.type){case"interval":return"integer";case"case-expression":{const t=[];if("simple"===r.format){for(let a=0;a<r.clauses.length;a++)t.push(E(e,r.clauses[a].value,n,o));null!==r.else&&t.push(E(e,r.else,n,o))}else{for(let a=0;a<r.clauses.length;a++)t.push(E(e,r.else,n,o));null!==r.else&&t.push(E(e,r.else,n,o))}return w(t)}case"parameter":{const e=o[r.value.toLowerCase()];if(void 0===e&&n){const e=n[r.value.toLowerCase()];if(void 0===e)return"";if(null===e)return"";if("string"==typeof e||e instanceof String)return"string";if("boolean"==typeof e)return"boolean";if(t(e))return"date";if(a(e))return"date";if("number"==typeof e)return e%1==0?"integer":"double"}return void 0===e?"":e}case"expression-list":{const t=[];for(const a of r.value)t.push(E(e,a,n,o));return t}case"unary-expression":return"boolean";case"binary-expression":switch(r.operator){case"AND":case"OR":case"IN":case"NOT IN":case"BETWEEN":case"NOTBETWEEN":case"LIKE":case"NOT LIKE":case"<>":case"<":case">":case">=":case"<=":case"=":return"boolean";case"IS":case"ISNOT":if("null"!==r.right.type)throw new s(c.UnsupportedIsRhs);return"boolean";case"*":case"-":case"+":case"/":return w([E(e,r.left,n,o),E(e,r.right,n,o)]);case"||":return"string";default:throw new s(c.UnsupportedOperator,{operator:r.operator})}case"null":return"";case"boolean":return"boolean";case"string":return"string";case"number":return null===r.value?"":r.value%1==0?"integer":"double";case"date":case"timestamp":case"current-time":return"date";case"column-reference":{const t=e[r.column.toLowerCase()];return void 0===t?"":t}case"function":switch(r.name.toLowerCase()){case"cast":switch(r.args?.value[1]?.value.type??""){case"integer":case"smallint":return"integer";case"real":case"float":return"double";case"date":case"timestamp":return"date";case"varchar":return"string";default:return""}case"position":case"extract":case"char_length":case"mod":return"integer";case"round":if(i=E(e,r.args,n,o),i instanceof Array){if(i.length<=0)return"double";i=i[0]}return i;case"sign":return"integer";case"ceiling":case"floor":case"abs":return i=E(e,r.args,n,o),i instanceof Array&&(i=w(i)),"integer"===i||"double"===i?i:"double";case"area":case"length":case"log":case"log10":case"sin":case"cos":case"tan":case"asin":case"acos":case"atan":case"cosh":case"sinh":case"tanh":case"power":return"double";case"substring":case"trim":case"concat":case"lower":case"upper":return"string";case"truncate":return"double";case"nullif":case"coalesce":return i=E(e,r.args,n,o),i instanceof Array?i.length>0?i[0]:"":i}return""}throw new s(c.UnsupportedSyntax,{node:r.type})}const I={boolean:1,string:2,integer:3,double:4,date:5};function w(e){if(e){let r="";for(const t of e)""!==t&&(r=""===r||I[r]<I[t]?t:r);return r}return""}function N(e,r){return b(e.parseTree,r)}function A(e){return"column-reference"===e?.parseTree.type}function b(e,r){if(null==e)return!1;switch(e.type){case"when-clause":return b(e.operand,r)||b(e.value,r);case"case-expression":for(const t of e.clauses)if(b(t,r))return!0;return!("simple"!==e.format||!b(e.operand,r))||!(null===e.else||!b(e.else,r));case"parameter":case"null":case"boolean":case"date":case"timestamp":case"string":case"number":return!1;case"expression-list":for(const t of e.value)if(b(t,r))return!0;return!1;case"unary-expression":return b(e.expr,r);case"binary-expression":return b(e.left,r)||b(e.right,r);case"column-reference":return r.toLowerCase()===e.column.toLowerCase();case"function":return b(e.args,r)}return!1}function v(e){let r="";return r+=e.period.toUpperCase(),r}function R(e,r,t){let a="";return a="interval-period"===r.type?v(r):v(r.start)+" TO "+v(r.end),"INTERVAL "+t+" "+e+" "+a}export{h as arcadeDateToSqlString,l as changeSqlTimeZones,d as changeWhereClauseTimeZone,m as combine,R as convertIntervalToSql,A as isSingleField,T as makeDateString,L as makeToday,S as predictType,p as reformulateWithoutField,N as scanForField,u as toWhereClause,f as toWhereClauseFromTree,g as translateFunctionToDatabaseSpecific};
5
+ import{ArcadeDate as e}from"../../ArcadeDate.js";import{FeatureServiceDatabaseType as r,isDate as t,isArcadeDate as a}from"./shared.js";import{WhereClause as n}from"../../../core/sql/WhereClause.js";import{SqlError as s,SqlErrorCodes as c}from"./errorsupport.js";import{convertTimeReference as o}from"../../arcadeTimeUtils.js";import{DateTime as i}from"luxon";function u(e,r){return y(e?.parseTree,r,e?.parameters)}function l(e,r,t,a){return d(n.create(e,r.fieldsIndex),t,a)}function d(e,t,a){const n=o(t),s=o(a);return y(e.parseTree,r.Standardised,null,null,null,{inputTimeReference:n,outputTimeReference:s})}function f(e,r,t){return y(e,r,t)}function p(e,t,a,s){return n.create(y(e.parseTree,r.Standardised,e.parameters,t,a),s)}function m(e,t,a="AND"){return n.create("(("+u(e,r.Standardised)+")"+a+"("+u(t,r.Standardised)+"))",e.fieldsIndex)}function y(e,n,o,i=null,u=null,l=null){let d,f,p,m;switch(e.type){case"interval":return R(y(e.value,n,o,i,u,l),e.qualifier,e.op);case"case-expression":{let r=" CASE ";"simple"===e.format&&(r+=y(e.operand,n,o,i,u,l));for(let t=0;t<e.clauses.length;t++)r+=" WHEN "+y(e.clauses[t].operand,n,o,i,u,l)+" THEN "+y(e.clauses[t].value,n,o,i,u,l);return null!==e.else&&(r+=" ELSE "+y(e.else,n,o,i,u,l)),r+=" END ",r}case"parameter":{const r=o[e.value.toLowerCase()];if("string"==typeof r){return"'"+o[e.value.toLowerCase()].toString().replaceAll("'","''")+"'"}if(t(r))return T(r,n,l);if(a(r))return h(r,n,l);if(r instanceof Array){const e=[];for(let s=0;s<r.length;s++)"string"==typeof r[s]?e.push("'"+r[s].toString().replaceAll("'","''")+"'"):t(r[s])?e.push(T(r[s],n,l)):a(r[s])?e.push(h(r[s],n,l)):e.push(r[s].toString());return e}return r.toString()}case"expression-list":f=[];for(const r of e.value)f.push(y(r,n,o,i,u,l));return f;case"unary-expression":return" ( NOT "+y(e.expr,n,o,i,u,l)+" ) ";case"binary-expression":switch(e.operator){case"AND":return" ("+y(e.left,n,o,i,u,l)+" AND "+y(e.right,n,o,i,u,l)+") ";case"OR":return" ("+y(e.left,n,o,i,u,l)+" OR "+y(e.right,n,o,i,u,l)+") ";case"IS":if("null"!==e.right.type)throw new s(c.UnsupportedIsRhs);return" ("+y(e.left,n,o,i,u,l)+" IS NULL )";case"ISNOT":if("null"!==e.right.type)throw new s(c.UnsupportedIsRhs);return" ("+y(e.left,n,o,i,u,l)+" IS NOT NULL )";case"IN":return d=[],"expression-list"===e.right.type?(d=y(e.right,n,o,i,u)," ("+y(e.left,n,o,i,u,l)+" IN ("+d.join(",")+")) "):(m=y(e.right,n,o,i,u,l),m instanceof Array?" ("+y(e.left,n,o,i,u,l)+" IN ("+m.join(",")+")) ":" ("+y(e.left,n,o,i,u,l)+" IN ("+m+")) ");case"NOT IN":return d=[],"expression-list"===e.right.type?(d=y(e.right,n,o,i,u)," ("+y(e.left,n,o,i,u,l)+" NOT IN ("+d.join(",")+")) "):(m=y(e.right,n,o,i,u,l),m instanceof Array?" ("+y(e.left,n,o,i,u,l)+" NOT IN ("+m.join(",")+")) ":" ("+y(e.left,n,o,i,u,l)+" NOT IN ("+m+")) ");case"BETWEEN":return p=y(e.right,n,o,i,u,l)," ("+y(e.left,n,o,i,u,l)+" BETWEEN "+p[0]+" AND "+p[1]+" ) ";case"NOTBETWEEN":return p=y(e.right,n,o,i,u,l)," ("+y(e.left,n,o,i,u,l)+" NOT BETWEEN "+p[0]+" AND "+p[1]+" ) ";case"LIKE":return""!==e.escape?" ("+y(e.left,n,o,i,u,l)+" LIKE "+y(e.right,n,o,i,u,l)+" ESCAPE '"+e.escape+"') ":" ("+y(e.left,n,o,i,u,l)+" LIKE "+y(e.right,n,o,i,u,l)+") ";case"NOT LIKE":return""!==e.escape?" ("+y(e.left,n,o,i,u,l)+" NOT LIKE "+y(e.right,n,o,i,u,l)+" ESCAPE '"+e.escape+"') ":" ("+y(e.left,n,o,i,u,l)+" NOT LIKE "+y(e.right,n,o,i,u,l)+") ";case"<>":case"<":case">":case">=":case"<=":case"=":case"*":case"-":case"+":case"/":return" ("+y(e.left,n,o,i,u,l)+" "+e.operator+" "+y(e.right,n,o,i,u,l)+") ";case"||":return" ("+y(e.left,n,o,i,u,l)+" "+(n===r.SqlServer?"+":e.operator)+" "+y(e.right,n,o,i,u,l)+") "}throw new s(c.UnsupportedOperator,{operator:e.operator});case"null":return"null";case"boolean":return!0===e.value?"1":"0";case"string":return"'"+e.value.toString().replaceAll("'","''")+"'";case"timestamp":case"date":return T(e.value,n,l);case"number":return e.value.toString();case"current-time":return L("date"===e.mode,n);case"column-reference":return i&&i.toLowerCase()===e.column.toLowerCase()?"("+u+")":e.column;case"data-type":return e.value;case"function":{const r=y(e.args,n,o,i,u,l);return g(e.name,r,n)}}throw new s(c.UnsupportedSyntax,{node:e.type})}function g(e,t,a){switch(e.toLowerCase().trim()){case"cos":case"sin":case"tan":case"cosh":case"tanh":case"sinh":case"acos":case"asin":case"atan":case"floor":case"log10":case"log":case"abs":if(1!==t.length)throw new s(c.InvalidFunctionParameters,{function:e.toLowerCase().trim()});return`${e.toUpperCase().trim()}(${t[0]})`;case"ceiling":case"ceil":if(1!==t.length)throw new s(c.InvalidFunctionParameters,{function:"ceiling"});switch(a){case r.Standardised:case r.StandardisedNoInterval:}return"CEILING("+t[0]+")";case"mod":case"power":case"nullif":if(2!==t.length)throw new s(c.InvalidFunctionParameters,{function:e.toLowerCase().trim()});return`${e.toUpperCase().trim()}(${t[0]},${t[1]})`;case"round":if(2===t.length)return"ROUND("+t[0]+","+t[1]+")";if(1===t.length)return"ROUND("+t[0]+")";throw new s(c.InvalidFunctionParameters,{function:"round"});case"truncate":if(t.length<1||t.length>2)throw new s(c.InvalidFunctionParameters,{function:"truncate"});return a===r.SqlServer?"ROUND("+t[0]+(1===t.length?"0":","+t[1])+",1)":"TRUNCATE("+t[0]+(1===t.length?")":","+t[1]+")");case"char_length":case"len":if(1!==t.length)throw new s(c.InvalidFunctionParameters,{function:"char_length"});switch(a){case r.SqlServer:return"LEN("+t[0]+")";case r.Oracle:return"LENGTH("+t[0]+")";default:return"CHAR_LENGTH("+t[0]+")"}case"coalesce":case"concat":{if(t.length<1)throw new s(c.InvalidFunctionParameters,{function:e.toLowerCase()});let r=e.toUpperCase().trim()+"(";for(let e=0;e<t.length;e++)0!==e&&(r+=","),r+=t[e];return r+=")",r}case"lower":case"lcase":if(1!==t.length)throw new s(c.InvalidFunctionParameters,{function:"lower"});return"LOWER("+t[0]+")";case"upper":case"ucase":if(1!==t.length)throw new s(c.InvalidFunctionParameters,{function:"upper"});return"UPPER("+t[0]+")";case"substring":{let e="";switch(a){case r.Oracle:return e="SUBSTR("+t[0]+","+t[1],3===t.length&&(e+=","+t[2]),e+=")",e;case r.SqlServer:return e=3===t.length?"SUBSTRING("+t[0]+","+t[1]+","+t[2]+")":"SUBSTRING("+t[0]+", "+t[1]+", LEN("+t[0]+") - "+t[1]+")",e;default:return e="SUBSTRING("+t[0]+" FROM "+t[1],3===t.length&&(e+=" FOR "+t[2]),e+=")",e}}case"extract":return"EXTRACT("+t[0].replaceAll("'","")+" FROM "+t[1]+")";case"cast":{let e="";switch(a){case r.Oracle:switch(t[1].type){case"date":e="DATE";break;case"float":e="DOUBLE";break;case"integer":e="INTEGER";break;case"real":e="REAL";break;case"smallint":e="SMALLINT";break;case"timestamp":e="TIMESTAMP";break;case"varchar":e="VARCHAR("+t[1].size.toString()+")"}return`CAST(${t[0]} AS ${e})`;case r.Postgres:switch(t[1].type){case"date":e="DATE";break;case"float":e="DOUBLE PRECISION";break;case"integer":e="INT";break;case"real":e="REAL";break;case"smallint":e="SMALLINT";break;case"timestamp":e="TIMESTAMP";break;case"varchar":e="VARCHAR("+t[1].size.toString()+")"}return`CAST(${t[0]} AS ${e})`;case r.SqlServer:switch(t[1].type){case"date":e="DATE";break;case"float":e="FLOAT";break;case"integer":e="INT";break;case"real":e="REAL";break;case"smallint":e="SMALLINT";break;case"timestamp":e="DATETIME";break;case"varchar":e="VARCHAR("+t[1].size.toString()+")"}return`CAST(${t[0]} AS ${e})`;default:switch(t[1].type){case"date":e="DATE";break;case"float":e="FLOAT";break;case"integer":e="INTEGER";break;case"real":e="REAL";break;case"smallint":e="SMALLINT";break;case"timestamp":e="TIMESTAMP";break;case"varchar":e="VARCHAR("+t[1].size.toString()+")"}return`CAST(${t[0]} AS ${e})`}}}throw new s(c.InvalidFunctionParameters,{function:e})}function h(t,a,n,s){n?.outputTimeReference&&(t=e.arcadeDateAndZoneToArcadeDate(t,n?.outputTimeReference));const c=t.toDateTime(),o=0===c.hour&&0===c.minute&&0===c.second&&0===c.millisecond;switch(a){case r.FILEGDB:case r.Standardised:case r.StandardisedNoInterval:return o?`date '${c.toFormat("yyyy-LL-dd")}'`:`date '${c.toFormat("yyyy-LL-dd HH:mm:ss")}'`;case r.Oracle:return o?`TO_DATE('${c.toFormat("yyyy-LL-dd")}','YYYY-MM-DD')`:`TO_DATE('${c.toFormat("yyyy-LL-dd HH:mm:ss")}','YYYY-MM-DD HH24:MI:SS')`;case r.SqlServer:return`'${c.toFormat(o?"yyyy-LL-dd":"yyyy-LL-dd HH:mm:ss")}'`;case r.PGDB:return`#${c.toFormat(o?"LL-dd-yyyy":"LL-dd-yyyy HH:mm:ss")}#`;case r.Postgres:return`TIMESTAMP '${c.toFormat(o?"yyyy-LL-dd":"yyyy-LL-dd HH:mm:ss")}'`;default:return`date '${c.toFormat("yyyy-LL-dd HH:mm:ss")}'`}}function T(e,a,n,s){let c=t(e)?i.fromJSDate(e):i.fromSQL(e);const o=0===c.hour&&0===c.minute&&0===c.second&&0===c.millisecond;switch(n?.inputTimeReference&&(c=i.fromObject({day:c.day,year:c.year,month:c.month,hour:c.hour,minute:c.minute,second:c.second,millisecond:c.millisecond},{zone:n.inputTimeReference})),n?.outputTimeReference&&(c=c.setZone(n.outputTimeReference)),a){case r.FILEGDB:case r.Standardised:case r.StandardisedNoInterval:return o?`date '${c.toFormat("yyyy-LL-dd")}'`:`date '${c.toFormat("yyyy-LL-dd HH:mm:ss")}'`;case r.Oracle:return o?`TO_DATE('${c.toFormat("yyyy-LL-dd")}','YYYY-MM-DD')`:`TO_DATE('${c.toFormat("yyyy-LL-dd HH:mm:ss")}','YYYY-MM-DD HH24:MI:SS')`;case r.SqlServer:return`'${c.toFormat(o?"yyyy-LL-dd":"yyyy-LL-dd HH:mm:ss")}'`;case r.PGDB:return`#${c.toFormat(o?"LL-dd-yyyy":"LL-dd-yyyy HH:mm:ss")}#`;case r.Postgres:return`TIMESTAMP '${c.toFormat(o?"yyyy-LL-dd":"yyyy-LL-dd HH:mm:ss")}'`;default:return`date '${c.toFormat("yyyy-LL-dd HH:mm:ss")}'`}}function L(e,t){switch(t){case r.FILEGDB:case r.Standardised:case r.StandardisedNoInterval:case r.Oracle:return e?"CURRENT_DATE":"CURRENT_TIMESTAMP";case r.SqlServer:return e?"CAST(GETDATE() AS DATE)":"GETDATE()";case r.PGDB:case r.Postgres:default:return e?"CURRENT_DATE":"CURRENT_TIMESTAMP"}}function S(e,r,t={}){const a={},n={},s={esriFieldTypeSmallInteger:"integer",esriFieldTypeInteger:"integer",esriFieldTypeSingle:"double",esriFieldTypeDouble:"double",esriFieldTypeString:"string",esriFieldTypeDate:"date",esriFieldTypeOID:"integer",esriFieldTypeGUID:"guid",esriFieldTypeGlobalID:"guid",oid:"integer",long:"integer","small-integer":"integer",integer:"integer",single:"double",double:"double",date:"date",guid:"guid",globalid:"guid",string:"string"};for(const c of r){const e=c.type?s[c.type]:void 0;a[c.name.toLowerCase()]=void 0===e?"":e}for(const c in t){const e=s[t[c]];n[c.toLowerCase()]=void 0===e?"":e}switch(E(a,e.parseTree,e.parameters,n)){case"double":return"double";case"integer":return"integer";case"date":return"date";case"string":return"string";case"global-id":case"guid":return"guid"}return""}function E(e,r,n,o){let i;switch(r.type){case"interval":return"integer";case"case-expression":{const t=[];if("simple"===r.format){for(let a=0;a<r.clauses.length;a++)t.push(E(e,r.clauses[a].value,n,o));null!==r.else&&t.push(E(e,r.else,n,o))}else{for(let a=0;a<r.clauses.length;a++)t.push(E(e,r.else,n,o));null!==r.else&&t.push(E(e,r.else,n,o))}return w(t)}case"parameter":{const e=o[r.value.toLowerCase()];if(void 0===e&&n){const e=n[r.value.toLowerCase()];if(void 0===e)return"";if(null===e)return"";if("string"==typeof e||e instanceof String)return"string";if("boolean"==typeof e)return"boolean";if(t(e))return"date";if(a(e))return"date";if("number"==typeof e)return e%1==0?"integer":"double"}return void 0===e?"":e}case"expression-list":{const t=[];for(const a of r.value)t.push(E(e,a,n,o));return t}case"unary-expression":return"boolean";case"binary-expression":switch(r.operator){case"AND":case"OR":case"IN":case"NOT IN":case"BETWEEN":case"NOTBETWEEN":case"LIKE":case"NOT LIKE":case"<>":case"<":case">":case">=":case"<=":case"=":return"boolean";case"IS":case"ISNOT":if("null"!==r.right.type)throw new s(c.UnsupportedIsRhs);return"boolean";case"*":case"-":case"+":case"/":return w([E(e,r.left,n,o),E(e,r.right,n,o)]);case"||":return"string";default:throw new s(c.UnsupportedOperator,{operator:r.operator})}case"null":return"";case"boolean":return"boolean";case"string":return"string";case"number":return null===r.value?"":r.value%1==0?"integer":"double";case"date":case"timestamp":case"current-time":return"date";case"column-reference":{const t=e[r.column.toLowerCase()];return void 0===t?"":t}case"function":switch(r.name.toLowerCase()){case"cast":switch(r.args?.value[1]?.value.type??""){case"integer":case"smallint":return"integer";case"real":case"float":return"double";case"date":case"timestamp":return"date";case"varchar":return"string";default:return""}case"position":case"extract":case"char_length":case"mod":return"integer";case"round":if(i=E(e,r.args,n,o),i instanceof Array){if(i.length<=0)return"double";i=i[0]}return i;case"sign":return"integer";case"ceiling":case"floor":case"abs":return i=E(e,r.args,n,o),i instanceof Array&&(i=w(i)),"integer"===i||"double"===i?i:"double";case"area":case"length":case"log":case"log10":case"sin":case"cos":case"tan":case"asin":case"acos":case"atan":case"cosh":case"sinh":case"tanh":case"power":return"double";case"substring":case"trim":case"concat":case"lower":case"upper":return"string";case"truncate":return"double";case"nullif":case"coalesce":return i=E(e,r.args,n,o),i instanceof Array?i.length>0?i[0]:"":i}return""}throw new s(c.UnsupportedSyntax,{node:r.type})}const I={boolean:1,string:2,integer:3,double:4,date:5};function w(e){if(e){let r="";for(const t of e)""!==t&&(r=""===r||I[r]<I[t]?t:r);return r}return""}function A(e,r){return b(e.parseTree,r)}function N(e){return"column-reference"===e?.parseTree.type}function b(e,r){if(null==e)return!1;switch(e.type){case"when-clause":return b(e.operand,r)||b(e.value,r);case"case-expression":for(const t of e.clauses)if(b(t,r))return!0;return!("simple"!==e.format||!b(e.operand,r))||!(null===e.else||!b(e.else,r));case"parameter":case"null":case"boolean":case"date":case"timestamp":case"string":case"number":return!1;case"expression-list":for(const t of e.value)if(b(t,r))return!0;return!1;case"unary-expression":return b(e.expr,r);case"binary-expression":return b(e.left,r)||b(e.right,r);case"column-reference":return r.toLowerCase()===e.column.toLowerCase();case"function":return b(e.args,r)}return!1}function v(e){let r="";return r+=e.period.toUpperCase(),r}function R(e,r,t){let a="";return a="interval-period"===r.type?v(r):v(r.start)+" TO "+v(r.end),"INTERVAL "+t+" "+e+" "+a}export{h as arcadeDateToSqlString,l as changeSqlTimeZones,d as changeWhereClauseTimeZone,m as combine,R as convertIntervalToSql,N as isSingleField,T as makeDateString,L as makeToday,S as predictType,p as reformulateWithoutField,A as scanForField,u as toWhereClause,f as toWhereClauseFromTree,g as translateFunctionToDatabaseSpecific};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.27/esri/copyright.txt for details.
4
4
  */
5
- import{ArcadeDate as n}from"../ArcadeDate.js";import{y as e,C as t,l as r,j as o,g as a,A as s,D as u,c,E as l}from"../../chunks/languageUtils.js";import{ArcadeExecutionError as i,ExecutionErrorCodes as f}from"../executionError.js";import{getLocale as d}from"../../intl/locale.js";import{DateTime as m}from"luxon";function h(n,e,t){return n+(N(t)?A:y)[e]}function N(n){return n%4==0&&(n%100!=0||n%400==0)}const y=[0,31,59,90,120,151,181,212,243,273,304,334],A=[0,31,60,91,121,152,182,213,244,274,305,335];function w(n){return null===n?n:!1===n.isValid?null:n}function D(n,e){return""===n||"default"===n.toLowerCase().trim()?t(e):n}function T(N,y){N.today=function(r,o){return y(r,o,((a,s,u)=>{e(u,0,0,r,o);const c=new Date;return c.setHours(0,0,0,0),n.dateJSAndZoneToArcadeDate(c,t(r))}))},N.changetimezone=function(a,s){return y(a,s,((u,c,l)=>{e(l,2,2,a,s);const i=r(l[0],t(a));if(null===i)return null;const f=n.arcadeDateAndZoneToArcadeDate(i,D(o(l[1]),a));return!1===f.isValid?null:f}))},N.timezone=function(o,a){return y(o,a,((s,u,c)=>{e(c,1,2,o,a);const l=r(c[0],t(o));if(null===l)return null;const i=l.timeZone;return"system"===i?n.systemTimeZoneCanonicalName:i}))},N.timezoneoffset=function(n,o){return y(n,o,((a,s,u)=>{e(u,1,1,n,o);const c=r(u[0],t(n));return null===c?null:c.timeZoneOffset}))},N.now=function(r,o){return y(r,o,((a,s,u)=>{e(u,0,0,r,o);const c=n.nowToArcadeDate(t(r));return!1===c.isValid?null:c}))},N.timestamp=function(t,r){return y(t,r,((o,a,s)=>{e(s,0,0,t,r);const u=n.nowUTCToArcadeDate();return!1===u.isValid?null:u}))},N.toutc=function(n,o){return y(n,o,((a,s,u)=>{e(u,1,1,n,o);const c=r(u[0],t(n));return null===c?null:c.toUTC()}))},N.tolocal=function(n,o){return y(n,o,((a,s,u)=>{e(u,1,1,n,o);const c=r(u[0],t(n));return null===c?null:c.toLocal()}))},N.day=function(n,o){return y(n,o,((a,s,u)=>{e(u,1,1,n,o);const c=r(u[0],t(n));return null===c?NaN:c.day}))},N.month=function(n,o){return y(n,o,((a,s,u)=>{e(u,1,1,n,o);const c=r(u[0],t(n));return null===c?NaN:c.monthJS}))},N.year=function(n,o){return y(n,o,((a,s,u)=>{e(u,1,1,n,o);const c=r(u[0],t(n));return null===c?NaN:c.year}))},N.hour=function(n,o){return y(n,o,((a,s,u)=>{e(u,1,1,n,o);const c=r(u[0],t(n));return null===c?NaN:c.hour}))},N.second=function(n,o){return y(n,o,((a,s,u)=>{e(u,1,1,n,o);const c=r(u[0],t(n));return null===c?NaN:c.second}))},N.millisecond=function(n,o){return y(n,o,((a,s,u)=>{e(u,1,1,n,o);const c=r(u[0],t(n));return null===c?NaN:c.millisecond}))},N.minute=function(n,o){return y(n,o,((a,s,u)=>{e(u,1,1,n,o);const c=r(u[0],t(n));return null===c?NaN:c.minute}))},N.week=function(n,o){return y(n,o,((u,c,l)=>{e(l,1,2,n,o);const d=r(l[0],t(n));if(null===d)return NaN;const m=a(s(l[1],0));if(m<0||m>6)throw new i(n,f.InvalidParameter,o);const N=d.day,y=d.monthJS,A=d.year,w=d.dayOfWeekJS,D=h(N,y,A)-1,T=Math.floor(D/7);return w-m+(w-m<0?7:0)<D-7*T?T+1:T}))},N.weekday=function(n,o){return y(n,o,((a,s,u)=>{e(u,1,1,n,o);const c=r(u[0],t(n));return null===c?NaN:c.dayOfWeekJS}))},N.isoweekday=function(n,o){return y(n,o,((a,s,u)=>{e(u,1,1,n,o);const c=r(u[0],t(n));return null===c?NaN:c.dayOfWeekISO}))},N.isomonth=function(n,o){return y(n,o,((a,s,u)=>{e(u,1,1,n,o);const c=r(u[0],t(n));return null===c?NaN:c.monthISO}))},N.isoweek=function(n,o){return y(n,o,((a,s,u)=>{e(u,1,1,n,o);const c=r(u[0],t(n));return null===c?NaN:c.weekISO}))},N.isoyear=function(n,o){return y(n,o,((a,s,u)=>{e(u,1,1,n,o);const c=r(u[0],t(n));return null===c?NaN:c.yearISO}))},N.date=function(s,l){return y(s,l,((i,f,h)=>{if(e(h,0,8,s,l),3===h.length)return w(n.fromParts(a(h[0]),a(h[1])+1,a(h[2]),0,0,0,0,t(s)));if(4===h.length)return w(n.fromParts(a(h[0]),a(h[1])+1,a(h[2]),a(h[3]),0,0,0,t(s)));if(5===h.length)return w(n.fromParts(a(h[0]),a(h[1])+1,a(h[2]),a(h[3]),a(h[4]),0,0,t(s)));if(6===h.length)return w(n.fromParts(a(h[0]),a(h[1])+1,a(h[2]),a(h[3]),a(h[4]),a(h[5]),0,t(s)));if(7===h.length)return w(n.fromParts(a(h[0]),a(h[1])+1,a(h[2]),a(h[3]),a(h[4]),a(h[5]),a(h[6]),t(s)));if(8===h.length)return w(n.fromParts(a(h[0]),a(h[1])+1,a(h[2]),a(h[3]),a(h[4]),a(h[5]),a(h[6]),D(o(h[7]),s)));if(2===h.length){let e,t=o(h[1]);return""===t?null:(t=u(t),e="X"===t?m.fromSeconds(a(h[0])):"x"===t?m.fromMillis(a(h[0])):m.fromFormat(o(h[0]),t,{locale:d(),numberingSystem:"latn"}),e.isValid?n.dateTimeToArcadeDate(e):null)}if(1===h.length){if(c(h[0])){if(""===h[0].replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,""))return null;if(!0===/^[0-9][0-9][0-9][0-9]$/.test(h[0]))return r(h[0]+"-01-01",t(s))}const e=a(h[0]);if(!1===isNaN(e)){const r=m.fromMillis(e);return r.isValid?n.dateTimeAndZoneToArcadeDate(r,t(s)):null}return r(h[0],t(s))}return 0===h.length?n.nowToArcadeDate(t(s)):null}))},N.datediff=function(a,u){return y(a,u,((c,l,i)=>{e(i,2,4,a,u);let f=r(i[0],t(a)),d=r(i[1],t(a));if(null===f||null===d)return NaN;let m=s(i[3],"");switch(""!==m&&null!==m?(m=o(m),f=n.arcadeDateAndZoneToArcadeDate(f,m),d=n.arcadeDateAndZoneToArcadeDate(d,m)):f.timeZone!==d.timeZone&&(f.isUnknownTimeZone?f=n.arcadeDateAndZoneToArcadeDate(f,d.timeZone):d=(d.isUnknownTimeZone,n.arcadeDateAndZoneToArcadeDate(d,f.timeZone))),o(i[2]).toLowerCase()){case"days":case"day":case"d":return f.diff(d,"days");case"months":case"month":return f.diff(d,"months");case"minutes":case"minute":case"m":return"M"===i[2]?f.diff(d,"months"):f.diff(d,"minutes");case"seconds":case"second":case"s":return f.diff(d,"seconds");case"milliseconds":case"millisecond":case"ms":default:return f.diff(d);case"hours":case"hour":case"h":return f.diff(d,"hours");case"years":case"year":case"y":return f.diff(d,"years")}}))},N.dateadd=function(n,s){return y(n,s,((u,c,i)=>{e(i,2,3,n,s);const f=r(i[0],t(n));if(null===f)return null;let d=a(i[1]);if(isNaN(d))return f;let m="milliseconds";switch(o(i[2]).toLowerCase()){case"days":case"day":case"d":m="days",d=l(d);break;case"months":case"month":m="months",d=l(d);break;case"minutes":case"minute":case"m":m="M"===i[2]?"months":"minutes";break;case"seconds":case"second":case"s":m="seconds";break;case"milliseconds":case"millisecond":case"ms":m="milliseconds";break;case"hours":case"hour":case"h":m="hours";break;case"years":case"year":case"y":m="years"}return f.plus({[m]:d})}))}}export{T as registerFunctions};
5
+ import{ArcadeDate as n}from"../ArcadeDate.js";import{y as e,C as t,l as r,j as o,g as a,A as s,D as u,c,E as l}from"../../chunks/languageUtils.js";import{ArcadeExecutionError as i,ExecutionErrorCodes as f}from"../executionError.js";import{getLocale as d}from"../../intl/locale.js";import{DateTime as m}from"luxon";function h(n,e,t){return n+(N(t)?A:y)[e]}function N(n){return n%4==0&&(n%100!=0||n%400==0)}const y=[0,31,59,90,120,151,181,212,243,273,304,334],A=[0,31,60,91,121,152,182,213,244,274,305,335];function w(n){return null===n?n:!1===n.isValid?null:n}function D(n,e){return""===n||"default"===n.toLowerCase().trim()?t(e):n}function T(N,y){N.today=function(r,o){return y(r,o,((a,s,u)=>{e(u,0,0,r,o);const c=new Date;return c.setHours(0,0,0,0),n.dateJSAndZoneToArcadeDate(c,t(r))}))},N.changetimezone=function(a,s){return y(a,s,((u,c,l)=>{e(l,2,2,a,s);const i=r(l[0],t(a));if(null===i)return null;const f=n.arcadeDateAndZoneToArcadeDate(i,D(o(l[1]),a));return!1===f.isValid?null:f}))},N.timezone=function(o,a){return y(o,a,((s,u,c)=>{e(c,1,2,o,a);const l=r(c[0],t(o));if(null===l)return null;const i=l.timeZone;return"system"===i?n.systemTimeZoneCanonicalName:i}))},N.timezoneoffset=function(n,o){return y(n,o,((a,s,u)=>{e(u,1,1,n,o);const c=r(u[0],t(n));return null===c?null:c.timeZoneOffset}))},N.now=function(r,o){return y(r,o,((a,s,u)=>{e(u,0,0,r,o);const c=n.nowToArcadeDate(t(r));return!1===c.isValid?null:c}))},N.timestamp=function(t,r){return y(t,r,((o,a,s)=>{e(s,0,0,t,r);const u=n.nowUTCToArcadeDate();return!1===u.isValid?null:u}))},N.toutc=function(n,o){return y(n,o,((a,s,u)=>{e(u,1,1,n,o);const c=r(u[0],t(n));return null===c?null:c.toUTC()}))},N.tolocal=function(n,o){return y(n,o,((a,s,u)=>{e(u,1,1,n,o);const c=r(u[0],t(n));return null===c?null:c.toLocal()}))},N.day=function(n,o){return y(n,o,((a,s,u)=>{e(u,1,1,n,o);const c=r(u[0],t(n));return null===c?NaN:c.day}))},N.month=function(n,o){return y(n,o,((a,s,u)=>{e(u,1,1,n,o);const c=r(u[0],t(n));return null===c?NaN:c.monthJS}))},N.year=function(n,o){return y(n,o,((a,s,u)=>{e(u,1,1,n,o);const c=r(u[0],t(n));return null===c?NaN:c.year}))},N.hour=function(n,o){return y(n,o,((a,s,u)=>{e(u,1,1,n,o);const c=r(u[0],t(n));return null===c?NaN:c.hour}))},N.second=function(n,o){return y(n,o,((a,s,u)=>{e(u,1,1,n,o);const c=r(u[0],t(n));return null===c?NaN:c.second}))},N.millisecond=function(n,o){return y(n,o,((a,s,u)=>{e(u,1,1,n,o);const c=r(u[0],t(n));return null===c?NaN:c.millisecond}))},N.minute=function(n,o){return y(n,o,((a,s,u)=>{e(u,1,1,n,o);const c=r(u[0],t(n));return null===c?NaN:c.minute}))},N.week=function(n,o){return y(n,o,((u,c,l)=>{e(l,1,2,n,o);const d=r(l[0],t(n));if(null===d)return NaN;const m=a(s(l[1],0));if(m<0||m>6)throw new i(n,f.InvalidParameter,o);const N=d.day,y=d.monthJS,A=d.year,w=d.dayOfWeekJS,D=h(N,y,A)-1,T=Math.floor(D/7);return w-m+(w-m<0?7:0)<D-7*T?T+1:T}))},N.weekday=function(n,o){return y(n,o,((a,s,u)=>{e(u,1,1,n,o);const c=r(u[0],t(n));return null===c?NaN:c.dayOfWeekJS}))},N.isoweekday=function(n,o){return y(n,o,((a,s,u)=>{e(u,1,1,n,o);const c=r(u[0],t(n));return null===c?NaN:c.dayOfWeekISO}))},N.isomonth=function(n,o){return y(n,o,((a,s,u)=>{e(u,1,1,n,o);const c=r(u[0],t(n));return null===c?NaN:c.monthISO}))},N.isoweek=function(n,o){return y(n,o,((a,s,u)=>{e(u,1,1,n,o);const c=r(u[0],t(n));return null===c?NaN:c.weekISO}))},N.isoyear=function(n,o){return y(n,o,((a,s,u)=>{e(u,1,1,n,o);const c=r(u[0],t(n));return null===c?NaN:c.yearISO}))},N.date=function(s,l){return y(s,l,((i,f,h)=>{if(e(h,0,8,s,l),3===h.length)return w(n.fromParts(a(h[0]),a(h[1])+1,a(h[2]),0,0,0,0,t(s)));if(4===h.length)return w(n.fromParts(a(h[0]),a(h[1])+1,a(h[2]),a(h[3]),0,0,0,t(s)));if(5===h.length)return w(n.fromParts(a(h[0]),a(h[1])+1,a(h[2]),a(h[3]),a(h[4]),0,0,t(s)));if(6===h.length)return w(n.fromParts(a(h[0]),a(h[1])+1,a(h[2]),a(h[3]),a(h[4]),a(h[5]),0,t(s)));if(7===h.length)return w(n.fromParts(a(h[0]),a(h[1])+1,a(h[2]),a(h[3]),a(h[4]),a(h[5]),a(h[6]),t(s)));if(8===h.length)return w(n.fromParts(a(h[0]),a(h[1])+1,a(h[2]),a(h[3]),a(h[4]),a(h[5]),a(h[6]),D(o(h[7]),s)));if(2===h.length){let e,t=o(h[1]);return""===t?null:(t=u(t),e="X"===t?m.fromSeconds(a(h[0])):"x"===t?m.fromMillis(a(h[0])):m.fromFormat(o(h[0]),t,{locale:d(),numberingSystem:"latn"}),e.isValid?n.dateTimeToArcadeDate(e):null)}if(1===h.length){if(c(h[0])){if(""===h[0].replaceAll(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,""))return null;if(!0===/^[0-9][0-9][0-9][0-9]$/.test(h[0]))return r(h[0]+"-01-01",t(s))}const e=a(h[0]);if(!1===isNaN(e)){const r=m.fromMillis(e);return r.isValid?n.dateTimeAndZoneToArcadeDate(r,t(s)):null}return r(h[0],t(s))}return 0===h.length?n.nowToArcadeDate(t(s)):null}))},N.datediff=function(a,u){return y(a,u,((c,l,i)=>{e(i,2,4,a,u);let f=r(i[0],t(a)),d=r(i[1],t(a));if(null===f||null===d)return NaN;let m=s(i[3],"");switch(""!==m&&null!==m?(m=o(m),f=n.arcadeDateAndZoneToArcadeDate(f,m),d=n.arcadeDateAndZoneToArcadeDate(d,m)):f.timeZone!==d.timeZone&&(f.isUnknownTimeZone?f=n.arcadeDateAndZoneToArcadeDate(f,d.timeZone):d=(d.isUnknownTimeZone,n.arcadeDateAndZoneToArcadeDate(d,f.timeZone))),o(i[2]).toLowerCase()){case"days":case"day":case"d":return f.diff(d,"days");case"months":case"month":return f.diff(d,"months");case"minutes":case"minute":case"m":return"M"===i[2]?f.diff(d,"months"):f.diff(d,"minutes");case"seconds":case"second":case"s":return f.diff(d,"seconds");case"milliseconds":case"millisecond":case"ms":default:return f.diff(d);case"hours":case"hour":case"h":return f.diff(d,"hours");case"years":case"year":case"y":return f.diff(d,"years")}}))},N.dateadd=function(n,s){return y(n,s,((u,c,i)=>{e(i,2,3,n,s);const f=r(i[0],t(n));if(null===f)return null;let d=a(i[1]);if(isNaN(d))return f;let m="milliseconds";switch(o(i[2]).toLowerCase()){case"days":case"day":case"d":m="days",d=l(d);break;case"months":case"month":m="months",d=l(d);break;case"minutes":case"minute":case"m":m="M"===i[2]?"months":"minutes";break;case"seconds":case"second":case"s":m="seconds";break;case"milliseconds":case"millisecond":case"ms":m="milliseconds";break;case"hours":case"hour":case"h":m="hours";break;case"years":case"year":case"y":m="years"}return f.plus({[m]:d})}))}}export{T as registerFunctions};
package/arcade/kernel.js CHANGED
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.27/esri/copyright.txt for details.
4
4
  */
5
- import e from"../geometry/Extent.js";function r(e){if(null==e)return null;if("number"==typeof e)return e;let r=e.toLowerCase();switch(r=r.replace(/\s/g,""),r=r.replace(/-/g,""),r){case"meters":case"meter":case"m":case"squaremeters":case"squaremeter":return 109404;case"miles":case"mile":case"squaremile":case"squaremiles":return 109439;case"kilometers":case"kilometer":case"squarekilometers":case"squarekilometer":case"km":return 109414;case"acres":case"acre":case"ac":return 109402;case"hectares":case"hectare":case"ha":return 109401;case"yard":case"yd":case"yards":case"squareyards":case"squareyard":return 109442;case"feet":case"ft":case"foot":case"squarefeet":case"squarefoot":return 109405;case"nmi":case"nauticalmile":case"nauticalmiles":case"squarenauticalmile":case"squarenauticalmiles":return 109409}return null}function s(r){if(null==r)return null;switch(r.type){case"polygon":case"multipoint":case"polyline":return r.extent;case"point":return new e({xmin:r.x,ymin:r.y,xmax:r.x,ymax:r.y,spatialReference:r.spatialReference});case"extent":return r}return null}function a(e){if(null==e)return null;if("number"==typeof e)return e;let r=e.toLowerCase();switch(r=r.replace(/\s/g,""),r=r.replace(/-/g,""),r){case"meters":case"meter":case"m":case"squaremeters":case"squaremeter":return 9001;case"miles":case"mile":case"squaremile":case"squaremiles":return 9093;case"kilometers":case"kilometer":case"squarekilometers":case"squarekilometer":case"km":return 9036;case"yard":case"yd":case"yards":case"squareyards":case"squareyard":return 9096;case"feet":case"ft":case"foot":case"squarefeet":case"squarefoot":return 9002;case"nmi":case"nauticalmile":case"nauticalmiles":case"squarenauticalmile":case"squarenauticalmiles":return 9030}return null}function t(e,r){return e===r||("point"===e&&"esriGeometryPoint"===r||("polyline"===e&&"esriGeometryPolyline"===r||("polygon"===e&&"esriGeometryPolygon"===r||("extent"===e&&"esriGeometryEnvelope"===r||("multipoint"===e&&"esriGeometryMultipoint"===r||("point"===r&&"esriGeometryPoint"===e||("polyline"===r&&"esriGeometryPolyline"===e||("polygon"===r&&"esriGeometryPolygon"===e||("extent"===r&&"esriGeometryEnvelope"===e||"multipoint"===r&&"esriGeometryMultipoint"===e)))))))))}function c(e){if(null==e)return null;const r=e.clone();return void 0!==e.cache._geVersion&&(r.cache._geVersion=e.cache._geVersion),r}export{c as cloneGeometry,a as convertLinearUnitsToCode,r as convertSquareUnitsToCode,t as sameGeomType,s as shapeExtent};
5
+ import e from"../geometry/Extent.js";function r(e){if(null==e)return null;if("number"==typeof e)return e;let r=e.toLowerCase();switch(r=r.replaceAll(/\s/g,""),r=r.replaceAll("-",""),r){case"meters":case"meter":case"m":case"squaremeters":case"squaremeter":return 109404;case"miles":case"mile":case"squaremile":case"squaremiles":return 109439;case"kilometers":case"kilometer":case"squarekilometers":case"squarekilometer":case"km":return 109414;case"acres":case"acre":case"ac":return 109402;case"hectares":case"hectare":case"ha":return 109401;case"yard":case"yd":case"yards":case"squareyards":case"squareyard":return 109442;case"feet":case"ft":case"foot":case"squarefeet":case"squarefoot":return 109405;case"nmi":case"nauticalmile":case"nauticalmiles":case"squarenauticalmile":case"squarenauticalmiles":return 109409}return null}function s(r){if(null==r)return null;switch(r.type){case"polygon":case"multipoint":case"polyline":return r.extent;case"point":return new e({xmin:r.x,ymin:r.y,xmax:r.x,ymax:r.y,spatialReference:r.spatialReference});case"extent":return r}return null}function a(e){if(null==e)return null;if("number"==typeof e)return e;let r=e.toLowerCase();switch(r=r.replaceAll(/\s/g,""),r=r.replaceAll("-",""),r){case"meters":case"meter":case"m":case"squaremeters":case"squaremeter":return 9001;case"miles":case"mile":case"squaremile":case"squaremiles":return 9093;case"kilometers":case"kilometer":case"squarekilometers":case"squarekilometer":case"km":return 9036;case"yard":case"yd":case"yards":case"squareyards":case"squareyard":return 9096;case"feet":case"ft":case"foot":case"squarefeet":case"squarefoot":return 9002;case"nmi":case"nauticalmile":case"nauticalmiles":case"squarenauticalmile":case"squarenauticalmiles":return 9030}return null}function t(e,r){return e===r||("point"===e&&"esriGeometryPoint"===r||("polyline"===e&&"esriGeometryPolyline"===r||("polygon"===e&&"esriGeometryPolygon"===r||("extent"===e&&"esriGeometryEnvelope"===r||("multipoint"===e&&"esriGeometryMultipoint"===r||("point"===r&&"esriGeometryPoint"===e||("polyline"===r&&"esriGeometryPolyline"===e||("polygon"===r&&"esriGeometryPolygon"===e||("extent"===r&&"esriGeometryEnvelope"===e||"multipoint"===r&&"esriGeometryMultipoint"===e)))))))))}function c(e){if(null==e)return null;const r=e.clone();return void 0!==e.cache._geVersion&&(r.cache._geVersion=e.cache._geVersion),r}export{c as cloneGeometry,a as convertLinearUnitsToCode,r as convertSquareUnitsToCode,t as sameGeomType,s as shapeExtent};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.27/esri/copyright.txt for details.
4
4
  */
5
- import{ParsingErrorMessages as r,ParsingError as t}from"./types.js";function o(t,o){const e=r[t];return o?e.replace(/\${(.*?)}/g,((r,t)=>o[t]?.toString()??"")):e}class e{constructor(r=!1){this.tolerant=r,this.errors=[]}recordError(r){this.errors.push(r)}tolerate(r){if(!this.tolerant)throw r;this.recordError(r)}throwError(r){throw r.description=r.description??o(r.code,r.data),new t(r)}tolerateError(r){r.description=r.description??o(r.code,r.data);const e=new t(r);if(!this.tolerant)throw e;this.recordError(e)}}export{e as ErrorHandler,o as formatErrorDescription};
5
+ import{ParsingErrorMessages as r,ParsingError as t}from"./types.js";function o(t,o){const e=r[t];return o?e.replaceAll(/\${(.*?)}/g,((r,t)=>o[t]?.toString()??"")):e}class e{constructor(r=!1){this.tolerant=r,this.errors=[]}recordError(r){this.errors.push(r)}tolerate(r){if(!this.tolerant)throw r;this.recordError(r)}throwError(r){throw r.description=r.description??o(r.code,r.data),new t(r)}tolerateError(r){r.description=r.description??o(r.code,r.data);const e=new t(r);if(!this.tolerant)throw e;this.recordError(e)}}export{e as ErrorHandler,o as formatErrorDescription};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.27/esri/copyright.txt for details.
4
4
  */
5
- import{parse as e}from"../lib/arcade-parser.js";import{DiagnosticCodes as i,DiagnosticMessages as t}from"./diagnosticMessages.js";import{ArcadeReservedKeywords as n}from"./languageKeywords.js";import{DiagnosticSeverity as s}from"./types.js";import{ParsingErrorMessages as a,Syntax as o,isVariableDeclaration as r,isIdentifier as d,isEmptyStatement as c,isBlockStatement as l}from"../lib/types.js";function h(e,i){return i?e.replace(/\${(.*?)}/g,((e,t)=>i[t]?.toString()??"")):e}function f(e){return!!e&&"dictionary"!==e.type}class p{constructor(e,i=[]){this._apiDefinitions=e,this._profileVariables=i,this._isInBlock=!1,this._identifierBeingAssigned=void 0,this._assignmentValidationMode="disabled",this._scriptScopeIdentifiers=new Map,this._diagnostics=new Array,this._undeclaredIdentifiersInFunctions=new Map}validateScript(t){if(!t)return{diagnostics:[],program:null};this._isInBlock=!1,this._identifierBeingAssigned=void 0,this._assignmentValidationMode="disabled",this._diagnostics=[],this._scriptScopeIdentifiers.clear(),this._undeclaredIdentifiersInFunctions.clear(),this._functionScopeIdentifiers=void 0;let n=null;try{n=e(t,{tolerant:!0}),this.handleErrors(n.errors),n.body.forEach((e=>this.validateStatement(e))),this.diagnoseIdentifiers(),this._undeclaredIdentifiersInFunctions.size>0&&this._undeclaredIdentifiersInFunctions.forEach((e=>{for(const t of e)this.logDiagnostic(t.node.loc,{code:i.NotDefined,data:{identifier:t.node.name}})}))}catch(s){this.handleException(s)}return{diagnostics:this._diagnostics,program:n}}disableRecordIdentifierAssignment(e,i){const t=this._assignmentValidationMode;this._assignmentValidationMode="disabled",e.call(this,i),this._assignmentValidationMode=t}inBlock(e,i){const t=this._isInBlock;this._isInBlock=!0,e.call(this,i),this._isInBlock=t}get _isInFunctionScope(){return!!this._functionScopeIdentifiers}inFunctionScope(e){this._functionScopeIdentifiers=new Map,e.call(this),this.diagnoseIdentifiers(),this._functionScopeIdentifiers=void 0}logDiagnostic(e,i){const n={severity:s.Error,...i,message:h(t[i.code]??a[i.code],i.data),range:{start:{line:e.start.line-1,character:e.start.column},end:{line:e.end.line-1,character:e.end.column}}};this._diagnostics.push(n)}handleErrors(e){(e??[]).forEach(this.handleException,this)}handleException(e){if(g(e)){const{range:i,code:t,data:n}=e;this.logDiagnostic(i,{code:t,data:n})}else this.logDiagnostic({start:{line:1,column:0},end:{line:1,column:0}},{code:i.ExecutionError,data:{stack:e.stack}})}getIdentifierInfo(e){return this._functionScopeIdentifiers?.get(e)??this._scriptScopeIdentifiers.get(e)}setIdentiferInfo(e,i){this._functionScopeIdentifiers?this._functionScopeIdentifiers.set(e,i):((this._functionScopeIdentifiers??this._scriptScopeIdentifiers).set(e,i),this._functionScopeIdentifiers||this._undeclaredIdentifiersInFunctions.has(e)&&(this._undeclaredIdentifiersInFunctions.delete(e),i.used=!0))}isProfileVariable(e){return(this._profileVariables??[]).some((i=>i.name.toLowerCase()===e))}isApiItem(e){const i=!!this._apiDefinitions?.constantDefinitions?.get(e),t=!!this._apiDefinitions?.functionDefinitions?.get(e);return i||t}validateStatement(e){if(e)switch(e.type){case o.BlockStatement:return void e.body.forEach((e=>this.validateStatement(e)));case o.VariableDeclaration:return void e.declarations.forEach((e=>this.validateVariableDeclarator(e)));case o.FunctionDeclaration:return void this.validateFunctionDeclaration(e);case o.ExportNamedDeclaration:return void this.validateExportDeclaration(e);case o.ImportDeclaration:return void this.validateImportDeclaration(e);case o.WhileStatement:return void this.validateWhileStatement(e);case o.ForStatement:return void this.validateForStatement(e);case o.ForInStatement:return void this.validateForInStatement(e);case o.IfStatement:return void this.validateIfStatement(e);case o.ReturnStatement:return void this.validateExpression(e.argument);case o.ExpressionStatement:return void this.validateExpression(e.expression);case o.BreakStatement:case o.ContinueStatement:case o.EmptyStatement:return}}validateVariableDeclarator(e){this.validateExpression(e.init),this.recordVariableIdentifier(e.id,{initialized:!!e.init})}validateFunctionDeclaration(e){this.recordFunctionIdentifier(e),this.inFunctionScope((()=>{e.params.forEach((e=>this.recordParamAsIdentifier(e))),m(e.body)&&this.logDiagnostic(e.body.loc,{code:i.UnexpectedEmptyFunction,data:{identifier:e.id.name},severity:s.Warning}),this.validateStatement(e.body)}))}validateExportDeclaration(e){this.validateStatement(e.declaration)}validateImportDeclaration(e){this.recordImportIdentifier(e)}validateForStatement(e){r(e.init)?this.inBlock(this.validateStatement,e.init):this.validateExpression(e.init),this.validateExpression(e.update),this.validateExpression(e.test),m(e.body)&&this.logDiagnostic(e.body.loc,{code:i.EmptyBlockStatement,severity:s.Warning}),this.inBlock(this.validateStatement,e.body)}validateWhileStatement(e){this.validateExpression(e.test),m(e.body)&&this.logDiagnostic(e.body.loc,{code:i.EmptyBlockStatement,severity:s.Warning}),this.inBlock(this.validateStatement,e.body)}validateForInStatement(e){d(e.left)?this.validateExpression(e.left):this.recordVariableIdentifier(e.left.declarations[0].id,{initialized:!0,inBlock:!0}),this.validateExpression(e.right),m(e.body)&&this.logDiagnostic(e.body.loc,{code:i.EmptyBlockStatement,severity:s.Warning}),this.validateStatement(e.body)}validateIfStatement(e){this.validateExpression(e.test),m(e.consequent)&&this.logDiagnostic(e.consequent.loc,{code:i.EmptyBlockStatement,severity:s.Warning}),e.alternate&&m(e.alternate)&&this.logDiagnostic(e.alternate.loc,{code:i.EmptyBlockStatement,severity:s.Warning}),this.inBlock(this.validateStatement,e.consequent),this.inBlock(this.validateStatement,e.alternate)}validateExpression(e){if(e)switch(e.type){case o.AssignmentExpression:return void this.validateAssignmentExpression(e);case o.CallExpression:return void this.validateCallExpression(e);case o.Identifier:return void this.validateIdentifier(e);case o.Literal:return void this.validateLiteral(e);case o.ArrayExpression:return void e.elements.forEach((e=>this.validateExpression(e)));case o.ObjectExpression:return void this.validateObjectExpression(e);case o.UnaryExpression:return void this.validateUnaryExpression(e);case o.UpdateExpression:return void this.validateUpdateExpression(e);case o.BinaryExpression:case o.LogicalExpression:return void this.validateBinaryAndLogicalExpression(e);case o.MemberExpression:return void this.validateMemberExpression(e);case o.TemplateLiteral:return void e.expressions.forEach((e=>this.validateExpression(e)));default:return}}validateAssignmentExpression(e){const i=this._identifierBeingAssigned,t=this._assignmentValidationMode;d(e.left)&&(this._identifierBeingAssigned=e.left.name.toLowerCase(),this._assignmentValidationMode="left"),this.validateExpression(e.left),d(e.left)&&(this._assignmentValidationMode="right"),this.validateExpression(e.right),this._identifierBeingAssigned=i,this._assignmentValidationMode=t}validateCallExpression(e){if(this.validateExpression(e.callee),d(e.callee)){const i=e.callee.name.toLowerCase(),t=this.getIdentifierInfo(i),n=this._apiDefinitions?.functionDefinitions?.get(i);if(!t&&n){const i=u(n,e.arguments.length);i&&this.logDiagnostic(e.loc,i)}}e.arguments.forEach((e=>this.validateExpression(e)))}validateIdentifier(e){const t=e.name.toLowerCase(),n=this.getIdentifierInfo(t);if(n){if("left"===this._assignmentValidationMode&&this._identifierBeingAssigned===t)return void(n.initialized=!0);if("right"===this._assignmentValidationMode&&this._identifierBeingAssigned===t)return;n.used=!0}else if(!this.isProfileVariable(t)&&!this.isApiItem(t)){if(this._isInFunctionScope){let i=this._undeclaredIdentifiersInFunctions.get(t);return i||(i=[],this._undeclaredIdentifiersInFunctions.set(t,i)),void i.push({node:e,identifier:t})}this.logDiagnostic(e.loc,{code:i.NotDefined,data:{identifier:e.name}})}}validateLiteral(e){I(e.raw).forEach((e=>{const i=this.getIdentifierInfo(e.toLowerCase());i&&(i.used=!0)}))}logProfileOrApiConflict(e){const t=e.name.toLowerCase(),n=this.isProfileVariable(t),a=this.isApiItem(t);(n||a)&&this.logDiagnostic(e.loc,{code:n?i.ProfileVariablesConflict:i.ApiConflict,severity:s.Warning,data:{identifier:e.name}})}logReservedKeywordsConflict(e){const t=e.name.toLowerCase();n.includes(t)&&this.logDiagnostic(e.loc,{code:i.ReservedKeyword,severity:s.Warning,data:{identifier:e.name}})}validateObjectExpression(e){e.properties.forEach((e=>{this.validateExpression(e.value)}))}validateUnaryExpression(e){this.validateExpression(e.argument)}validateUpdateExpression(e){this.validateExpression(e.argument)}validateBinaryAndLogicalExpression(e){this.validateExpression(e.left),this.validateExpression(e.right)}validateMemberExpression(e){const i=this.flattenMemberExpressionAndValidate(e),t=i[0].object;this.disableRecordIdentifierAssignment(this.validateExpression,t),d(t)&&(this.getIdentifierInfo(t.name.toLowerCase())||this.validateMemberExpressionWithProfile(i)||this.validateConstantMemberExpression(i))}flattenMemberExpressionAndValidate(e){return e.type===o.MemberExpression?(d(e.property)&&!e.computed||this.validateExpression(e.property),[...this.flattenMemberExpressionAndValidate(e.object),e]):[]}extractAndValidatePropertyName(e){switch(e.type){case"Identifier":return e.name.toLowerCase();case"Literal":return"string"!=typeof e.value?(this.logDiagnostic(e.loc,{code:i.UnexpectedPropertyIdentifier}),null):e.value.toLowerCase();default:return this.logDiagnostic(e.loc,{code:i.UnexpectedPropertyIdentifier}),null}}validateConstantMemberExpression(e){const t=e[0];if(!d(t.object))return!1;const n=t.object.name.toLowerCase(),s=this._apiDefinitions?.constantDefinitions?.get(n);if(!s)return!1;if("namespace"!==s.type)return this.logDiagnostic(t.property.loc,{code:i.NotADictionary,data:{identifier:n}}),!0;const a=this.extractAndValidatePropertyName(t.property);if(!a)return!0;if(!s.members.some((e=>e.key===a))){const e=s.members.reduce(((e,i)=>`${e}${e?" | ":""}${i.completion.label.split(".").pop()}`),"");this.logDiagnostic(t.property.loc,{code:i.InvalidConstantIdentifier,data:{list:e}})}return e.length>1&&this.logDiagnostic(e[1].property.loc,{code:i.UnexpectedPropertyIdentifier}),!0}validateMemberExpressionWithProfile(e){const t=e[0];if(t.object.type!==o.Identifier)return!1;const n=t.object.name.toLowerCase(),a=this._profileVariables?.find((e=>e.key===n));if(!a)return!1;if(f(a))return this.logDiagnostic(t.object.loc,{code:i.NotADictionary,data:{identifier:a.name}}),!0;if(this._identifierBeingAssigned===n)return this.logDiagnostic(t.loc,{code:i.ProfileVariablesAreImmutable}),!0;let r=a;for(let o=0;o<e.length;o++){if(e[o].computed)return!0;if(f(r))return this.logDiagnostic(e[o-1]?.property.loc??e[o].object.loc,{code:i.NotADictionary,data:{identifier:r.name}}),!0;const t=this.extractAndValidatePropertyName(e[o].property);if(!t)return!0;if(0===r.properties.length)return this.logDiagnostic(e[o].property.loc,{code:i.UnknownPropertyIdentifier,data:{identifier:t},severity:s.Warning}),!0;const n=r.properties.find((e=>e.name.toLowerCase()===t));if(!n){const t=r.properties.reduce(((e,i)=>`${e}${e?" | ":""}${i.name.split(".").pop()}`),"");return this.logDiagnostic(e[o].property.loc,{code:i.InvalidPropertyIdentifier,data:{list:t}}),!0}r=n}return!0}recordVariableIdentifier(e,t){this.logReservedKeywordsConflict(e),this.logProfileOrApiConflict(e);const n=e.name.toLowerCase();let a=this.getIdentifierInfo(n);const o=a&&this._isInFunctionScope&&"function"===a.scope,r=a&&!this._isInFunctionScope&&"script"===a.scope;(o||r)&&this.logDiagnostic(e.loc,{code:i.AlreadyDefined,data:{identifier:e.name},severity:s.Warning});const d=t.inBlock??this._isInBlock,{initialized:c}=t;if(!a||this._isInFunctionScope&&"function"!==a.scope){a={node:e,used:!1,initialized:c,scope:this._isInFunctionScope?"function":d?"block":"script"}}else a.node=e,a.used=!1,a.initialized=c;return"block"!==a.scope||d||(a.scope="script",this.logDiagnostic(e.loc,{code:i.AlreadyDefined,data:{identifier:e.name},severity:s.Warning})),this.setIdentiferInfo(n,a),!1}recordImportIdentifier(e){const t=e.specifiers[0].local;this.logProfileOrApiConflict(t);const n=t.name.toLowerCase();let a=this.getIdentifierInfo(n);a?.scope&&this.logDiagnostic(e.specifiers[0].local.loc,{code:i.AlreadyDefined,data:{identifier:e.specifiers[0].local.name},severity:s.Warning}),a={node:e.specifiers[0].local,used:!1,...a,scope:"script",initialized:!0},this.setIdentiferInfo(n,a)}recordFunctionIdentifier(e){this.logProfileOrApiConflict(e.id);const t=e.id.name.toLowerCase();let n=this.getIdentifierInfo(t);n?.scope&&this.logDiagnostic(e.id.loc,{code:i.AlreadyDefined,data:{identifier:e.id.name},severity:s.Warning}),n={node:e.id,used:!1,...n,scope:"script",initialized:!0},this.setIdentiferInfo(t,n)}recordParamAsIdentifier(e){return this.recordVariableIdentifier(e,{initialized:!0})}diagnoseIdentifiers(){(this._functionScopeIdentifiers??this._scriptScopeIdentifiers).forEach((e=>{e.node&&(e.used?e.initialized||this.logDiagnostic(e.node.loc,{code:i.DefinedNeverAssigned,data:{identifier:e.node.name},severity:s.Warning}):this.logDiagnostic(e.node.loc,{code:e.initialized?i.AssignedNeverUsed:i.DefinedNeverUsed,data:{identifier:e.node.name},severity:s.Warning}))}))}}function g(e){return"ParsingError"===e?.name}function m(e){return c(e)||l(e)&&!e?.body.length}function u(e,t){if(!e||null==t||t<0)return null;const{min:n,max:s}=e.overloads.reduce(((e,i)=>{const{min:t,max:n}=i.parametersInfo;return e.min>=0&&(e.min=Math.min(t,e.min)),e.max>=0&&(e.max=n<0?n:Math.max(n,e.max)),e}),{min:1/0,max:0});return t<n?n>0?{code:i.NotEnoughArguments,data:{min:n}}:{code:i.NoArgumentExpected}:s>=0&&t>s?{code:i.TooManyArguments,data:{max:s}}:null}const v=new RegExp(/\B@\w+/g);function I(e){return Array.from((e??"").matchAll(v),(e=>e[0].slice(1)))}function y(e,i=[],t){if(!e)return{diagnostics:[]};return new p(t,i).validateScript(e)}export{p as ArcadeValidationService,h as format,f as isValueVariable,y as validateScript};
5
+ import{parse as e}from"../lib/arcade-parser.js";import{DiagnosticCodes as i,DiagnosticMessages as t}from"./diagnosticMessages.js";import{ArcadeReservedKeywords as n}from"./languageKeywords.js";import{DiagnosticSeverity as s}from"./types.js";import{ParsingErrorMessages as a,Syntax as o,isVariableDeclaration as r,isIdentifier as d,isEmptyStatement as c,isBlockStatement as l}from"../lib/types.js";function h(e,i){return i?e.replaceAll(/\${(.*?)}/g,((e,t)=>i[t]?.toString()??"")):e}function f(e){return!!e&&"dictionary"!==e.type}class p{constructor(e,i=[]){this._apiDefinitions=e,this._profileVariables=i,this._isInBlock=!1,this._identifierBeingAssigned=void 0,this._assignmentValidationMode="disabled",this._scriptScopeIdentifiers=new Map,this._diagnostics=new Array,this._undeclaredIdentifiersInFunctions=new Map}validateScript(t){if(!t)return{diagnostics:[],program:null};this._isInBlock=!1,this._identifierBeingAssigned=void 0,this._assignmentValidationMode="disabled",this._diagnostics=[],this._scriptScopeIdentifiers.clear(),this._undeclaredIdentifiersInFunctions.clear(),this._functionScopeIdentifiers=void 0;let n=null;try{n=e(t,{tolerant:!0}),this.handleErrors(n.errors),n.body.forEach((e=>this.validateStatement(e))),this.diagnoseIdentifiers(),this._undeclaredIdentifiersInFunctions.size>0&&this._undeclaredIdentifiersInFunctions.forEach((e=>{for(const t of e)this.logDiagnostic(t.node.loc,{code:i.NotDefined,data:{identifier:t.node.name}})}))}catch(s){this.handleException(s)}return{diagnostics:this._diagnostics,program:n}}disableRecordIdentifierAssignment(e,i){const t=this._assignmentValidationMode;this._assignmentValidationMode="disabled",e.call(this,i),this._assignmentValidationMode=t}inBlock(e,i){const t=this._isInBlock;this._isInBlock=!0,e.call(this,i),this._isInBlock=t}get _isInFunctionScope(){return!!this._functionScopeIdentifiers}inFunctionScope(e){this._functionScopeIdentifiers=new Map,e.call(this),this.diagnoseIdentifiers(),this._functionScopeIdentifiers=void 0}logDiagnostic(e,i){const n={severity:s.Error,...i,message:h(t[i.code]??a[i.code],i.data),range:{start:{line:e.start.line-1,character:e.start.column},end:{line:e.end.line-1,character:e.end.column}}};this._diagnostics.push(n)}handleErrors(e){(e??[]).forEach(this.handleException,this)}handleException(e){if(g(e)){const{range:i,code:t,data:n}=e;this.logDiagnostic(i,{code:t,data:n})}else this.logDiagnostic({start:{line:1,column:0},end:{line:1,column:0}},{code:i.ExecutionError,data:{stack:e.stack}})}getIdentifierInfo(e){return this._functionScopeIdentifiers?.get(e)??this._scriptScopeIdentifiers.get(e)}setIdentiferInfo(e,i){this._functionScopeIdentifiers?this._functionScopeIdentifiers.set(e,i):((this._functionScopeIdentifiers??this._scriptScopeIdentifiers).set(e,i),this._functionScopeIdentifiers||this._undeclaredIdentifiersInFunctions.has(e)&&(this._undeclaredIdentifiersInFunctions.delete(e),i.used=!0))}isProfileVariable(e){return(this._profileVariables??[]).some((i=>i.name.toLowerCase()===e))}isApiItem(e){const i=!!this._apiDefinitions?.constantDefinitions?.get(e),t=!!this._apiDefinitions?.functionDefinitions?.get(e);return i||t}validateStatement(e){if(e)switch(e.type){case o.BlockStatement:return void e.body.forEach((e=>this.validateStatement(e)));case o.VariableDeclaration:return void e.declarations.forEach((e=>this.validateVariableDeclarator(e)));case o.FunctionDeclaration:return void this.validateFunctionDeclaration(e);case o.ExportNamedDeclaration:return void this.validateExportDeclaration(e);case o.ImportDeclaration:return void this.validateImportDeclaration(e);case o.WhileStatement:return void this.validateWhileStatement(e);case o.ForStatement:return void this.validateForStatement(e);case o.ForInStatement:return void this.validateForInStatement(e);case o.IfStatement:return void this.validateIfStatement(e);case o.ReturnStatement:return void this.validateExpression(e.argument);case o.ExpressionStatement:return void this.validateExpression(e.expression);case o.BreakStatement:case o.ContinueStatement:case o.EmptyStatement:return}}validateVariableDeclarator(e){this.validateExpression(e.init),this.recordVariableIdentifier(e.id,{initialized:!!e.init})}validateFunctionDeclaration(e){this.recordFunctionIdentifier(e),this.inFunctionScope((()=>{e.params.forEach((e=>this.recordParamAsIdentifier(e))),m(e.body)&&this.logDiagnostic(e.body.loc,{code:i.UnexpectedEmptyFunction,data:{identifier:e.id.name},severity:s.Warning}),this.validateStatement(e.body)}))}validateExportDeclaration(e){this.validateStatement(e.declaration)}validateImportDeclaration(e){this.recordImportIdentifier(e)}validateForStatement(e){r(e.init)?this.inBlock(this.validateStatement,e.init):this.validateExpression(e.init),this.validateExpression(e.update),this.validateExpression(e.test),m(e.body)&&this.logDiagnostic(e.body.loc,{code:i.EmptyBlockStatement,severity:s.Warning}),this.inBlock(this.validateStatement,e.body)}validateWhileStatement(e){this.validateExpression(e.test),m(e.body)&&this.logDiagnostic(e.body.loc,{code:i.EmptyBlockStatement,severity:s.Warning}),this.inBlock(this.validateStatement,e.body)}validateForInStatement(e){d(e.left)?this.validateExpression(e.left):this.recordVariableIdentifier(e.left.declarations[0].id,{initialized:!0,inBlock:!0}),this.validateExpression(e.right),m(e.body)&&this.logDiagnostic(e.body.loc,{code:i.EmptyBlockStatement,severity:s.Warning}),this.validateStatement(e.body)}validateIfStatement(e){this.validateExpression(e.test),m(e.consequent)&&this.logDiagnostic(e.consequent.loc,{code:i.EmptyBlockStatement,severity:s.Warning}),e.alternate&&m(e.alternate)&&this.logDiagnostic(e.alternate.loc,{code:i.EmptyBlockStatement,severity:s.Warning}),this.inBlock(this.validateStatement,e.consequent),this.inBlock(this.validateStatement,e.alternate)}validateExpression(e){if(e)switch(e.type){case o.AssignmentExpression:return void this.validateAssignmentExpression(e);case o.CallExpression:return void this.validateCallExpression(e);case o.Identifier:return void this.validateIdentifier(e);case o.Literal:return void this.validateLiteral(e);case o.ArrayExpression:return void e.elements.forEach((e=>this.validateExpression(e)));case o.ObjectExpression:return void this.validateObjectExpression(e);case o.UnaryExpression:return void this.validateUnaryExpression(e);case o.UpdateExpression:return void this.validateUpdateExpression(e);case o.BinaryExpression:case o.LogicalExpression:return void this.validateBinaryAndLogicalExpression(e);case o.MemberExpression:return void this.validateMemberExpression(e);case o.TemplateLiteral:return void e.expressions.forEach((e=>this.validateExpression(e)));default:return}}validateAssignmentExpression(e){const i=this._identifierBeingAssigned,t=this._assignmentValidationMode;d(e.left)&&(this._identifierBeingAssigned=e.left.name.toLowerCase(),this._assignmentValidationMode="left"),this.validateExpression(e.left),d(e.left)&&(this._assignmentValidationMode="right"),this.validateExpression(e.right),this._identifierBeingAssigned=i,this._assignmentValidationMode=t}validateCallExpression(e){if(this.validateExpression(e.callee),d(e.callee)){const i=e.callee.name.toLowerCase(),t=this.getIdentifierInfo(i),n=this._apiDefinitions?.functionDefinitions?.get(i);if(!t&&n){const i=u(n,e.arguments.length);i&&this.logDiagnostic(e.loc,i)}}e.arguments.forEach((e=>this.validateExpression(e)))}validateIdentifier(e){const t=e.name.toLowerCase(),n=this.getIdentifierInfo(t);if(n){if("left"===this._assignmentValidationMode&&this._identifierBeingAssigned===t)return void(n.initialized=!0);if("right"===this._assignmentValidationMode&&this._identifierBeingAssigned===t)return;n.used=!0}else if(!this.isProfileVariable(t)&&!this.isApiItem(t)){if(this._isInFunctionScope){let i=this._undeclaredIdentifiersInFunctions.get(t);return i||(i=[],this._undeclaredIdentifiersInFunctions.set(t,i)),void i.push({node:e,identifier:t})}this.logDiagnostic(e.loc,{code:i.NotDefined,data:{identifier:e.name}})}}validateLiteral(e){I(e.raw).forEach((e=>{const i=this.getIdentifierInfo(e.toLowerCase());i&&(i.used=!0)}))}logProfileOrApiConflict(e){const t=e.name.toLowerCase(),n=this.isProfileVariable(t),a=this.isApiItem(t);(n||a)&&this.logDiagnostic(e.loc,{code:n?i.ProfileVariablesConflict:i.ApiConflict,severity:s.Warning,data:{identifier:e.name}})}logReservedKeywordsConflict(e){const t=e.name.toLowerCase();n.includes(t)&&this.logDiagnostic(e.loc,{code:i.ReservedKeyword,severity:s.Warning,data:{identifier:e.name}})}validateObjectExpression(e){e.properties.forEach((e=>{this.validateExpression(e.value)}))}validateUnaryExpression(e){this.validateExpression(e.argument)}validateUpdateExpression(e){this.validateExpression(e.argument)}validateBinaryAndLogicalExpression(e){this.validateExpression(e.left),this.validateExpression(e.right)}validateMemberExpression(e){const i=this.flattenMemberExpressionAndValidate(e),t=i[0].object;this.disableRecordIdentifierAssignment(this.validateExpression,t),d(t)&&(this.getIdentifierInfo(t.name.toLowerCase())||this.validateMemberExpressionWithProfile(i)||this.validateConstantMemberExpression(i))}flattenMemberExpressionAndValidate(e){return e.type===o.MemberExpression?(d(e.property)&&!e.computed||this.validateExpression(e.property),[...this.flattenMemberExpressionAndValidate(e.object),e]):[]}extractAndValidatePropertyName(e){switch(e.type){case"Identifier":return e.name.toLowerCase();case"Literal":return"string"!=typeof e.value?(this.logDiagnostic(e.loc,{code:i.UnexpectedPropertyIdentifier}),null):e.value.toLowerCase();default:return this.logDiagnostic(e.loc,{code:i.UnexpectedPropertyIdentifier}),null}}validateConstantMemberExpression(e){const t=e[0];if(!d(t.object))return!1;const n=t.object.name.toLowerCase(),s=this._apiDefinitions?.constantDefinitions?.get(n);if(!s)return!1;if("namespace"!==s.type)return this.logDiagnostic(t.property.loc,{code:i.NotADictionary,data:{identifier:n}}),!0;const a=this.extractAndValidatePropertyName(t.property);if(!a)return!0;if(!s.members.some((e=>e.key===a))){const e=s.members.reduce(((e,i)=>`${e}${e?" | ":""}${i.completion.label.split(".").pop()}`),"");this.logDiagnostic(t.property.loc,{code:i.InvalidConstantIdentifier,data:{list:e}})}return e.length>1&&this.logDiagnostic(e[1].property.loc,{code:i.UnexpectedPropertyIdentifier}),!0}validateMemberExpressionWithProfile(e){const t=e[0];if(t.object.type!==o.Identifier)return!1;const n=t.object.name.toLowerCase(),a=this._profileVariables?.find((e=>e.key===n));if(!a)return!1;if(f(a))return this.logDiagnostic(t.object.loc,{code:i.NotADictionary,data:{identifier:a.name}}),!0;if(this._identifierBeingAssigned===n)return this.logDiagnostic(t.loc,{code:i.ProfileVariablesAreImmutable}),!0;let r=a;for(let o=0;o<e.length;o++){if(e[o].computed)return!0;if(f(r))return this.logDiagnostic(e[o-1]?.property.loc??e[o].object.loc,{code:i.NotADictionary,data:{identifier:r.name}}),!0;const t=this.extractAndValidatePropertyName(e[o].property);if(!t)return!0;if(0===r.properties.length)return this.logDiagnostic(e[o].property.loc,{code:i.UnknownPropertyIdentifier,data:{identifier:t},severity:s.Warning}),!0;const n=r.properties.find((e=>e.name.toLowerCase()===t));if(!n){const t=r.properties.reduce(((e,i)=>`${e}${e?" | ":""}${i.name.split(".").pop()}`),"");return this.logDiagnostic(e[o].property.loc,{code:i.InvalidPropertyIdentifier,data:{list:t}}),!0}r=n}return!0}recordVariableIdentifier(e,t){this.logReservedKeywordsConflict(e),this.logProfileOrApiConflict(e);const n=e.name.toLowerCase();let a=this.getIdentifierInfo(n);const o=a&&this._isInFunctionScope&&"function"===a.scope,r=a&&!this._isInFunctionScope&&"script"===a.scope;(o||r)&&this.logDiagnostic(e.loc,{code:i.AlreadyDefined,data:{identifier:e.name},severity:s.Warning});const d=t.inBlock??this._isInBlock,{initialized:c}=t;if(!a||this._isInFunctionScope&&"function"!==a.scope){a={node:e,used:!1,initialized:c,scope:this._isInFunctionScope?"function":d?"block":"script"}}else a.node=e,a.used=!1,a.initialized=c;return"block"!==a.scope||d||(a.scope="script",this.logDiagnostic(e.loc,{code:i.AlreadyDefined,data:{identifier:e.name},severity:s.Warning})),this.setIdentiferInfo(n,a),!1}recordImportIdentifier(e){const t=e.specifiers[0].local;this.logProfileOrApiConflict(t);const n=t.name.toLowerCase();let a=this.getIdentifierInfo(n);a?.scope&&this.logDiagnostic(e.specifiers[0].local.loc,{code:i.AlreadyDefined,data:{identifier:e.specifiers[0].local.name},severity:s.Warning}),a={node:e.specifiers[0].local,used:!1,...a,scope:"script",initialized:!0},this.setIdentiferInfo(n,a)}recordFunctionIdentifier(e){this.logProfileOrApiConflict(e.id);const t=e.id.name.toLowerCase();let n=this.getIdentifierInfo(t);n?.scope&&this.logDiagnostic(e.id.loc,{code:i.AlreadyDefined,data:{identifier:e.id.name},severity:s.Warning}),n={node:e.id,used:!1,...n,scope:"script",initialized:!0},this.setIdentiferInfo(t,n)}recordParamAsIdentifier(e){return this.recordVariableIdentifier(e,{initialized:!0})}diagnoseIdentifiers(){(this._functionScopeIdentifiers??this._scriptScopeIdentifiers).forEach((e=>{e.node&&(e.used?e.initialized||this.logDiagnostic(e.node.loc,{code:i.DefinedNeverAssigned,data:{identifier:e.node.name},severity:s.Warning}):this.logDiagnostic(e.node.loc,{code:e.initialized?i.AssignedNeverUsed:i.DefinedNeverUsed,data:{identifier:e.node.name},severity:s.Warning}))}))}}function g(e){return"ParsingError"===e?.name}function m(e){return c(e)||l(e)&&!e?.body.length}function u(e,t){if(!e||null==t||t<0)return null;const{min:n,max:s}=e.overloads.reduce(((e,i)=>{const{min:t,max:n}=i.parametersInfo;return e.min>=0&&(e.min=Math.min(t,e.min)),e.max>=0&&(e.max=n<0?n:Math.max(n,e.max)),e}),{min:1/0,max:0});return t<n?n>0?{code:i.NotEnoughArguments,data:{min:n}}:{code:i.NoArgumentExpected}:s>=0&&t>s?{code:i.TooManyArguments,data:{max:s}}:null}const v=new RegExp(/\B@\w+/g);function I(e){return Array.from((e??"").matchAll(v),(e=>e[0].slice(1)))}function y(e,i=[],t){if(!e)return{diagnostics:[]};return new p(t,i).validateScript(e)}export{p as ArcadeValidationService,h as format,f as isValueVariable,y as validateScript};