@arcgis/core 4.21.0-next.20210913 → 4.21.0-next.20210917
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/arcade/arcadeAsyncRuntime.js +1 -1
- package/arcade/arcadeRuntime.js +1 -1
- package/arcade/featureset/support/sqlUtils.js +1 -1
- package/arcade/lib/parser.js +1 -1
- package/arcade/treeAnalysis.js +1 -1
- package/assets/esri/core/workers/RemoteClient.js +1 -1
- package/assets/esri/core/workers/chunks/06c9c7a916e8ed857c6c.js +1 -0
- package/assets/esri/core/workers/chunks/075320100b6d18741919.js +1 -0
- package/assets/esri/core/workers/chunks/{c39459d9a6d3a0fdd6bc.js → 0775bd8a1f4d986ac145.js} +1 -1
- package/assets/esri/core/workers/chunks/0935388f886f5aaa9fea.js +1 -0
- package/assets/esri/core/workers/chunks/095b381aadd51b8a6e48.js +1 -0
- package/assets/esri/core/workers/chunks/1460eaad15295acd2960.js +1 -0
- package/assets/esri/core/workers/chunks/2475cae7eb437c0176c6.js +1 -0
- package/assets/esri/core/workers/chunks/{e6ca34497b8517fdecf2.js → 2e1cb3ace85b2896cea8.js} +1 -1
- package/assets/esri/core/workers/chunks/36924f32538a1641639d.js +1 -0
- package/assets/esri/core/workers/chunks/38e792e037e88a74995a.js +2 -0
- package/assets/esri/core/workers/chunks/{258e5d5b3c1b77546fe0.js.LICENSE.txt → 38e792e037e88a74995a.js.LICENSE.txt} +0 -0
- package/assets/esri/core/workers/chunks/3974acebb8739a1b8275.js +1 -0
- package/assets/esri/core/workers/chunks/41cc99929938cbf310e0.js +1 -0
- package/assets/esri/core/workers/chunks/42f1ea5f61521156e044.js +1 -0
- package/assets/esri/core/workers/chunks/4663377f9a5e588ee08e.js +1 -0
- package/assets/esri/core/workers/chunks/48af86a92a55b5ecb151.js +1 -0
- package/assets/esri/core/workers/chunks/{83d8e94e0d65592c3b8a.js → 5cfad7d16f7cab945f5a.js} +1 -1
- package/assets/esri/core/workers/chunks/5f2a3b0b29be2cf51a79.js +1 -0
- package/assets/esri/core/workers/chunks/62e71d7fe7a332db8592.js +1 -0
- package/assets/esri/core/workers/chunks/6541dd25178972eb2bcf.js +1 -0
- package/assets/esri/core/workers/chunks/{36d975b236c8510bce11.js → 675805b7a42eaa05fe6c.js} +1 -1
- package/assets/esri/core/workers/chunks/6d6b0eb7ff001b16ecc9.js +1 -0
- package/assets/esri/core/workers/chunks/6f9dee5a541c911f1f50.js +2 -0
- package/assets/esri/core/workers/chunks/{41ae9244b5fdb040596b.js.LICENSE.txt → 6f9dee5a541c911f1f50.js.LICENSE.txt} +0 -0
- package/assets/esri/core/workers/chunks/{ca4564e36830dd3693c8.js → 6fba88c61cfa622b4783.js} +1 -1
- package/assets/esri/core/workers/chunks/72323f91135d03a52bb3.js +1 -0
- package/assets/esri/core/workers/chunks/{b4e6065ac6b81f83c224.js → 77385a77c8597c7311b1.js} +1 -1
- package/assets/esri/core/workers/chunks/{821cf9cc5950398cecda.js → 77fc95d41d16b0adb75d.js} +1 -1
- package/assets/esri/core/workers/chunks/{9378492f4deb565cd7f2.js → 7bde2b52bd0d9c0dc6a6.js} +1 -1
- package/assets/esri/core/workers/chunks/7beb90a0f89c669210ca.js +1 -0
- package/assets/esri/core/workers/chunks/7d9a11183d2b68027195.js +1 -0
- package/assets/esri/core/workers/chunks/{5758586cf4715821a83a.js → 86d4444776333b32218b.js} +1 -1
- package/assets/esri/core/workers/chunks/8a680c4ac40bff773d2b.js +1 -0
- package/assets/esri/core/workers/chunks/8ccb1ea34e6b1081b813.js +1 -0
- package/assets/esri/core/workers/chunks/91c92607964d11828dfa.js +1 -0
- package/assets/esri/core/workers/chunks/92e417dfa9be682e78aa.js +1 -0
- package/assets/esri/core/workers/chunks/95431c2e127b3c0f9c2c.js +1 -0
- package/assets/esri/core/workers/chunks/980193daffbbdbc95b49.js +1 -0
- package/assets/esri/core/workers/chunks/98d16abf182f9859b731.js +1 -0
- package/assets/esri/core/workers/chunks/{a51420c2e46d1352e44c.js → 9d1a4640b47f14dfb098.js} +1 -1
- package/assets/esri/core/workers/chunks/{38a01e1adcd51f33975c.js → 9d3cc30a7d9f7b49a0f6.js} +1 -1
- package/assets/esri/core/workers/chunks/{d90a3e117eec0fa36040.js → a303bbf08da947af44a6.js} +1 -1
- package/assets/esri/core/workers/chunks/b65ffe6a28a7668d70d9.js +1 -0
- package/assets/esri/core/workers/chunks/b92fd2622a412b6a1fe0.js +1 -0
- package/assets/esri/core/workers/chunks/{9d97477d3cc0a3a0fd52.js → baaa7aaffc31e91ee66f.js} +1 -1
- package/assets/esri/core/workers/chunks/{159d1a3b827e64be6261.js → c884d1a70e477aae1204.js} +1 -1
- package/assets/esri/core/workers/chunks/ca3b924e1945e9b64f36.js +1 -0
- package/assets/esri/core/workers/chunks/cdfc6ece5d5bf049b799.js +1 -0
- package/assets/esri/core/workers/chunks/{529c14901eeb02144a99.js → d18a836afad8cfc56578.js} +1 -1
- package/assets/esri/core/workers/chunks/{2580fb1d20863c8d4978.js → d5894ad1ca37918652b6.js} +1 -1
- package/assets/esri/core/workers/chunks/{58fb90b847fd51e86227.js → d5ee79c7ec441049257d.js} +1 -1
- package/assets/esri/core/workers/chunks/d9115cb3fd394befc2ab.js +971 -0
- package/assets/esri/core/workers/chunks/e1b78bd541f0d28f9bb3.js +1 -0
- package/assets/esri/core/workers/chunks/ec865108a0ea33451e69.js +1 -0
- package/assets/esri/core/workers/chunks/ecdabb6c2e4816916f66.js +1 -0
- package/assets/esri/core/workers/chunks/{c26dd872a15ad9403c6a.js → ed4f621561e2820571ba.js} +1 -1
- package/assets/esri/core/workers/chunks/{6a8acd5b4ec98b90ddd4.js → f1b067ffc0af7a3b629e.js} +1 -1
- package/assets/esri/core/workers/chunks/{a30f41dc49fdd884d525.js → fa82fcb7b30c50186e0a.js} +1 -1
- package/assets/esri/core/workers/chunks/fc2d45c5c40fff637c67.js +1 -0
- package/assets/esri/core/workers/chunks/{0e260418f7b95830069f.js → fe8244ac5e11497250e5.js} +1 -1
- package/assets/esri/widgets/support/SnappingControls/t9n/SnappingControls_ar.json +1 -1
- package/assets/esri/widgets/support/SnappingControls/t9n/SnappingControls_bs.json +1 -1
- package/assets/esri/widgets/support/SnappingControls/t9n/SnappingControls_ca.json +1 -1
- package/assets/esri/widgets/support/SnappingControls/t9n/SnappingControls_cs.json +1 -1
- package/assets/esri/widgets/support/SnappingControls/t9n/SnappingControls_da.json +1 -1
- package/assets/esri/widgets/support/SnappingControls/t9n/SnappingControls_de.json +1 -1
- package/assets/esri/widgets/support/SnappingControls/t9n/SnappingControls_el.json +1 -1
- package/assets/esri/widgets/support/SnappingControls/t9n/SnappingControls_es.json +1 -1
- package/assets/esri/widgets/support/SnappingControls/t9n/SnappingControls_et.json +1 -1
- package/assets/esri/widgets/support/SnappingControls/t9n/SnappingControls_fi.json +1 -1
- package/assets/esri/widgets/support/SnappingControls/t9n/SnappingControls_fr.json +1 -1
- package/assets/esri/widgets/support/SnappingControls/t9n/SnappingControls_he.json +1 -1
- package/assets/esri/widgets/support/SnappingControls/t9n/SnappingControls_hr.json +1 -1
- package/assets/esri/widgets/support/SnappingControls/t9n/SnappingControls_hu.json +1 -1
- package/assets/esri/widgets/support/SnappingControls/t9n/SnappingControls_id.json +1 -1
- package/assets/esri/widgets/support/SnappingControls/t9n/SnappingControls_it.json +1 -1
- package/assets/esri/widgets/support/SnappingControls/t9n/SnappingControls_ja.json +1 -1
- package/assets/esri/widgets/support/SnappingControls/t9n/SnappingControls_ko.json +1 -1
- package/assets/esri/widgets/support/SnappingControls/t9n/SnappingControls_lt.json +1 -1
- package/assets/esri/widgets/support/SnappingControls/t9n/SnappingControls_lv.json +1 -1
- package/assets/esri/widgets/support/SnappingControls/t9n/SnappingControls_nb.json +1 -1
- package/assets/esri/widgets/support/SnappingControls/t9n/SnappingControls_nl.json +1 -1
- package/assets/esri/widgets/support/SnappingControls/t9n/SnappingControls_pl.json +1 -1
- package/assets/esri/widgets/support/SnappingControls/t9n/SnappingControls_pt-BR.json +1 -1
- package/assets/esri/widgets/support/SnappingControls/t9n/SnappingControls_pt-PT.json +1 -1
- package/assets/esri/widgets/support/SnappingControls/t9n/SnappingControls_ro.json +1 -1
- package/assets/esri/widgets/support/SnappingControls/t9n/SnappingControls_ru.json +1 -1
- package/assets/esri/widgets/support/SnappingControls/t9n/SnappingControls_sk.json +1 -1
- package/assets/esri/widgets/support/SnappingControls/t9n/SnappingControls_sl.json +1 -1
- package/assets/esri/widgets/support/SnappingControls/t9n/SnappingControls_sr.json +1 -1
- package/assets/esri/widgets/support/SnappingControls/t9n/SnappingControls_sv.json +1 -1
- package/assets/esri/widgets/support/SnappingControls/t9n/SnappingControls_th.json +1 -1
- package/assets/esri/widgets/support/SnappingControls/t9n/SnappingControls_tr.json +1 -1
- package/assets/esri/widgets/support/SnappingControls/t9n/SnappingControls_uk.json +1 -1
- package/assets/esri/widgets/support/SnappingControls/t9n/SnappingControls_vi.json +1 -1
- package/assets/esri/widgets/support/SnappingControls/t9n/SnappingControls_zh-CN.json +1 -1
- package/assets/esri/widgets/support/SnappingControls/t9n/SnappingControls_zh-HK.json +1 -1
- package/assets/esri/widgets/support/SnappingControls/t9n/SnappingControls_zh-TW.json +1 -1
- package/chunks/SunCalc.js +1 -1
- package/chunks/Terrain.glsl.js +2 -2
- package/chunks/ajv.bundle.js +1 -1
- package/chunks/ar.js +1 -1
- package/chunks/basis_transcoder.js +1 -1
- package/chunks/bs_BA.js +1 -1
- package/chunks/ca_ES.js +1 -1
- package/chunks/cs_CZ.js +1 -1
- package/chunks/da_DK.js +1 -1
- package/chunks/de_CH.js +1 -1
- package/chunks/de_DE.js +1 -1
- package/chunks/earcut.js +1 -1
- package/chunks/el_GR.js +1 -1
- package/chunks/en_CA.js +1 -1
- package/chunks/en_US.js +1 -1
- package/chunks/es_ES.js +1 -1
- package/chunks/et_EE.js +1 -1
- package/chunks/fi_FI.js +1 -1
- package/chunks/fr_FR.js +1 -1
- package/chunks/geometryEngineBase.js +1 -1
- package/chunks/he_IL.js +1 -1
- package/chunks/hr_HR.js +1 -1
- package/chunks/hu_HU.js +1 -1
- package/chunks/id_ID.js +1 -1
- package/chunks/index.js +1 -1
- package/chunks/it_IT.js +1 -1
- package/chunks/ja_JP.js +1 -1
- package/chunks/ko_KR.js +1 -1
- package/chunks/libtess-asm.js +1 -1
- package/chunks/libtess.js +1 -1
- package/chunks/lt_LT.js +1 -1
- package/chunks/lv_LV.js +1 -1
- package/chunks/nb_NO.js +1 -1
- package/chunks/nl_NL.js +1 -1
- package/chunks/pl_PL.js +1 -1
- package/chunks/pt_BR.js +1 -1
- package/chunks/pt_PT.js +1 -1
- package/chunks/quickselect.js +1 -1
- package/chunks/ro_RO.js +1 -1
- package/chunks/ru_RU.js +1 -1
- package/chunks/sk_SK.js +1 -1
- package/chunks/sl_SL.js +1 -1
- package/chunks/sr_RS.js +1 -1
- package/chunks/sv_SE.js +1 -1
- package/chunks/th_TH.js +1 -1
- package/chunks/tr_TR.js +1 -1
- package/chunks/uk_UA.js +1 -1
- package/chunks/vi_VN.js +1 -1
- package/chunks/vxlLayer.js +1 -1
- package/chunks/zh_Hans.js +1 -1
- package/chunks/zh_Hant.js +1 -1
- package/core/number.js +1 -1
- package/core/sql/StandardizedFunctions.js +1 -1
- package/core/sql/WhereClause.js +1 -1
- package/geometry/libtess.js +1 -1
- package/geometry/support/heightModelInfoUtils.js +1 -1
- package/interfaces.d.ts +480 -255
- package/layers/FeatureLayer.js +1 -1
- package/layers/GeoJSONLayer.js +1 -1
- package/layers/ImageryTileLayer.js +1 -1
- package/layers/LineOfSightTarget.js +1 -1
- package/layers/OGCFeatureLayer.js +1 -1
- package/layers/SubtypeGroupLayer.js +1 -1
- package/layers/WFSLayer.js +1 -1
- package/layers/WMSLayer.js +1 -1
- package/layers/WMTSLayer.js +1 -1
- package/layers/graphics/data/QueryEngine.js +1 -1
- package/layers/graphics/data/QueryEngineResult.js +1 -1
- package/layers/graphics/sources/WFSSource.js +1 -1
- package/layers/mixins/ArcGISImageService.js +1 -1
- package/layers/mixins/OrderedLayer.js +1 -1
- package/layers/ogc/ogcFeatureUtils.js +1 -1
- package/layers/support/BuildingFilter.js +1 -1
- package/layers/support/LayerFloorInfo.js +1 -1
- package/layers/support/MosaicRule.js +1 -1
- package/layers/support/OrderByInfo.js +1 -1
- package/layers/support/Sublayer.js +1 -1
- package/layers/support/arcgisLayerUrl.js +1 -1
- package/layers/support/featureReductionUtils.js +1 -1
- package/layers/support/fieldUtils.js +1 -1
- package/layers/support/layersCreator.js +1 -1
- package/layers/support/rasterFormats/RasterCodec.js +1 -1
- package/layers/support/sublayerUtils.js +1 -1
- package/layers/support/wmtsUtils.js +1 -1
- package/networks/support/utils.js +1 -1
- package/package.json +1 -1
- package/renderers/support/jsonUtils.js +1 -1
- package/renderers/support/rasterRendererHelper.js +1 -1
- package/rest/query/operations/pbfDehydratedFeatureSet.js +1 -1
- package/rest/query/operations/pbfFeatureServiceParser.js +1 -1
- package/rest/query/operations/pbfJSONFeatureSet.js +1 -1
- package/smartMapping/renderers/support/utils.js +1 -1
- package/smartMapping/statistics/support/utils.js +1 -1
- package/smartMapping/support/adapters/FeatureLayerAdapter.js +1 -1
- package/support/revision.js +1 -1
- package/symbols/cim/CIMSymbolHelper.js +1 -1
- package/symbols/cim/CurveHelper.js +1 -1
- package/symbols/cim/cimAnalyzer.js +1 -1
- package/symbols/cim/effects/EffectArrow.js +1 -1
- package/symbols/cim/effects/EffectDashes.js +1 -1
- package/symbols/cim/effects/EffectDonut.js +1 -1
- package/symbols/cim/effects/EffectWave.js +1 -1
- package/symbols/cim/placements/PlacementAtExtremities.js +1 -1
- package/symbols/cim/placements/PlacementOnLine.js +1 -1
- package/symbols/cim/placements/PlacementPolygonCenter.js +1 -1
- package/symbols/patterns/utils.js +1 -1
- package/views/2d/engine/webgl/FeatureDisplayList.js +1 -1
- package/views/2d/engine/webgl/FeatureTile.js +1 -1
- package/views/2d/engine/webgl/TextureManager.js +1 -1
- package/views/2d/engine/webgl/WGLRendererInfo.js +1 -1
- package/views/2d/engine/webgl/cpuMapped/Geometry.js +1 -1
- package/views/2d/engine/webgl/mesh/MeshData.js +1 -1
- package/views/2d/engine/webgl/mesh/factories/WGLMeshFactory.js +1 -1
- package/views/2d/engine/webgl/mesh/templates/WGLBaseTextTemplate.js +1 -1
- package/views/2d/interactive/editingTools/draw/DrawGraphicTool2D.js +1 -1
- package/views/2d/layers/FeatureLayerView2D.js +1 -1
- package/views/2d/layers/features/controllers/FeatureController2D.js +1 -1
- package/views/2d/layers/features/processors/SymbolProcessor.js +1 -1
- package/views/2d/layers/features/schemaUtils.js +1 -1
- package/views/2d/layers/features/sources/GeoEventSource.js +1 -1
- package/views/2d/layers/features/support/FeatureSetReaderPBF.js +1 -1
- package/views/2d/layers/features/tileRenderers/support/WGLFeatureView.js +1 -1
- package/views/2d/layers/graphics/graphicsUtils.js +1 -1
- package/views/3d/environment/ChapmanAtmosphere.js +1 -1
- package/views/3d/interactive/analysisTools/lineOfSight/LineOfSightTool.js +1 -1
- package/views/3d/interactive/analysisTools/slice/SliceTool.js +1 -1
- package/views/3d/interactive/editingTools/manipulations/MoveZManipulation.js +1 -1
- package/views/3d/interactive/editingTools/moveGraphic/isSupportedGraphic.js +1 -1
- package/views/3d/interactive/editingTools/transformGraphic/GraphicScaleRotateTransform.js +1 -1
- package/views/3d/interactive/measurementTools/areaMeasurement3D/AreaMeasurement3DView.js +1 -1
- package/views/3d/interactive/measurementTools/directLineMeasurement3D/DirectLineMeasurement3DView.js +1 -1
- package/views/3d/layers/LineOfSightLayerView3D.js +1 -1
- package/views/3d/layers/analysis/DirectLineMeasurement/DirectLineMeasurementView.js +1 -1
- package/views/3d/layers/analysis/LineOfSight/LineOfSightController.js +1 -1
- package/views/3d/layers/graphics/Graphics3DCore.js +1 -1
- package/views/3d/layers/graphics/Graphics3DIconSymbolLayer.js +1 -1
- package/views/3d/layers/graphics/Graphics3DLineSymbolLayer.js +1 -1
- package/views/3d/layers/graphics/Graphics3DMeshFillSymbolLayer.js +1 -1
- package/views/3d/layers/graphics/Graphics3DObjectSymbolLayer.js +1 -1
- package/views/3d/layers/graphics/Graphics3DPathSymbolLayer.js +1 -1
- package/views/3d/layers/graphics/Graphics3DSymbolFactory.js +1 -1
- package/views/3d/layers/graphics/labelPlacement.js +1 -1
- package/views/3d/layers/graphics/wosrLoader.js +1 -1
- package/views/3d/layers/i3s/I3SMeshViewFilter.js +1 -1
- package/views/3d/terrain/TerrainRenderer.js +1 -1
- package/views/3d/terrain/TerrainSurface.js +1 -1
- package/views/3d/terrain/TextureFader.js +1 -1
- package/views/3d/terrain/TextureReference.js +1 -1
- package/views/3d/terrain/Tile.js +1 -1
- package/views/3d/terrain/TileAgent.js +1 -1
- package/views/3d/terrain/TileRenderer.js +1 -1
- package/views/3d/webgl-engine/collections/Component/ComponentIntersectionData.js +1 -1
- package/views/3d/webgl-engine/collections/Component/DepthRange.js +1 -1
- package/views/3d/webgl-engine/core/shaderLibrary/terrain/TerrainTexture.glsl.js +28 -26
- package/views/3d/webgl-engine/lib/Renderer.js +1 -1
- package/views/3d/webgl-engine/lib/WebGLDriverTest.js +1 -1
- package/views/3d/webgl-engine/lib/glUtil3D.js +1 -1
- package/views/ToolViewManager.js +1 -1
- package/views/draw/DrawGraphicTool.js +1 -1
- package/views/draw/DrawOperation.js +1 -1
- package/views/draw/support/Reshape.js +1 -1
- package/views/input/recognizers/PointerClickHoldAndDrag.js +1 -1
- package/views/interactive/InteractiveToolBase.js +1 -1
- package/views/interactive/interactiveToolUtils.js +1 -1
- package/views/interactive/snapping/featureSources/GraphicsSnappingSource.js +1 -1
- package/views/layers/FeatureLayerView.js +1 -1
- package/views/support/Scheduler.js +1 -1
- package/views/support/screenUtils.js +1 -1
- package/views/support/screenshotUtils.js +1 -1
- package/views/webgl/ShaderTranspiler.js +1 -1
- package/views/webgl/Texture.js +1 -1
- package/views/webgl/capabilities/load.js +1 -1
- package/views/webgl/testFloatBufferBlend.js +5 -0
- package/widgets/AreaMeasurement3D/AreaMeasurement3DViewModel.js +1 -1
- package/widgets/BasemapLayerList/BasemapLayerListViewModel.js +1 -1
- package/widgets/DirectLineMeasurement3D/DirectLineMeasurement3DViewModel.js +1 -1
- package/widgets/Editor/workflowUtils.js +1 -1
- package/widgets/Editor.js +1 -1
- package/widgets/ElevationProfile/ElevationProfileInteraction.js +1 -1
- package/widgets/ElevationProfile/support/geometryUtils.js +1 -1
- package/widgets/Feature/support/featureUtils.js +1 -1
- package/widgets/FeatureTable/FeatureTableViewModel.js +1 -1
- package/widgets/FeatureTable/FieldColumn.js +1 -1
- package/widgets/FeatureTable/Grid/Column.js +1 -1
- package/widgets/FeatureTable/Grid/EditorColumn.js +1 -1
- package/widgets/FeatureTable/Grid/Grid.js +9 -9
- package/widgets/FeatureTemplates/FeatureTemplatesViewModel.js +1 -1
- package/widgets/LineOfSight/LineOfSightTarget.js +1 -1
- package/widgets/LineOfSight/LineOfSightViewModel.js +1 -1
- package/widgets/Search/SearchViewModel.js +1 -1
- package/widgets/Search/support/layerSearchUtils.js +1 -1
- package/widgets/Sketch/SketchViewModel.js +1 -1
- package/widgets/Slice/SliceViewModel.js +1 -1
- package/assets/esri/core/workers/chunks/0a688979da718b098291.js +0 -1
- package/assets/esri/core/workers/chunks/0ede810754fb582fdfc6.js +0 -1
- package/assets/esri/core/workers/chunks/14850ed6c9e8f1b16c82.js +0 -1
- package/assets/esri/core/workers/chunks/14e86322b9f9982da7b4.js +0 -1
- package/assets/esri/core/workers/chunks/1c0a72ea9d5791b43f96.js +0 -1
- package/assets/esri/core/workers/chunks/1ee626d582aabe664019.js +0 -1
- package/assets/esri/core/workers/chunks/258e5d5b3c1b77546fe0.js +0 -2
- package/assets/esri/core/workers/chunks/2c13f32020abba66bfde.js +0 -1
- package/assets/esri/core/workers/chunks/2cdf3f5ea80d7ccce75d.js +0 -1
- package/assets/esri/core/workers/chunks/416f1d565a1636963f8d.js +0 -1
- package/assets/esri/core/workers/chunks/41ae9244b5fdb040596b.js +0 -2
- package/assets/esri/core/workers/chunks/460a5872ebabfdd5a9c6.js +0 -1
- package/assets/esri/core/workers/chunks/4acefc1b745d839b5147.js +0 -1
- package/assets/esri/core/workers/chunks/4adb0ef77ea7ab47d059.js +0 -1
- package/assets/esri/core/workers/chunks/4e98ed8e822a4ba2c015.js +0 -1
- package/assets/esri/core/workers/chunks/564a1680791f81a74882.js +0 -1
- package/assets/esri/core/workers/chunks/599c3e1ec919fc5f8cbb.js +0 -1
- package/assets/esri/core/workers/chunks/63b7442c685777b53bce.js +0 -1
- package/assets/esri/core/workers/chunks/69e0f13c58ba92b88526.js +0 -1
- package/assets/esri/core/workers/chunks/7052ae9efbf8c3612655.js +0 -1
- package/assets/esri/core/workers/chunks/7aeb49140ffd10b540b1.js +0 -1
- package/assets/esri/core/workers/chunks/7b0b68a2a32e1ac76dca.js +0 -1
- package/assets/esri/core/workers/chunks/8d77fa5efd7d37509bf1.js +0 -1
- package/assets/esri/core/workers/chunks/98fc713e397436c2a82c.js +0 -1
- package/assets/esri/core/workers/chunks/9b75beeaca443cb9f9a3.js +0 -1
- package/assets/esri/core/workers/chunks/9f1226778f376cae4bcf.js +0 -1
- package/assets/esri/core/workers/chunks/a19db98519f16c3e73bb.js +0 -1
- package/assets/esri/core/workers/chunks/a6cb64c4e40f2f53dcd0.js +0 -1
- package/assets/esri/core/workers/chunks/ab0c3faddf9479fada54.js +0 -1
- package/assets/esri/core/workers/chunks/ad5ea334e282fdfe527f.js +0 -1
- package/assets/esri/core/workers/chunks/aeedc9e27e1be112d10f.js +0 -1
- package/assets/esri/core/workers/chunks/c1f4aa33656885be6a86.js +0 -1
- package/assets/esri/core/workers/chunks/cbcaf021dcde6e67ce38.js +0 -1
- package/assets/esri/core/workers/chunks/cce43c23ba9a6ca4dfe0.js +0 -1
- package/assets/esri/core/workers/chunks/cf74ce6630851b413232.js +0 -1
- package/assets/esri/core/workers/chunks/d82b6eb3ab447ad62bc7.js +0 -1
- package/assets/esri/core/workers/chunks/e2232af1541ca7413329.js +0 -971
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.21/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import e from"./ArcadePortal.js";import t from"./Attachment.js";import r from"./Dictionary.js";import n from"./Feature.js";import o from"./FunctionWrapper.js";import a from"./ImmutablePathArray.js";import c from"./ImmutablePointArray.js";import{p as i,i as s,e as l,N as u,d as f,m as h,v as p,k as d,a as m,f as g,b as y,o as E,j as w,R as v,c as N,t as I,I as b,g as S,h as T,n as R,q as O,r as A}from"../chunks/languageUtils.js";import{nodeErrorMessage as U,addFunctionDeclaration as C,findFieldLiterals as F,validateScript as M,referencesMember as x,referencesFunction as P,findFunctionCalls as D}from"./treeAnalysis.js";import{reduceArrayWithPromises as j}from"./featureset/support/shared.js";import{registerFunctions as k}from"./functions/array.js";import{registerFunctions as L}from"./functions/date.js";import{registerFunctions as _}from"./functions/geomasync.js";import{registerFunctions as V}from"./functions/geometry.js";import{registerFunctions as B}from"./functions/maths.js";import{registerFunctions as Y}from"./functions/stats.js";import{registerFunctions as G}from"./functions/string.js";import{create as z,all as q,reject as H,resolve as Z}from"../core/promiseUtils.js";import W from"../geometry/Extent.js";import K from"../geometry/Geometry.js";import X from"../geometry/Multipoint.js";import J from"../geometry/Point.js";import Q from"../geometry/Polygon.js";import $ from"../geometry/Polyline.js";import ee from"../geometry/SpatialReference.js";function te(e){return e&&"function"==typeof e.then}const re=100;function ne(e){return e instanceof Error?H(e):H(new Error(e))}function oe(e){return Z(e)}function ae(e,t){const r=[];for(let n=0;n<t.arguments.length;n++)r.push(se(e,t.arguments[n]));return q(r)}function ce(e,t,r){return z(((n,o)=>{ae(e,t).then((a=>{try{n(r(e,t,a))}catch(c){o(c)}}),o)}))}function ie(e,t,r){try{return ae(e,t).then((n=>{try{const o=r(e,t,n);return te(o)?o:Z(o)}catch(o){return ne(o)}}))}catch(n){return ne(n)}}function se(e,t,r){try{if(t.breakpoint&&!0!==r){return t.breakpoint().then((()=>se(e,t,!0)))}switch(t.type){case"VariableDeclarator":return Me(e,t);case"VariableDeclaration":return Fe(e,t,0);case"BlockStatement":return Oe(e,t);case"FunctionDeclaration":return Ce(e,t);case"ReturnStatement":return Ue(e,t);case"IfStatement":return Re(e,t);case"ExpressionStatement":return Te(e,t);case"UpdateExpression":return Ie(e,t);case"AssignmentExpression":return Se(e,t);case"ForStatement":return de(e,t);case"ForInStatement":return Ne(e,t);case"BreakStatement":return Z(d);case"EmptyStatement":return Z(p);case"ContinueStatement":return Z(h);case"TemplateElement":return Ye(e,t);case"TemplateLiteral":return Ge(e,t);case"Identifier":return Ve(e,t);case"MemberExpression":return De(e,t);case"Literal":return oe(t.value);case"CallExpression":return Be(e,t);case"UnaryExpression":return je(e,t);case"BinaryExpression":return Le(e,t);case"LogicalExpression":return _e(e,t);case"ArrayExpression":return ke(e,t);case"ObjectExpression":return le(e,t);case"Property":return ue(e,t);default:return ne(U(t,"RUNTIME","UNREOGNISED"))}}catch(n){return ne(n)}}function le(e,t){try{const n=[];for(let r=0;r<t.properties.length;r++)n.push(se(e,t.properties[r]));return q(n).then((e=>z((t=>{const n={};for(let r=0;r<e.length;r++){const t=e[r];if(N(t.value))throw new Error("Illegal Argument");if(!1===g(t.key))throw new Error("Illegal Argument");t.value===p?n[t.key.toString()]=null:n[t.key.toString()]=t.value}const o=new r(n);o.immutable=!1,t(o)}))))}catch(n){return ne(n)}}function ue(e,t){try{return se(e,t.value).then((r=>z((n=>{"Identifier"===t.key.type?n({key:t.key.name,value:r}):se(e,t.key).then((e=>{n({key:e,value:r})}))}))))}catch(r){return H(r)}}function fe(e,t,r){try{return se(e,t.body).then((n=>{try{return r.lastAction=n,r.lastAction===d||r.lastAction instanceof v?(r.testResult=!1,Z(r)):null!==t.update?se(e,t.update).then((()=>Z(r))):Z(r)}catch(o){return H(o)}}))}catch(n){return H(n)}}function he(e,t,r){try{return null!==t.test?se(e,t.test).then((n=>{try{return!0===e.abortSignal.aborted?H(new Error("Cancelled")):(r.testResult=n,!1===r.testResult?Z(r):!0!==r.testResult?H(new Error(U(t,"RUNTIME","CANNOT_USE_NONBOOLEAN_IN_CONDITION"))):fe(e,t,r))}catch(o){return H(o)}})):fe(e,t,r)}catch(n){return H(n)}}function pe(e,t,r,n,o,a){try{he(e,t,r).then((()=>{try{!0===r.testResult?++a>re?(a=0,setTimeout((()=>{pe(e,t,r,n,o,a)}),0)):pe(e,t,r,n,o,a):r.lastAction instanceof v?n(r.lastAction):n(p)}catch(c){o(c)}}),(e=>{o(e)}))}catch(c){o(c)}}function de(e,t){try{return null!==t.init?se(e,t.init).then((()=>z(((r,n)=>{pe(e,t,{testResult:!0,lastAction:p},(e=>{r(e)}),(e=>{n(e)}),0)})))):z(((r,n)=>{pe(e,t,{testResult:!0,lastAction:p},(e=>{r(e)}),(e=>{n(e)}),0)}))}catch(r){return H(r)}}function me(e,t,r,n,o,a,c,i,s,l){try{if(n<=a)return void i(p);o.value="k"===c?r[a]:a,se(e,t.body).then((u=>{try{u instanceof v?i(u):u===d?i(p):++l>re?(l=0,setTimeout((()=>{me(e,t,r,n,o,a+1,c,i,s,l)}),0)):me(e,t,r,n,o,a+1,c,i,s,l)}catch(f){s(f)}}),(e=>{s(e)}))}catch(u){s(u)}}function ge(e,t,r,n,o,a,c,i,s){try{if(r.length()<=o)return void c(p);n.value="k"===a?r.get(o):o,se(e,t.body).then((l=>{l instanceof v?c(l):l===d?c(p):++s>re?(s=0,setTimeout((()=>{ge(e,t,r,n,o+1,a,c,i,s)}),0)):ge(e,t,r,n,o+1,a,c,i,s)}),(e=>{i(e)}))}catch(l){i(l)}}function ye(e,t,r,n,o,a){try{if(void 0===a&&(a="i"),0===r.length)return void n.resolve(p);me(e,t,r,r.length,o,0,a,(e=>{n.resolve(e)}),(e=>{n.reject(e)}),0)}catch(c){n.reject(c)}}function Ee(e,t,r,n,o,a){try{if(void 0===a&&(a="i"),0===r.length)return void n.resolve(p);ge(e,t,r,o,0,a,(e=>{n.resolve(e)}),(e=>{n.reject(e)}),0)}catch(c){n.reject(c)}}function we(e,t,r,n,o){try{ye(e,t,r.keys(),n,o,"k")}catch(a){n.reject(a)}}function ve(e,t,r,o,a,c,i,s){try{e.next().then((l=>{try{if(null===l)c(p);else{const u=n.createFromGraphicLikeObject(l.geometry,l.attributes,o);u._underlyingGraphic=l,a.value=u;se(t,r.body).then((n=>{try{n===d?c(p):n instanceof v?c(n):++s>re?(s=0,setTimeout((()=>{ve(e,t,r,o,a,c,i,s)}),0)):ve(e,t,r,o,a,c,i,s)}catch(l){i(l)}}),(e=>{i(e)}))}}catch(u){i(u)}}),(e=>{i(e)}))}catch(l){i(l)}}function Ne(e,t){return z(((o,a)=>{se(e,t.right).then((c=>{try{let i=null;i="VariableDeclaration"===t.left.type?se(e,t.left):Z(),i.then((()=>{try{let i="";if("VariableDeclaration"===t.left.type){const e=t.left.declarations[0].id;"Identifier"===e.type&&(i=e.name)}else"Identifier"===t.left.type&&(i=t.left.name);if(!i)throw new Error(U(t,"RUNTIME","INVALIDVARIABLE"));i=i.toLowerCase();let s=null;if(null!==e.localScope&&void 0!==e.localScope[i]&&(s=e.localScope[i]),null===s&&void 0!==e.globalScope[i]&&(s=e.globalScope[i]),null===s)return void a(new Error(U(t,"RUNTIME","VARIABLENOTDECLARED")));m(c)||g(c)?ye(e,t,c,{reject:a,resolve:o},s):y(c)?Ee(e,t,c,{reject:a,resolve:o},s):c instanceof r||c instanceof n?we(e,t,c,{reject:a,resolve:o},s):E(c)?ve(c.iterator(e.abortSignal),e,t,c,s,(e=>{o(e)}),(e=>{a(e)}),0):ye(e,t,[],{reject:a,resolve:o},s)}catch(i){a(i)}}),a)}catch(i){a(i)}}),a)}))}function Ie(e,t){try{const o=t.argument;if("MemberExpression"===o.type){const a={t:null};return se(e,o.object).then((t=>{let r=null;return a.t=t,!0===o.computed?r=se(e,o.property):"Identifier"===o.property.type&&(r=Z(o.property.name)),r})).then((e=>z((o=>{const c=a.t;let i;if(m(c)){if(!w(e))throw new Error("Invalid Parameter");if(e<0&&(e=c.length+e),e<0||e>=c.length)throw new Error("Assignment outside of array bounds");i=I(c[e]),c[e]="++"===t.operator?i+1:i-1}else if(c instanceof r){if(!1===g(e))throw new Error("Dictionary accessor must be a string");if(!0!==c.hasField(e))throw new Error("Invalid Parameter");i=I(c.field(e)),c.setField(e,"++"===t.operator?i+1:i-1)}else{if(!(c instanceof n))throw y(c)?new Error("Array is Immutable"):new Error("Invalid Parameter");if(!1===g(e))throw new Error("Feature accessor must be a string");if(!0!==c.hasField(e))throw new Error("Invalid Parameter");i=I(c.field(e)),c.setField(e,"++"===t.operator?i+1:i-1)}!1===t.prefix?o(i):o("++"===t.operator?i+1:i-1)}))))}return z(((r,n)=>{const o="Identifier"===t.argument.type?t.argument.name.toLowerCase():"";if(!o)throw new Error("Invalid identifier");let a;return null!==e.localScope&&void 0!==e.localScope[o]?(a=I(e.localScope[o].value),e.localScope[o]={value:"++"===t.operator?a+1:a-1,valueset:!0,node:t},void(!1===t.prefix?r(a):r("++"===t.operator?a+1:a-1))):void 0!==e.globalScope[o]?(a=I(e.globalScope[o].value),e.globalScope[o]={value:"++"===t.operator?a+1:a-1,valueset:!0,node:t},void(!1===t.prefix?r(a):r("++"===t.operator?a+1:a-1))):void n(new Error("Variable not recognised"))}))}catch(o){return H(o)}}function be(e,t,r,n){switch(t){case"=":return e===p?null:e;case"/=":return I(r)/I(e);case"*=":return I(r)*I(e);case"-=":return I(r)-I(e);case"+=":return g(r)||g(e)?f(r)+f(e):I(r)+I(e);case"%=":return I(r)%I(e);default:throw new Error(U(n,"RUNTIME","OPERATORNOTRECOGNISED"))}}function Se(e,t){return z(((o,a)=>{const c=t.left;if("MemberExpression"===c.type)se(e,t.right).then((i=>{try{se(e,c.object).then((s=>{try{let l=null;if(!0===c.computed)l=se(e,c.property);else{if("Identifier"!==c.property.type)throw new Error("Expected computed or identifier for assignemnt target");l=Z(c.property.name)}l.then((e=>{try{if(m(s)){if(!w(e))throw new Error("Invalid Parameter");if(e<0&&(e=s.length+e),e<0||e>s.length)throw new Error("Assignment outside of array bounds");if(e===s.length){if("="!==t.operator)throw new Error("Invalid Parameter");s[e]=be(i,t.operator,s[e],t)}else s[e]=be(i,t.operator,s[e],t)}else if(s instanceof r){if(!1===g(e))throw new Error("Dictionary accessor must be a string");if(!0===s.hasField(e))s.setField(e,be(i,t.operator,s.field(e),t));else{if("="!==t.operator)throw new Error("Invalid Parameter");s.setField(e,be(i,t.operator,null,t))}}else{if(!(s instanceof n))throw y(s)?new Error("Array is Immutable"):new Error("Invalid Parameter");if(!1===g(e))throw new Error("Feature accessor must be a string");if(!0===s.hasField(e))s.setField(e,be(i,t.operator,s.field(e),t));else{if("="!==t.operator)throw new Error("Invalid Parameter");s.setField(e,be(i,t.operator,null,t))}}o(p)}catch(c){a(c)}}),a)}catch(l){a(l)}}),a)}catch(s){a(s)}}),a);else{const r=c.name.toLowerCase();if(null!==e.localScope&&void 0!==e.localScope[r])return void se(e,t.right).then((n=>{try{e.localScope[r]={value:be(n,t.operator,e.localScope[r].value,t),valueset:!0,node:t.right},o(p)}catch(c){a(c)}}),a);void 0!==e.globalScope[r]?se(e,t.right).then((n=>{try{e.globalScope[r]={value:be(n,t.operator,e.globalScope[r].value,t),valueset:!0,node:t.right},o(p)}catch(c){a(c)}}),a):a(new Error("Cannot assign undeclared variable"))}}))}function Te(e,t){try{return"AssignmentExpression"===t.expression.type?se(e,t.expression):(t.expression.type,se(e,t.expression).then((e=>z((t=>{t(e===p?p:new b(e))})))))}catch(r){return H(r)}}function Re(e,t){return z(((r,n)=>{"AssignmentExpression"!==t.test.type&&"UpdateExpression"!==t.test.type?se(e,t.test).then((o=>{try{!0===o?se(e,t.consequent).then(r,n):!1===o?null!==t.alternate?se(e,t.alternate).then(r,n):r(p):n(new Error(U(t.test,"RUNTIME","CANNOT_USE_NONBOOLEAN_IN_CONDITION")))}catch(a){n(a)}}),n):n(new Error(U(t.test,"RUNTIME","CANNOT_USE_ASSIGNMENT_IN_CONDITION")))}))}function Oe(e,t){try{return Ae(e,t,0)}catch(r){return ne(r)}}function Ae(e,t,r){try{return r>=t.body.length?Z(p):z(((n,o)=>{se(e,t.body[r]).then((a=>{try{a instanceof v||a===d||a===h||r===t.body.length-1?n(a):Ae(e,t,r+1).then(n,o)}catch(c){o(c)}}),o)}))}catch(n){return ne(n)}}function Ue(e,t){return z(((r,n)=>{null===t.argument?r(new v(p)):se(e,t.argument).then((e=>{try{r(new v(e))}catch(t){n(t)}}),n)}))}function Ce(e,t){try{const r=t.id.name.toLowerCase();return e.globalScope[r]={valueset:!0,node:null,value:new o(t,e)},Z(p)}catch(r){return ne(r)}}function Fe(e,t,r){return z(((n,o)=>{r>=t.declarations.length?n(p):se(e,t.declarations[r]).then((()=>{r===t.declarations.length-1?n(p):Fe(e,t,r+1).then((()=>{n(p)}),o)}),o)}))}function Me(e,t){try{let r=null;return r=null===t.init?Z(null):se(e,t.init),null!==e.localScope?r.then((r=>z((n=>{if(r===p&&(r=null),"Identifier"!==t.id.type)throw new Error("Can only assign a regular variable");const o=t.id.name.toLowerCase();e.localScope[o]={value:r,valueset:!0,node:t.init},n(p)})))):r.then((r=>z((n=>{if("Identifier"!==t.id.type)throw new Error("Can only assign a regular variable");const o=t.id.name.toLowerCase();r===p&&(r=null),e.globalScope[o]={value:r,valueset:!0,node:t.init},n(p)}))))}catch(r){return ne(r)}}let xe=0;function Pe(e,t,n,o){let i;switch(t=t.toLowerCase()){case"hasz":{const t=e.hasZ;return void 0!==t&&t}case"hasm":{const t=e.hasM;return void 0!==t&&t}case"spatialreference":{let t=e.spatialReference._arcadeCacheId;if(void 0===t){let r=!0;Object.freeze&&Object.isFrozen(e.spatialReference)&&(r=!1),r&&(xe++,e.spatialReference._arcadeCacheId=xe,t=xe)}const n=new r({wkt:e.spatialReference.wkt,wkid:e.spatialReference.wkid});return void 0!==t&&(n._arcadeCacheId="SPREF"+t.toString()),n}}switch(e.type){case"extent":switch(t){case"xmin":case"xmax":case"ymin":case"ymax":case"zmin":case"zmax":case"mmin":case"mmax":{const r=e[t];return void 0!==r?r:null}case"type":return"Extent"}break;case"polygon":switch(t){case"rings":i=e.cache._arcadeCacheId,void 0===i&&(xe++,i=xe,e.cache._arcadeCacheId=i);return new a(e.rings,e.spatialReference,!0===e.hasZ,!0===e.hasM,i);case"type":return"Polygon"}break;case"point":switch(t){case"x":case"y":case"z":case"m":return void 0!==e[t]?e[t]:null;case"type":return"Point"}break;case"polyline":switch(t){case"paths":i=e.cache._arcadeCacheId,void 0===i&&(xe++,i=xe,e.cache._arcadeCacheId=i);return new a(e.paths,e.spatialReference,!0===e.hasZ,!0===e.hasM,i);case"type":return"Polyline"}break;case"multipoint":switch(t){case"points":i=e.cache._arcadeCacheId,void 0===i&&(xe++,i=xe,e.cache._arcadeCacheId=i);return new c(e.points,e.spatialReference,!0===e.hasZ,!0===e.hasM,i,1);case"type":return"Multipoint"}}throw new Error(U(o,"RUNTIME","PROPERTYNOTFOUND"))}function De(e,t){try{return se(e,t.object).then((o=>{try{return null===o?H(new Error(U(t,"RUNTIME","NOTFOUND"))):!1===t.computed?"Identifier"===t.property.type?o instanceof r||o instanceof n?Z(o.field(t.property.name)):o instanceof K?Z(Pe(o,t.property.name,e,t)):H(new Error(U(t,"RUNTIME","INVALIDTYPE"))):H(new Error(U(t,"RUNTIME","INVALIDTYPE"))):se(e,t.property).then((a=>z(((c,i)=>{if(o instanceof r||o instanceof n)g(a)?c(o.field(a)):i(new Error(U(t,"RUNTIME","INVALIDTYPE")));else if(o instanceof K)g(a)?c(Pe(o,a,e,t)):i(new Error(U(t,"RUNTIME","INVALIDTYPE")));else if(m(o))if(w(a)&&isFinite(a)&&Math.floor(a)===a){if(a<0&&(a=o.length+a),a>=o.length||a<0)throw new Error(U(t,"RUNTIME","OUTOFBOUNDS"));c(o[a])}else i(new Error(U(t,"RUNTIME","INVALIDTYPE")));else if(y(o))if(w(a)&&isFinite(a)&&Math.floor(a)===a){if(a<0&&(a=o.length()+a),a>=o.length()||a<0)throw new Error(U(t,"RUNTIME","OUTOFBOUNDS"));c(o.get(a))}else i(new Error(U(t,"RUNTIME","INVALIDTYPE")));else if(g(o))if(w(a)&&isFinite(a)&&Math.floor(a)===a){if(a<0&&(a=o.length+a),a>=o.length||a<0)throw new Error(U(t,"RUNTIME","OUTOFBOUNDS"));c(o[a])}else i(new Error(U(t,"RUNTIME","INVALIDTYPE")));else i(new Error(U(t,"RUNTIME","INVALIDTYPE")))}))))}catch(a){return ne(a)}}))}catch(o){return ne(o)}}function je(e,t){try{return se(e,t.argument).then((e=>z(((r,n)=>{s(e)&&"!"===t.operator?r(!e):"-"===t.operator?r(-1*I(e)):"+"===t.operator?r(1*I(e)):"~"===t.operator?r(~I(e)):n(new Error(U(t,"RUNTIME","NOTSUPPORTEDUNARYOPERATOR")))}))))}catch(r){return ne(r)}}function ke(e,t){try{const r=[];for(let n=0;n<t.elements.length;n++)r.push(se(e,t.elements[n]));return q(r).then((e=>z(((r,n)=>{for(let o=0;o<e.length;o++){if(N(e[o]))return void n(new Error(U(t,"RUNTIME","FUNCTIONCONTEXTILLEGAL")));e[o]===p&&(e[o]=null)}r(e)}))))}catch(r){return ne(r)}}function Le(e,t){try{return q([se(e,t.left),se(e,t.right)]).then((e=>z(((r,n)=>{const o=e[0],a=e[1];switch(t.operator){case"|":case"<<":case">>":case">>>":case"^":case"&":r(T(I(o),I(a),t.operator));case"==":r(l(o,a));break;case"!=":r(!l(o,a));break;case"<":case">":case"<=":case">=":r(S(o,a,t.operator));break;case"+":g(o)||g(a)?r(f(o)+f(a)):r(I(o)+I(a));break;case"-":r(I(o)-I(a));break;case"*":r(I(o)*I(a));break;case"/":r(I(o)/I(a));break;case"%":r(I(o)%I(a));break;default:n(new Error(U(t,"RUNTIME","OPERATORNOTRECOGNISED")))}}))))}catch(r){return ne(r)}}function _e(e,t){return z(((r,n)=>{"AssignmentExpression"!==t.left.type&&"UpdateExpression"!==t.left.type?"AssignmentExpression"!==t.right.type&&"UpdateExpression"!==t.right.type?se(e,t.left).then((o=>{try{if(!s(o))throw new Error(U(t,"RUNTIME","ONLYBOOLEAN"));switch(t.operator){case"||":!0===o?r(o):se(e,t.right).then((e=>{try{if(!s(e))throw new Error(U(t,"RUNTIME","ONLYORORAND"));r(e)}catch(o){n(o)}}),n);break;case"&&":!1===o?r(o):se(e,t.right).then((e=>{try{if(!s(e))throw new Error(U(t,"RUNTIME","ONLYORORAND"));r(e)}catch(o){n(o)}}),n);break;default:throw new Error(U(t,"RUNTIME","ONLYORORAND"))}}catch(a){n(a)}}),n):n(new Error(U(t.right,"RUNTIME","CANNOT_USE_ASSIGNMENT_IN_CONDITION"))):n(new Error(U(t.left,"RUNTIME","CANNOT_USE_ASSIGNMENT_IN_CONDITION")))}))}function Ve(e,t){return z(((r,n)=>{const o=t.name.toLowerCase();if(null===e.localScope||void 0===e.localScope[o])if(void 0===e.globalScope[o])n(new Error(U(t,"RUNTIME","VARIABLENOTFOUND")));else{const t=e.globalScope[o];!0===t.valueset?r(t.value):null!==t.d?t.d.then(r,n):(t.d=se(e,t.node),t.d.then((e=>{try{t.value=e,t.valueset=!0,r(e)}catch(o){n(o)}}),n))}else{const t=e.localScope[o];!0===t.valueset?r(t.value):null!==t.d?t.d.then(r,n):(t.d=se(e,t.node),t.d.then((e=>{try{t.value=e,t.valueset=!0,r(e)}catch(o){n(o)}}),n))}}))}function Be(e,t){try{if("Identifier"!==t.callee.type)return ne(U(t,"RUNTIME","ONLYNODESSUPPORTED"));if(null!==e.localScope&&void 0!==e.localScope[t.callee.name.toLowerCase()]){const r=e.localScope[t.callee.name.toLowerCase()];return r.value instanceof u?r.value.fn(e,t):r.value instanceof o?$e(e,t,r.value.definition):ne(U(t,"RUNTIME","NOTAFUNCTION"))}if(void 0!==e.globalScope[t.callee.name.toLowerCase()]){const r=e.globalScope[t.callee.name.toLowerCase()];return r.value instanceof u?r.value.fn(e,t):r.value instanceof o?$e(e,t,r.value.definition):ne(U(t,"RUNTIME","NOTAFUNCTION"))}return ne(U(t,"RUNTIME","NOTFOUND"))}catch(r){return ne(r)}}function Ye(e,t){return Z(t.value?t.value.cooked:"")}function Ge(e,t){return z((r=>{const n=[];j(t.expressions,((t,r,o,a)=>se(e,r).then((e=>{n[o]=f(e)})))).then((()=>{let e="",o=0;for(const r of t.quasis)if(e+=r.value?r.value.cooked:"",!1===r.tail){e+=n[o]?n[o]:"",o++}r(e)}))}))}const ze={};function qe(o){return null===o?"":m(o)||y(o)?"Array":R(o)?"Date":g(o)?"String":s(o)?"Boolean":w(o)?"Number":o instanceof t?"Attachment":o instanceof e?"Portal":o instanceof r?"Dictionary":o instanceof n?"Feature":o instanceof J?"Point":o instanceof Q?"Polygon":o instanceof $?"Polyline":o instanceof X?"Multipoint":o instanceof W?"Extent":N(o)?"Function":E(o)?"FeatureSet":O(o)?"FeatureSetCollection":o===p?"":"number"==typeof o&&isNaN(o)?"Number":"Unrecognised Type"}function He(e,t,r,n){return z(((o,a)=>{se(e,t.arguments[r]).then((c=>{try{if(l(c,n))return void se(e,t.arguments[r+1]).then(o,a);{const c=t.arguments.length-r;return 1===c?void se(e,t.arguments[r]).then(o,a):(2===c&&o(null),3===c?void se(e,t.arguments[r+2]).then(o,a):void He(e,t,r+2,n).then(o,a))}}catch(i){a(i)}}),a)}))}function Ze(e,t,r,n){return z(((o,a)=>{if(!0===n)se(e,t.arguments[r+1]).then(o,a);else{3===t.arguments.length-r?se(e,t.arguments[r+2]).then(o,a):se(e,t.arguments[r+2]).then((n=>{try{if(!1===s(n))return void a(new Error("WHEN needs boolean test conditions"));Ze(e,t,r+2,n).then(o,a)}catch(c){a(c)}}))}}))}function We(e,t){try{const r=e.length,n=Math.floor(r/2);return 0===r?Z([]):1===r?Z([e[0]]):z(((o,a)=>{const c=[We(e.slice(0,n),t),We(e.slice(n,r),t)];q(c).then((e=>{try{Ke(e[0],e[1],t,[]).then(o,a)}catch(r){a(r)}}),a)}))}catch(r){return ne(r)}}function Ke(e,t,r,n){return z(((o,a)=>{const c=n;e.length>0||t.length>0?e.length>0&&t.length>0?r(e[0],t[0]).then((i=>{try{isNaN(i)&&(i=1),i<=0?(c.push(e[0]),e=e.slice(1)):(c.push(t[0]),t=t.slice(1)),Ke(e,t,r,n).then(o,a)}catch(s){a(s)}}),a):e.length>0?(c.push(e[0]),Ke(e=e.slice(1),t,r,n).then(o,a)):t.length>0&&(c.push(t[0]),t=t.slice(1),Ke(e,t,r,n).then(o,a)):o(n)}))}function Xe(e,t){const r=e.length,n=Math.floor(r/2);return t||(t=function(e,t){return e<t?-1:e===t?0:1}),0===r?[]:1===r?[e[0]]:Je(Xe(e.slice(0,n),t),Xe(e.slice(n,r),t),t)}function Je(e,t,r){const n=[];for(;e.length>0||t.length>0;)if(e.length>0&&t.length>0){let o=r(e[0],t[0]);isNaN(o)&&(o=1),o<=0?(n.push(e[0]),e=e.slice(1)):(n.push(t[0]),t=t.slice(1))}else e.length>0?(n.push(e[0]),e=e.slice(1)):t.length>0&&(n.push(t[0]),t=t.slice(1));return n}function Qe(e,t,r){try{const n=e.body;if(r.length!==e.params.length)return ne(new Error("Invalid Parameter calls to function."));for(let o=0;o<r.length;o++){const n=e.params[o];"Identifier"===n.type&&(t.localScope[n.name.toLowerCase()]={d:null,value:r[o],valueset:!0,node:null})}return se(t,n).then((e=>z(((t,r)=>{e instanceof v?t(e.value):e!==d?e!==h?t(e instanceof b?e.value:e):r(new Error("Cannot Continue from a Function")):r(new Error("Cannot Break from a Function"))}))))}catch(n){return H(n)}}function $e(e,t,r){return ie(e,t,(function(t,n,o){const a={spatialReference:e.spatialReference,services:e.services,console:e.console,lrucache:e.lrucache,interceptor:e.interceptor,localScope:{},abortSignal:e.abortSignal,globalScope:e.globalScope,depthCounter:e.depthCounter+1};if(a.depthCounter>64)throw new Error("Exceeded maximum function depth");return Qe(r,a,o)}))}function et(e){return function(){const t={abortSignal:e.context.abortSignal,spatialReference:e.context.spatialReference,console:e.context.console,lrucache:e.context.lrucache,interceptor:e.context.interceptor,services:e.context.services,localScope:{},globalScope:e.context.globalScope,depthCounter:e.context.depthCounter+1};if(t.depthCounter>64)throw new Error("Exceeded maximum function depth");return Qe(e.definition,t,arguments)}}k(ze,ce),L(ze,ce),G(ze,ce),B(ze,ce),V(ze,ce),Y(ze,ce),_({functions:ze,compiled:!1,signatures:null,failDefferred:null,evaluateIdentifier:null,arcadeCustomFunctionHandler:null,mode:"async",standardFunction:ce,standardFunctionAsync:ie}),ze.typeof=function(e,t){return ce(e,t,(function(e,t,r){i(r,1,1);const n=qe(r[0]);if("Unrecognised Type"===n)throw new Error("Unrecognised Type");return n}))},ze.iif=function(e,t){return z(((r,n)=>{i(null===t.arguments?[]:t.arguments,3,3),se(e,t.arguments[0]).then((o=>{try{if(!1===s(o))return void n(new Error("IF Function must have a boolean test condition"));q([se(e,t.arguments[1]),se(e,t.arguments[2])]).then((e=>{r(o?e[0]:e[1])}),n)}catch(a){n(a)}}),n)}))},ze.decode=function(e,t){return z(((r,n)=>{t.arguments.length<2?n(new Error("Missing Parameters")):2!==t.arguments.length?(t.arguments.length-1)%2!=0?se(e,t.arguments[0]).then((o=>{try{He(e,t,1,o).then(r,n)}catch(a){n(a)}}),n):n(new Error("Must have a default value result.")):se(e,t.arguments[1]).then(r,n)}))},ze.when=function(e,t){try{return t.arguments.length<3?ne("Missing Parameters"):t.arguments.length%2==0?ne("Must have a default value result."):se(e,t.arguments[0]).then((r=>z(((n,o)=>{if(!1===s(r))return void o(new Error("WHEN needs boolean test conditions"));Ze(e,t,0,r).then(n,o)}))))}catch(r){return ne(r)}},ze.sort=function(e,t){return ie(e,t,(function(e,t,r){i(r,1,2);let n=r[0];if(y(n)&&(n=n.toArray()),!1===m(n))return ne(Error("Illegal Argument"));if(r.length>1){if(!1===N(r[1]))return ne(Error("Illegal Argument"));return We(n,et(r[1]))}{let e=n;if(0===e.length)return Z([]);const t={};for(let n=0;n<e.length;n++){const r=qe(e[n]);""!==r&&(t[r]=!0)}if(!0===t.Array||!0===t.Dictionary||!0===t.Feature||!0===t.Point||!0===t.Polygon||!0===t.Polyline||!0===t.Multipoint||!0===t.Extent||!0===t.Function)return Z(e.slice(0));let r=0,o="";for(const n in t)r++,o=n;return r>1||"String"===o?e=Xe(e,(function(e,t){if(null==e||e===p)return null==t||t===p?0:1;if(null==t||t===p)return-1;const r=f(e),n=f(t);return r<n?-1:r===n?0:1})):"Number"===o?e=Xe(e,(function(e,t){return e-t})):"Boolean"===o?e=Xe(e,(function(e,t){return e===t?0:t?-1:1})):"Date"===o&&(e=Xe(e,(function(e,t){return t-e}))),Z(e)}}))};const tt={failDefferred:ne,resolveDeffered:oe,fixSpatialReference:A,parseArguments:ae,standardFunction:ce,standardFunctionAsync:ie,evaluateIdentifier:Ve,arcadeCustomFunction:et};for(const pt in ze)ze[pt]={value:new u(ze[pt]),valueset:!0,node:null};const rt=function(){};function nt(e,t){const o=new rt;null==e&&(e={}),null==t&&(t={});const a=new r({newline:"\n",tab:"\t",singlequote:"'",doublequote:'"',forwardslash:"/",backwardslash:"\\"});a.immutable=!1,o.textformatting={value:a,valueset:!0,node:null};for(const r in t)o[r]={value:new u(t[r]),native:!0,valueset:!0,node:null};for(const r in e)e[r]&&"esri.Graphic"===e[r].declaredClass?o[r]={value:n.createFromGraphic(e[r]),valueset:!0,node:null}:o[r]={value:e[r],valueset:!0,node:null};return o}function ot(e){console.log(e)}rt.prototype=ze,rt.prototype.infinity={value:Number.POSITIVE_INFINITY,valueset:!0,node:null},rt.prototype.pi={value:Math.PI,valueset:!0,node:null};const at=tt;function ct(e){const t={mode:"async",compiled:!1,functions:{},signatures:[],standardFunction:ce,standardFunctionAsync:ie,failDefferred:ne,evaluateIdentifier:Ve,arcadeCustomFunctionHandler:et};for(let r=0;r<e.length;r++)e[r].registerFunctions(t);for(const r in t.functions)ze[r]={value:new u(t.functions[r]),valueset:!0,node:null},rt.prototype[r]=ze[r];for(let r=0;r<t.signatures.length;r++)C(t.signatures[r],"async")}function it(e,t){let r=t.spatialReference;null==r&&(r=new ee({wkid:102100}));const n=nt(t.vars,t.customfunctions);return se({spatialReference:r,services:t.services,abortSignal:void 0===t.abortSignal||null===t.abortSignal?{aborted:!1}:t.abortSignal,globalScope:n,console:t.console?t.console:ot,lrucache:t.lrucache,interceptor:t.interceptor,localScope:null,depthCounter:1},e.body[0].body).then((e=>z(((t,r)=>{e instanceof v&&(e=e.value),e instanceof b&&(e=e.value),e===p&&(e=null),e!==d?e!==h?e instanceof u||e instanceof o?r(new Error("Cannot return FUNCTION")):t(e):r(new Error("Cannot return CONTINUE")):r(new Error("Cannot return BREAK"))}))))}function st(e,t){return F(e)}function lt(e,t){return M(e,t,"full")}function ut(e,t){return x(e,t)}function ft(e,t){return P(e,t)}function ht(e){return D(e)}export{it as executeScript,ct as extend,st as extractFieldLiterals,ht as findFunctionCalls,at as functionHelper,ft as referencesFunction,ut as referencesMember,lt as validateScript};
|
|
5
|
+
import e from"./ArcadePortal.js";import t from"./Attachment.js";import r from"./Dictionary.js";import n from"./Feature.js";import o from"./FunctionWrapper.js";import a from"./ImmutablePathArray.js";import c from"./ImmutablePointArray.js";import{p as i,i as s,e as l,N as u,d as f,m as h,v as p,k as d,a as m,f as g,b as y,o as E,j as w,R as v,c as N,t as I,I as b,g as S,h as T,n as R,q as O,r as A}from"../chunks/languageUtils.js";import{nodeErrorMessage as U,addFunctionDeclaration as C,findFieldLiterals as F,validateScript as M,referencesMember as x,referencesFunction as P,findFunctionCalls as D}from"./treeAnalysis.js";import{reduceArrayWithPromises as j}from"./featureset/support/shared.js";import{registerFunctions as k}from"./functions/array.js";import{registerFunctions as L}from"./functions/date.js";import{registerFunctions as _}from"./functions/geomasync.js";import{registerFunctions as V}from"./functions/geometry.js";import{registerFunctions as B}from"./functions/maths.js";import{registerFunctions as Y}from"./functions/stats.js";import{registerFunctions as G}from"./functions/string.js";import{create as z,all as q,reject as H,resolve as Z}from"../core/promiseUtils.js";import W from"../geometry/Extent.js";import K from"../geometry/Geometry.js";import X from"../geometry/Multipoint.js";import J from"../geometry/Point.js";import Q from"../geometry/Polygon.js";import $ from"../geometry/Polyline.js";import ee from"../geometry/SpatialReference.js";function te(e){return e&&"function"==typeof e.then}const re=100;function ne(e){return e instanceof Error?H(e):H(new Error(e))}function oe(e){return Z(e)}function ae(e,t){const r=[];for(let n=0;n<t.arguments.length;n++)r.push(se(e,t.arguments[n]));return q(r)}function ce(e,t,r){return z(((n,o)=>{ae(e,t).then((a=>{try{n(r(e,t,a))}catch(c){o(c)}}),o)}))}function ie(e,t,r){try{return ae(e,t).then((n=>{try{const o=r(e,t,n);return te(o)?o:Z(o)}catch(o){return ne(o)}}))}catch(n){return ne(n)}}function se(e,t,r){try{if(t.breakpoint&&!0!==r){return t.breakpoint().then((()=>se(e,t,!0)))}switch(t.type){case"VariableDeclarator":return Me(e,t);case"VariableDeclaration":return Fe(e,t,0);case"BlockStatement":return Oe(e,t);case"FunctionDeclaration":return Ce(e,t);case"ReturnStatement":return Ue(e,t);case"IfStatement":return Re(e,t);case"ExpressionStatement":return Te(e,t);case"UpdateExpression":return Ie(e,t);case"AssignmentExpression":return Se(e,t);case"ForStatement":return de(e,t);case"ForInStatement":return Ne(e,t);case"BreakStatement":return Z(d);case"EmptyStatement":return Z(p);case"ContinueStatement":return Z(h);case"TemplateElement":return Ye(e,t);case"TemplateLiteral":return Ge(e,t);case"Identifier":return Ve(e,t);case"MemberExpression":return De(e,t);case"Literal":return oe(t.value);case"CallExpression":return Be(e,t);case"UnaryExpression":return je(e,t);case"BinaryExpression":return Le(e,t);case"LogicalExpression":return _e(e,t);case"ArrayExpression":return ke(e,t);case"ObjectExpression":return le(e,t);case"Property":return ue(e,t);default:return ne(U(t,"RUNTIME","UNREOGNISED"))}}catch(n){return ne(n)}}function le(e,t){try{const n=[];for(let r=0;r<t.properties.length;r++)n.push(se(e,t.properties[r]));return q(n).then((e=>z((t=>{const n={};for(let r=0;r<e.length;r++){const t=e[r];if(N(t.value))throw new Error("Illegal Argument");if(!1===g(t.key))throw new Error("Illegal Argument");t.value===p?n[t.key.toString()]=null:n[t.key.toString()]=t.value}const o=new r(n);o.immutable=!1,t(o)}))))}catch(n){return ne(n)}}function ue(e,t){try{return se(e,t.value).then((r=>z((n=>{"Identifier"===t.key.type?n({key:t.key.name,value:r}):se(e,t.key).then((e=>{n({key:e,value:r})}))}))))}catch(r){return H(r)}}function fe(e,t,r){try{return se(e,t.body).then((n=>{try{return r.lastAction=n,r.lastAction===d||r.lastAction instanceof v?(r.testResult=!1,Z(r)):null!==t.update?se(e,t.update).then((()=>Z(r))):Z(r)}catch(o){return H(o)}}))}catch(n){return H(n)}}function he(e,t,r){try{return null!==t.test?se(e,t.test).then((n=>{try{return!0===e.abortSignal.aborted?H(new Error("Cancelled")):(r.testResult=n,!1===r.testResult?Z(r):!0!==r.testResult?H(new Error(U(t,"RUNTIME","CANNOT_USE_NONBOOLEAN_IN_CONDITION"))):fe(e,t,r))}catch(o){return H(o)}})):fe(e,t,r)}catch(n){return H(n)}}function pe(e,t,r,n,o,a){try{he(e,t,r).then((()=>{try{!0===r.testResult?++a>re?(a=0,setTimeout((()=>{pe(e,t,r,n,o,a)}),0)):pe(e,t,r,n,o,a):r.lastAction instanceof v?n(r.lastAction):n(p)}catch(c){o(c)}}),(e=>{o(e)}))}catch(c){o(c)}}function de(e,t){try{return null!==t.init?se(e,t.init).then((()=>z(((r,n)=>{pe(e,t,{testResult:!0,lastAction:p},(e=>{r(e)}),(e=>{n(e)}),0)})))):z(((r,n)=>{pe(e,t,{testResult:!0,lastAction:p},(e=>{r(e)}),(e=>{n(e)}),0)}))}catch(r){return H(r)}}function me(e,t,r,n,o,a,c,i,s,l){try{if(n<=a)return void i(p);o.value="k"===c?r[a]:a,se(e,t.body).then((u=>{try{u instanceof v?i(u):u===d?i(p):++l>re?(l=0,setTimeout((()=>{me(e,t,r,n,o,a+1,c,i,s,l)}),0)):me(e,t,r,n,o,a+1,c,i,s,l)}catch(f){s(f)}}),(e=>{s(e)}))}catch(u){s(u)}}function ge(e,t,r,n,o,a,c,i,s){try{if(r.length()<=o)return void c(p);n.value="k"===a?r.get(o):o,se(e,t.body).then((l=>{l instanceof v?c(l):l===d?c(p):++s>re?(s=0,setTimeout((()=>{ge(e,t,r,n,o+1,a,c,i,s)}),0)):ge(e,t,r,n,o+1,a,c,i,s)}),(e=>{i(e)}))}catch(l){i(l)}}function ye(e,t,r,n,o,a){try{if(void 0===a&&(a="i"),0===r.length)return void n.resolve(p);me(e,t,r,r.length,o,0,a,(e=>{n.resolve(e)}),(e=>{n.reject(e)}),0)}catch(c){n.reject(c)}}function Ee(e,t,r,n,o,a){try{if(void 0===a&&(a="i"),0===r.length)return void n.resolve(p);ge(e,t,r,o,0,a,(e=>{n.resolve(e)}),(e=>{n.reject(e)}),0)}catch(c){n.reject(c)}}function we(e,t,r,n,o){try{ye(e,t,r.keys(),n,o,"k")}catch(a){n.reject(a)}}function ve(e,t,r,o,a,c,i,s){try{e.next().then((l=>{try{if(null===l)c(p);else{const u=n.createFromGraphicLikeObject(l.geometry,l.attributes,o);u._underlyingGraphic=l,a.value=u;se(t,r.body).then((n=>{try{n===d?c(p):n instanceof v?c(n):++s>re?(s=0,setTimeout((()=>{ve(e,t,r,o,a,c,i,s)}),0)):ve(e,t,r,o,a,c,i,s)}catch(l){i(l)}}),(e=>{i(e)}))}}catch(u){i(u)}}),(e=>{i(e)}))}catch(l){i(l)}}function Ne(e,t){return z(((o,a)=>{se(e,t.right).then((c=>{try{let i=null;i="VariableDeclaration"===t.left.type?se(e,t.left):Z(),i.then((()=>{try{let i="";if("VariableDeclaration"===t.left.type){const e=t.left.declarations[0].id;"Identifier"===e.type&&(i=e.name)}else"Identifier"===t.left.type&&(i=t.left.name);if(!i)throw new Error(U(t,"RUNTIME","INVALIDVARIABLE"));i=i.toLowerCase();let s=null;if(null!==e.localScope&&void 0!==e.localScope[i]&&(s=e.localScope[i]),null===s&&void 0!==e.globalScope[i]&&(s=e.globalScope[i]),null===s)return void a(new Error(U(t,"RUNTIME","VARIABLENOTDECLARED")));m(c)||g(c)?ye(e,t,c,{reject:a,resolve:o},s):y(c)?Ee(e,t,c,{reject:a,resolve:o},s):c instanceof r||c instanceof n?we(e,t,c,{reject:a,resolve:o},s):E(c)?ve(c.iterator(e.abortSignal),e,t,c,s,(e=>{o(e)}),(e=>{a(e)}),0):ye(e,t,[],{reject:a,resolve:o},s)}catch(i){a(i)}}),a)}catch(i){a(i)}}),a)}))}function Ie(e,t){try{const o=t.argument;if("MemberExpression"===o.type){const a={t:null};return se(e,o.object).then((t=>{let r=null;return a.t=t,!0===o.computed?r=se(e,o.property):"Identifier"===o.property.type&&(r=Z(o.property.name)),r})).then((e=>z((o=>{const c=a.t;let i;if(m(c)){if(!w(e))throw new Error("Invalid Parameter");if(e<0&&(e=c.length+e),e<0||e>=c.length)throw new Error("Assignment outside of array bounds");i=I(c[e]),c[e]="++"===t.operator?i+1:i-1}else if(c instanceof r){if(!1===g(e))throw new Error("Dictionary accessor must be a string");if(!0!==c.hasField(e))throw new Error("Invalid Parameter");i=I(c.field(e)),c.setField(e,"++"===t.operator?i+1:i-1)}else{if(!(c instanceof n))throw y(c)?new Error("Array is Immutable"):new Error("Invalid Parameter");if(!1===g(e))throw new Error("Feature accessor must be a string");if(!0!==c.hasField(e))throw new Error("Invalid Parameter");i=I(c.field(e)),c.setField(e,"++"===t.operator?i+1:i-1)}!1===t.prefix?o(i):o("++"===t.operator?i+1:i-1)}))))}return z(((r,n)=>{const o="Identifier"===t.argument.type?t.argument.name.toLowerCase():"";if(!o)throw new Error("Invalid identifier");let a;return null!==e.localScope&&void 0!==e.localScope[o]?(a=I(e.localScope[o].value),e.localScope[o]={value:"++"===t.operator?a+1:a-1,valueset:!0,node:t},void(!1===t.prefix?r(a):r("++"===t.operator?a+1:a-1))):void 0!==e.globalScope[o]?(a=I(e.globalScope[o].value),e.globalScope[o]={value:"++"===t.operator?a+1:a-1,valueset:!0,node:t},void(!1===t.prefix?r(a):r("++"===t.operator?a+1:a-1))):void n(new Error("Variable not recognised"))}))}catch(o){return H(o)}}function be(e,t,r,n){switch(t){case"=":return e===p?null:e;case"/=":return I(r)/I(e);case"*=":return I(r)*I(e);case"-=":return I(r)-I(e);case"+=":return g(r)||g(e)?f(r)+f(e):I(r)+I(e);case"%=":return I(r)%I(e);default:throw new Error(U(n,"RUNTIME","OPERATORNOTRECOGNISED"))}}function Se(e,t){return z(((o,a)=>{const c=t.left;if("MemberExpression"===c.type)se(e,t.right).then((i=>{try{se(e,c.object).then((s=>{try{let l=null;if(!0===c.computed)l=se(e,c.property);else{if("Identifier"!==c.property.type)throw new Error("Expected computed or identifier for assignemnt target");l=Z(c.property.name)}l.then((e=>{try{if(m(s)){if(!w(e))throw new Error("Invalid Parameter");if(e<0&&(e=s.length+e),e<0||e>s.length)throw new Error("Assignment outside of array bounds");if(e===s.length){if("="!==t.operator)throw new Error("Invalid Parameter");s[e]=be(i,t.operator,s[e],t)}else s[e]=be(i,t.operator,s[e],t)}else if(s instanceof r){if(!1===g(e))throw new Error("Dictionary accessor must be a string");if(!0===s.hasField(e))s.setField(e,be(i,t.operator,s.field(e),t));else{if("="!==t.operator)throw new Error("Invalid Parameter");s.setField(e,be(i,t.operator,null,t))}}else{if(!(s instanceof n))throw y(s)?new Error("Array is Immutable"):new Error("Invalid Parameter");if(!1===g(e))throw new Error("Feature accessor must be a string");if(!0===s.hasField(e))s.setField(e,be(i,t.operator,s.field(e),t));else{if("="!==t.operator)throw new Error("Invalid Parameter");s.setField(e,be(i,t.operator,null,t))}}o(p)}catch(c){a(c)}}),a)}catch(l){a(l)}}),a)}catch(s){a(s)}}),a);else{const r=c.name.toLowerCase();if(null!==e.localScope&&void 0!==e.localScope[r])return void se(e,t.right).then((n=>{try{e.localScope[r]={value:be(n,t.operator,e.localScope[r].value,t),valueset:!0,node:t.right},o(p)}catch(c){a(c)}}),a);void 0!==e.globalScope[r]?se(e,t.right).then((n=>{try{e.globalScope[r]={value:be(n,t.operator,e.globalScope[r].value,t),valueset:!0,node:t.right},o(p)}catch(c){a(c)}}),a):a(new Error("Cannot assign undeclared variable"))}}))}function Te(e,t){try{return"AssignmentExpression"===t.expression.type?se(e,t.expression):(t.expression.type,se(e,t.expression).then((e=>z((t=>{t(e===p?p:new b(e))})))))}catch(r){return H(r)}}function Re(e,t){return z(((r,n)=>{"AssignmentExpression"!==t.test.type&&"UpdateExpression"!==t.test.type?se(e,t.test).then((o=>{try{!0===o?se(e,t.consequent).then(r,n):!1===o?null!==t.alternate?se(e,t.alternate).then(r,n):r(p):n(new Error(U(t.test,"RUNTIME","CANNOT_USE_NONBOOLEAN_IN_CONDITION")))}catch(a){n(a)}}),n):n(new Error(U(t.test,"RUNTIME","CANNOT_USE_ASSIGNMENT_IN_CONDITION")))}))}function Oe(e,t){try{return Ae(e,t,0)}catch(r){return ne(r)}}function Ae(e,t,r){try{return r>=t.body.length?Z(p):z(((n,o)=>{se(e,t.body[r]).then((a=>{try{a instanceof v||a===d||a===h||r===t.body.length-1?n(a):Ae(e,t,r+1).then(n,o)}catch(c){o(c)}}),o)}))}catch(n){return ne(n)}}function Ue(e,t){return z(((r,n)=>{null===t.argument?r(new v(p)):se(e,t.argument).then((e=>{try{r(new v(e))}catch(t){n(t)}}),n)}))}function Ce(e,t){try{const r=t.id.name.toLowerCase();return e.globalScope[r]={valueset:!0,node:null,value:new o(t,e)},Z(p)}catch(r){return ne(r)}}function Fe(e,t,r){return z(((n,o)=>{r>=t.declarations.length?n(p):se(e,t.declarations[r]).then((()=>{r===t.declarations.length-1?n(p):Fe(e,t,r+1).then((()=>{n(p)}),o)}),o)}))}function Me(e,t){try{let r=null;return r=null===t.init?Z(null):se(e,t.init),null!==e.localScope?r.then((r=>z((n=>{if(r===p&&(r=null),"Identifier"!==t.id.type)throw new Error("Can only assign a regular variable");const o=t.id.name.toLowerCase();e.localScope[o]={value:r,valueset:!0,node:t.init},n(p)})))):r.then((r=>z((n=>{if("Identifier"!==t.id.type)throw new Error("Can only assign a regular variable");const o=t.id.name.toLowerCase();r===p&&(r=null),e.globalScope[o]={value:r,valueset:!0,node:t.init},n(p)}))))}catch(r){return ne(r)}}let xe=0;function Pe(e,t,n,o){let i;switch(t=t.toLowerCase()){case"hasz":{const t=e.hasZ;return void 0!==t&&t}case"hasm":{const t=e.hasM;return void 0!==t&&t}case"spatialreference":{let t=e.spatialReference._arcadeCacheId;if(void 0===t){let r=!0;Object.freeze&&Object.isFrozen(e.spatialReference)&&(r=!1),r&&(xe++,e.spatialReference._arcadeCacheId=xe,t=xe)}const n=new r({wkt:e.spatialReference.wkt,wkid:e.spatialReference.wkid});return void 0!==t&&(n._arcadeCacheId="SPREF"+t.toString()),n}}switch(e.type){case"extent":switch(t){case"xmin":case"xmax":case"ymin":case"ymax":case"zmin":case"zmax":case"mmin":case"mmax":{const r=e[t];return void 0!==r?r:null}case"type":return"Extent"}break;case"polygon":switch(t){case"rings":i=e.cache._arcadeCacheId,void 0===i&&(xe++,i=xe,e.cache._arcadeCacheId=i);return new a(e.rings,e.spatialReference,!0===e.hasZ,!0===e.hasM,i);case"type":return"Polygon"}break;case"point":switch(t){case"x":case"y":case"z":case"m":return void 0!==e[t]?e[t]:null;case"type":return"Point"}break;case"polyline":switch(t){case"paths":i=e.cache._arcadeCacheId,void 0===i&&(xe++,i=xe,e.cache._arcadeCacheId=i);return new a(e.paths,e.spatialReference,!0===e.hasZ,!0===e.hasM,i);case"type":return"Polyline"}break;case"multipoint":switch(t){case"points":i=e.cache._arcadeCacheId,void 0===i&&(xe++,i=xe,e.cache._arcadeCacheId=i);return new c(e.points,e.spatialReference,!0===e.hasZ,!0===e.hasM,i,1);case"type":return"Multipoint"}}throw new Error(U(o,"RUNTIME","PROPERTYNOTFOUND"))}function De(e,t){try{return se(e,t.object).then((o=>{try{return null===o?H(new Error(U(t,"RUNTIME","NOTFOUND"))):!1===t.computed?"Identifier"===t.property.type?o instanceof r||o instanceof n?Z(o.field(t.property.name)):o instanceof K?Z(Pe(o,t.property.name,e,t)):H(new Error(U(t,"RUNTIME","INVALIDTYPE"))):H(new Error(U(t,"RUNTIME","INVALIDTYPE"))):se(e,t.property).then((a=>z(((c,i)=>{if(o instanceof r||o instanceof n)g(a)?c(o.field(a)):i(new Error(U(t,"RUNTIME","INVALIDTYPE")));else if(o instanceof K)g(a)?c(Pe(o,a,e,t)):i(new Error(U(t,"RUNTIME","INVALIDTYPE")));else if(m(o))if(w(a)&&isFinite(a)&&Math.floor(a)===a){if(a<0&&(a=o.length+a),a>=o.length||a<0)throw new Error(U(t,"RUNTIME","OUTOFBOUNDS"));c(o[a])}else i(new Error(U(t,"RUNTIME","INVALIDTYPE")));else if(y(o))if(w(a)&&isFinite(a)&&Math.floor(a)===a){if(a<0&&(a=o.length()+a),a>=o.length()||a<0)throw new Error(U(t,"RUNTIME","OUTOFBOUNDS"));c(o.get(a))}else i(new Error(U(t,"RUNTIME","INVALIDTYPE")));else if(g(o))if(w(a)&&isFinite(a)&&Math.floor(a)===a){if(a<0&&(a=o.length+a),a>=o.length||a<0)throw new Error(U(t,"RUNTIME","OUTOFBOUNDS"));c(o[a])}else i(new Error(U(t,"RUNTIME","INVALIDTYPE")));else i(new Error(U(t,"RUNTIME","INVALIDTYPE")))}))))}catch(a){return ne(a)}}))}catch(o){return ne(o)}}function je(e,t){try{return se(e,t.argument).then((e=>z(((r,n)=>{s(e)&&"!"===t.operator?r(!e):"-"===t.operator?r(-1*I(e)):"+"===t.operator?r(1*I(e)):"~"===t.operator?r(~I(e)):n(new Error(U(t,"RUNTIME","NOTSUPPORTEDUNARYOPERATOR")))}))))}catch(r){return ne(r)}}function ke(e,t){try{const r=[];for(let n=0;n<t.elements.length;n++)r.push(se(e,t.elements[n]));return q(r).then((e=>z(((r,n)=>{for(let o=0;o<e.length;o++){if(N(e[o]))return void n(new Error(U(t,"RUNTIME","FUNCTIONCONTEXTILLEGAL")));e[o]===p&&(e[o]=null)}r(e)}))))}catch(r){return ne(r)}}function Le(e,t){try{return q([se(e,t.left),se(e,t.right)]).then((e=>z(((r,n)=>{const o=e[0],a=e[1];switch(t.operator){case"|":case"<<":case">>":case">>>":case"^":case"&":r(T(I(o),I(a),t.operator));case"==":r(l(o,a));break;case"!=":r(!l(o,a));break;case"<":case">":case"<=":case">=":r(S(o,a,t.operator));break;case"+":g(o)||g(a)?r(f(o)+f(a)):r(I(o)+I(a));break;case"-":r(I(o)-I(a));break;case"*":r(I(o)*I(a));break;case"/":r(I(o)/I(a));break;case"%":r(I(o)%I(a));break;default:n(new Error(U(t,"RUNTIME","OPERATORNOTRECOGNISED")))}}))))}catch(r){return ne(r)}}function _e(e,t){return z(((r,n)=>{"AssignmentExpression"!==t.left.type&&"UpdateExpression"!==t.left.type?"AssignmentExpression"!==t.right.type&&"UpdateExpression"!==t.right.type?se(e,t.left).then((o=>{try{if(!s(o))throw new Error(U(t,"RUNTIME","ONLYBOOLEAN"));switch(t.operator){case"||":!0===o?r(o):se(e,t.right).then((e=>{try{if(!s(e))throw new Error(U(t,"RUNTIME","ONLYORORAND"));r(e)}catch(o){n(o)}}),n);break;case"&&":!1===o?r(o):se(e,t.right).then((e=>{try{if(!s(e))throw new Error(U(t,"RUNTIME","ONLYORORAND"));r(e)}catch(o){n(o)}}),n);break;default:throw new Error(U(t,"RUNTIME","ONLYORORAND"))}}catch(a){n(a)}}),n):n(new Error(U(t.right,"RUNTIME","CANNOT_USE_ASSIGNMENT_IN_CONDITION"))):n(new Error(U(t.left,"RUNTIME","CANNOT_USE_ASSIGNMENT_IN_CONDITION")))}))}function Ve(e,t){return z(((r,n)=>{const o=t.name.toLowerCase();if(null===e.localScope||void 0===e.localScope[o])if(void 0===e.globalScope[o])n(new Error(U(t,"RUNTIME","VARIABLENOTFOUND")));else{const t=e.globalScope[o];!0===t.valueset?r(t.value):null!==t.d?t.d.then(r,n):(t.d=se(e,t.node),t.d.then((e=>{try{t.value=e,t.valueset=!0,r(e)}catch(o){n(o)}}),n))}else{const t=e.localScope[o];!0===t.valueset?r(t.value):null!==t.d?t.d.then(r,n):(t.d=se(e,t.node),t.d.then((e=>{try{t.value=e,t.valueset=!0,r(e)}catch(o){n(o)}}),n))}}))}function Be(e,t){try{if("Identifier"!==t.callee.type)return ne(U(t,"RUNTIME","ONLYNODESSUPPORTED"));if(null!==e.localScope&&void 0!==e.localScope[t.callee.name.toLowerCase()]){const r=e.localScope[t.callee.name.toLowerCase()];return r.value instanceof u?r.value.fn(e,t):r.value instanceof o?$e(e,t,r.value.definition):ne(U(t,"RUNTIME","NOTAFUNCTION"))}if(void 0!==e.globalScope[t.callee.name.toLowerCase()]){const r=e.globalScope[t.callee.name.toLowerCase()];return r.value instanceof u?r.value.fn(e,t):r.value instanceof o?$e(e,t,r.value.definition):ne(U(t,"RUNTIME","NOTAFUNCTION"))}return ne(U(t,"RUNTIME","NOTFOUND"))}catch(r){return ne(r)}}function Ye(e,t){return Z(t.value?t.value.cooked:"")}function Ge(e,t){return z((r=>{const n=[];j(t.expressions,((t,r,o,a)=>se(e,r).then((e=>{n[o]=f(e)})))).then((()=>{let e="",o=0;for(const r of t.quasis)if(e+=r.value?r.value.cooked:"",!1===r.tail){e+=n[o]?n[o]:"",o++}r(e)}))}))}const ze={};function qe(o){return null===o?"":m(o)||y(o)?"Array":R(o)?"Date":g(o)?"String":s(o)?"Boolean":w(o)?"Number":o instanceof t?"Attachment":o instanceof e?"Portal":o instanceof r?"Dictionary":o instanceof n?"Feature":o instanceof J?"Point":o instanceof Q?"Polygon":o instanceof $?"Polyline":o instanceof X?"Multipoint":o instanceof W?"Extent":N(o)?"Function":E(o)?"FeatureSet":O(o)?"FeatureSetCollection":o===p?"":"number"==typeof o&&isNaN(o)?"Number":"Unrecognised Type"}function He(e,t,r,n){return z(((o,a)=>{se(e,t.arguments[r]).then((c=>{try{if(l(c,n))return void se(e,t.arguments[r+1]).then(o,a);{const c=t.arguments.length-r;return 1===c?void se(e,t.arguments[r]).then(o,a):(2===c&&o(null),3===c?void se(e,t.arguments[r+2]).then(o,a):void He(e,t,r+2,n).then(o,a))}}catch(i){a(i)}}),a)}))}function Ze(e,t,r,n){return z(((o,a)=>{if(!0===n)se(e,t.arguments[r+1]).then(o,a);else{3===t.arguments.length-r?se(e,t.arguments[r+2]).then(o,a):se(e,t.arguments[r+2]).then((n=>{try{if(!1===s(n))return void a(new Error("WHEN needs boolean test conditions"));Ze(e,t,r+2,n).then(o,a)}catch(c){a(c)}}))}}))}function We(e,t){try{const r=e.length,n=Math.floor(r/2);return 0===r?Z([]):1===r?Z([e[0]]):z(((o,a)=>{const c=[We(e.slice(0,n),t),We(e.slice(n,r),t)];q(c).then((e=>{try{Ke(e[0],e[1],t,[]).then(o,a)}catch(r){a(r)}}),a)}))}catch(r){return ne(r)}}function Ke(e,t,r,n){return z(((o,a)=>{const c=n;e.length>0||t.length>0?e.length>0&&t.length>0?r(e[0],t[0]).then((i=>{try{isNaN(i)&&(i=1),i<=0?(c.push(e[0]),e=e.slice(1)):(c.push(t[0]),t=t.slice(1)),Ke(e,t,r,n).then(o,a)}catch(s){a(s)}}),a):e.length>0?(c.push(e[0]),Ke(e=e.slice(1),t,r,n).then(o,a)):t.length>0&&(c.push(t[0]),t=t.slice(1),Ke(e,t,r,n).then(o,a)):o(n)}))}function Xe(e,t){const r=e.length,n=Math.floor(r/2);return t||(t=function(e,t){return e<t?-1:e===t?0:1}),0===r?[]:1===r?[e[0]]:Je(Xe(e.slice(0,n),t),Xe(e.slice(n,r),t),t)}function Je(e,t,r){const n=[];for(;e.length>0||t.length>0;)if(e.length>0&&t.length>0){let o=r(e[0],t[0]);isNaN(o)&&(o=1),o<=0?(n.push(e[0]),e=e.slice(1)):(n.push(t[0]),t=t.slice(1))}else e.length>0?(n.push(e[0]),e=e.slice(1)):t.length>0&&(n.push(t[0]),t=t.slice(1));return n}function Qe(e,t,r){try{const n=e.body;if(r.length!==e.params.length)return ne(new Error("Invalid Parameter calls to function."));for(let o=0;o<r.length;o++){const n=e.params[o];"Identifier"===n.type&&(t.localScope[n.name.toLowerCase()]={d:null,value:r[o],valueset:!0,node:null})}return se(t,n).then((e=>z(((t,r)=>{e instanceof v?t(e.value):e!==d?e!==h?t(e instanceof b?e.value:e):r(new Error("Cannot Continue from a Function")):r(new Error("Cannot Break from a Function"))}))))}catch(n){return H(n)}}function $e(e,t,r){return ie(e,t,(function(t,n,o){const a={spatialReference:e.spatialReference,services:e.services,console:e.console,lrucache:e.lrucache,interceptor:e.interceptor,localScope:{},abortSignal:e.abortSignal,globalScope:e.globalScope,depthCounter:e.depthCounter+1};if(a.depthCounter>64)throw new Error("Exceeded maximum function depth");return Qe(r,a,o)}))}function et(e){const t=function(){const t={abortSignal:e.context.abortSignal,spatialReference:e.context.spatialReference,console:e.context.console,lrucache:e.context.lrucache,interceptor:e.context.interceptor,services:e.context.services,localScope:{},globalScope:e.context.globalScope,depthCounter:e.context.depthCounter+1};if(t.depthCounter>64)throw new Error("Exceeded maximum function depth");return Qe(e.definition,t,arguments)};return t}k(ze,ce),L(ze,ce),G(ze,ce),B(ze,ce),V(ze,ce),Y(ze,ce),_({functions:ze,compiled:!1,signatures:null,failDefferred:null,evaluateIdentifier:null,arcadeCustomFunctionHandler:null,mode:"async",standardFunction:ce,standardFunctionAsync:ie}),ze.typeof=function(e,t){return ce(e,t,(function(e,t,r){i(r,1,1);const n=qe(r[0]);if("Unrecognised Type"===n)throw new Error("Unrecognised Type");return n}))},ze.iif=function(e,t){return z(((r,n)=>{i(null===t.arguments?[]:t.arguments,3,3),se(e,t.arguments[0]).then((o=>{try{if(!1===s(o))return void n(new Error("IF Function must have a boolean test condition"));q([se(e,t.arguments[1]),se(e,t.arguments[2])]).then((e=>{r(o?e[0]:e[1])}),n)}catch(a){n(a)}}),n)}))},ze.decode=function(e,t){return z(((r,n)=>{t.arguments.length<2?n(new Error("Missing Parameters")):2!==t.arguments.length?(t.arguments.length-1)%2!=0?se(e,t.arguments[0]).then((o=>{try{He(e,t,1,o).then(r,n)}catch(a){n(a)}}),n):n(new Error("Must have a default value result.")):se(e,t.arguments[1]).then(r,n)}))},ze.when=function(e,t){try{return t.arguments.length<3?ne("Missing Parameters"):t.arguments.length%2==0?ne("Must have a default value result."):se(e,t.arguments[0]).then((r=>z(((n,o)=>{if(!1===s(r))return void o(new Error("WHEN needs boolean test conditions"));Ze(e,t,0,r).then(n,o)}))))}catch(r){return ne(r)}},ze.sort=function(e,t){return ie(e,t,(function(e,t,r){i(r,1,2);let n=r[0];if(y(n)&&(n=n.toArray()),!1===m(n))return ne(Error("Illegal Argument"));if(r.length>1){if(!1===N(r[1]))return ne(Error("Illegal Argument"));return We(n,et(r[1]))}{let e=n;if(0===e.length)return Z([]);const t={};for(let n=0;n<e.length;n++){const r=qe(e[n]);""!==r&&(t[r]=!0)}if(!0===t.Array||!0===t.Dictionary||!0===t.Feature||!0===t.Point||!0===t.Polygon||!0===t.Polyline||!0===t.Multipoint||!0===t.Extent||!0===t.Function)return Z(e.slice(0));let r=0,o="";for(const n in t)r++,o=n;return r>1||"String"===o?e=Xe(e,(function(e,t){if(null==e||e===p)return null==t||t===p?0:1;if(null==t||t===p)return-1;const r=f(e),n=f(t);return r<n?-1:r===n?0:1})):"Number"===o?e=Xe(e,(function(e,t){return e-t})):"Boolean"===o?e=Xe(e,(function(e,t){return e===t?0:t?-1:1})):"Date"===o&&(e=Xe(e,(function(e,t){return t-e}))),Z(e)}}))};const tt={failDefferred:ne,resolveDeffered:oe,fixSpatialReference:A,parseArguments:ae,standardFunction:ce,standardFunctionAsync:ie,evaluateIdentifier:Ve,arcadeCustomFunction:et};for(const pt in ze)ze[pt]={value:new u(ze[pt]),valueset:!0,node:null};const rt=function(){};function nt(e,t){const o=new rt;null==e&&(e={}),null==t&&(t={});const a=new r({newline:"\n",tab:"\t",singlequote:"'",doublequote:'"',forwardslash:"/",backwardslash:"\\"});a.immutable=!1,o.textformatting={value:a,valueset:!0,node:null};for(const r in t)o[r]={value:new u(t[r]),native:!0,valueset:!0,node:null};for(const r in e)e[r]&&"esri.Graphic"===e[r].declaredClass?o[r]={value:n.createFromGraphic(e[r]),valueset:!0,node:null}:o[r]={value:e[r],valueset:!0,node:null};return o}function ot(e){console.log(e)}rt.prototype=ze,rt.prototype.infinity={value:Number.POSITIVE_INFINITY,valueset:!0,node:null},rt.prototype.pi={value:Math.PI,valueset:!0,node:null};const at=tt;function ct(e){const t={mode:"async",compiled:!1,functions:{},signatures:[],standardFunction:ce,standardFunctionAsync:ie,failDefferred:ne,evaluateIdentifier:Ve,arcadeCustomFunctionHandler:et};for(let r=0;r<e.length;r++)e[r].registerFunctions(t);for(const r in t.functions)ze[r]={value:new u(t.functions[r]),valueset:!0,node:null},rt.prototype[r]=ze[r];for(let r=0;r<t.signatures.length;r++)C(t.signatures[r],"async")}function it(e,t){let r=t.spatialReference;null==r&&(r=new ee({wkid:102100}));const n=nt(t.vars,t.customfunctions);return se({spatialReference:r,services:t.services,abortSignal:void 0===t.abortSignal||null===t.abortSignal?{aborted:!1}:t.abortSignal,globalScope:n,console:t.console?t.console:ot,lrucache:t.lrucache,interceptor:t.interceptor,localScope:null,depthCounter:1},e.body[0].body).then((e=>z(((t,r)=>{e instanceof v&&(e=e.value),e instanceof b&&(e=e.value),e===p&&(e=null),e!==d?e!==h?e instanceof u||e instanceof o?r(new Error("Cannot return FUNCTION")):t(e):r(new Error("Cannot return CONTINUE")):r(new Error("Cannot return BREAK"))}))))}function st(e,t){return F(e)}function lt(e,t){return M(e,t,"full")}function ut(e,t){return x(e,t)}function ft(e,t){return P(e,t)}function ht(e){return D(e)}export{it as executeScript,ct as extend,st as extractFieldLiterals,ht as findFunctionCalls,at as functionHelper,ft as referencesFunction,ut as referencesMember,lt as validateScript};
|
package/arcade/arcadeRuntime.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.21/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import e from"./ArcadePortal.js";import r from"./Attachment.js";import t from"./Dictionary.js";import n from"./Feature.js";import o from"./FunctionWrapper.js";import a from"./ImmutablePathArray.js";import i from"./ImmutablePointArray.js";import{p as s,i as l,e as c,N as u,m as f,k as p,v as h,c as w,f as m,a as E,R as d,b as g,j as N,t as I,I as y,d as v,g as T,h as R,n as O,o as S,q as b,r as U}from"../chunks/languageUtils.js";import{nodeErrorMessage as A,addFunctionDeclaration as C,findFieldLiterals as F,findExpectedFieldLiterals as M,validateScript as x,referencesMember as P,referencesFunction as D,findFunctionCalls as L}from"./treeAnalysis.js";import{registerFunctions as j}from"./functions/array.js";import{registerFunctions as _}from"./functions/date.js";import{registerFunctions as k}from"./functions/geometry.js";import{registerFunctions as V}from"./functions/geomsync.js";import{registerFunctions as B}from"./functions/maths.js";import{registerFunctions as Y}from"./functions/stats.js";import{registerFunctions as G}from"./functions/string.js";import z from"../geometry/Extent.js";import q from"../geometry/Geometry.js";import Z from"../geometry/Multipoint.js";import H from"../geometry/Point.js";import W from"../geometry/Polygon.js";import K from"../geometry/Polyline.js";import X from"../geometry/SpatialReference.js";function J(e,r){const t=[];for(let n=0;n<r.arguments.length;n++)t.push($(e,r.arguments[n]));return t}function Q(e,r,t){try{return t(e,r,J(e,r))}catch(n){throw n}}function $(e,r){try{switch(r.type){case"EmptyStatement":return h;case"VariableDeclarator":return we(e,r);case"VariableDeclaration":return he(e,r);case"BlockStatement":return ue(e,r);case"FunctionDeclaration":return pe(e,r);case"ReturnStatement":return fe(e,r);case"IfStatement":return ce(e,r);case"ExpressionStatement":return le(e,r);case"AssignmentExpression":return se(e,r);case"UpdateExpression":return ae(e,r);case"BreakStatement":return p;case"ContinueStatement":return f;case"TemplateElement":return ve(e,r);case"TemplateLiteral":return Te(e,r);case"ForStatement":return ne(e,r);case"ForInStatement":return te(e,r);case"Identifier":return Re(e,r);case"MemberExpression":return de(e,r);case"Literal":return r.value;case"CallExpression":return Oe(e,r);case"UnaryExpression":return ge(e,r);case"BinaryExpression":return Ie(e,r);case"LogicalExpression":return ye(e,r);case"ArrayExpression":return Ne(e,r);case"ObjectExpression":return ee(e,r);case"Property":return re(e,r);default:throw new Error(A(r,"RUNTIME","UNREOGNISED"))}}catch(t){throw t}}function ee(e,r){const n={};for(let t=0;t<r.properties.length;t++){const o=$(e,r.properties[t]);if(w(o.value))throw new Error("Illegal Argument");if(!1===m(o.key))throw new Error("Illegal Argument");o.value===h?n[o.key.toString()]=null:n[o.key.toString()]=o.value}const o=new t(n);return o.immutable=!1,o}function re(e,r){return{key:"Identifier"===r.key.type?r.key.name:$(e,r.key),value:$(e,r.value)}}function te(e,r){const o=$(e,r.right);"VariableDeclaration"===r.left.type&&$(e,r.left);let a=null,i="";if("VariableDeclaration"===r.left.type){const e=r.left.declarations[0].id;"Identifier"===e.type&&(i=e.name)}else"Identifier"===r.left.type&&(i=r.left.name);if(!i)throw new Error(A(r,"RUNTIME","INVALIDVARIABLE"));if(i=i.toLowerCase(),null!==e.localScope&&void 0!==e.localScope[i]&&(a=e.localScope[i]),null===a&&void 0!==e.globalScope[i]&&(a=e.globalScope[i]),null===a)throw new Error(A(r,"RUNTIME","VARIABLENOTDECLARED"));if(E(o)||m(o)){const t=o.length;for(let n=0;n<t;n++){a.value=n;const t=$(e,r.body);if(t===p)break;if(t instanceof d)return t}return h}if(g(o)){for(let t=0;t<o.length();t++){a.value=t;const n=$(e,r.body);if(n===p)break;if(n instanceof d)return n}return h}if(!(o instanceof t||o instanceof n))return h;{const t=o.keys();for(let n=0;n<t.length;n++){a.value=t[n];const o=$(e,r.body);if(o===p)break;if(o instanceof d)return o}}}function ne(e,r){null!==r.init&&$(e,r.init);const t={testResult:!0,lastAction:h};do{oe(e,r,t)}while(!0===t.testResult);return t.lastAction instanceof d?t.lastAction:h}function oe(e,r,t){if(null!==r.test){if(t.testResult=$(e,r.test),!1===t.testResult)return;if(!0!==t.testResult)throw new Error(A(r,"RUNTIME","CANNOT_USE_NONBOOLEAN_IN_CONDITION"))}t.lastAction=$(e,r.body),t.lastAction!==p?t.lastAction instanceof d?t.testResult=!1:null!==r.update&&$(e,r.update):t.testResult=!1}function ae(e,r){let o,a=null,i="";if("MemberExpression"===r.argument.type){if(a=$(e,r.argument.object),!0===r.argument.computed?i=$(e,r.argument.property):"Identifier"===r.argument.property.type&&(i=r.argument.property.name),E(a)){if(!N(i))throw new Error("Invalid Parameter");if(i<0&&(i=a.length+i),i<0||i>=a.length)throw new Error("Assignment outside of array bounds");o=I(a[i]),a[i]="++"===r.operator?o+1:o-1}else if(a instanceof t){if(!1===m(i))throw new Error("Dictionary accessor must be a string");if(!0!==a.hasField(i))throw new Error("Invalid Parameter");o=I(a.field(i)),a.setField(i,"++"===r.operator?o+1:o-1)}else{if(!(a instanceof n))throw g(a)?new Error("Array is Immutable"):new Error("Invalid Parameter");if(!1===m(i))throw new Error("Feature accessor must be a string");if(!0!==a.hasField(i))throw new Error("Invalid Parameter");o=I(a.field(i)),a.setField(i,"++"===r.operator?o+1:o-1)}return!1===r.prefix?o:"++"===r.operator?o+1:o-1}if(a="Identifier"===r.argument.type?r.argument.name.toLowerCase():"",!a)throw new Error("Invalid identifier");if(null!==e.localScope&&void 0!==e.localScope[a])return o=I(e.localScope[a].value),e.localScope[a]={value:"++"===r.operator?o+1:o-1,valueset:!0,node:r},!1===r.prefix?o:"++"===r.operator?o+1:o-1;if(void 0!==e.globalScope[a])return o=I(e.globalScope[a].value),e.globalScope[a]={value:"++"===r.operator?o+1:o-1,valueset:!0,node:r},!1===r.prefix?o:"++"===r.operator?o+1:o-1;throw new Error("Variable not recognised")}function ie(e,r,t,n){switch(r){case"=":return e===h?null:e;case"/=":return I(t)/I(e);case"*=":return I(t)*I(e);case"-=":return I(t)-I(e);case"+=":return m(t)||m(e)?v(t)+v(e):I(t)+I(e);case"%=":return I(t)%I(e);default:throw new Error(A(n,"RUNTIME","OPERATORNOTRECOGNISED"))}}function se(e,r){const o=$(e,r.right);let a=null,i="";if("MemberExpression"===r.left.type){if(a=$(e,r.left.object),!0===r.left.computed?i=$(e,r.left.property):"Identifier"===r.left.property.type&&(i=r.left.property.name),E(a)){if(!N(i))throw new Error("Invalid Parameter");if(i<0&&(i=a.length+i),i<0||i>a.length)throw new Error("Assignment outside of array bounds");if(i===a.length){if("="!==r.operator)throw new Error("Invalid Parameter");a[i]=ie(o,r.operator,a[i],r)}else a[i]=ie(o,r.operator,a[i],r)}else if(a instanceof t){if(!1===m(i))throw new Error("Dictionary accessor must be a string");if(!0===a.hasField(i))a.setField(i,ie(o,r.operator,a.field(i),r));else{if("="!==r.operator)throw new Error("Invalid Parameter");a.setField(i,ie(o,r.operator,null,r))}}else{if(!(a instanceof n))throw g(a)?new Error("Array is Immutable"):new Error("Invalid Parameter");if(!1===m(i))throw new Error("Feature accessor must be a string");if(!0===a.hasField(i))a.setField(i,ie(o,r.operator,a.field(i),r));else{if("="!==r.operator)throw new Error("Invalid Parameter");a.setField(i,ie(o,r.operator,null,r))}}return h}if(a=r.left.name.toLowerCase(),null!==e.localScope&&void 0!==e.localScope[a])return e.localScope[a]={value:ie(o,r.operator,e.localScope[a].value,r),valueset:!0,node:r.right},h;if(void 0!==e.globalScope[a])return e.globalScope[a]={value:ie(o,r.operator,e.globalScope[a].value,r),valueset:!0,node:r.right},h;throw new Error("Variable not recognised")}function le(e,r){if("AssignmentExpression"===r.expression.type||"UpdateExpression"===r.expression.type)return $(e,r.expression);if("CallExpression"===r.expression.type){const t=$(e,r.expression);return t===h?h:new y(t)}{const t=$(e,r.expression);return t===h?h:new y(t)}}function ce(e,r){if("AssignmentExpression"===r.test.type||"UpdateExpression"===r.test.type)throw new Error(A(r.test,"RUNTIME","CANNOT_USE_ASSIGNMENT_IN_CONDITION"));const t=$(e,r.test);if(!0===t)return $(e,r.consequent);if(!1===t)return null!==r.alternate?$(e,r.alternate):h;throw new Error(A(r,"RUNTIME","CANNOT_USE_NONBOOLEAN_IN_CONDITION"))}function ue(e,r){let t=h;for(let n=0;n<r.body.length;n++)if(t=$(e,r.body[n]),t instanceof d||t===p||t===f)return t;return t}function fe(e,r){if(null===r.argument)return new d(h);const t=$(e,r.argument);return new d(t)}function pe(e,r){const t=r.id.name.toLowerCase();return e.globalScope[t]={valueset:!0,node:null,value:new o(r,e)},h}function he(e,r){for(let t=0;t<r.declarations.length;t++)$(e,r.declarations[t]);return h}function we(e,r){let t=null===r.init?null:$(e,r.init);if(t===h&&(t=null),"Identifier"!==r.id.type)throw new Error("Can only assign a regular variable");const n=r.id.name.toLowerCase();return null!==e.localScope?e.localScope[n]={value:t,valueset:!0,node:r.init}:e.globalScope[n]={value:t,valueset:!0,node:r.init},h}let me=0;function Ee(e,r,n){let o;switch(r=r.toLowerCase()){case"hasz":{const r=e.hasZ;return void 0!==r&&r}case"hasm":{const r=e.hasM;return void 0!==r&&r}case"spatialreference":{let r=e.spatialReference._arcadeCacheId;if(void 0===r){let t=!0;Object.freeze&&Object.isFrozen(e.spatialReference)&&(t=!1),t&&(me++,e.spatialReference._arcadeCacheId=me,r=me)}const n=new t({wkt:e.spatialReference.wkt,wkid:e.spatialReference.wkid});return void 0!==r&&(n._arcadeCacheId="SPREF"+r.toString()),n}}switch(e.type){case"extent":switch(r){case"xmin":case"xmax":case"ymin":case"ymax":case"zmin":case"zmax":case"mmin":case"mmax":{const t=e[r];return void 0!==t?t:null}case"type":return"Extent"}break;case"polygon":switch(r){case"rings":o=e.cache._arcadeCacheId,void 0===o&&(me++,o=me,e.cache._arcadeCacheId=o);return new a(e.rings,e.spatialReference,!0===e.hasZ,!0===e.hasM,o);case"type":return"Polygon"}break;case"point":switch(r){case"x":case"y":case"z":case"m":return void 0!==e[r]?e[r]:null;case"type":return"Point"}break;case"polyline":switch(r){case"paths":o=e.cache._arcadeCacheId,void 0===o&&(me++,o=me,e.cache._arcadeCacheId=o);return new a(e.paths,e.spatialReference,!0===e.hasZ,!0===e.hasM,o);case"type":return"Polyline"}break;case"multipoint":switch(r){case"points":o=e.cache._arcadeCacheId,void 0===o&&(me++,o=me,e.cache._arcadeCacheId=o);return new i(e.points,e.spatialReference,!0===e.hasZ,!0===e.hasM,o,1);case"type":return"Multipoint"}}throw new Error(A(n,"RUNTIME","PROPERTYNOTFOUND"))}function de(e,r){try{const o=$(e,r.object);if(null===o)throw new Error(A(r,"RUNTIME","NOTFOUND"));if(!1===r.computed){if("Identifier"===r.property.type){if(o instanceof t||o instanceof n)return o.field(r.property.name);if(o instanceof q)return Ee(o,r.property.name,r)}throw new Error(A(r,"RUNTIME","INVALIDTYPE"))}{let a=$(e,r.property);if(o instanceof t||o instanceof n){if(m(a))return o.field(a);throw new Error(A(r,"RUNTIME","INVALIDTYPE"))}if(o instanceof q){if(m(a))return Ee(o,a,r);throw new Error(A(r,"RUNTIME","INVALIDTYPE"))}if(E(o)){if(N(a)&&isFinite(a)&&Math.floor(a)===a){if(a<0&&(a=o.length+a),a>=o.length||a<0)throw new Error(A(r,"RUNTIME","OUTOFBOUNDS"));return o[a]}throw new Error(A(r,"RUNTIME","INVALIDTYPE"))}if(m(o)){if(N(a)&&isFinite(a)&&Math.floor(a)===a){if(a<0&&(a=o.length+a),a>=o.length||a<0)throw new Error(A(r,"RUNTIME","OUTOFBOUNDS"));return o[a]}throw new Error(A(r,"RUNTIME","INVALIDTYPE"))}if(g(o)){if(N(a)&&isFinite(a)&&Math.floor(a)===a){if(a<0&&(a=o.length()+a),a>=o.length()||a<0)throw new Error(A(r,"RUNTIME","OUTOFBOUNDS"));return o.get(a)}throw new Error(A(r,"RUNTIME","INVALIDTYPE"))}throw new Error(A(r,"RUNTIME","INVALIDTYPE"))}}catch(o){throw o}}function ge(e,r){try{const t=$(e,r.argument);if(l(t)){if("!"===r.operator)return!t;if("-"===r.operator)return-1*I(t);if("+"===r.operator)return 1*I(t);if("~"===r.operator)return~I(t);throw new Error(A(r,"RUNTIME","NOTSUPPORTEDUNARYOPERATOR"))}if("~"===r.operator)return~I(t);if("-"===r.operator)return-1*I(t);if("+"===r.operator)return 1*I(t);throw new Error(A(r,"RUNTIME","NOTSUPPORTEDUNARYOPERATOR"))}catch(t){throw t}}function Ne(e,r){try{const t=[];for(let n=0;n<r.elements.length;n++){const o=$(e,r.elements[n]);if(w(o))throw new Error(A(r,"RUNTIME","FUNCTIONCONTEXTILLEGAL"));o===h?t.push(null):t.push(o)}return t}catch(t){throw t}}function Ie(e,r){try{const t=[$(e,r.left),$(e,r.right)],n=t[0],o=t[1];switch(r.operator){case"|":case"<<":case">>":case">>>":case"^":case"&":return R(I(n),I(o),r.operator);case"==":return c(n,o);case"!=":return!c(n,o);case"<":case">":case"<=":case">=":return T(n,o,r.operator);case"+":return m(n)||m(o)?v(n)+v(o):I(n)+I(o);case"-":return I(n)-I(o);case"*":return I(n)*I(o);case"/":return I(n)/I(o);case"%":return I(n)%I(o);default:throw new Error(A(r,"RUNTIME","OPERATORNOTRECOGNISED"))}}catch(t){throw t}}function ye(e,r){try{if("AssignmentExpression"===r.left.type||"UpdateExpression"===r.left.type)throw new Error(A(r.left,"RUNTIME","CANNOT_USE_ASSIGNMENT_IN_CONDITION"));if("AssignmentExpression"===r.right.type||"UpdateExpression"===r.right.type)throw new Error(A(r.right,"RUNTIME","CANNOT_USE_ASSIGNMENT_IN_CONDITION"));const t=$(e,r.left);if(l(t))switch(r.operator){case"||":if(!0===t)return t;{const t=$(e,r.right);if(l(t))return t;throw new Error(A(r,"RUNTIME","ONLYORORAND"))}case"&&":if(!1===t)return t;{const t=$(e,r.right);if(l(t))return t;throw new Error(A(r,"RUNTIME","ONLYORORAND"))}default:throw new Error(A(r,"RUNTIME","ONLYORORAND"))}throw new Error(A(r,"RUNTIME","ONLYBOOLEAN"))}catch(t){throw t}}function ve(e,r){return r.value?r.value.cooked:""}function Te(e,r){let t="",n=0;for(const o of r.quasis)if(t+=o.value?o.value.cooked:"",!1===o.tail){t+=r.expressions[n]?v($(e,r.expressions[n])):"",n++}return t}function Re(e,r){let t;try{const n=r.name.toLowerCase();if(null!==e.localScope&&void 0!==e.localScope[n])return t=e.localScope[n],!0===t.valueset||(t.value=$(e,t.node),t.valueset=!0),t.value;if(void 0!==e.globalScope[n])return t=e.globalScope[n],!0===t.valueset||(t.value=$(e,t.node),t.valueset=!0),t.value;throw new Error(A(r,"RUNTIME","VARIABLENOTFOUND"))}catch(n){throw n}}function Oe(e,r){try{if("Identifier"!==r.callee.type)throw new Error(A(r,"RUNTIME","ONLYNODESSUPPORTED"));if(null!==e.localScope&&void 0!==e.localScope[r.callee.name.toLowerCase()]){const t=e.localScope[r.callee.name.toLowerCase()];if(t.value instanceof u)return t.value.fn(e,r);if(t.value instanceof o)return xe(e,r,t.value.definition);throw new Error(A(r,"RUNTIME","NOTAFUNCTION"))}if(void 0!==e.globalScope[r.callee.name.toLowerCase()]){const t=e.globalScope[r.callee.name.toLowerCase()];if(t.value instanceof u)return t.value.fn(e,r);if(t.value instanceof o)return xe(e,r,t.value.definition);throw new Error(A(r,"RUNTIME","NOTAFUNCTION"))}throw new Error(A(r,"RUNTIME","NOTFOUND"))}catch(t){throw t}}const Se={};function be(o){return null==o?"":E(o)||g(o)?"Array":O(o)?"Date":m(o)?"String":l(o)?"Boolean":N(o)?"Number":o instanceof r?"Attachment":o instanceof e?"Portal":o instanceof t?"Dictionary":o instanceof n?"Feature":o instanceof H?"Point":o instanceof W?"Polygon":o instanceof K?"Polyline":o instanceof Z?"Multipoint":o instanceof z?"Extent":w(o)?"Function":S(o)?"FeatureSet":b(o)?"FeatureSetCollection":o===h?"":"number"==typeof o&&isNaN(o)?"Number":"Unrecognised Type"}function Ue(e,r,t,n){try{const o=$(e,r.arguments[t]);if(c(o,n))return $(e,r.arguments[t+1]);{const o=r.arguments.length-t;return 1===o?$(e,r.arguments[t]):2===o?null:3===o?$(e,r.arguments[t+2]):Ue(e,r,t+2,n)}}catch(o){throw o}}function Ae(e,r,t,n){try{if(!0===n)return $(e,r.arguments[t+1]);if(3===r.arguments.length-t)return $(e,r.arguments[t+2]);{const n=$(e,r.arguments[t+2]);if(!1===l(n))throw new Error("WHEN needs boolean test conditions");return Ae(e,r,t+2,n)}}catch(o){throw o}}function Ce(e,r){const t=e.length,n=Math.floor(t/2);return 0===t?[]:1===t?[e[0]]:Fe(Ce(e.slice(0,n),r),Ce(e.slice(n,t),r),r)}function Fe(e,r,t){const n=[];for(;e.length>0||r.length>0;)if(e.length>0&&r.length>0){let o=t(e[0],r[0]);isNaN(o)&&(o=0),o<=0?(n.push(e[0]),e=e.slice(1)):(n.push(r[0]),r=r.slice(1))}else e.length>0?(n.push(e[0]),e=e.slice(1)):r.length>0&&(n.push(r[0]),r=r.slice(1));return n}function Me(e,r,t){try{const n=e.body;if(t.length!==e.params.length)throw new Error("Invalid Parameter calls to function.");for(let a=0;a<t.length;a++)r.localScope[e.params[a].name.toLowerCase()]={value:t[a],valueset:!0,node:null};const o=$(r,n);if(o instanceof d)return o.value;if(o===p)throw new Error("Cannot Break from a Function");if(o===f)throw new Error("Cannot Continue from a Function");return o instanceof y?o.value:o}catch(n){throw n}}function xe(e,r,t){return Q(e,r,(function(r,n,o){const a={spatialReference:e.spatialReference,globalScope:e.globalScope,depthCounter:e.depthCounter+1,console:e.console,lrucache:e.lrucache,interceptor:e.interceptor,localScope:{}};if(a.depthCounter>64)throw new Error("Exceeded maximum function depth");return Me(t,a,o)}))}function Pe(e){return function(){const r={spatialReference:e.context.spatialReference,console:e.context.console,lrucache:e.context.lrucache,interceptor:e.context.interceptor,localScope:{},depthCounter:e.context.depthCounter+1,globalScope:e.context.globalScope};if(r.depthCounter>64)throw new Error("Exceeded maximum function depth");return Me(e.definition,r,arguments)}}j(Se,Q),_(Se,Q),G(Se,Q),B(Se,Q),k(Se,Q),Y(Se,Q),V(Se,Q),Se.typeof=function(e,r){return Q(e,r,(function(e,r,t){s(t,1,1);const n=be(t[0]);if("Unrecognised Type"===n)throw new Error("Unrecognised Type");return n}))},Se.iif=function(e,r){try{s(null===r.arguments?[]:r.arguments,3,3);const t=$(e,r.arguments[0]);if(!1===l(t))throw new Error("IF Function must have a boolean test condition");const n=$(e,r.arguments[1]),o=$(e,r.arguments[2]);return!0===t?n:o}catch(t){throw t}},Se.decode=function(e,r){try{if(r.arguments.length<2)throw new Error("Missing Parameters");if(2===r.arguments.length)return $(e,r.arguments[1]);{if((r.arguments.length-1)%2==0)throw new Error("Must have a default value result.");const t=$(e,r.arguments[0]);return Ue(e,r,1,t)}}catch(t){throw t}},Se.when=function(e,r){try{if(r.arguments.length<3)throw new Error("Missing Parameters");if(r.arguments.length%2==0)throw new Error("Must have a default value result.");const t=$(e,r.arguments[0]);if(!1===l(t))throw new Error("WHEN needs boolean test conditions");return Ae(e,r,0,t)}catch(t){throw t}},Se.top=function(e,r){return Q(e,r,(function(e,r,t){if(s(t,2,2),E(t[0]))return I(t[1])>=t[0].length?t[0].slice(0):t[0].slice(0,I(t[1]));if(g(t[0]))return I(t[1])>=t[0].length()?t[0].slice(0):t[0].slice(0,I(t[1]));throw new Error("Top cannot accept this parameter type")}))},Se.first=function(e,r){return Q(e,r,(function(e,r,t){return s(t,1,1),E(t[0])?0===t[0].length?null:t[0][0]:g(t[0])?0===t[0].length()?null:t[0].get(0):null}))},Se.sort=function(e,r){return Q(e,r,(function(e,r,t){s(t,1,2);let n=t[0];if(g(n)&&(n=n.toArray()),!1===E(n))throw new Error("Illegal Argument");if(t.length>1){if(!1===w(t[1]))throw new Error("Illegal Argument");let e=n;const r=Pe(t[1]);return e=Ce(e,(function(e,t){return r(e,t)})),e}{let e=n;if(0===e.length)return[];const r={};for(let n=0;n<e.length;n++){const t=be(e[n]);""!==t&&(r[t]=!0)}if(!0===r.Array||!0===r.Dictionary||!0===r.Feature||!0===r.Point||!0===r.Polygon||!0===r.Polyline||!0===r.Multipoint||!0===r.Extent||!0===r.Function)return e.slice(0);let t=0,o="";for(const n in r)t++,o=n;return e=t>1||"String"===o?Ce(e,(function(e,r){if(null==e||e===h)return null==r||r===h?0:1;if(null==r||r===h)return-1;const t=v(e),n=v(r);return t<n?-1:t===n?0:1})):"Number"===o?Ce(e,(function(e,r){return e-r})):"Boolean"===o?Ce(e,(function(e,r){return e===r?0:r?-1:1})):"Date"===o?Ce(e,(function(e,r){return r-e})):e.slice(0),e}}))};for(const He in Se)Se[He]={value:new u(Se[He]),valueset:!0,node:null};const De=function(){};function Le(e,r){const o=new De;e||(e={}),r||(r={});const a=new t({newline:"\n",tab:"\t",singlequote:"'",doublequote:'"',forwardslash:"/",backwardslash:"\\"});a.immutable=!1,o.textformatting={value:a,valueset:!0,node:null};for(const t in r)o[t]={value:new u(r[t]),native:!0,valueset:!0,node:null};for(const t in e)e[t]&&"esri.Graphic"===e[t].declaredClass?o[t]={value:n.createFromGraphic(e[t]),valueset:!0,node:null}:o[t]={value:e[t],valueset:!0,node:null};return o}De.prototype=Se,De.prototype.infinity={value:Number.POSITIVE_INFINITY,valueset:!0,node:null},De.prototype.pi={value:Math.PI,valueset:!0,node:null};const je={fixSpatialReference:U,parseArguments:J,standardFunction:Q};function _e(e){console.log(e)}function ke(e){const r={mode:"sync",compiled:!1,functions:{},signatures:[],standardFunction:Q,evaluateIdentifier:Re,arcadeCustomFunctionHandler:Pe};for(let t=0;t<e.length;t++)e[t].registerFunctions(r);for(const t in r.functions)Se[t]={value:new u(r.functions[t]),valueset:!0,node:null},De.prototype[t]=Se[t];for(let t=0;t<r.signatures.length;t++)C(r.signatures[t],"async")}function Ve(e,r){let t=r.spatialReference;null==t&&(t=new X({wkid:102100}));let n=$({spatialReference:t,globalScope:Le(r.vars,r.customfunctions),localScope:null,console:r.console?r.console:_e,lrucache:r.lrucache,interceptor:r.interceptor,depthCounter:1},e.body[0].body);if(n instanceof d&&(n=n.value),n instanceof y&&(n=n.value),n===h&&(n=null),n===p)throw new Error("Cannot return BREAK");if(n===f)throw new Error("Cannot return CONTINUE");if(n instanceof o)throw new Error("Cannot return FUNCTION");if(n instanceof u)throw new Error("Cannot return FUNCTION");return n}function Be(e,r){return F(e)}function Ye(e){return M(e)}function Ge(e,r){return x(e,r,"simple")}function ze(e,r){return P(e,r)}function qe(e,r){return D(e,r)}function Ze(e){return L(e)}export{Ve as executeScript,ke as extend,Ye as extractExpectedFieldLiterals,Be as extractFieldLiterals,Ze as findFunctionCalls,je as functionHelper,qe as referencesFunction,ze as referencesMember,Ge as validateScript};
|
|
5
|
+
import e from"./ArcadePortal.js";import r from"./Attachment.js";import t from"./Dictionary.js";import n from"./Feature.js";import o from"./FunctionWrapper.js";import a from"./ImmutablePathArray.js";import i from"./ImmutablePointArray.js";import{p as s,i as l,e as c,N as u,m as f,k as p,v as h,c as w,f as m,a as E,R as d,b as g,j as N,t as I,I as y,d as v,g as T,h as R,n as O,o as S,q as b,r as U}from"../chunks/languageUtils.js";import{nodeErrorMessage as A,addFunctionDeclaration as C,findFieldLiterals as F,findExpectedFieldLiterals as M,validateScript as x,referencesMember as P,referencesFunction as D,findFunctionCalls as L}from"./treeAnalysis.js";import{registerFunctions as j}from"./functions/array.js";import{registerFunctions as _}from"./functions/date.js";import{registerFunctions as k}from"./functions/geometry.js";import{registerFunctions as V}from"./functions/geomsync.js";import{registerFunctions as B}from"./functions/maths.js";import{registerFunctions as Y}from"./functions/stats.js";import{registerFunctions as G}from"./functions/string.js";import z from"../geometry/Extent.js";import q from"../geometry/Geometry.js";import Z from"../geometry/Multipoint.js";import H from"../geometry/Point.js";import W from"../geometry/Polygon.js";import K from"../geometry/Polyline.js";import X from"../geometry/SpatialReference.js";function J(e,r){const t=[];for(let n=0;n<r.arguments.length;n++)t.push($(e,r.arguments[n]));return t}function Q(e,r,t){try{return t(e,r,J(e,r))}catch(n){throw n}}function $(e,r){try{switch(r.type){case"EmptyStatement":return h;case"VariableDeclarator":return we(e,r);case"VariableDeclaration":return he(e,r);case"BlockStatement":return ue(e,r);case"FunctionDeclaration":return pe(e,r);case"ReturnStatement":return fe(e,r);case"IfStatement":return ce(e,r);case"ExpressionStatement":return le(e,r);case"AssignmentExpression":return se(e,r);case"UpdateExpression":return ae(e,r);case"BreakStatement":return p;case"ContinueStatement":return f;case"TemplateElement":return ve(e,r);case"TemplateLiteral":return Te(e,r);case"ForStatement":return ne(e,r);case"ForInStatement":return te(e,r);case"Identifier":return Re(e,r);case"MemberExpression":return de(e,r);case"Literal":return r.value;case"CallExpression":return Oe(e,r);case"UnaryExpression":return ge(e,r);case"BinaryExpression":return Ie(e,r);case"LogicalExpression":return ye(e,r);case"ArrayExpression":return Ne(e,r);case"ObjectExpression":return ee(e,r);case"Property":return re(e,r);default:throw new Error(A(r,"RUNTIME","UNREOGNISED"))}}catch(t){throw t}}function ee(e,r){const n={};for(let t=0;t<r.properties.length;t++){const o=$(e,r.properties[t]);if(w(o.value))throw new Error("Illegal Argument");if(!1===m(o.key))throw new Error("Illegal Argument");o.value===h?n[o.key.toString()]=null:n[o.key.toString()]=o.value}const o=new t(n);return o.immutable=!1,o}function re(e,r){return{key:"Identifier"===r.key.type?r.key.name:$(e,r.key),value:$(e,r.value)}}function te(e,r){const o=$(e,r.right);"VariableDeclaration"===r.left.type&&$(e,r.left);let a=null,i="";if("VariableDeclaration"===r.left.type){const e=r.left.declarations[0].id;"Identifier"===e.type&&(i=e.name)}else"Identifier"===r.left.type&&(i=r.left.name);if(!i)throw new Error(A(r,"RUNTIME","INVALIDVARIABLE"));if(i=i.toLowerCase(),null!==e.localScope&&void 0!==e.localScope[i]&&(a=e.localScope[i]),null===a&&void 0!==e.globalScope[i]&&(a=e.globalScope[i]),null===a)throw new Error(A(r,"RUNTIME","VARIABLENOTDECLARED"));if(E(o)||m(o)){const t=o.length;for(let n=0;n<t;n++){a.value=n;const t=$(e,r.body);if(t===p)break;if(t instanceof d)return t}return h}if(g(o)){for(let t=0;t<o.length();t++){a.value=t;const n=$(e,r.body);if(n===p)break;if(n instanceof d)return n}return h}if(!(o instanceof t||o instanceof n))return h;{const t=o.keys();for(let n=0;n<t.length;n++){a.value=t[n];const o=$(e,r.body);if(o===p)break;if(o instanceof d)return o}}}function ne(e,r){null!==r.init&&$(e,r.init);const t={testResult:!0,lastAction:h};do{oe(e,r,t)}while(!0===t.testResult);return t.lastAction instanceof d?t.lastAction:h}function oe(e,r,t){if(null!==r.test){if(t.testResult=$(e,r.test),!1===t.testResult)return;if(!0!==t.testResult)throw new Error(A(r,"RUNTIME","CANNOT_USE_NONBOOLEAN_IN_CONDITION"))}t.lastAction=$(e,r.body),t.lastAction!==p?t.lastAction instanceof d?t.testResult=!1:null!==r.update&&$(e,r.update):t.testResult=!1}function ae(e,r){let o,a=null,i="";if("MemberExpression"===r.argument.type){if(a=$(e,r.argument.object),!0===r.argument.computed?i=$(e,r.argument.property):"Identifier"===r.argument.property.type&&(i=r.argument.property.name),E(a)){if(!N(i))throw new Error("Invalid Parameter");if(i<0&&(i=a.length+i),i<0||i>=a.length)throw new Error("Assignment outside of array bounds");o=I(a[i]),a[i]="++"===r.operator?o+1:o-1}else if(a instanceof t){if(!1===m(i))throw new Error("Dictionary accessor must be a string");if(!0!==a.hasField(i))throw new Error("Invalid Parameter");o=I(a.field(i)),a.setField(i,"++"===r.operator?o+1:o-1)}else{if(!(a instanceof n))throw g(a)?new Error("Array is Immutable"):new Error("Invalid Parameter");if(!1===m(i))throw new Error("Feature accessor must be a string");if(!0!==a.hasField(i))throw new Error("Invalid Parameter");o=I(a.field(i)),a.setField(i,"++"===r.operator?o+1:o-1)}return!1===r.prefix?o:"++"===r.operator?o+1:o-1}if(a="Identifier"===r.argument.type?r.argument.name.toLowerCase():"",!a)throw new Error("Invalid identifier");if(null!==e.localScope&&void 0!==e.localScope[a])return o=I(e.localScope[a].value),e.localScope[a]={value:"++"===r.operator?o+1:o-1,valueset:!0,node:r},!1===r.prefix?o:"++"===r.operator?o+1:o-1;if(void 0!==e.globalScope[a])return o=I(e.globalScope[a].value),e.globalScope[a]={value:"++"===r.operator?o+1:o-1,valueset:!0,node:r},!1===r.prefix?o:"++"===r.operator?o+1:o-1;throw new Error("Variable not recognised")}function ie(e,r,t,n){switch(r){case"=":return e===h?null:e;case"/=":return I(t)/I(e);case"*=":return I(t)*I(e);case"-=":return I(t)-I(e);case"+=":return m(t)||m(e)?v(t)+v(e):I(t)+I(e);case"%=":return I(t)%I(e);default:throw new Error(A(n,"RUNTIME","OPERATORNOTRECOGNISED"))}}function se(e,r){const o=$(e,r.right);let a=null,i="";if("MemberExpression"===r.left.type){if(a=$(e,r.left.object),!0===r.left.computed?i=$(e,r.left.property):"Identifier"===r.left.property.type&&(i=r.left.property.name),E(a)){if(!N(i))throw new Error("Invalid Parameter");if(i<0&&(i=a.length+i),i<0||i>a.length)throw new Error("Assignment outside of array bounds");if(i===a.length){if("="!==r.operator)throw new Error("Invalid Parameter");a[i]=ie(o,r.operator,a[i],r)}else a[i]=ie(o,r.operator,a[i],r)}else if(a instanceof t){if(!1===m(i))throw new Error("Dictionary accessor must be a string");if(!0===a.hasField(i))a.setField(i,ie(o,r.operator,a.field(i),r));else{if("="!==r.operator)throw new Error("Invalid Parameter");a.setField(i,ie(o,r.operator,null,r))}}else{if(!(a instanceof n))throw g(a)?new Error("Array is Immutable"):new Error("Invalid Parameter");if(!1===m(i))throw new Error("Feature accessor must be a string");if(!0===a.hasField(i))a.setField(i,ie(o,r.operator,a.field(i),r));else{if("="!==r.operator)throw new Error("Invalid Parameter");a.setField(i,ie(o,r.operator,null,r))}}return h}if(a=r.left.name.toLowerCase(),null!==e.localScope&&void 0!==e.localScope[a])return e.localScope[a]={value:ie(o,r.operator,e.localScope[a].value,r),valueset:!0,node:r.right},h;if(void 0!==e.globalScope[a])return e.globalScope[a]={value:ie(o,r.operator,e.globalScope[a].value,r),valueset:!0,node:r.right},h;throw new Error("Variable not recognised")}function le(e,r){if("AssignmentExpression"===r.expression.type||"UpdateExpression"===r.expression.type)return $(e,r.expression);if("CallExpression"===r.expression.type){const t=$(e,r.expression);return t===h?h:new y(t)}{const t=$(e,r.expression);return t===h?h:new y(t)}}function ce(e,r){if("AssignmentExpression"===r.test.type||"UpdateExpression"===r.test.type)throw new Error(A(r.test,"RUNTIME","CANNOT_USE_ASSIGNMENT_IN_CONDITION"));const t=$(e,r.test);if(!0===t)return $(e,r.consequent);if(!1===t)return null!==r.alternate?$(e,r.alternate):h;throw new Error(A(r,"RUNTIME","CANNOT_USE_NONBOOLEAN_IN_CONDITION"))}function ue(e,r){let t=h;for(let n=0;n<r.body.length;n++)if(t=$(e,r.body[n]),t instanceof d||t===p||t===f)return t;return t}function fe(e,r){if(null===r.argument)return new d(h);const t=$(e,r.argument);return new d(t)}function pe(e,r){const t=r.id.name.toLowerCase();return e.globalScope[t]={valueset:!0,node:null,value:new o(r,e)},h}function he(e,r){for(let t=0;t<r.declarations.length;t++)$(e,r.declarations[t]);return h}function we(e,r){let t=null===r.init?null:$(e,r.init);if(t===h&&(t=null),"Identifier"!==r.id.type)throw new Error("Can only assign a regular variable");const n=r.id.name.toLowerCase();return null!==e.localScope?e.localScope[n]={value:t,valueset:!0,node:r.init}:e.globalScope[n]={value:t,valueset:!0,node:r.init},h}let me=0;function Ee(e,r,n){let o;switch(r=r.toLowerCase()){case"hasz":{const r=e.hasZ;return void 0!==r&&r}case"hasm":{const r=e.hasM;return void 0!==r&&r}case"spatialreference":{let r=e.spatialReference._arcadeCacheId;if(void 0===r){let t=!0;Object.freeze&&Object.isFrozen(e.spatialReference)&&(t=!1),t&&(me++,e.spatialReference._arcadeCacheId=me,r=me)}const n=new t({wkt:e.spatialReference.wkt,wkid:e.spatialReference.wkid});return void 0!==r&&(n._arcadeCacheId="SPREF"+r.toString()),n}}switch(e.type){case"extent":switch(r){case"xmin":case"xmax":case"ymin":case"ymax":case"zmin":case"zmax":case"mmin":case"mmax":{const t=e[r];return void 0!==t?t:null}case"type":return"Extent"}break;case"polygon":switch(r){case"rings":o=e.cache._arcadeCacheId,void 0===o&&(me++,o=me,e.cache._arcadeCacheId=o);return new a(e.rings,e.spatialReference,!0===e.hasZ,!0===e.hasM,o);case"type":return"Polygon"}break;case"point":switch(r){case"x":case"y":case"z":case"m":return void 0!==e[r]?e[r]:null;case"type":return"Point"}break;case"polyline":switch(r){case"paths":o=e.cache._arcadeCacheId,void 0===o&&(me++,o=me,e.cache._arcadeCacheId=o);return new a(e.paths,e.spatialReference,!0===e.hasZ,!0===e.hasM,o);case"type":return"Polyline"}break;case"multipoint":switch(r){case"points":o=e.cache._arcadeCacheId,void 0===o&&(me++,o=me,e.cache._arcadeCacheId=o);return new i(e.points,e.spatialReference,!0===e.hasZ,!0===e.hasM,o,1);case"type":return"Multipoint"}}throw new Error(A(n,"RUNTIME","PROPERTYNOTFOUND"))}function de(e,r){try{const o=$(e,r.object);if(null===o)throw new Error(A(r,"RUNTIME","NOTFOUND"));if(!1===r.computed){if("Identifier"===r.property.type){if(o instanceof t||o instanceof n)return o.field(r.property.name);if(o instanceof q)return Ee(o,r.property.name,r)}throw new Error(A(r,"RUNTIME","INVALIDTYPE"))}{let a=$(e,r.property);if(o instanceof t||o instanceof n){if(m(a))return o.field(a);throw new Error(A(r,"RUNTIME","INVALIDTYPE"))}if(o instanceof q){if(m(a))return Ee(o,a,r);throw new Error(A(r,"RUNTIME","INVALIDTYPE"))}if(E(o)){if(N(a)&&isFinite(a)&&Math.floor(a)===a){if(a<0&&(a=o.length+a),a>=o.length||a<0)throw new Error(A(r,"RUNTIME","OUTOFBOUNDS"));return o[a]}throw new Error(A(r,"RUNTIME","INVALIDTYPE"))}if(m(o)){if(N(a)&&isFinite(a)&&Math.floor(a)===a){if(a<0&&(a=o.length+a),a>=o.length||a<0)throw new Error(A(r,"RUNTIME","OUTOFBOUNDS"));return o[a]}throw new Error(A(r,"RUNTIME","INVALIDTYPE"))}if(g(o)){if(N(a)&&isFinite(a)&&Math.floor(a)===a){if(a<0&&(a=o.length()+a),a>=o.length()||a<0)throw new Error(A(r,"RUNTIME","OUTOFBOUNDS"));return o.get(a)}throw new Error(A(r,"RUNTIME","INVALIDTYPE"))}throw new Error(A(r,"RUNTIME","INVALIDTYPE"))}}catch(o){throw o}}function ge(e,r){try{const t=$(e,r.argument);if(l(t)){if("!"===r.operator)return!t;if("-"===r.operator)return-1*I(t);if("+"===r.operator)return 1*I(t);if("~"===r.operator)return~I(t);throw new Error(A(r,"RUNTIME","NOTSUPPORTEDUNARYOPERATOR"))}if("~"===r.operator)return~I(t);if("-"===r.operator)return-1*I(t);if("+"===r.operator)return 1*I(t);throw new Error(A(r,"RUNTIME","NOTSUPPORTEDUNARYOPERATOR"))}catch(t){throw t}}function Ne(e,r){try{const t=[];for(let n=0;n<r.elements.length;n++){const o=$(e,r.elements[n]);if(w(o))throw new Error(A(r,"RUNTIME","FUNCTIONCONTEXTILLEGAL"));o===h?t.push(null):t.push(o)}return t}catch(t){throw t}}function Ie(e,r){try{const t=[$(e,r.left),$(e,r.right)],n=t[0],o=t[1];switch(r.operator){case"|":case"<<":case">>":case">>>":case"^":case"&":return R(I(n),I(o),r.operator);case"==":return c(n,o);case"!=":return!c(n,o);case"<":case">":case"<=":case">=":return T(n,o,r.operator);case"+":return m(n)||m(o)?v(n)+v(o):I(n)+I(o);case"-":return I(n)-I(o);case"*":return I(n)*I(o);case"/":return I(n)/I(o);case"%":return I(n)%I(o);default:throw new Error(A(r,"RUNTIME","OPERATORNOTRECOGNISED"))}}catch(t){throw t}}function ye(e,r){try{if("AssignmentExpression"===r.left.type||"UpdateExpression"===r.left.type)throw new Error(A(r.left,"RUNTIME","CANNOT_USE_ASSIGNMENT_IN_CONDITION"));if("AssignmentExpression"===r.right.type||"UpdateExpression"===r.right.type)throw new Error(A(r.right,"RUNTIME","CANNOT_USE_ASSIGNMENT_IN_CONDITION"));const t=$(e,r.left);if(l(t))switch(r.operator){case"||":if(!0===t)return t;{const t=$(e,r.right);if(l(t))return t;throw new Error(A(r,"RUNTIME","ONLYORORAND"))}case"&&":if(!1===t)return t;{const t=$(e,r.right);if(l(t))return t;throw new Error(A(r,"RUNTIME","ONLYORORAND"))}default:throw new Error(A(r,"RUNTIME","ONLYORORAND"))}throw new Error(A(r,"RUNTIME","ONLYBOOLEAN"))}catch(t){throw t}}function ve(e,r){return r.value?r.value.cooked:""}function Te(e,r){let t="",n=0;for(const o of r.quasis)if(t+=o.value?o.value.cooked:"",!1===o.tail){t+=r.expressions[n]?v($(e,r.expressions[n])):"",n++}return t}function Re(e,r){let t;try{const n=r.name.toLowerCase();if(null!==e.localScope&&void 0!==e.localScope[n])return t=e.localScope[n],!0===t.valueset||(t.value=$(e,t.node),t.valueset=!0),t.value;if(void 0!==e.globalScope[n])return t=e.globalScope[n],!0===t.valueset||(t.value=$(e,t.node),t.valueset=!0),t.value;throw new Error(A(r,"RUNTIME","VARIABLENOTFOUND"))}catch(n){throw n}}function Oe(e,r){try{if("Identifier"!==r.callee.type)throw new Error(A(r,"RUNTIME","ONLYNODESSUPPORTED"));if(null!==e.localScope&&void 0!==e.localScope[r.callee.name.toLowerCase()]){const t=e.localScope[r.callee.name.toLowerCase()];if(t.value instanceof u)return t.value.fn(e,r);if(t.value instanceof o)return xe(e,r,t.value.definition);throw new Error(A(r,"RUNTIME","NOTAFUNCTION"))}if(void 0!==e.globalScope[r.callee.name.toLowerCase()]){const t=e.globalScope[r.callee.name.toLowerCase()];if(t.value instanceof u)return t.value.fn(e,r);if(t.value instanceof o)return xe(e,r,t.value.definition);throw new Error(A(r,"RUNTIME","NOTAFUNCTION"))}throw new Error(A(r,"RUNTIME","NOTFOUND"))}catch(t){throw t}}const Se={};function be(o){return null==o?"":E(o)||g(o)?"Array":O(o)?"Date":m(o)?"String":l(o)?"Boolean":N(o)?"Number":o instanceof r?"Attachment":o instanceof e?"Portal":o instanceof t?"Dictionary":o instanceof n?"Feature":o instanceof H?"Point":o instanceof W?"Polygon":o instanceof K?"Polyline":o instanceof Z?"Multipoint":o instanceof z?"Extent":w(o)?"Function":S(o)?"FeatureSet":b(o)?"FeatureSetCollection":o===h?"":"number"==typeof o&&isNaN(o)?"Number":"Unrecognised Type"}function Ue(e,r,t,n){try{const o=$(e,r.arguments[t]);if(c(o,n))return $(e,r.arguments[t+1]);{const o=r.arguments.length-t;return 1===o?$(e,r.arguments[t]):2===o?null:3===o?$(e,r.arguments[t+2]):Ue(e,r,t+2,n)}}catch(o){throw o}}function Ae(e,r,t,n){try{if(!0===n)return $(e,r.arguments[t+1]);if(3===r.arguments.length-t)return $(e,r.arguments[t+2]);{const n=$(e,r.arguments[t+2]);if(!1===l(n))throw new Error("WHEN needs boolean test conditions");return Ae(e,r,t+2,n)}}catch(o){throw o}}function Ce(e,r){const t=e.length,n=Math.floor(t/2);return 0===t?[]:1===t?[e[0]]:Fe(Ce(e.slice(0,n),r),Ce(e.slice(n,t),r),r)}function Fe(e,r,t){const n=[];for(;e.length>0||r.length>0;)if(e.length>0&&r.length>0){let o=t(e[0],r[0]);isNaN(o)&&(o=0),o<=0?(n.push(e[0]),e=e.slice(1)):(n.push(r[0]),r=r.slice(1))}else e.length>0?(n.push(e[0]),e=e.slice(1)):r.length>0&&(n.push(r[0]),r=r.slice(1));return n}function Me(e,r,t){try{const n=e.body;if(t.length!==e.params.length)throw new Error("Invalid Parameter calls to function.");for(let a=0;a<t.length;a++)r.localScope[e.params[a].name.toLowerCase()]={value:t[a],valueset:!0,node:null};const o=$(r,n);if(o instanceof d)return o.value;if(o===p)throw new Error("Cannot Break from a Function");if(o===f)throw new Error("Cannot Continue from a Function");return o instanceof y?o.value:o}catch(n){throw n}}function xe(e,r,t){return Q(e,r,(function(r,n,o){const a={spatialReference:e.spatialReference,globalScope:e.globalScope,depthCounter:e.depthCounter+1,console:e.console,lrucache:e.lrucache,interceptor:e.interceptor,localScope:{}};if(a.depthCounter>64)throw new Error("Exceeded maximum function depth");return Me(t,a,o)}))}function Pe(e){const r=function(){const r={spatialReference:e.context.spatialReference,console:e.context.console,lrucache:e.context.lrucache,interceptor:e.context.interceptor,localScope:{},depthCounter:e.context.depthCounter+1,globalScope:e.context.globalScope};if(r.depthCounter>64)throw new Error("Exceeded maximum function depth");return Me(e.definition,r,arguments)};return r}j(Se,Q),_(Se,Q),G(Se,Q),B(Se,Q),k(Se,Q),Y(Se,Q),V(Se,Q),Se.typeof=function(e,r){return Q(e,r,(function(e,r,t){s(t,1,1);const n=be(t[0]);if("Unrecognised Type"===n)throw new Error("Unrecognised Type");return n}))},Se.iif=function(e,r){try{s(null===r.arguments?[]:r.arguments,3,3);const t=$(e,r.arguments[0]);if(!1===l(t))throw new Error("IF Function must have a boolean test condition");const n=$(e,r.arguments[1]),o=$(e,r.arguments[2]);return!0===t?n:o}catch(t){throw t}},Se.decode=function(e,r){try{if(r.arguments.length<2)throw new Error("Missing Parameters");if(2===r.arguments.length)return $(e,r.arguments[1]);{if((r.arguments.length-1)%2==0)throw new Error("Must have a default value result.");const t=$(e,r.arguments[0]);return Ue(e,r,1,t)}}catch(t){throw t}},Se.when=function(e,r){try{if(r.arguments.length<3)throw new Error("Missing Parameters");if(r.arguments.length%2==0)throw new Error("Must have a default value result.");const t=$(e,r.arguments[0]);if(!1===l(t))throw new Error("WHEN needs boolean test conditions");return Ae(e,r,0,t)}catch(t){throw t}},Se.top=function(e,r){return Q(e,r,(function(e,r,t){if(s(t,2,2),E(t[0]))return I(t[1])>=t[0].length?t[0].slice(0):t[0].slice(0,I(t[1]));if(g(t[0]))return I(t[1])>=t[0].length()?t[0].slice(0):t[0].slice(0,I(t[1]));throw new Error("Top cannot accept this parameter type")}))},Se.first=function(e,r){return Q(e,r,(function(e,r,t){return s(t,1,1),E(t[0])?0===t[0].length?null:t[0][0]:g(t[0])?0===t[0].length()?null:t[0].get(0):null}))},Se.sort=function(e,r){return Q(e,r,(function(e,r,t){s(t,1,2);let n=t[0];if(g(n)&&(n=n.toArray()),!1===E(n))throw new Error("Illegal Argument");if(t.length>1){if(!1===w(t[1]))throw new Error("Illegal Argument");let e=n;const r=Pe(t[1]);return e=Ce(e,(function(e,t){return r(e,t)})),e}{let e=n;if(0===e.length)return[];const r={};for(let n=0;n<e.length;n++){const t=be(e[n]);""!==t&&(r[t]=!0)}if(!0===r.Array||!0===r.Dictionary||!0===r.Feature||!0===r.Point||!0===r.Polygon||!0===r.Polyline||!0===r.Multipoint||!0===r.Extent||!0===r.Function)return e.slice(0);let t=0,o="";for(const n in r)t++,o=n;return e=t>1||"String"===o?Ce(e,(function(e,r){if(null==e||e===h)return null==r||r===h?0:1;if(null==r||r===h)return-1;const t=v(e),n=v(r);return t<n?-1:t===n?0:1})):"Number"===o?Ce(e,(function(e,r){return e-r})):"Boolean"===o?Ce(e,(function(e,r){return e===r?0:r?-1:1})):"Date"===o?Ce(e,(function(e,r){return r-e})):e.slice(0),e}}))};for(const He in Se)Se[He]={value:new u(Se[He]),valueset:!0,node:null};const De=function(){};function Le(e,r){const o=new De;e||(e={}),r||(r={});const a=new t({newline:"\n",tab:"\t",singlequote:"'",doublequote:'"',forwardslash:"/",backwardslash:"\\"});a.immutable=!1,o.textformatting={value:a,valueset:!0,node:null};for(const t in r)o[t]={value:new u(r[t]),native:!0,valueset:!0,node:null};for(const t in e)e[t]&&"esri.Graphic"===e[t].declaredClass?o[t]={value:n.createFromGraphic(e[t]),valueset:!0,node:null}:o[t]={value:e[t],valueset:!0,node:null};return o}De.prototype=Se,De.prototype.infinity={value:Number.POSITIVE_INFINITY,valueset:!0,node:null},De.prototype.pi={value:Math.PI,valueset:!0,node:null};const je={fixSpatialReference:U,parseArguments:J,standardFunction:Q};function _e(e){console.log(e)}function ke(e){const r={mode:"sync",compiled:!1,functions:{},signatures:[],standardFunction:Q,evaluateIdentifier:Re,arcadeCustomFunctionHandler:Pe};for(let t=0;t<e.length;t++)e[t].registerFunctions(r);for(const t in r.functions)Se[t]={value:new u(r.functions[t]),valueset:!0,node:null},De.prototype[t]=Se[t];for(let t=0;t<r.signatures.length;t++)C(r.signatures[t],"async")}function Ve(e,r){let t=r.spatialReference;null==t&&(t=new X({wkid:102100}));let n=$({spatialReference:t,globalScope:Le(r.vars,r.customfunctions),localScope:null,console:r.console?r.console:_e,lrucache:r.lrucache,interceptor:r.interceptor,depthCounter:1},e.body[0].body);if(n instanceof d&&(n=n.value),n instanceof y&&(n=n.value),n===h&&(n=null),n===p)throw new Error("Cannot return BREAK");if(n===f)throw new Error("Cannot return CONTINUE");if(n instanceof o)throw new Error("Cannot return FUNCTION");if(n instanceof u)throw new Error("Cannot return FUNCTION");return n}function Be(e,r){return F(e)}function Ye(e){return M(e)}function Ge(e,r){return x(e,r,"simple")}function ze(e,r){return P(e,r)}function qe(e,r){return D(e,r)}function Ze(e){return L(e)}export{Ve as executeScript,ke as extend,Ye as extractExpectedFieldLiterals,Be as extractFieldLiterals,Ze as findFunctionCalls,je as functionHelper,qe as referencesFunction,ze as referencesMember,Ge as validateScript};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.21/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{FeatureServiceDatabaseType as e}from"./shared.js";import{WhereClause as r}from"../../../core/sql/WhereClause.js";import{DateTime as t}from"luxon";function n(e,r){return c(e.parseTree,r,e.parameters)}function a(e,r,t){return c(e,r,t)}function s(t,n,a,s){return r.create(c(t.parseTree,e.Standardised,t.parameters,n,a),s)}function o(t,a,s="AND"){return r.create("(("+n(t,e.Standardised)+")"+s+"("+n(a,e.Standardised)+"))",t.fieldsIndex)}function c(e,r,t,n=null,a=null){let s,o,f,d;switch(e.type){case"interval":return T(c(e.value,r,t,n,a),e.qualifier,e.op);case"case_expression":{let s=" CASE ";"simple"===e.format&&(s+=c(e.operand,r,t,n,a));for(let o=0;o<e.clauses.length;o++)s+=" WHEN "+c(e.clauses[o].operand,r,t,n,a)+" THEN "+c(e.clauses[o].value,r,t,n,a);return null!==e.else&&(s+=" ELSE "+c(e.else,r,t,n,a)),s+=" END ",s}case"param":{const n=t[e.value.toLowerCase()];if("string"==typeof n){return"'"+t[e.value.toLowerCase()].toString().replace(/'/g,"''")+"'"}if(n instanceof Date)return u(n,r);if(n instanceof Array){const e=[];for(let t=0;t<n.length;t++)"string"==typeof n[t]?e.push("'"+n[t].toString().replace(/'/g,"''")+"'"):n[t]instanceof Date?e.push(u(n[t],r)):e.push(n[t].toString());return e}return n.toString()}case"expr_list":o=[];for(const s of e.value)o.push(c(s,r,t,n,a));return o;case"unary_expr":return" ( NOT "+c(e.expr,r,t,n,a)+" ) ";case"binary_expr":switch(e.operator){case"AND":return" ("+c(e.left,r,t,n,a)+" AND "+c(e.right,r,t,n,a)+") ";case"OR":return" ("+c(e.left,r,t,n,a)+" OR "+c(e.right,r,t,n,a)+") ";case"IS":if("null"!==e.right.type)throw new Error("Unsupported RHS for IS");return" ("+c(e.left,r,t,n,a)+" IS NULL )";case"ISNOT":if("null"!==e.right.type)throw new Error("Unsupported RHS for IS");return" ("+c(e.left,r,t,n,a)+" IS NOT NULL )";case"IN":return s=[],"expr_list"===e.right.type?(s=c(e.right,r,t,n,a)," ("+c(e.left,r,t,n,a)+" IN ("+s.join(",")+")) "):(d=c(e.right,r,t,n,a),d instanceof Array?" ("+c(e.left,r,t,n,a)+" IN ("+d.join(",")+")) ":" ("+c(e.left,r,t,n,a)+" IN ("+d+")) ");case"NOT IN":return s=[],"expr_list"===e.right.type?(s=c(e.right,r,t,n,a)," ("+c(e.left,r,t,n,a)+" NOT IN ("+s.join(",")+")) "):(d=c(e.right,r,t,n,a),d instanceof Array?" ("+c(e.left,r,t,n,a)+" NOT IN ("+d.join(",")+")) ":" ("+c(e.left,r,t,n,a)+" NOT IN ("+d+")) ");case"BETWEEN":return f=c(e.right,r,t,n,a)," ("+c(e.left,r,t,n,a)+" BETWEEN "+f[0]+" AND "+f[1]+" ) ";case"NOTBETWEEN":return f=c(e.right,r,t,n,a)," ("+c(e.left,r,t,n,a)+" NOT BETWEEN "+f[0]+" AND "+f[1]+" ) ";case"LIKE":return""!==e.escape?" ("+c(e.left,r,t,n,a)+" LIKE "+c(e.right,r,t,n,a)+" ESCAPE '"+e.escape+"') ":" ("+c(e.left,r,t,n,a)+" LIKE "+c(e.right,r,t,n,a)+") ";case"NOT LIKE":return""!==e.escape?" ("+c(e.left,r,t,n,a)+" NOT LIKE "+c(e.right,r,t,n,a)+" ESCAPE '"+e.escape+"') ":" ("+c(e.left,r,t,n,a)+" NOT LIKE "+c(e.right,r,t,n,a)+") ";case"<>":case"<":case">":case">=":case"<=":case"=":case"*":case"-":case"+":case"/":return" ("+c(e.left,r,t,n,a)+" "+e.operator+" "+c(e.right,r,t,n,a)+") "}throw new Error("Not Supported Operator "+e.operator);case"null":return"null";case"bool":return!0===e.value?"1":"0";case"string":return"'"+e.value.toString().replace(/'/g,"''")+"'";case"timestamp":case"date":return u(e.value,r);case"number":return e.value.toString();case"current_time":return i("date"===e.mode,r);case"column_ref":return n&&n.toLowerCase()===e.column.toLowerCase()?"("+a+")":e.column;case"function":{const s=c(e.args,r,t,n,a);return l(e.name,s,r)}}throw new Error("Unsupported sql syntax "+e.type)}function l(r,t,n){switch(r.toLowerCase().trim()){case"abs":if(1!==t.length)throw new Error("Invalid Parameter for call to ABS");return"abs("+t[0]+")";case"ceiling":case"ceil":if(1!==t.length)throw new Error("Invalid Parameter for call to CEILING");switch(n){case e.Standardised:case e.StandardisedNoInterval:default:return"CEILING("+t[0]+")"}case"floor":if(1!==t.length)throw new Error("Invalid Parameter for call to Floor");return"FLOOR("+t[0]+")";case"log":if(1!==t.length)throw new Error("Invalid Parameter for call to LOG");return"LOG("+t[0]+")";case"log10":if(1!==t.length)throw new Error("Invalid Parameter for call to LOG10");return"LOG10("+t[0]+")";case"power":if(2!==t.length)throw new Error("Invalid Parameter for call to POWER");return"POWER("+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 Error("Invalid Parameter for call to ROUND");case"truncate":if(t.length<1||t.length>2)throw new Error("Invalid Parameter for TRUNCATE function");switch(n){case e.SqlServer:return"ROUND("+t[0]+(1===t.length?"0":","+t[1])+",1)";default:return"TRUNCATE("+t[0]+(1===t.length?")":","+t[1]+")")}case"char_length":case"len":if(1!==t.length)throw new Error("Invalid Parameter for CHAR_LENGTH function");switch(n){case e.SqlServer:return"LEN("+t[0]+")";case e.Oracle:return"LENGTH("+t[0]+")";default:return"CHAR_LENGTH("+t[0]+")"}case"concat":if(t.length<1)throw new Error("Invalid Parameter for CONCAT function");{let e="CONCAT(";for(let r=0;r<t.length;r++)0!==r&&(e+=","),e+=t[r];return e+=")",e}case"lower":case"lcase":if(1!==t.length)throw new Error("Invalid Parameter for Lower function");return"LOWER("+t[0]+")";case"upper":case"ucase":if(1!==t.length)throw new Error("Invalid Parameter for Upper function");return"UPPER("+t[0]+")";case"substring":{let r="";switch(n){case e.Oracle:return r="SUBSTR("+t[0]+","+t[1],3===t.length&&(r+=","+t[2]),r+=")",r;case e.SqlServer:return r=3===t.length?"SUBSTRING("+t[0]+","+t[1]+","+t[2]+")":"SUBSTRING("+t[0]+", "+t[1]+", LEN("+t[0]+") - "+t[1]+")",r;default:return r="SUBSTRING("+t[0]+" FROM "+t[1],3===t.length&&(r+=" FOR "+t[2]),r+=")",r}}case"extract":return"EXTRACT("+t[0].replace(/\'/g,"")+" FROM "+t[1]+")"}throw new Error("Function Not Recognised")}function u(r,n){const a=t.fromJSDate(r),s=0===a.hour&&0===a.minute&&0===a.second&&0===a.millisecond;switch(n){case e.FILEGDB:case e.Standardised:case e.StandardisedNoInterval:return s?`date '${a.toFormat("yyyy-LL-dd")}'`:`date '${a.toFormat("yyyy-LL-dd HH:mm:ss")}'`;case e.Oracle:return s?`TO_DATE('${a.toFormat("yyyy-LL-dd")}','YYYY-MM-DD')`:`TO_DATE('${a.toFormat("yyyy-LL-dd HH:mm:ss")}','YYYY-MM-DD HH24:MI:SS')`;case e.SqlServer:return`'${a.toFormat(s?"yyyy-LL-dd":"yyyy-LL-dd HH:mm:ss")}'`;case e.PGDB:return`#${a.toFormat(s?"LL-dd-yyyy":"LL-dd-yyyy HH:mm:ss")}#`;case e.Postgres:return`TIMESTAMP '${a.toFormat(s?"yyyy-LL-dd":"yyyy-LL-dd HH:mm:ss")}'`;default:return`date '${a.toFormat("yyyy-LL-dd HH:mm:ss")}'`}}function i(r,t){switch(t){case e.FILEGDB:case e.Standardised:case e.StandardisedNoInterval:case e.Oracle:return r?"CURRENT_DATE":"CURRENT_TIMESTAMP";case e.SqlServer:return r?"CAST(GETDATE() AS DATE)":"GETDATE()";case e.PGDB:case e.Postgres:default:return r?"CURRENT_DATE":"CURRENT_TIMESTAMP"}}function f(e,r,t={}){const n={},a={},s={esriFieldTypeSmallInteger:"integer",esriFieldTypeInteger:"integer",esriFieldTypeSingle:"double",esriFieldTypeDouble:"double",esriFieldTypeString:"string",esriFieldTypeDate:"date",esriFieldTypeOID:"integer",oid:"integer",long:"integer","small-integer":"integer",integer:"integer",single:"double",double:"double",date:"date",string:"string"};for(const o of r){const e=s[o.type];n[o.name.toLowerCase()]=void 0===e?"":e}for(const o in t){const e=s[t[o]];a[o.toLowerCase()]=void 0===e?"":e}switch(d(n,e.parseTree,e.parameters,a)){case"double":return"double";case"integer":return"integer";case"double":return"double";case"date":return"date";case"string":return"string"}return""}function d(e,r,t,n){let a;switch(r.type){case"interval":return"integer";case"case_expression":{const a=[];if("simple"===r.format){for(let s=0;s<r.clauses.length;s++)a.push(d(e,r.clauses[s].value,t,n));null!==r.else&&a.push(d(e,r.else,t,n))}else{for(let s=0;s<r.clauses.length;s++)a.push(d(e,r.else,t,n));null!==r.else&&a.push(d(e,r.else,t,n))}return g(a)}case"param":{const e=n[r.value.toLowerCase()];if(void 0===e&&t){const e=t[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(e instanceof Date)return"date";if("number"==typeof e)return e%1==0?"integer":"double"}return void 0===e?"":e}case"expr_list":{const a=[];for(const s of r.value)a.push(d(e,s,t,n));return a}case"unary_expr":return"boolean";case"binary_expr":switch(r.operator){case"AND":case"OR":return"boolean";case"IS":case"ISNOT":if("null"!==r.right.type)throw new Error("Unsupported RHS for IS");return"boolean";case"IN":case"NOT IN":case"BETWEEN":case"NOTBETWEEN":case"LIKE":case"NOT LIKE":return"boolean";case"<>":case"<":case">":case">=":case"<=":case"=":return"boolean";case"*":case"-":case"+":case"/":return g([d(e,r.left,t,n),d(e,r.right,t,n)]);default:throw new Error("Not Supported Operator "+r.operator)}case"null":return"";case"bool":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_ref":{const t=e[r.column.toLowerCase()];return void 0===t?"":t}case"function":switch(r.name.toLowerCase()){case"position":case"extract":case"char_length":return"integer";case"round":return a=d(e,r.args,t,n),a instanceof Array?a.length>0?a[0]:"":a;case"sign":return a=d(e,r.args,t,n),a instanceof Array&&(a=g(a)),"integer"===a||"double"===a?a:"double";case"ceiling":case"floor":case"abs":{const a=d(e,r.args,t,n);return a instanceof Array?g(a):a}case"area":case"length":case"log":case"log10":case"sin":case"cos":case"tan":case"asin":case"acos":case"atan":case"power":return"double";case"substring":case"trim":case"concat":case"lower":case"upper":return"string";case"truncate":return"double";case"round":return a=d(e,r.args,t,n),a instanceof Array?a.length>0?a[0]:"":a}return""}throw new Error("Unsupported sql syntax "+r.type)}const p={boolean:1,string:2,integer:3,double:4,date:5};function g(e){if(e){let r="";for(const t of e)""!==t&&(r=""===r||p[r]<p[t]?t:r);return r}return""}function h(e,r){return y(e.parseTree,r)}function E(e){return"column_ref"===e.parseTree.type}function y(e,r){if(null==e)return!1;switch(e.type){case"when_clause":return y(e.operand,r)||y(e.value,r);case"case_expression":for(const t of e.clauses)if(y(t,r))return!0;return!("simple"!==e.format||!y(e.operand,r))||!(null===e.else||!y(e.else,r));case"param":return!1;case"expr_list":for(const t of e.value)if(y(t,r))return!0;return!1;case"unary_expr":return y(e.expr,r);case"binary_expr":return y(e.left,r)||y(e.right,r);case"null":case"bool":case"date":case"timestamp":case"string":case"number":return!1;case"column_ref":return r.toLowerCase()===e.column.toLowerCase();case"function":return y(e.args,r)}return!1}function m(e){let r="";return r+=e.period.toUpperCase(),r}function T(e,r,t){let n="";return n="interval-period"===r.type?m(r):m(r.start)+" TO "+m(r.end),"INTERVAL "+t+" "+e+" "+n}export{o as combine,T as convertIntervalToSql,E as isSingleField,u as makeDateString,i as makeToday,f as predictType,s as reformulateWithoutField,h as scanForField,n as toWhereClause,a as toWhereClauseFromTree,l as translateFunctionToDatabaseSpecific};
|
|
5
|
+
import{FeatureServiceDatabaseType as e}from"./shared.js";import{WhereClause as r}from"../../../core/sql/WhereClause.js";import{DateTime as t}from"luxon";function n(e,r){return c(e.parseTree,r,e.parameters)}function a(e,r,t){return c(e,r,t)}function s(t,n,a,s){return r.create(c(t.parseTree,e.Standardised,t.parameters,n,a),s)}function o(t,a,s="AND"){return r.create("(("+n(t,e.Standardised)+")"+s+"("+n(a,e.Standardised)+"))",t.fieldsIndex)}function c(e,r,t,n=null,a=null){let s,o,f,d;switch(e.type){case"interval":return T(c(e.value,r,t,n,a),e.qualifier,e.op);case"case_expression":{let s=" CASE ";"simple"===e.format&&(s+=c(e.operand,r,t,n,a));for(let o=0;o<e.clauses.length;o++)s+=" WHEN "+c(e.clauses[o].operand,r,t,n,a)+" THEN "+c(e.clauses[o].value,r,t,n,a);return null!==e.else&&(s+=" ELSE "+c(e.else,r,t,n,a)),s+=" END ",s}case"param":{const n=t[e.value.toLowerCase()];if("string"==typeof n){return"'"+t[e.value.toLowerCase()].toString().replace(/'/g,"''")+"'"}if(n instanceof Date)return u(n,r);if(n instanceof Array){const e=[];for(let t=0;t<n.length;t++)"string"==typeof n[t]?e.push("'"+n[t].toString().replace(/'/g,"''")+"'"):n[t]instanceof Date?e.push(u(n[t],r)):e.push(n[t].toString());return e}return n.toString()}case"expr_list":o=[];for(const s of e.value)o.push(c(s,r,t,n,a));return o;case"unary_expr":return" ( NOT "+c(e.expr,r,t,n,a)+" ) ";case"binary_expr":switch(e.operator){case"AND":return" ("+c(e.left,r,t,n,a)+" AND "+c(e.right,r,t,n,a)+") ";case"OR":return" ("+c(e.left,r,t,n,a)+" OR "+c(e.right,r,t,n,a)+") ";case"IS":if("null"!==e.right.type)throw new Error("Unsupported RHS for IS");return" ("+c(e.left,r,t,n,a)+" IS NULL )";case"ISNOT":if("null"!==e.right.type)throw new Error("Unsupported RHS for IS");return" ("+c(e.left,r,t,n,a)+" IS NOT NULL )";case"IN":return s=[],"expr_list"===e.right.type?(s=c(e.right,r,t,n,a)," ("+c(e.left,r,t,n,a)+" IN ("+s.join(",")+")) "):(d=c(e.right,r,t,n,a),d instanceof Array?" ("+c(e.left,r,t,n,a)+" IN ("+d.join(",")+")) ":" ("+c(e.left,r,t,n,a)+" IN ("+d+")) ");case"NOT IN":return s=[],"expr_list"===e.right.type?(s=c(e.right,r,t,n,a)," ("+c(e.left,r,t,n,a)+" NOT IN ("+s.join(",")+")) "):(d=c(e.right,r,t,n,a),d instanceof Array?" ("+c(e.left,r,t,n,a)+" NOT IN ("+d.join(",")+")) ":" ("+c(e.left,r,t,n,a)+" NOT IN ("+d+")) ");case"BETWEEN":return f=c(e.right,r,t,n,a)," ("+c(e.left,r,t,n,a)+" BETWEEN "+f[0]+" AND "+f[1]+" ) ";case"NOTBETWEEN":return f=c(e.right,r,t,n,a)," ("+c(e.left,r,t,n,a)+" NOT BETWEEN "+f[0]+" AND "+f[1]+" ) ";case"LIKE":return""!==e.escape?" ("+c(e.left,r,t,n,a)+" LIKE "+c(e.right,r,t,n,a)+" ESCAPE '"+e.escape+"') ":" ("+c(e.left,r,t,n,a)+" LIKE "+c(e.right,r,t,n,a)+") ";case"NOT LIKE":return""!==e.escape?" ("+c(e.left,r,t,n,a)+" NOT LIKE "+c(e.right,r,t,n,a)+" ESCAPE '"+e.escape+"') ":" ("+c(e.left,r,t,n,a)+" NOT LIKE "+c(e.right,r,t,n,a)+") ";case"<>":case"<":case">":case">=":case"<=":case"=":case"*":case"-":case"+":case"/":return" ("+c(e.left,r,t,n,a)+" "+e.operator+" "+c(e.right,r,t,n,a)+") "}throw new Error("Not Supported Operator "+e.operator);case"null":return"null";case"bool":return!0===e.value?"1":"0";case"string":return"'"+e.value.toString().replace(/'/g,"''")+"'";case"timestamp":case"date":return u(e.value,r);case"number":return e.value.toString();case"current_time":return i("date"===e.mode,r);case"column_ref":return n&&n.toLowerCase()===e.column.toLowerCase()?"("+a+")":e.column;case"function":{const s=c(e.args,r,t,n,a);return l(e.name,s,r)}}throw new Error("Unsupported sql syntax "+e.type)}function l(r,t,n){switch(r.toLowerCase().trim()){case"abs":if(1!==t.length)throw new Error("Invalid Parameter for call to ABS");return"abs("+t[0]+")";case"ceiling":case"ceil":if(1!==t.length)throw new Error("Invalid Parameter for call to CEILING");switch(n){case e.Standardised:case e.StandardisedNoInterval:}return"CEILING("+t[0]+")";case"floor":if(1!==t.length)throw new Error("Invalid Parameter for call to Floor");return"FLOOR("+t[0]+")";case"log":if(1!==t.length)throw new Error("Invalid Parameter for call to LOG");return"LOG("+t[0]+")";case"log10":if(1!==t.length)throw new Error("Invalid Parameter for call to LOG10");return"LOG10("+t[0]+")";case"power":if(2!==t.length)throw new Error("Invalid Parameter for call to POWER");return"POWER("+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 Error("Invalid Parameter for call to ROUND");case"truncate":if(t.length<1||t.length>2)throw new Error("Invalid Parameter for TRUNCATE function");return n===e.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 Error("Invalid Parameter for CHAR_LENGTH function");switch(n){case e.SqlServer:return"LEN("+t[0]+")";case e.Oracle:return"LENGTH("+t[0]+")";default:return"CHAR_LENGTH("+t[0]+")"}case"concat":if(t.length<1)throw new Error("Invalid Parameter for CONCAT function");{let e="CONCAT(";for(let r=0;r<t.length;r++)0!==r&&(e+=","),e+=t[r];return e+=")",e}case"lower":case"lcase":if(1!==t.length)throw new Error("Invalid Parameter for Lower function");return"LOWER("+t[0]+")";case"upper":case"ucase":if(1!==t.length)throw new Error("Invalid Parameter for Upper function");return"UPPER("+t[0]+")";case"substring":{let r="";switch(n){case e.Oracle:return r="SUBSTR("+t[0]+","+t[1],3===t.length&&(r+=","+t[2]),r+=")",r;case e.SqlServer:return r=3===t.length?"SUBSTRING("+t[0]+","+t[1]+","+t[2]+")":"SUBSTRING("+t[0]+", "+t[1]+", LEN("+t[0]+") - "+t[1]+")",r;default:return r="SUBSTRING("+t[0]+" FROM "+t[1],3===t.length&&(r+=" FOR "+t[2]),r+=")",r}}case"extract":return"EXTRACT("+t[0].replace(/\'/g,"")+" FROM "+t[1]+")"}throw new Error("Function Not Recognised")}function u(r,n){const a=t.fromJSDate(r),s=0===a.hour&&0===a.minute&&0===a.second&&0===a.millisecond;switch(n){case e.FILEGDB:case e.Standardised:case e.StandardisedNoInterval:return s?`date '${a.toFormat("yyyy-LL-dd")}'`:`date '${a.toFormat("yyyy-LL-dd HH:mm:ss")}'`;case e.Oracle:return s?`TO_DATE('${a.toFormat("yyyy-LL-dd")}','YYYY-MM-DD')`:`TO_DATE('${a.toFormat("yyyy-LL-dd HH:mm:ss")}','YYYY-MM-DD HH24:MI:SS')`;case e.SqlServer:return`'${a.toFormat(s?"yyyy-LL-dd":"yyyy-LL-dd HH:mm:ss")}'`;case e.PGDB:return`#${a.toFormat(s?"LL-dd-yyyy":"LL-dd-yyyy HH:mm:ss")}#`;case e.Postgres:return`TIMESTAMP '${a.toFormat(s?"yyyy-LL-dd":"yyyy-LL-dd HH:mm:ss")}'`;default:return`date '${a.toFormat("yyyy-LL-dd HH:mm:ss")}'`}}function i(r,t){switch(t){case e.FILEGDB:case e.Standardised:case e.StandardisedNoInterval:case e.Oracle:return r?"CURRENT_DATE":"CURRENT_TIMESTAMP";case e.SqlServer:return r?"CAST(GETDATE() AS DATE)":"GETDATE()";case e.PGDB:case e.Postgres:default:return r?"CURRENT_DATE":"CURRENT_TIMESTAMP"}}function f(e,r,t={}){const n={},a={},s={esriFieldTypeSmallInteger:"integer",esriFieldTypeInteger:"integer",esriFieldTypeSingle:"double",esriFieldTypeDouble:"double",esriFieldTypeString:"string",esriFieldTypeDate:"date",esriFieldTypeOID:"integer",oid:"integer",long:"integer","small-integer":"integer",integer:"integer",single:"double",double:"double",date:"date",string:"string"};for(const o of r){const e=s[o.type];n[o.name.toLowerCase()]=void 0===e?"":e}for(const o in t){const e=s[t[o]];a[o.toLowerCase()]=void 0===e?"":e}switch(d(n,e.parseTree,e.parameters,a)){case"double":return"double";case"integer":return"integer";case"double":return"double";case"date":return"date";case"string":return"string"}return""}function d(e,r,t,n){let a;switch(r.type){case"interval":return"integer";case"case_expression":{const a=[];if("simple"===r.format){for(let s=0;s<r.clauses.length;s++)a.push(d(e,r.clauses[s].value,t,n));null!==r.else&&a.push(d(e,r.else,t,n))}else{for(let s=0;s<r.clauses.length;s++)a.push(d(e,r.else,t,n));null!==r.else&&a.push(d(e,r.else,t,n))}return g(a)}case"param":{const e=n[r.value.toLowerCase()];if(void 0===e&&t){const e=t[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(e instanceof Date)return"date";if("number"==typeof e)return e%1==0?"integer":"double"}return void 0===e?"":e}case"expr_list":{const a=[];for(const s of r.value)a.push(d(e,s,t,n));return a}case"unary_expr":return"boolean";case"binary_expr":switch(r.operator){case"AND":case"OR":return"boolean";case"IS":case"ISNOT":if("null"!==r.right.type)throw new Error("Unsupported RHS for IS");return"boolean";case"IN":case"NOT IN":case"BETWEEN":case"NOTBETWEEN":case"LIKE":case"NOT LIKE":case"<>":case"<":case">":case">=":case"<=":case"=":return"boolean";case"*":case"-":case"+":case"/":return g([d(e,r.left,t,n),d(e,r.right,t,n)]);default:throw new Error("Not Supported Operator "+r.operator)}case"null":return"";case"bool":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_ref":{const t=e[r.column.toLowerCase()];return void 0===t?"":t}case"function":switch(r.name.toLowerCase()){case"position":case"extract":case"char_length":return"integer";case"round":return a=d(e,r.args,t,n),a instanceof Array?a.length>0?a[0]:"":a;case"sign":return a=d(e,r.args,t,n),a instanceof Array&&(a=g(a)),"integer"===a||"double"===a?a:"double";case"ceiling":case"floor":case"abs":{const a=d(e,r.args,t,n);return a instanceof Array?g(a):a}case"area":case"length":case"log":case"log10":case"sin":case"cos":case"tan":case"asin":case"acos":case"atan":case"power":return"double";case"substring":case"trim":case"concat":case"lower":case"upper":return"string";case"truncate":return"double";case"round":return a=d(e,r.args,t,n),a instanceof Array?a.length>0?a[0]:"":a}return""}throw new Error("Unsupported sql syntax "+r.type)}const p={boolean:1,string:2,integer:3,double:4,date:5};function g(e){if(e){let r="";for(const t of e)""!==t&&(r=""===r||p[r]<p[t]?t:r);return r}return""}function h(e,r){return y(e.parseTree,r)}function E(e){return"column_ref"===e.parseTree.type}function y(e,r){if(null==e)return!1;switch(e.type){case"when_clause":return y(e.operand,r)||y(e.value,r);case"case_expression":for(const t of e.clauses)if(y(t,r))return!0;return!("simple"!==e.format||!y(e.operand,r))||!(null===e.else||!y(e.else,r));case"param":return!1;case"expr_list":for(const t of e.value)if(y(t,r))return!0;return!1;case"unary_expr":return y(e.expr,r);case"binary_expr":return y(e.left,r)||y(e.right,r);case"null":case"bool":case"date":case"timestamp":case"string":case"number":return!1;case"column_ref":return r.toLowerCase()===e.column.toLowerCase();case"function":return y(e.args,r)}return!1}function m(e){let r="";return r+=e.period.toUpperCase(),r}function T(e,r,t){let n="";return n="interval-period"===r.type?m(r):m(r.start)+" TO "+m(r.end),"INTERVAL "+t+" "+e+" "+n}export{o as combine,T as convertIntervalToSql,E as isSingleField,u as makeDateString,i as makeToday,f as predictType,s as reformulateWithoutField,h as scanForField,n as toWhereClause,a as toWhereClauseFromTree,l as translateFunctionToDatabaseSpecific};
|
package/arcade/lib/parser.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.21/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{assert as e}from"./assert.js";import{ErrorHandler as t}from"./error-handler.js";import{Messages as s}from"./messages.js";import{Comment as i,AssignmentOperators as n,Literal as r,Identifier as a,ArrayExpression as o,Property as h,ObjectExpression as c,TemplateElement as l,TemplateLiteral as m,CallExpression as p,ComputedMemberExpression as x,StaticMemberExpression as d,UpdateExpression as u,UnaryExpression as k,BinaryExpression as f,AssignmentExpression as g,BlockStatement as w,ExpressionStatement as T,VariableDeclarator as E,VariableDeclaration as y,EmptyStatement as v,IfStatement as b,ForInStatement as N,ForStatement as I,ContinueStatement as S,BreakStatement as z,ReturnStatement as C,FunctionDeclaration as A,Program as B}from"./nodes.js";import{Scanner as U}from"./scanner.js";import{Syntax as M}from"./syntax.js";import{TokenName as L}from"./token.js";class G{constructor(e,s={},i){this.config={range:"boolean"==typeof s.range&&s.range,loc:"boolean"==typeof s.loc&&s.loc,source:null,tokens:"boolean"==typeof s.tokens&&s.tokens,comment:"boolean"==typeof s.comment&&s.comment,tolerant:"boolean"==typeof s.tolerant&&s.tolerant,globalReturn:!!s.globalReturn},this.config.loc&&s.source&&null!==s.source&&(this.config.source=String(s.source)),this.delegate=i,this.errorHandler=new t,this.errorHandler.tolerant=this.config.tolerant,this.scanner=new U(e,this.errorHandler),this.scanner.trackComment=this.config.comment,this.operatorPrecedence={")":0,";":0,",":0,"=":0,"]":0,"||":1,"&&":2,"|":3,"^":4,"&":5,"==":6,"!=":6,"===":6,"!==":6,"<":7,">":7,"<=":7,">=":7,"<<":8,">>":8,">>>":8,"+":9,"-":9,"*":11,"/":11,"%":11},this.lookahead={type:2,value:"",lineNumber:this.scanner.lineNumber,lineStart:0,start:0,end:0},this.hasLineTerminator=!1,this.context={allowIn:!0,firstCoverInitializedNameError:null,isAssignmentTarget:!1,isBindingElement:!1,inFunctionBody:!1,inIteration:!1,curlyParsing:"asObject"},this.tokens=[],this.startMarker={index:0,line:this.scanner.lineNumber,column:0},this.lastMarker={index:0,line:this.scanner.lineNumber,column:0},this.nextToken(),this.lastMarker={index:this.scanner.index,line:this.scanner.lineNumber,column:this.scanner.index-this.scanner.lineStart}}tolerateError(t,...s){const i=s.slice(),n=t.replace(/%(\d)/g,((t,s)=>(e(s<i.length,"Message reference must be in range"),i[s]))),r=this.lastMarker.index,a=this.scanner.lineNumber,o=this.lastMarker.column+1;this.errorHandler.tolerateError(r,a,o,n)}unexpectedTokenError(e,t){let i,n=t||s.UnexpectedToken;if(e?(t||(n=2===e.type?s.UnexpectedEOS:3===e.type?s.UnexpectedIdentifier:6===e.type?s.UnexpectedNumber:8===e.type?s.UnexpectedString:10===e.type?s.UnexpectedTemplate:s.UnexpectedToken),i=e.value.toString()):i="ILLEGAL",n=n.replace("%0",i),e&&"number"==typeof e.lineNumber){const t=e.start,s=e.lineNumber,i=this.lastMarker.index-this.lastMarker.column,r=e.start-i+1;return this.errorHandler.createError(t,s,r,n)}const r=this.lastMarker.index,a=this.lastMarker.line,o=this.lastMarker.column+1;return this.errorHandler.createError(r,a,o,n)}throwUnexpectedToken(e,t){throw this.unexpectedTokenError(e,t)}tolerateUnexpectedToken(e,t){this.errorHandler.tolerate(this.unexpectedTokenError(e,t))}collectComments(){if(this.config.comment){const e=this.scanner.scanComments();if(e&&e.length>0&&this.delegate)for(let t=0;t<e.length;++t){const s=e[t],n=new i(s.multiLine?"Block":"Line",this.scanner.source.slice(s.slice[0],s.slice[1]));this.config.range&&(n.range=s.range),this.config.loc&&(n.loc=s.loc);const r={start:{line:s.loc.start.line,column:s.loc.start.column,offset:s.range[0]},end:{line:s.loc.end.line,column:s.loc.end.column,offset:s.range[1]}};this.delegate(n,r)}}else this.scanner.scanComments()}peekAhead(e){const t=()=>(this.scanner.scanComments(),this.scanner.lex()),s=this.scanner.saveState();e.call(this,t),this.scanner.restoreState(s)}getTokenRaw(e){return this.scanner.source.slice(e.start,e.end)}convertToken(e){const t={type:L[e.type],value:this.getTokenRaw(e)};if(this.config.range&&(t.range=[e.start,e.end]),this.config.loc&&(t.loc={start:{line:this.startMarker.line,column:this.startMarker.column},end:{line:this.scanner.lineNumber,column:this.scanner.index-this.scanner.lineStart}}),9===e.type){const s=e.pattern,i=e.flags;t.regex={pattern:s,flags:i}}return t}nextToken(){const e=this.lookahead;this.lastMarker.index=this.scanner.index,this.lastMarker.line=this.scanner.lineNumber,this.lastMarker.column=this.scanner.index-this.scanner.lineStart,this.collectComments(),this.scanner.index!==this.startMarker.index&&(this.startMarker.index=this.scanner.index,this.startMarker.line=this.scanner.lineNumber,this.startMarker.column=this.scanner.index-this.scanner.lineStart);const t=this.scanner.lex();return this.hasLineTerminator=e.lineNumber!==t.lineNumber,this.lookahead=t,this.config.tokens&&2!==t.type&&this.tokens.push(this.convertToken(t)),e}createNode(){return{index:this.startMarker.index,line:this.startMarker.line,column:this.startMarker.column}}startNode(e,t=0){let s=e.start-e.lineStart,i=e.lineNumber;return s<0&&(s+=t,i--),{index:e.start,line:i,column:s}}finalize(e,t){if(this.config.range&&(t.range=[e.index,this.lastMarker.index]),this.config.loc&&(t.loc={start:{line:e.line,column:e.column},end:{line:this.lastMarker.line,column:this.lastMarker.column}},this.config.source&&(t.loc.source=this.config.source)),this.delegate){const s={start:{line:e.line,column:e.column,offset:e.index},end:{line:this.lastMarker.line,column:this.lastMarker.column,offset:this.lastMarker.index}};this.delegate(t,s)}return t}expect(e){const t=this.nextToken();7===t.type&&t.value===e||this.throwUnexpectedToken(t)}expectCommaSeparator(){if(this.config.tolerant){const e=this.lookahead;7===e.type&&","===e.value?this.nextToken():7===e.type&&";"===e.value?(this.nextToken(),this.tolerateUnexpectedToken(e)):this.tolerateUnexpectedToken(e,s.UnexpectedToken)}else this.expect(",")}expectKeyword(e){const t=this.nextToken();4===t.type&&t.value.toString().toLowerCase()===e.toLowerCase()||this.throwUnexpectedToken(t)}match(e){return 7===this.lookahead.type&&this.lookahead.value===e}matchKeyword(e){return 4===this.lookahead.type&&this.lookahead.value.toLowerCase()===e.toLowerCase()}matchContextualKeyword(e){return 3===this.lookahead.type&&this.lookahead.value===e}matchAssign(){if(7!==this.lookahead.type)return!1;const e=this.lookahead.value;return n.includes(e)}isolateCoverGrammar(e){const t=this.context.isBindingElement,s=this.context.isAssignmentTarget,i=this.context.firstCoverInitializedNameError;this.context.isBindingElement=!0,this.context.isAssignmentTarget=!0,this.context.firstCoverInitializedNameError=null;const n=e.call(this);return null!==this.context.firstCoverInitializedNameError&&this.throwUnexpectedToken(this.context.firstCoverInitializedNameError),this.context.isBindingElement=t,this.context.isAssignmentTarget=s,this.context.firstCoverInitializedNameError=i,n}inheritCoverGrammar(e){const t=this.context.isBindingElement,s=this.context.isAssignmentTarget,i=this.context.firstCoverInitializedNameError;this.context.isBindingElement=!0,this.context.isAssignmentTarget=!0,this.context.firstCoverInitializedNameError=null;const n=e.call(this);return this.context.isBindingElement=this.context.isBindingElement&&t,this.context.isAssignmentTarget=this.context.isAssignmentTarget&&s,this.context.firstCoverInitializedNameError=i||this.context.firstCoverInitializedNameError,n}consumeSemicolon(){this.match(";")?this.nextToken():this.hasLineTerminator||(2===this.lookahead.type||this.match("}")||this.throwUnexpectedToken(this.lookahead),this.lastMarker.index=this.startMarker.index,this.lastMarker.line=this.startMarker.line,this.lastMarker.column=this.startMarker.column)}parsePrimaryExpression(){const e=this.createNode();let t,s,i;switch(this.lookahead.type){case 3:t=this.finalize(e,new a(this.nextToken().value));break;case 6:case 8:this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1,s=this.nextToken(),i=this.getTokenRaw(s),t=this.finalize(e,new r(s.value,i));break;case 1:this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1,s=this.nextToken(),i=this.getTokenRaw(s),t=this.finalize(e,new r("true"===s.value.toString().toLowerCase(),i));break;case 5:this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1,s=this.nextToken(),i=this.getTokenRaw(s),t=this.finalize(e,new r(null,i));break;case 10:t=this.parseTemplateLiteral();break;case 7:switch(this.lookahead.value){case"(":this.context.isBindingElement=!1,t=this.inheritCoverGrammar(this.parseGroupExpression);break;case"[":t=this.inheritCoverGrammar(this.parseArrayInitializer);break;case"{":t=this.inheritCoverGrammar(this.parseObjectInitializer);break;default:t=this.throwUnexpectedToken(this.nextToken())}break;case 4:this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1,t=this.throwUnexpectedToken(this.nextToken());break;default:t=this.throwUnexpectedToken(this.nextToken())}return t}parseArrayInitializer(){const e=this.createNode(),t=[];for(this.expect("[");!this.match("]");)this.match(",")?(this.nextToken(),t.push(null)):(t.push(this.inheritCoverGrammar(this.parseAssignmentExpression)),this.match("]")||this.expect(","));return this.expect("]"),this.finalize(e,new o(t))}parseObjectPropertyKey(){const e=this.createNode(),t=this.nextToken();let s;switch(t.type){case 8:case 6:s=this.finalize(e,new r(t.value,this.getTokenRaw(t)));break;case 3:case 1:case 5:case 4:s=this.finalize(e,new a(t.value));break;default:s=this.throwUnexpectedToken(t)}return s}parseObjectProperty(){const e=this.createNode(),t=this.lookahead;let s=!1;const i=!1;let n=!1,r=null;if(3===t.type){const i=t.value;this.nextToken(),s=this.match("["),r=this.finalize(e,new a(i))}else this.match("*")?this.nextToken():(s=this.match("["),r=this.parseObjectPropertyKey());r||this.throwUnexpectedToken(this.lookahead);let o=null;const c="init";if(this.match(":"))this.nextToken(),o=this.inheritCoverGrammar(this.parseAssignmentExpression);else if(3===t.type){n=!0,o=this.finalize(e,new a(t.value))}else this.throwUnexpectedToken(this.nextToken());return this.finalize(e,new h(c,r,s,o,i,n))}parseObjectInitializer(){const e=this.createNode();this.expect("{");const t=[];for(;!this.match("}");)t.push(this.parseObjectProperty()),this.match("}")||this.expectCommaSeparator();return this.expect("}"),this.finalize(e,new c(t))}parseTemplateHead(){e(this.lookahead.head,"Template literal must start with a template head");const t=this.createNode(),s=this.nextToken(),i=s.value,n=s.cooked;return this.finalize(t,new l({raw:i,cooked:n},s.tail))}parseTemplateElement(){10!==this.lookahead.type&&this.throwUnexpectedToken();const e=this.createNode(),t=this.nextToken(),s=t.value,i=t.cooked;return this.finalize(e,new l({raw:s,cooked:i},t.tail))}parseTemplateLiteral(){const e=this.createNode(),t=[],s=[];let i=this.parseTemplateHead();for(s.push(i);!i.tail;)t.push(this.parseExpression()),i=this.parseTemplateElement(),s.push(i);return this.finalize(e,new m(s,t))}parseGroupExpression(){this.expect("("),this.context.isBindingElement=!0;const e=this.inheritCoverGrammar(this.parseAssignmentExpression);return this.expect(")"),this.context.isBindingElement=!1,e}parseArguments(){this.expect("(");const e=[];if(!this.match(")"))for(;;){const t=this.isolateCoverGrammar(this.parseAssignmentExpression);if(e.push(t),this.match(")"))break;if(this.expectCommaSeparator(),this.match(")"))break}return this.expect(")"),e}isIdentifierName(e){return 3===e.type||4===e.type||1===e.type||5===e.type}parseIdentifierName(){const e=this.createNode(),t=this.nextToken();return this.isIdentifierName(t)||this.throwUnexpectedToken(t),this.finalize(e,new a(t.value))}parseLeftHandSideExpressionAllowCall(){const e=this.lookahead,t=this.context.allowIn;this.context.allowIn=!0;let s=this.inheritCoverGrammar(this.parsePrimaryExpression);for(;;)if(this.match("(")){this.context.isBindingElement=!1,this.context.isAssignmentTarget=!1;const t=this.parseArguments();s=this.finalize(this.startNode(e),new p(s,t))}else if(this.match("[")){this.context.isBindingElement=!1,this.context.isAssignmentTarget=!0,this.expect("[");const t=this.isolateCoverGrammar(this.parseExpression);this.expect("]"),s=this.finalize(this.startNode(e),new x(s,t))}else{if(!this.match("."))break;{this.context.isBindingElement=!1,this.context.isAssignmentTarget=!0,this.expect(".");const t=this.parseIdentifierName();s=this.finalize(this.startNode(e),new d(s,t))}}return this.context.allowIn=t,s}parseLeftHandSideExpression(){e(this.context.allowIn,"callee of new expression always allow in keyword.");const t=this.startNode(this.lookahead);let s=this.inheritCoverGrammar(this.parsePrimaryExpression);for(;;)if(this.match("[")){this.context.isBindingElement=!1,this.context.isAssignmentTarget=!0,this.expect("[");const e=this.isolateCoverGrammar(this.parseExpression);this.expect("]"),s=this.finalize(t,new x(s,e))}else{if(!this.match("."))break;{this.context.isBindingElement=!1,this.context.isAssignmentTarget=!0,this.expect(".");const e=this.parseIdentifierName();s=this.finalize(t,new d(s,e))}}return s}parseUpdateExpression(){let e;const t=this.lookahead;if(this.match("++")||this.match("--")){const i=this.startNode(t),n=this.nextToken();e=this.inheritCoverGrammar(this.parseUnaryExpression),this.context.isAssignmentTarget||this.tolerateError(s.InvalidLHSInAssignment);const r=!0;e=this.finalize(i,new u(n.value,e,r)),this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1}else if(e=this.inheritCoverGrammar(this.parseLeftHandSideExpressionAllowCall),!this.hasLineTerminator&&7===this.lookahead.type&&(this.match("++")||this.match("--"))){this.context.isAssignmentTarget||this.tolerateError(s.InvalidLHSInAssignment),this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1;const i=this.nextToken().value,n=!1;e=this.finalize(this.startNode(t),new u(i,e,n))}return e}parseUnaryExpression(){let e;if(this.match("+")||this.match("-")||this.match("~")||this.match("!")){const t=this.startNode(this.lookahead),s=this.nextToken();e=this.inheritCoverGrammar(this.parseUnaryExpression),e=this.finalize(t,new k(s.value,e)),this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1}else e=this.parseUpdateExpression();return e}binaryPrecedence(e){const t=e.value;let s;return s=7===e.type?this.operatorPrecedence[t]||0:4===e.type&&this.context.allowIn&&"in"===t?12:0,s}parseBinaryExpression(){const e=this.lookahead;let t=this.inheritCoverGrammar(this.parseUnaryExpression);const s=this.lookahead;let i=this.binaryPrecedence(s);if(i>0){this.nextToken(),this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1;const n=[e,this.lookahead];let r=t,a=this.inheritCoverGrammar(this.parseUnaryExpression);const o=[r,s.value,a],h=[i];for(;i=this.binaryPrecedence(this.lookahead),!(i<=0);){for(;o.length>2&&i<=h[h.length-1];){a=o.pop();const e=o.pop();h.pop(),r=o.pop(),n.pop();const t=n[n.length-1],s=this.startNode(t,t.lineStart);o.push(this.finalize(s,new f(e,r,a)))}o.push(this.nextToken().value),h.push(i),n.push(this.lookahead),o.push(this.inheritCoverGrammar(this.parseUnaryExpression))}let c=o.length-1;t=o[c];let l=n.pop();for(;c>1;){const e=n.pop();if(!e)break;const s=l&&l.lineStart,i=this.startNode(e,s),r=o[c-1];t=this.finalize(i,new f(r,o[c-2],t)),c-=2,l=e}}return t}parseAssignmentExpression(){const e=this.lookahead;let t=e,i=this.inheritCoverGrammar(this.parseBinaryExpression);if(this.matchAssign()){this.context.isAssignmentTarget||this.tolerateError(s.InvalidLHSInAssignment),this.match("=")||(this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1),t=this.nextToken();const n=t.value,r=this.isolateCoverGrammar(this.parseAssignmentExpression);i=this.finalize(this.startNode(e),new g(n,i,r)),this.context.firstCoverInitializedNameError=null}return i}parseExpression(){return this.isolateCoverGrammar(this.parseAssignmentExpression)}parseStatementListItem(){let e;if(this.context.isAssignmentTarget=!0,this.context.isBindingElement=!0,4===this.lookahead.type)switch(this.lookahead.value){case"function":e=this.parseFunctionDeclaration();break;default:e=this.parseStatement()}else e=this.parseStatement();return e}parseBlock(){const e=this.createNode();this.expect("{");const t=[];for(;!this.match("}");)t.push(this.parseStatementListItem());return this.expect("}"),this.finalize(e,new w(t))}parseObjectStatement(){const e=this.createNode(),t=this.parseObjectInitializer();return this.finalize(e,new T(t))}parseBlockOrObjectStatement(){let e="asObject"===this.context.curlyParsing;return"asObjectOrBlock"===this.context.curlyParsing&&this.peekAhead((t=>{let s=t();3!==s.type&&8!==s.type||(s=t(),7===s.type&&":"===s.value&&(e=!0))})),e?this.parseObjectStatement():this.parseBlock()}parseVariableIdentifier(){const e=this.createNode(),t=this.nextToken();return 3!==t.type&&this.throwUnexpectedToken(t,s.IdentiferExpected),this.finalize(e,new a(t.value))}parseVariableDeclaration(e){const t=this.createNode(),s=this.parseVariableIdentifier();let i=null;return this.match("=")?(this.nextToken(),i=this.isolateCoverGrammar(this.parseAssignmentExpression)):s.type===M.Identifier||e.inFor||this.expect("="),this.finalize(t,new E(s,i))}parseVariableDeclarationList(e){const t=[this.parseVariableDeclaration(e)];for(;this.match(",");)this.nextToken(),t.push(this.parseVariableDeclaration(e));return t}parseVariableStatement(){const e=this.createNode();this.expectKeyword("var");const t=this.parseVariableDeclarationList({inFor:!1});return this.consumeSemicolon(),this.finalize(e,new y(t,"var"))}parseEmptyStatement(){const e=this.createNode();return this.expect(";"),this.finalize(e,new v)}parseExpressionStatement(){const e=this.createNode(),t=this.parseExpression();return this.consumeSemicolon(),this.finalize(e,new T(t))}parseIfClause(){const e=this.context.curlyParsing;this.context.curlyParsing="asObjectOrBlock";const t=this.parseStatement();return this.context.curlyParsing=e,t}parseIfStatement(){const e=this.createNode();let t,s=null;this.expectKeyword("if"),this.expect("(");const i=this.parseExpression();return!this.match(")")&&this.config.tolerant?(this.tolerateUnexpectedToken(this.nextToken()),t=this.finalize(this.createNode(),new v)):(this.expect(")"),t=this.parseIfClause(),this.matchKeyword("else")&&(this.nextToken(),s=this.parseIfClause())),this.finalize(e,new b(i,t,s))}parseForStatement(){let e=null,t=null,i=null,n=null,r=null;const a=this.createNode();if(this.expectKeyword("for"),this.expect("("),this.match(";"))this.nextToken();else if(this.matchKeyword("var")){const t=this.createNode();this.nextToken();const i=this.context.allowIn;this.context.allowIn=!1;const a=this.parseVariableDeclarationList({inFor:!0});if(this.context.allowIn=i,1===a.length&&this.matchKeyword("in")){a[0].init&&this.tolerateError(s.ForInOfLoopInitializer,"for-in"),n=this.finalize(t,new y(a,"var")),this.nextToken(),r=this.parseExpression()}else e=this.finalize(t,new y(a,"var")),this.expect(";")}else{const t=this.context.isBindingElement,i=this.context.isAssignmentTarget,a=this.context.firstCoverInitializedNameError,o=this.context.allowIn;this.context.allowIn=!1,e=this.inheritCoverGrammar(this.parseAssignmentExpression),this.context.allowIn=o,this.matchKeyword("in")?(this.context.isAssignmentTarget&&e.type!==M.AssignmentExpression||this.tolerateError(s.InvalidLHSInForIn),this.nextToken(),n=e,r=this.parseExpression(),e=null):(this.context.isBindingElement=t,this.context.isAssignmentTarget=i,this.context.firstCoverInitializedNameError=a,this.expect(";"))}let o;if(n||(this.match(";")||(t=this.isolateCoverGrammar(this.parseExpression)),this.expect(";"),this.match(")")||(i=this.isolateCoverGrammar(this.parseExpression))),!this.match(")")&&this.config.tolerant)this.tolerateUnexpectedToken(this.nextToken()),o=this.finalize(this.createNode(),new v);else{this.expect(")");const e=this.context.inIteration,t=this.context.curlyParsing;this.context.inIteration=!0,this.context.curlyParsing="asObjectOrBlock",o=this.isolateCoverGrammar(this.parseStatement),this.context.curlyParsing=t,this.context.inIteration=e}return n&&r?this.finalize(a,new N(n,r,o)):this.finalize(a,new I(e,t,i,o))}parseContinueStatement(){const e=this.createNode();return this.expectKeyword("continue"),this.consumeSemicolon(),this.finalize(e,new S)}parseBreakStatement(){const e=this.createNode();return this.expectKeyword("break"),this.consumeSemicolon(),this.finalize(e,new z)}parseReturnStatement(){this.config.globalReturn||this.context.inFunctionBody||this.tolerateError(s.IllegalReturn);const e=this.createNode();this.expectKeyword("return");const t=!this.match(";")&&!this.match("}")&&!this.hasLineTerminator&&2!==this.lookahead.type||8===this.lookahead.type||10===this.lookahead.type?this.parseExpression():null;return this.consumeSemicolon(),this.finalize(e,new C(t))}parseStatement(){let e;switch(this.lookahead.type){case 1:case 5:case 6:case 8:case 10:case 3:e=this.parseExpressionStatement();break;case 7:{const t=this.lookahead.value;e="{"===t?this.parseBlockOrObjectStatement():"("===t?this.parseExpressionStatement():";"===t?this.parseEmptyStatement():this.parseExpressionStatement();break}case 4:switch(this.lookahead.value.toLowerCase()){case"break":e=this.parseBreakStatement();break;case"continue":e=this.parseContinueStatement();break;case"for":e=this.parseForStatement();break;case"function":e=this.parseFunctionDeclaration();break;case"if":e=this.parseIfStatement();break;case"return":e=this.parseReturnStatement();break;case"var":e=this.parseVariableStatement();break;default:e=this.parseExpressionStatement()}break;default:e=this.throwUnexpectedToken(this.lookahead)}return e}parseFunctionSourceElements(){const e=this.createNode();this.expect("{");const t=this.context.inIteration,s=this.context.inFunctionBody;this.context.inIteration=!1,this.context.inFunctionBody=!0;const i=[];for(;2!==this.lookahead.type&&!this.match("}");)i.push(this.parseStatementListItem());return this.expect("}"),this.context.inIteration=t,this.context.inFunctionBody=s,this.finalize(e,new w(i))}parseFormalParameters(){const e=[];if(this.expect("("),!this.match(")"))for(;2!==this.lookahead.type&&(e.push(this.parseVariableIdentifier()),!this.match(")"))&&(this.expect(","),!this.match(")")););return this.expect(")"),e}parseFunctionDeclaration(){const e=this.createNode();this.expectKeyword("function");const t=this.parseVariableIdentifier(),s=this.parseFormalParameters(),i=this.parseFunctionSourceElements();return this.finalize(e,new A(t,s,i))}parseScript(){const e=this.createNode(),t=[];for(;2!==this.lookahead.type;)t.push(this.parseStatementListItem());return this.finalize(e,new B(t))}}export{G as Parser};
|
|
5
|
+
import{assert as e}from"./assert.js";import{ErrorHandler as t}from"./error-handler.js";import{Messages as s}from"./messages.js";import{Comment as i,AssignmentOperators as n,Literal as r,Identifier as a,ArrayExpression as o,Property as h,ObjectExpression as c,TemplateElement as l,TemplateLiteral as m,CallExpression as p,ComputedMemberExpression as x,StaticMemberExpression as d,UpdateExpression as u,UnaryExpression as k,BinaryExpression as f,AssignmentExpression as g,BlockStatement as w,ExpressionStatement as T,VariableDeclarator as E,VariableDeclaration as y,EmptyStatement as v,IfStatement as b,ForInStatement as N,ForStatement as I,ContinueStatement as S,BreakStatement as z,ReturnStatement as C,FunctionDeclaration as A,Program as B}from"./nodes.js";import{Scanner as U}from"./scanner.js";import{Syntax as M}from"./syntax.js";import{TokenName as L}from"./token.js";class G{constructor(e,s={},i){this.config={range:"boolean"==typeof s.range&&s.range,loc:"boolean"==typeof s.loc&&s.loc,source:null,tokens:"boolean"==typeof s.tokens&&s.tokens,comment:"boolean"==typeof s.comment&&s.comment,tolerant:"boolean"==typeof s.tolerant&&s.tolerant,globalReturn:!!s.globalReturn},this.config.loc&&s.source&&null!==s.source&&(this.config.source=String(s.source)),this.delegate=i,this.errorHandler=new t,this.errorHandler.tolerant=this.config.tolerant,this.scanner=new U(e,this.errorHandler),this.scanner.trackComment=this.config.comment,this.operatorPrecedence={")":0,";":0,",":0,"=":0,"]":0,"||":1,"&&":2,"|":3,"^":4,"&":5,"==":6,"!=":6,"===":6,"!==":6,"<":7,">":7,"<=":7,">=":7,"<<":8,">>":8,">>>":8,"+":9,"-":9,"*":11,"/":11,"%":11},this.lookahead={type:2,value:"",lineNumber:this.scanner.lineNumber,lineStart:0,start:0,end:0},this.hasLineTerminator=!1,this.context={allowIn:!0,firstCoverInitializedNameError:null,isAssignmentTarget:!1,isBindingElement:!1,inFunctionBody:!1,inIteration:!1,curlyParsing:"asObject"},this.tokens=[],this.startMarker={index:0,line:this.scanner.lineNumber,column:0},this.lastMarker={index:0,line:this.scanner.lineNumber,column:0},this.nextToken(),this.lastMarker={index:this.scanner.index,line:this.scanner.lineNumber,column:this.scanner.index-this.scanner.lineStart}}tolerateError(t,...s){const i=s.slice(),n=t.replace(/%(\d)/g,((t,s)=>(e(s<i.length,"Message reference must be in range"),i[s]))),r=this.lastMarker.index,a=this.scanner.lineNumber,o=this.lastMarker.column+1;this.errorHandler.tolerateError(r,a,o,n)}unexpectedTokenError(e,t){let i,n=t||s.UnexpectedToken;if(e?(t||(n=2===e.type?s.UnexpectedEOS:3===e.type?s.UnexpectedIdentifier:6===e.type?s.UnexpectedNumber:8===e.type?s.UnexpectedString:10===e.type?s.UnexpectedTemplate:s.UnexpectedToken),i=e.value.toString()):i="ILLEGAL",n=n.replace("%0",i),e&&"number"==typeof e.lineNumber){const t=e.start,s=e.lineNumber,i=this.lastMarker.index-this.lastMarker.column,r=e.start-i+1;return this.errorHandler.createError(t,s,r,n)}const r=this.lastMarker.index,a=this.lastMarker.line,o=this.lastMarker.column+1;return this.errorHandler.createError(r,a,o,n)}throwUnexpectedToken(e,t){throw this.unexpectedTokenError(e,t)}tolerateUnexpectedToken(e,t){this.errorHandler.tolerate(this.unexpectedTokenError(e,t))}collectComments(){if(this.config.comment){const e=this.scanner.scanComments();if(e&&e.length>0&&this.delegate)for(let t=0;t<e.length;++t){const s=e[t],n=new i(s.multiLine?"Block":"Line",this.scanner.source.slice(s.slice[0],s.slice[1]));this.config.range&&(n.range=s.range),this.config.loc&&(n.loc=s.loc);const r={start:{line:s.loc.start.line,column:s.loc.start.column,offset:s.range[0]},end:{line:s.loc.end.line,column:s.loc.end.column,offset:s.range[1]}};this.delegate(n,r)}}else this.scanner.scanComments()}peekAhead(e){const t=()=>(this.scanner.scanComments(),this.scanner.lex()),s=this.scanner.saveState();e.call(this,t),this.scanner.restoreState(s)}getTokenRaw(e){return this.scanner.source.slice(e.start,e.end)}convertToken(e){const t={type:L[e.type],value:this.getTokenRaw(e)};if(this.config.range&&(t.range=[e.start,e.end]),this.config.loc&&(t.loc={start:{line:this.startMarker.line,column:this.startMarker.column},end:{line:this.scanner.lineNumber,column:this.scanner.index-this.scanner.lineStart}}),9===e.type){const s=e.pattern,i=e.flags;t.regex={pattern:s,flags:i}}return t}nextToken(){const e=this.lookahead;this.lastMarker.index=this.scanner.index,this.lastMarker.line=this.scanner.lineNumber,this.lastMarker.column=this.scanner.index-this.scanner.lineStart,this.collectComments(),this.scanner.index!==this.startMarker.index&&(this.startMarker.index=this.scanner.index,this.startMarker.line=this.scanner.lineNumber,this.startMarker.column=this.scanner.index-this.scanner.lineStart);const t=this.scanner.lex();return this.hasLineTerminator=e.lineNumber!==t.lineNumber,this.lookahead=t,this.config.tokens&&2!==t.type&&this.tokens.push(this.convertToken(t)),e}createNode(){return{index:this.startMarker.index,line:this.startMarker.line,column:this.startMarker.column}}startNode(e,t=0){let s=e.start-e.lineStart,i=e.lineNumber;return s<0&&(s+=t,i--),{index:e.start,line:i,column:s}}finalize(e,t){if(this.config.range&&(t.range=[e.index,this.lastMarker.index]),this.config.loc&&(t.loc={start:{line:e.line,column:e.column},end:{line:this.lastMarker.line,column:this.lastMarker.column}},this.config.source&&(t.loc.source=this.config.source)),this.delegate){const s={start:{line:e.line,column:e.column,offset:e.index},end:{line:this.lastMarker.line,column:this.lastMarker.column,offset:this.lastMarker.index}};this.delegate(t,s)}return t}expect(e){const t=this.nextToken();7===t.type&&t.value===e||this.throwUnexpectedToken(t)}expectCommaSeparator(){if(this.config.tolerant){const e=this.lookahead;7===e.type&&","===e.value?this.nextToken():7===e.type&&";"===e.value?(this.nextToken(),this.tolerateUnexpectedToken(e)):this.tolerateUnexpectedToken(e,s.UnexpectedToken)}else this.expect(",")}expectKeyword(e){const t=this.nextToken();4===t.type&&t.value.toString().toLowerCase()===e.toLowerCase()||this.throwUnexpectedToken(t)}match(e){return 7===this.lookahead.type&&this.lookahead.value===e}matchKeyword(e){return 4===this.lookahead.type&&this.lookahead.value.toLowerCase()===e.toLowerCase()}matchContextualKeyword(e){return 3===this.lookahead.type&&this.lookahead.value===e}matchAssign(){if(7!==this.lookahead.type)return!1;const e=this.lookahead.value;return n.includes(e)}isolateCoverGrammar(e){const t=this.context.isBindingElement,s=this.context.isAssignmentTarget,i=this.context.firstCoverInitializedNameError;this.context.isBindingElement=!0,this.context.isAssignmentTarget=!0,this.context.firstCoverInitializedNameError=null;const n=e.call(this);return null!==this.context.firstCoverInitializedNameError&&this.throwUnexpectedToken(this.context.firstCoverInitializedNameError),this.context.isBindingElement=t,this.context.isAssignmentTarget=s,this.context.firstCoverInitializedNameError=i,n}inheritCoverGrammar(e){const t=this.context.isBindingElement,s=this.context.isAssignmentTarget,i=this.context.firstCoverInitializedNameError;this.context.isBindingElement=!0,this.context.isAssignmentTarget=!0,this.context.firstCoverInitializedNameError=null;const n=e.call(this);return this.context.isBindingElement=this.context.isBindingElement&&t,this.context.isAssignmentTarget=this.context.isAssignmentTarget&&s,this.context.firstCoverInitializedNameError=i||this.context.firstCoverInitializedNameError,n}consumeSemicolon(){this.match(";")?this.nextToken():this.hasLineTerminator||(2===this.lookahead.type||this.match("}")||this.throwUnexpectedToken(this.lookahead),this.lastMarker.index=this.startMarker.index,this.lastMarker.line=this.startMarker.line,this.lastMarker.column=this.startMarker.column)}parsePrimaryExpression(){const e=this.createNode();let t,s,i;switch(this.lookahead.type){case 3:t=this.finalize(e,new a(this.nextToken().value));break;case 6:case 8:this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1,s=this.nextToken(),i=this.getTokenRaw(s),t=this.finalize(e,new r(s.value,i));break;case 1:this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1,s=this.nextToken(),i=this.getTokenRaw(s),t=this.finalize(e,new r("true"===s.value.toString().toLowerCase(),i));break;case 5:this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1,s=this.nextToken(),i=this.getTokenRaw(s),t=this.finalize(e,new r(null,i));break;case 10:t=this.parseTemplateLiteral();break;case 7:switch(this.lookahead.value){case"(":this.context.isBindingElement=!1,t=this.inheritCoverGrammar(this.parseGroupExpression);break;case"[":t=this.inheritCoverGrammar(this.parseArrayInitializer);break;case"{":t=this.inheritCoverGrammar(this.parseObjectInitializer);break;default:t=this.throwUnexpectedToken(this.nextToken())}break;case 4:this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1,t=this.throwUnexpectedToken(this.nextToken());break;default:t=this.throwUnexpectedToken(this.nextToken())}return t}parseArrayInitializer(){const e=this.createNode(),t=[];for(this.expect("[");!this.match("]");)this.match(",")?(this.nextToken(),t.push(null)):(t.push(this.inheritCoverGrammar(this.parseAssignmentExpression)),this.match("]")||this.expect(","));return this.expect("]"),this.finalize(e,new o(t))}parseObjectPropertyKey(){const e=this.createNode(),t=this.nextToken();let s;switch(t.type){case 8:case 6:s=this.finalize(e,new r(t.value,this.getTokenRaw(t)));break;case 3:case 1:case 5:case 4:s=this.finalize(e,new a(t.value));break;default:s=this.throwUnexpectedToken(t)}return s}parseObjectProperty(){const e=this.createNode(),t=this.lookahead;let s=!1;const i=!1;let n=!1,r=null;if(3===t.type){const i=t.value;this.nextToken(),s=this.match("["),r=this.finalize(e,new a(i))}else this.match("*")?this.nextToken():(s=this.match("["),r=this.parseObjectPropertyKey());r||this.throwUnexpectedToken(this.lookahead);let o=null;const c="init";if(this.match(":"))this.nextToken(),o=this.inheritCoverGrammar(this.parseAssignmentExpression);else if(3===t.type){n=!0,o=this.finalize(e,new a(t.value))}else this.throwUnexpectedToken(this.nextToken());return this.finalize(e,new h(c,r,s,o,i,n))}parseObjectInitializer(){const e=this.createNode();this.expect("{");const t=[];for(;!this.match("}");)t.push(this.parseObjectProperty()),this.match("}")||this.expectCommaSeparator();return this.expect("}"),this.finalize(e,new c(t))}parseTemplateHead(){e(this.lookahead.head,"Template literal must start with a template head");const t=this.createNode(),s=this.nextToken(),i=s.value,n=s.cooked;return this.finalize(t,new l({raw:i,cooked:n},s.tail))}parseTemplateElement(){10!==this.lookahead.type&&this.throwUnexpectedToken();const e=this.createNode(),t=this.nextToken(),s=t.value,i=t.cooked;return this.finalize(e,new l({raw:s,cooked:i},t.tail))}parseTemplateLiteral(){const e=this.createNode(),t=[],s=[];let i=this.parseTemplateHead();for(s.push(i);!i.tail;)t.push(this.parseExpression()),i=this.parseTemplateElement(),s.push(i);return this.finalize(e,new m(s,t))}parseGroupExpression(){this.expect("("),this.context.isBindingElement=!0;const e=this.inheritCoverGrammar(this.parseAssignmentExpression);return this.expect(")"),this.context.isBindingElement=!1,e}parseArguments(){this.expect("(");const e=[];if(!this.match(")"))for(;;){const t=this.isolateCoverGrammar(this.parseAssignmentExpression);if(e.push(t),this.match(")"))break;if(this.expectCommaSeparator(),this.match(")"))break}return this.expect(")"),e}isIdentifierName(e){return 3===e.type||4===e.type||1===e.type||5===e.type}parseIdentifierName(){const e=this.createNode(),t=this.nextToken();return this.isIdentifierName(t)||this.throwUnexpectedToken(t),this.finalize(e,new a(t.value))}parseLeftHandSideExpressionAllowCall(){const e=this.lookahead,t=this.context.allowIn;this.context.allowIn=!0;let s=this.inheritCoverGrammar(this.parsePrimaryExpression);for(;;)if(this.match("(")){this.context.isBindingElement=!1,this.context.isAssignmentTarget=!1;const t=this.parseArguments();s=this.finalize(this.startNode(e),new p(s,t))}else if(this.match("[")){this.context.isBindingElement=!1,this.context.isAssignmentTarget=!0,this.expect("[");const t=this.isolateCoverGrammar(this.parseExpression);this.expect("]"),s=this.finalize(this.startNode(e),new x(s,t))}else{if(!this.match("."))break;{this.context.isBindingElement=!1,this.context.isAssignmentTarget=!0,this.expect(".");const t=this.parseIdentifierName();s=this.finalize(this.startNode(e),new d(s,t))}}return this.context.allowIn=t,s}parseLeftHandSideExpression(){e(this.context.allowIn,"callee of new expression always allow in keyword.");const t=this.startNode(this.lookahead);let s=this.inheritCoverGrammar(this.parsePrimaryExpression);for(;;)if(this.match("[")){this.context.isBindingElement=!1,this.context.isAssignmentTarget=!0,this.expect("[");const e=this.isolateCoverGrammar(this.parseExpression);this.expect("]"),s=this.finalize(t,new x(s,e))}else{if(!this.match("."))break;{this.context.isBindingElement=!1,this.context.isAssignmentTarget=!0,this.expect(".");const e=this.parseIdentifierName();s=this.finalize(t,new d(s,e))}}return s}parseUpdateExpression(){let e;const t=this.lookahead;if(this.match("++")||this.match("--")){const i=this.startNode(t),n=this.nextToken();e=this.inheritCoverGrammar(this.parseUnaryExpression),this.context.isAssignmentTarget||this.tolerateError(s.InvalidLHSInAssignment);const r=!0;e=this.finalize(i,new u(n.value,e,r)),this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1}else if(e=this.inheritCoverGrammar(this.parseLeftHandSideExpressionAllowCall),!this.hasLineTerminator&&7===this.lookahead.type&&(this.match("++")||this.match("--"))){this.context.isAssignmentTarget||this.tolerateError(s.InvalidLHSInAssignment),this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1;const i=this.nextToken().value,n=!1;e=this.finalize(this.startNode(t),new u(i,e,n))}return e}parseUnaryExpression(){let e;if(this.match("+")||this.match("-")||this.match("~")||this.match("!")){const t=this.startNode(this.lookahead),s=this.nextToken();e=this.inheritCoverGrammar(this.parseUnaryExpression),e=this.finalize(t,new k(s.value,e)),this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1}else e=this.parseUpdateExpression();return e}binaryPrecedence(e){const t=e.value;let s;return s=7===e.type?this.operatorPrecedence[t]||0:4===e.type&&this.context.allowIn&&"in"===t?12:0,s}parseBinaryExpression(){const e=this.lookahead;let t=this.inheritCoverGrammar(this.parseUnaryExpression);const s=this.lookahead;let i=this.binaryPrecedence(s);if(i>0){this.nextToken(),this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1;const n=[e,this.lookahead];let r=t,a=this.inheritCoverGrammar(this.parseUnaryExpression);const o=[r,s.value,a],h=[i];for(;i=this.binaryPrecedence(this.lookahead),!(i<=0);){for(;o.length>2&&i<=h[h.length-1];){a=o.pop();const e=o.pop();h.pop(),r=o.pop(),n.pop();const t=n[n.length-1],s=this.startNode(t,t.lineStart);o.push(this.finalize(s,new f(e,r,a)))}o.push(this.nextToken().value),h.push(i),n.push(this.lookahead),o.push(this.inheritCoverGrammar(this.parseUnaryExpression))}let c=o.length-1;t=o[c];let l=n.pop();for(;c>1;){const e=n.pop();if(!e)break;const s=l&&l.lineStart,i=this.startNode(e,s),r=o[c-1];t=this.finalize(i,new f(r,o[c-2],t)),c-=2,l=e}}return t}parseAssignmentExpression(){const e=this.lookahead;let t=e,i=this.inheritCoverGrammar(this.parseBinaryExpression);if(this.matchAssign()){this.context.isAssignmentTarget||this.tolerateError(s.InvalidLHSInAssignment),this.match("=")||(this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1),t=this.nextToken();const n=t.value,r=this.isolateCoverGrammar(this.parseAssignmentExpression);i=this.finalize(this.startNode(e),new g(n,i,r)),this.context.firstCoverInitializedNameError=null}return i}parseExpression(){return this.isolateCoverGrammar(this.parseAssignmentExpression)}parseStatementListItem(){let e;if(this.context.isAssignmentTarget=!0,this.context.isBindingElement=!0,4===this.lookahead.type)if("function"===this.lookahead.value)e=this.parseFunctionDeclaration();else e=this.parseStatement();else e=this.parseStatement();return e}parseBlock(){const e=this.createNode();this.expect("{");const t=[];for(;!this.match("}");)t.push(this.parseStatementListItem());return this.expect("}"),this.finalize(e,new w(t))}parseObjectStatement(){const e=this.createNode(),t=this.parseObjectInitializer();return this.finalize(e,new T(t))}parseBlockOrObjectStatement(){let e="asObject"===this.context.curlyParsing;return"asObjectOrBlock"===this.context.curlyParsing&&this.peekAhead((t=>{let s=t();3!==s.type&&8!==s.type||(s=t(),7===s.type&&":"===s.value&&(e=!0))})),e?this.parseObjectStatement():this.parseBlock()}parseVariableIdentifier(){const e=this.createNode(),t=this.nextToken();return 3!==t.type&&this.throwUnexpectedToken(t,s.IdentiferExpected),this.finalize(e,new a(t.value))}parseVariableDeclaration(e){const t=this.createNode(),s=this.parseVariableIdentifier();let i=null;return this.match("=")?(this.nextToken(),i=this.isolateCoverGrammar(this.parseAssignmentExpression)):s.type===M.Identifier||e.inFor||this.expect("="),this.finalize(t,new E(s,i))}parseVariableDeclarationList(e){const t=[this.parseVariableDeclaration(e)];for(;this.match(",");)this.nextToken(),t.push(this.parseVariableDeclaration(e));return t}parseVariableStatement(){const e=this.createNode();this.expectKeyword("var");const t=this.parseVariableDeclarationList({inFor:!1});return this.consumeSemicolon(),this.finalize(e,new y(t,"var"))}parseEmptyStatement(){const e=this.createNode();return this.expect(";"),this.finalize(e,new v)}parseExpressionStatement(){const e=this.createNode(),t=this.parseExpression();return this.consumeSemicolon(),this.finalize(e,new T(t))}parseIfClause(){const e=this.context.curlyParsing;this.context.curlyParsing="asObjectOrBlock";const t=this.parseStatement();return this.context.curlyParsing=e,t}parseIfStatement(){const e=this.createNode();let t,s=null;this.expectKeyword("if"),this.expect("(");const i=this.parseExpression();return!this.match(")")&&this.config.tolerant?(this.tolerateUnexpectedToken(this.nextToken()),t=this.finalize(this.createNode(),new v)):(this.expect(")"),t=this.parseIfClause(),this.matchKeyword("else")&&(this.nextToken(),s=this.parseIfClause())),this.finalize(e,new b(i,t,s))}parseForStatement(){let e=null,t=null,i=null,n=null,r=null;const a=this.createNode();if(this.expectKeyword("for"),this.expect("("),this.match(";"))this.nextToken();else if(this.matchKeyword("var")){const t=this.createNode();this.nextToken();const i=this.context.allowIn;this.context.allowIn=!1;const a=this.parseVariableDeclarationList({inFor:!0});if(this.context.allowIn=i,1===a.length&&this.matchKeyword("in")){a[0].init&&this.tolerateError(s.ForInOfLoopInitializer,"for-in"),n=this.finalize(t,new y(a,"var")),this.nextToken(),r=this.parseExpression()}else e=this.finalize(t,new y(a,"var")),this.expect(";")}else{const t=this.context.isBindingElement,i=this.context.isAssignmentTarget,a=this.context.firstCoverInitializedNameError,o=this.context.allowIn;this.context.allowIn=!1,e=this.inheritCoverGrammar(this.parseAssignmentExpression),this.context.allowIn=o,this.matchKeyword("in")?(this.context.isAssignmentTarget&&e.type!==M.AssignmentExpression||this.tolerateError(s.InvalidLHSInForIn),this.nextToken(),n=e,r=this.parseExpression(),e=null):(this.context.isBindingElement=t,this.context.isAssignmentTarget=i,this.context.firstCoverInitializedNameError=a,this.expect(";"))}let o;if(n||(this.match(";")||(t=this.isolateCoverGrammar(this.parseExpression)),this.expect(";"),this.match(")")||(i=this.isolateCoverGrammar(this.parseExpression))),!this.match(")")&&this.config.tolerant)this.tolerateUnexpectedToken(this.nextToken()),o=this.finalize(this.createNode(),new v);else{this.expect(")");const e=this.context.inIteration,t=this.context.curlyParsing;this.context.inIteration=!0,this.context.curlyParsing="asObjectOrBlock",o=this.isolateCoverGrammar(this.parseStatement),this.context.curlyParsing=t,this.context.inIteration=e}return n&&r?this.finalize(a,new N(n,r,o)):this.finalize(a,new I(e,t,i,o))}parseContinueStatement(){const e=this.createNode();return this.expectKeyword("continue"),this.consumeSemicolon(),this.finalize(e,new S)}parseBreakStatement(){const e=this.createNode();return this.expectKeyword("break"),this.consumeSemicolon(),this.finalize(e,new z)}parseReturnStatement(){this.config.globalReturn||this.context.inFunctionBody||this.tolerateError(s.IllegalReturn);const e=this.createNode();this.expectKeyword("return");const t=!this.match(";")&&!this.match("}")&&!this.hasLineTerminator&&2!==this.lookahead.type||8===this.lookahead.type||10===this.lookahead.type?this.parseExpression():null;return this.consumeSemicolon(),this.finalize(e,new C(t))}parseStatement(){let e;switch(this.lookahead.type){case 1:case 5:case 6:case 8:case 10:case 3:e=this.parseExpressionStatement();break;case 7:{const t=this.lookahead.value;e="{"===t?this.parseBlockOrObjectStatement():"("===t?this.parseExpressionStatement():";"===t?this.parseEmptyStatement():this.parseExpressionStatement();break}case 4:switch(this.lookahead.value.toLowerCase()){case"break":e=this.parseBreakStatement();break;case"continue":e=this.parseContinueStatement();break;case"for":e=this.parseForStatement();break;case"function":e=this.parseFunctionDeclaration();break;case"if":e=this.parseIfStatement();break;case"return":e=this.parseReturnStatement();break;case"var":e=this.parseVariableStatement();break;default:e=this.parseExpressionStatement()}break;default:e=this.throwUnexpectedToken(this.lookahead)}return e}parseFunctionSourceElements(){const e=this.createNode();this.expect("{");const t=this.context.inIteration,s=this.context.inFunctionBody;this.context.inIteration=!1,this.context.inFunctionBody=!0;const i=[];for(;2!==this.lookahead.type&&!this.match("}");)i.push(this.parseStatementListItem());return this.expect("}"),this.context.inIteration=t,this.context.inFunctionBody=s,this.finalize(e,new w(i))}parseFormalParameters(){const e=[];if(this.expect("("),!this.match(")"))for(;2!==this.lookahead.type&&(e.push(this.parseVariableIdentifier()),!this.match(")"))&&(this.expect(","),!this.match(")")););return this.expect(")"),e}parseFunctionDeclaration(){const e=this.createNode();this.expectKeyword("function");const t=this.parseVariableIdentifier(),s=this.parseFormalParameters(),i=this.parseFunctionSourceElements();return this.finalize(e,new A(t,s,i))}parseScript(){const e=this.createNode(),t=[];for(;2!==this.lookahead.type;)t.push(this.parseStatementListItem());return this.finalize(e,new B(t))}}export{G as Parser};
|