@cesium/engine 26.2.0 → 26.3.1-wasm.0
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/Build/ThirdParty/Workers/zip-web-worker.js +707 -600
- package/Build/Workers/chunk-2P3WKV6V.js +290 -0
- package/Build/Workers/{chunk-M6QKXVAU.js → chunk-2U5272QU.js} +17 -17
- package/Build/Workers/{chunk-NEFDMMLY.js → chunk-4KCOC6OZ.js} +8 -10
- package/Build/Workers/{chunk-SJYSIOEM.js → chunk-5FULJNWY.js} +11 -13
- package/Build/Workers/{chunk-NCL22ZUX.js → chunk-65ZF23AQ.js} +1 -1
- package/Build/Workers/{chunk-KP5QD7WU.js → chunk-6D5534B7.js} +10 -12
- package/Build/Workers/{chunk-FX3VEAIU.js → chunk-6GFMBHBD.js} +19 -19
- package/Build/Workers/{chunk-A62YI6S6.js → chunk-6VRGQF3D.js} +4 -4
- package/Build/Workers/{chunk-DSGLDRTI.js → chunk-6XUIECFB.js} +4 -6
- package/Build/Workers/{chunk-HDL4HOXZ.js → chunk-7KWUH6RK.js} +14 -14
- package/Build/Workers/{chunk-UAZUP4I5.js → chunk-7ZBJRQQT.js} +7 -7
- package/Build/Workers/{chunk-CRCGE4J4.js → chunk-AEHANE5A.js} +991 -5612
- package/Build/Workers/chunk-AUU74SIZ.js +2420 -0
- package/Build/Workers/{chunk-ARZICEEP.js → chunk-B6V5NMIE.js} +13 -11
- package/Build/Workers/{chunk-76FDC45O.js → chunk-BRQ52ASU.js} +15 -17
- package/Build/Workers/{chunk-SA2A2AN5.js → chunk-FVLSQBPH.js} +7 -14
- package/Build/Workers/{chunk-CUTRKXUQ.js → chunk-IFKM2GZR.js} +12 -12
- package/Build/Workers/{chunk-NSKZ6SBK.js → chunk-KF6OEWVT.js} +17 -17
- package/Build/Workers/{chunk-O3DKEX7Q.js → chunk-KOAXSU77.js} +5 -7
- package/Build/Workers/{chunk-2Z4ZLVOD.js → chunk-KRVYCMGN.js} +6 -6
- package/Build/Workers/{chunk-SXSP3JHS.js → chunk-LTZRLNQP.js} +1 -1
- package/Build/Workers/{chunk-6FZDPMTO.js → chunk-M7WEAGWT.js} +8 -8
- package/Build/Workers/{chunk-NXGQBQWE.js → chunk-MJTLGN63.js} +14 -14
- package/Build/Workers/{chunk-XCBZVTIV.js → chunk-MUNZ77KV.js} +1 -1
- package/Build/Workers/{chunk-NLLCQBX3.js → chunk-NC5BUJEF.js} +2 -2
- package/Build/Workers/chunk-NYKURYFR.js +2131 -0
- package/Build/Workers/{chunk-5LSOO2KD.js → chunk-NZAQG57U.js} +7 -7
- package/Build/Workers/{chunk-DZUFEE4L.js → chunk-O5GUOP2G.js} +5 -7
- package/Build/Workers/{chunk-D6AY775A.js → chunk-OQUOLQTN.js} +8 -10
- package/Build/Workers/{chunk-CDJDJ5LK.js → chunk-OUG5JB2K.js} +16 -14
- package/Build/Workers/{chunk-ACTVJHSP.js → chunk-P4SDLSGF.js} +13 -6
- package/Build/Workers/{chunk-MAAHFYPC.js → chunk-P6PC2OIM.js} +7 -7
- package/Build/Workers/{chunk-6YR6JBMY.js → chunk-PPRK3XQU.js} +31 -35
- package/Build/Workers/{chunk-IMBVP57H.js → chunk-QGTYLWOT.js} +2 -2
- package/Build/Workers/{chunk-FCP2QY4G.js → chunk-QHTLIQUH.js} +5 -7
- package/Build/Workers/{chunk-EZGQPOIG.js → chunk-ROHWZQZ5.js} +5 -5
- package/Build/Workers/{chunk-B3QHNA4A.js → chunk-SNUWISJO.js} +6 -8
- package/Build/Workers/{chunk-XDWCTQCZ.js → chunk-T67YY3KP.js} +4 -2
- package/Build/Workers/{chunk-IJZJMIUY.js → chunk-TF5473GK.js} +13 -13
- package/Build/Workers/{chunk-OZGPS7FB.js → chunk-THHFTMAL.js} +4 -6
- package/Build/Workers/{chunk-PRWUMCXF.js → chunk-UFCZ62WM.js} +15 -13
- package/Build/Workers/{chunk-27FWRTJI.js → chunk-UV2YC2Q5.js} +11 -11
- package/Build/Workers/{chunk-N7CCOFLX.js → chunk-V4ICCWYA.js} +1 -1
- package/Build/Workers/{chunk-GHXVQVUM.js → chunk-VC6XXI2Z.js} +9 -9
- package/Build/Workers/{chunk-I74ZH5LK.js → chunk-VXJ6P4UI.js} +10 -10
- package/Build/Workers/{chunk-KGXSYGBG.js → chunk-W2BKP7G7.js} +15 -17
- package/Build/Workers/{chunk-LDRQSYBN.js → chunk-WMVGNBSH.js} +2 -2
- package/Build/Workers/{chunk-SMTGMFBL.js → chunk-XFZMQZSZ.js} +4 -4
- package/Build/Workers/{chunk-7MM3N2VE.js → chunk-XJ532R6R.js} +20 -20
- package/Build/Workers/{chunk-NJVBJG63.js → chunk-YJNU4SM4.js} +5 -5
- package/Build/Workers/{chunk-DIGUUD6G.js → chunk-YJRDTEHQ.js} +8 -8
- package/Build/Workers/chunk-YUICDZKO.js +2660 -0
- package/Build/Workers/{chunk-O3XFXGPZ.js → chunk-Z3DEVGJV.js} +7 -7
- package/Build/Workers/{chunk-3PSS3T43.js → chunk-ZECGI7UZ.js} +4 -4
- package/Build/Workers/{chunk-QFSSCLLZ.js → chunk-ZFLPVPUJ.js} +6 -8
- package/Build/Workers/{chunk-2RGJPWQX.js → chunk-ZIM5H2DB.js} +11 -11
- package/Build/Workers/{chunk-GVA7XQI2.js → chunk-ZSQMGGSB.js} +14 -16
- package/Build/Workers/{chunk-FU4BGABC.js → chunk-ZWYRGMBK.js} +16 -18
- package/Build/Workers/{chunk-JKXV6PG5.js → chunk-ZY733NZA.js} +1 -1
- package/Build/Workers/combineGeometry.js +24 -24
- package/Build/Workers/createBoxGeometry.js +18 -18
- package/Build/Workers/createBoxOutlineGeometry.js +20 -19
- package/Build/Workers/createCircleGeometry.js +28 -27
- package/Build/Workers/createCircleOutlineGeometry.js +21 -20
- package/Build/Workers/createCoplanarPolygonGeometry.js +34 -34
- package/Build/Workers/createCoplanarPolygonOutlineGeometry.js +33 -32
- package/Build/Workers/createCorridorGeometry.js +31 -31
- package/Build/Workers/createCorridorOutlineGeometry.js +30 -30
- package/Build/Workers/createCylinderGeometry.js +20 -20
- package/Build/Workers/createCylinderOutlineGeometry.js +22 -21
- package/Build/Workers/createEllipseGeometry.js +26 -26
- package/Build/Workers/createEllipseOutlineGeometry.js +19 -19
- package/Build/Workers/createEllipsoidGeometry.js +19 -19
- package/Build/Workers/createEllipsoidOutlineGeometry.js +18 -18
- package/Build/Workers/createFrustumGeometry.js +18 -18
- package/Build/Workers/createFrustumOutlineGeometry.js +18 -18
- package/Build/Workers/createGeometry.js +27 -26
- package/Build/Workers/createGroundPolylineGeometry.js +27 -26
- package/Build/Workers/createPlaneGeometry.js +18 -17
- package/Build/Workers/createPlaneOutlineGeometry.js +15 -15
- package/Build/Workers/createPolygonGeometry.js +35 -35
- package/Build/Workers/createPolygonOutlineGeometry.js +34 -34
- package/Build/Workers/createPolylineGeometry.js +28 -29
- package/Build/Workers/createPolylineVolumeGeometry.js +34 -35
- package/Build/Workers/createPolylineVolumeOutlineGeometry.js +30 -31
- package/Build/Workers/createRectangleGeometry.js +30 -30
- package/Build/Workers/createRectangleOutlineGeometry.js +23 -24
- package/Build/Workers/createSimplePolylineGeometry.js +26 -27
- package/Build/Workers/createSphereGeometry.js +19 -19
- package/Build/Workers/createSphereOutlineGeometry.js +18 -18
- package/Build/Workers/createTaskProcessorWorker.js +3 -3
- package/Build/Workers/createVectorTileClampedPolylines.js +17 -16
- package/Build/Workers/createVectorTileGeometries.js +24 -24
- package/Build/Workers/createVectorTilePoints.js +13 -13
- package/Build/Workers/createVectorTilePolygons.js +22 -22
- package/Build/Workers/createVectorTilePolylines.js +17 -16
- package/Build/Workers/createVerticesFromCesium3DTilesTerrain.js +36 -26
- package/Build/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +24 -24
- package/Build/Workers/createVerticesFromHeightmap.js +24 -25
- package/Build/Workers/createVerticesFromQuantizedTerrainMesh.js +20 -20
- package/Build/Workers/createWallGeometry.js +27 -28
- package/Build/Workers/createWallOutlineGeometry.js +26 -27
- package/Build/Workers/decodeDraco.js +16 -12
- package/Build/Workers/decodeGoogleEarthEnterprisePacket.js +336 -337
- package/Build/Workers/decodeI3S.js +17 -12
- package/Build/Workers/{chunk-GXWQZBAI.js → decodeMeshopt.js} +23 -29
- package/Build/Workers/decodeSpz.js +1960 -0
- package/Build/Workers/gaussianSplatSorter.js +13 -6
- package/Build/Workers/gaussianSplatTextureGenerator.js +13 -6
- package/Build/Workers/incrementallyBuildTerrainPicker.js +9 -10
- package/Build/Workers/transcodeKTX2.js +26 -12
- package/Build/Workers/transferTypedArrayTest.js +1 -1
- package/Build/Workers/upsampleQuantizedTerrainMesh.js +24 -24
- package/Build/Workers/upsampleVerticesFromCesium3DTilesTerrain.js +25 -25
- package/Source/Core/Cesium3DTilesTerrainData.js +11 -1
- package/Source/Core/Cesium3DTilesTerrainGeometryProcessor.js +33 -23
- package/Source/Core/Ion.js +1 -1
- package/Source/Core/IonResource.js +5 -0
- package/Source/Core/IonSnapGeometryType.js +59 -0
- package/Source/Core/IonSnapHeat.js +33 -0
- package/Source/Core/IonSnapMode.js +45 -0
- package/Source/Core/IonSnapParentGeometryType.js +52 -0
- package/Source/Core/IonSnapService.js +369 -0
- package/Source/Core/KTX2Transcoder.js +99 -5
- package/Source/Core/Resource.js +2 -0
- package/Source/Core/SnapService.js +63 -0
- package/Source/Core/TaskProcessor.js +249 -129
- package/Source/Core/TrustedServers.js +34 -1
- package/Source/Core/VectorPipeline.js +139 -45
- package/Source/Core/VectorProvider.js +311 -71
- package/Source/Core/WebAssemblyWorkerInitializer.js +125 -0
- package/Source/Core/fetchWebAssemblyBinary.js +52 -0
- package/Source/Renderer/AutomaticUniforms.js +44 -2
- package/Source/Renderer/ShaderBuilder.js +1 -1
- package/Source/Renderer/UniformState.js +47 -1
- package/Source/Scene/ArcGisMapService.js +1 -1
- package/Source/Scene/BufferPointCollection.js +4 -7
- package/Source/Scene/BufferPolygonCollection.js +56 -27
- package/Source/Scene/BufferPolylineCollection.js +61 -8
- package/Source/Scene/BufferPolylineMaterial.js +6 -5
- package/Source/Scene/BufferPrimitiveCollection.js +199 -29
- package/Source/Scene/Cesium3DTile.js +12 -0
- package/Source/Scene/Cesium3DTileset.js +61 -8
- package/Source/Scene/Cesium3DTilesetBaseTraversal.js +15 -3
- package/Source/Scene/Cesium3DTilesetCache.js +15 -0
- package/Source/Scene/ClippingPolygon.js +154 -100
- package/Source/Scene/ClippingPolygonCollection.js +352 -694
- package/Source/Scene/CreditDisplay.js +62 -0
- package/Source/Scene/GaussianSplatPrimitive.js +153 -66
- package/Source/Scene/GeoJsonPrimitive.js +114 -24
- package/Source/Scene/GlobeSurfaceShaderSet.js +33 -54
- package/Source/Scene/GlobeSurfaceTile.js +14 -1
- package/Source/Scene/GlobeSurfaceTileProvider.js +232 -25
- package/Source/Scene/GltfBufferViewLoader.js +25 -13
- package/Source/Scene/GltfLoader.js +56 -6
- package/Source/Scene/GltfSpzLoader.js +5 -4
- package/Source/Scene/HeightReference.js +1 -1
- package/Source/Scene/MVTDataProvider.js +9 -0
- package/Source/Scene/Model/Model.js +242 -16
- package/Source/Scene/Model/Model3DTileContent.js +5 -0
- package/Source/Scene/Model/ModelClippingPolygonsPipelineStage.js +54 -19
- package/Source/Scene/Model/ModelRenderResources.js +2 -3
- package/Source/Scene/Model/ModelSceneGraph.js +10 -1
- package/Source/Scene/Model/ModelVectorLookupPipelineStage.js +205 -0
- package/Source/Scene/Model/PickingPipelineStage.js +4 -0
- package/Source/Scene/PostProcessStage.js +22 -3
- package/Source/Scene/Scene.js +56 -1
- package/Source/Scene/Snapping.js +57 -0
- package/Source/Scene/SpzDecoder.js +106 -0
- package/Source/Scene/UrlTemplate3DTilesDataProvider.js +12 -1
- package/Source/Scene/VectorGltf3DTileContent.js +10 -2
- package/Source/Scene/WebMapServiceImageryProvider.js +5 -1
- package/Source/Scene/WebMapTileServiceImageryProvider.js +6 -1
- package/Source/Scene/renderBufferPolylineCollection.js +5 -1
- package/Source/Shaders/BufferPolylineMaterialVS.glsl +14 -2
- package/Source/Shaders/BufferPolylineMaterialVS.js +14 -2
- package/Source/Shaders/Builtin/CzmBuiltins.js +2 -4
- package/Source/Shaders/Builtin/Functions/eyeToCartographicDelta.glsl +74 -0
- package/Source/Shaders/Builtin/Functions/eyeToCartographicDelta.js +76 -0
- package/Source/Shaders/GlobeFS.glsl +10 -9
- package/Source/Shaders/GlobeFS.js +11 -9
- package/Source/Shaders/GlobeVS.glsl +0 -32
- package/Source/Shaders/GlobeVS.js +0 -32
- package/Source/Shaders/Model/ModelClippingPolygonsStageFS.glsl +15 -3
- package/Source/Shaders/Model/ModelClippingPolygonsStageFS.js +15 -3
- package/Source/Shaders/Model/ModelClippingPolygonsStageVS.glsl +20 -24
- package/Source/Shaders/Model/ModelClippingPolygonsStageVS.js +20 -24
- package/Source/Shaders/Model/ModelFS.glsl +4 -0
- package/Source/Shaders/Model/ModelFS.js +4 -0
- package/Source/Shaders/Model/ModelVS.glsl +7 -2
- package/Source/Shaders/Model/ModelVS.js +7 -2
- package/Source/Shaders/Model/ModelVectorLookupStageFS.glsl +6 -0
- package/Source/Shaders/Model/ModelVectorLookupStageFS.js +8 -0
- package/Source/Shaders/Model/ModelVectorLookupStageVS.glsl +15 -0
- package/Source/Shaders/Model/ModelVectorLookupStageVS.js +17 -0
- package/Source/Shaders/Model/VerticalExaggerationStageVS.glsl +9 -10
- package/Source/Shaders/Model/VerticalExaggerationStageVS.js +9 -11
- package/Source/Shaders/VectorCommon.glsl +177 -50
- package/Source/Shaders/VectorCommon.js +251 -19
- package/Source/ThirdParty/Workers/zip-web-worker.js +1 -1
- package/Source/ThirdParty/zip-module.wasm +0 -0
- package/Source/Workers/createTaskProcessorWorker.js +2 -0
- package/Source/Workers/createVerticesFromCesium3DTilesTerrain.js +13 -1
- package/Source/Workers/decodeDraco.js +7 -3
- package/Source/Workers/decodeI3S.js +7 -3
- package/Source/Workers/decodeMeshopt.js +21 -0
- package/Source/Workers/decodeSpz.js +20 -0
- package/Source/Workers/gaussianSplatSorter.js +7 -3
- package/Source/Workers/gaussianSplatTextureGenerator.js +7 -3
- package/Source/Workers/transcodeKTX2.js +22 -5
- package/index.d.ts +649 -55
- package/index.js +23 -13
- package/package.json +6 -6
- package/Build/Workers/chunk-2EFYUSUY.js +0 -1483
- package/Build/Workers/chunk-2H5264K7.js +0 -1284
- package/Build/Workers/chunk-2H73KDBM.js +0 -511
- package/Build/Workers/chunk-2ZKH2QZB.js +0 -387
- package/Build/Workers/chunk-36NI5E6W.js +0 -3820
- package/Build/Workers/chunk-37SW7SYS.js +0 -778
- package/Build/Workers/chunk-3GHVJ3SO.js +0 -455
- package/Build/Workers/chunk-3LB4UVPU.js +0 -387
- package/Build/Workers/chunk-3PONLKEL.js +0 -778
- package/Build/Workers/chunk-3QR662HH.js +0 -3820
- package/Build/Workers/chunk-3SX2WYSO.js +0 -973
- package/Build/Workers/chunk-3UDN6LYX.js +0 -476
- package/Build/Workers/chunk-47MCBSXI.js +0 -9237
- package/Build/Workers/chunk-4E626OCE.js +0 -1067
- package/Build/Workers/chunk-4NW2MJKH.js +0 -455
- package/Build/Workers/chunk-52YK5BSN.js +0 -198
- package/Build/Workers/chunk-5RNAQZK6.js +0 -9234
- package/Build/Workers/chunk-5YPQBFRD.js +0 -519
- package/Build/Workers/chunk-6FHT43QR.js +0 -140
- package/Build/Workers/chunk-6HK6IXK2.js +0 -138
- package/Build/Workers/chunk-6R5X2GUA.js +0 -1284
- package/Build/Workers/chunk-7A2OGDHT.js +0 -305
- package/Build/Workers/chunk-7CGEQUM2.js +0 -305
- package/Build/Workers/chunk-7D2HZKH7.js +0 -455
- package/Build/Workers/chunk-7I325HV6.js +0 -1344
- package/Build/Workers/chunk-7KVKHY7O.js +0 -147
- package/Build/Workers/chunk-7TKLTCZW.js +0 -219
- package/Build/Workers/chunk-7UUKBDH6.js +0 -1054
- package/Build/Workers/chunk-7W6DUHAB.js +0 -693
- package/Build/Workers/chunk-7XM5JK5F.js +0 -162
- package/Build/Workers/chunk-7YG3ND3P.js +0 -454
- package/Build/Workers/chunk-A3O6EDBK.js +0 -73
- package/Build/Workers/chunk-A6X24AZI.js +0 -1992
- package/Build/Workers/chunk-A7TTWVTF.js +0 -2719
- package/Build/Workers/chunk-ADX3CBKD.js +0 -9234
- package/Build/Workers/chunk-AF7DTMJ7.js +0 -398
- package/Build/Workers/chunk-AHWAZRBV.js +0 -82
- package/Build/Workers/chunk-AJSFRY4U.js +0 -1344
- package/Build/Workers/chunk-B4CQSLZJ.js +0 -305
- package/Build/Workers/chunk-BKPQFCXH.js +0 -511
- package/Build/Workers/chunk-BSPCI2LO.js +0 -959
- package/Build/Workers/chunk-BUJWSX5S.js +0 -301
- package/Build/Workers/chunk-C7JQVRLM.js +0 -497
- package/Build/Workers/chunk-C7QDUNI3.js +0 -138
- package/Build/Workers/chunk-CEEZE3YZ.js +0 -476
- package/Build/Workers/chunk-CIV5DJOQ.js +0 -778
- package/Build/Workers/chunk-CLCTQVVL.js +0 -241
- package/Build/Workers/chunk-CQNFIAZU.js +0 -56
- package/Build/Workers/chunk-DBD5WWG2.js +0 -959
- package/Build/Workers/chunk-DZBQUULR.js +0 -138
- package/Build/Workers/chunk-E2NKV5YT.js +0 -3820
- package/Build/Workers/chunk-E7NZJOK7.js +0 -3792
- package/Build/Workers/chunk-EB3Y5P3A.js +0 -368
- package/Build/Workers/chunk-EHTS2YPT.js +0 -2719
- package/Build/Workers/chunk-ELE6SC2C.js +0 -837
- package/Build/Workers/chunk-ENNFMWDW.js +0 -789
- package/Build/Workers/chunk-EOWDZN5S.js +0 -288
- package/Build/Workers/chunk-ERKUET22.js +0 -3201
- package/Build/Workers/chunk-F2IMBMZY.js +0 -241
- package/Build/Workers/chunk-F4CSNRZO.js +0 -219
- package/Build/Workers/chunk-FBP4DUQJ.js +0 -693
- package/Build/Workers/chunk-FDK4K5IA.js +0 -280
- package/Build/Workers/chunk-FGQFQHN5.js +0 -1054
- package/Build/Workers/chunk-FJWZMGOQ.js +0 -1992
- package/Build/Workers/chunk-FQ42MT7M.js +0 -58
- package/Build/Workers/chunk-GGNWQWSB.js +0 -301
- package/Build/Workers/chunk-GNKXEN4C.js +0 -682
- package/Build/Workers/chunk-GSWMAFTE.js +0 -9230
- package/Build/Workers/chunk-GXDHRC4J.js +0 -1344
- package/Build/Workers/chunk-GYSYP6PC.js +0 -1067
- package/Build/Workers/chunk-H2WCFXLP.js +0 -241
- package/Build/Workers/chunk-HHV3MCGV.js +0 -162
- package/Build/Workers/chunk-HLW2ZRVK.js +0 -368
- package/Build/Workers/chunk-HS6AD4P2.js +0 -398
- package/Build/Workers/chunk-HT6FASOT.js +0 -973
- package/Build/Workers/chunk-IDVHUDZT.js +0 -352
- package/Build/Workers/chunk-IGAZBTFZ.js +0 -3201
- package/Build/Workers/chunk-ILME5BXA.js +0 -301
- package/Build/Workers/chunk-IOO7Z2AV.js +0 -57
- package/Build/Workers/chunk-IUIFLOYO.js +0 -44
- package/Build/Workers/chunk-J73T2VOY.js +0 -171
- package/Build/Workers/chunk-JALGQYDY.js +0 -288
- package/Build/Workers/chunk-JW6OZT4R.js +0 -288
- package/Build/Workers/chunk-JXYLJCTC.js +0 -124
- package/Build/Workers/chunk-K27QOAW6.js +0 -97
- package/Build/Workers/chunk-KMV25A63.js +0 -789
- package/Build/Workers/chunk-KZWFWJML.js +0 -2719
- package/Build/Workers/chunk-LCXRRALY.js +0 -387
- package/Build/Workers/chunk-LD64RPYV.js +0 -368
- package/Build/Workers/chunk-LGNDTZVX.js +0 -97
- package/Build/Workers/chunk-LNSQVXFH.js +0 -1800
- package/Build/Workers/chunk-M4JZ6TSZ.js +0 -959
- package/Build/Workers/chunk-MCJDRDJQ.js +0 -102
- package/Build/Workers/chunk-MEENMEAH.js +0 -198
- package/Build/Workers/chunk-NAWU5RF4.js +0 -162
- package/Build/Workers/chunk-NIWITKQK.js +0 -693
- package/Build/Workers/chunk-OA6MYL2C.js +0 -837
- package/Build/Workers/chunk-OBEU25PI.js +0 -1067
- package/Build/Workers/chunk-OHP4ELS7.js +0 -198
- package/Build/Workers/chunk-PCL3Y7H5.js +0 -82
- package/Build/Workers/chunk-PD4GK4EM.js +0 -57
- package/Build/Workers/chunk-PEDU33QG.js +0 -2342
- package/Build/Workers/chunk-PVTSNNVI.js +0 -288
- package/Build/Workers/chunk-QHPZH22L.js +0 -241
- package/Build/Workers/chunk-QIZDWZK6.js +0 -301
- package/Build/Workers/chunk-QV6DG2YX.js +0 -1483
- package/Build/Workers/chunk-QVLAFFJY.js +0 -56
- package/Build/Workers/chunk-R4FPNAZ2.js +0 -352
- package/Build/Workers/chunk-R4K7EHOU.js +0 -171
- package/Build/Workers/chunk-R7JGHDD6.js +0 -789
- package/Build/Workers/chunk-RASQEYD4.js +0 -1483
- package/Build/Workers/chunk-RG4F5R57.js +0 -454
- package/Build/Workers/chunk-RW6ITX7Q.js +0 -3820
- package/Build/Workers/chunk-RYSQVJR6.js +0 -398
- package/Build/Workers/chunk-S6RJU5NM.js +0 -1054
- package/Build/Workers/chunk-SDFHDNS4.js +0 -147
- package/Build/Workers/chunk-SF6K72D7.js +0 -124
- package/Build/Workers/chunk-SGRGNDOD.js +0 -682
- package/Build/Workers/chunk-SM2CDCYF.js +0 -198
- package/Build/Workers/chunk-SS5ABQGY.js +0 -102
- package/Build/Workers/chunk-T5QBPLE3.js +0 -414
- package/Build/Workers/chunk-TN35HP5B.js +0 -1067
- package/Build/Workers/chunk-TNWKJNUZ.js +0 -454
- package/Build/Workers/chunk-TOAF47AQ.js +0 -102
- package/Build/Workers/chunk-TQ4QCOXT.js +0 -2719
- package/Build/Workers/chunk-TSDSILQB.js +0 -124
- package/Build/Workers/chunk-TVZD72WJ.js +0 -778
- package/Build/Workers/chunk-U5LV3F3Z.js +0 -1054
- package/Build/Workers/chunk-UEY73NRN.js +0 -38
- package/Build/Workers/chunk-UF46SZEZ.js +0 -789
- package/Build/Workers/chunk-UNRTMCET.js +0 -398
- package/Build/Workers/chunk-UTB7U3O6.js +0 -1992
- package/Build/Workers/chunk-UVO6COT2.js +0 -352
- package/Build/Workers/chunk-V46YGZE6.js +0 -352
- package/Build/Workers/chunk-VAL7DYNR.js +0 -278
- package/Build/Workers/chunk-VDGOCROW.js +0 -57
- package/Build/Workers/chunk-VFWSSBPT.js +0 -511
- package/Build/Workers/chunk-VVYMXI3I.js +0 -1284
- package/Build/Workers/chunk-VXWHPYQM.js +0 -837
- package/Build/Workers/chunk-VXYUBRSB.js +0 -219
- package/Build/Workers/chunk-VZLDLEWI.js +0 -387
- package/Build/Workers/chunk-W5OCKMPJ.js +0 -101
- package/Build/Workers/chunk-WBSY7HDY.js +0 -837
- package/Build/Workers/chunk-WN3F4CVG.js +0 -3201
- package/Build/Workers/chunk-WPRUWXGV.js +0 -693
- package/Build/Workers/chunk-WTO2ERBP.js +0 -414
- package/Build/Workers/chunk-WVHMDVG4.js +0 -959
- package/Build/Workers/chunk-XGA23TAX.js +0 -73
- package/Build/Workers/chunk-XLQZNQ4Z.js +0 -163
- package/Build/Workers/chunk-XLXSDIP5.js +0 -973
- package/Build/Workers/chunk-XQ3SKCMM.js +0 -140
- package/Build/Workers/chunk-XQH66YJC.js +0 -147
- package/Build/Workers/chunk-XTA7BXJG.js +0 -682
- package/Build/Workers/chunk-XTIDAFRS.js +0 -476
- package/Build/Workers/chunk-XUEDWBUD.js +0 -682
- package/Build/Workers/chunk-XYFLRH3H.js +0 -124
- package/Build/Workers/chunk-Y7JRTRTO.js +0 -305
- package/Build/Workers/chunk-Y7QSMDCJ.js +0 -352
- package/Build/Workers/chunk-YCB5TYTR.js +0 -1483
- package/Build/Workers/chunk-YEYOSTJX.js +0 -219
- package/Build/Workers/chunk-YGFVAGYF.js +0 -630
- package/Build/Workers/chunk-YIIACKQO.js +0 -368
- package/Build/Workers/chunk-YJGSP6PE.js +0 -511
- package/Build/Workers/chunk-YKU2Q3A2.js +0 -1287
- package/Build/Workers/chunk-Z4LR5EHE.js +0 -454
- package/Build/Workers/chunk-Z66EVE2A.js +0 -44
- package/Build/Workers/chunk-ZHIHHHTB.js +0 -414
- package/Build/Workers/chunk-ZMBHFYOX.js +0 -1344
- package/Build/Workers/chunk-ZNWHFSLE.js +0 -171
- package/Build/Workers/chunk-ZQLZG4IN.js +0 -2342
- package/Build/Workers/chunk-ZRTSMUZ2.js +0 -414
- package/Build/Workers/chunk-ZSGUV73H.js +0 -2342
- package/Build/Workers/chunk-ZZUVT5BM.js +0 -476
- package/Source/Shaders/Builtin/Functions/clipPolygons.glsl +0 -37
- package/Source/Shaders/Builtin/Functions/clipPolygons.js +0 -39
- package/Source/Shaders/Builtin/Functions/unpackClippingExtents.glsl +0 -14
- package/Source/Shaders/Builtin/Functions/unpackClippingExtents.js +0 -15
- package/Source/Shaders/PolygonSignedDistanceFS.glsl +0 -131
- package/Source/Shaders/PolygonSignedDistanceFS.js +0 -132
|
@@ -0,0 +1,2131 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Cesium - https://github.com/CesiumGS/cesium
|
|
4
|
+
* Version 1.145.1-wasm.0
|
|
5
|
+
*
|
|
6
|
+
* Copyright 2011-2022 Cesium Contributors
|
|
7
|
+
*
|
|
8
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
9
|
+
* you may not use this file except in compliance with the License.
|
|
10
|
+
* You may obtain a copy of the License at
|
|
11
|
+
*
|
|
12
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
13
|
+
*
|
|
14
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
15
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
16
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
17
|
+
* See the License for the specific language governing permissions and
|
|
18
|
+
* limitations under the License.
|
|
19
|
+
*
|
|
20
|
+
* Columbus View (Pat. Pend.)
|
|
21
|
+
*
|
|
22
|
+
* Portions licensed separately.
|
|
23
|
+
* See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details.
|
|
24
|
+
*/
|
|
25
|
+
|
|
26
|
+
import {
|
|
27
|
+
Frozen_default,
|
|
28
|
+
Math_default
|
|
29
|
+
} from "./chunk-P4SDLSGF.js";
|
|
30
|
+
import {
|
|
31
|
+
Check_default,
|
|
32
|
+
RuntimeError_default
|
|
33
|
+
} from "./chunk-PPRK3XQU.js";
|
|
34
|
+
import {
|
|
35
|
+
DeveloperError_default,
|
|
36
|
+
TrustedServers_default,
|
|
37
|
+
__toESM,
|
|
38
|
+
defined_default,
|
|
39
|
+
require_URI
|
|
40
|
+
} from "./chunk-YUICDZKO.js";
|
|
41
|
+
|
|
42
|
+
// packages/engine/Source/Core/combine.js
|
|
43
|
+
function combine(object1, object2, deep) {
|
|
44
|
+
deep = deep ?? false;
|
|
45
|
+
const result = {};
|
|
46
|
+
const object1Defined = defined_default(object1);
|
|
47
|
+
const object2Defined = defined_default(object2);
|
|
48
|
+
let property;
|
|
49
|
+
let object1Value;
|
|
50
|
+
let object2Value;
|
|
51
|
+
if (object1Defined) {
|
|
52
|
+
for (property in object1) {
|
|
53
|
+
if (object1.hasOwnProperty(property)) {
|
|
54
|
+
object1Value = object1[property];
|
|
55
|
+
if (object2Defined && deep && typeof object1Value === "object" && object2.hasOwnProperty(property)) {
|
|
56
|
+
object2Value = object2[property];
|
|
57
|
+
if (typeof object2Value === "object") {
|
|
58
|
+
result[property] = combine(object1Value, object2Value, deep);
|
|
59
|
+
} else {
|
|
60
|
+
result[property] = object1Value;
|
|
61
|
+
}
|
|
62
|
+
} else {
|
|
63
|
+
result[property] = object1Value;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
if (object2Defined) {
|
|
69
|
+
for (property in object2) {
|
|
70
|
+
if (object2.hasOwnProperty(property) && !result.hasOwnProperty(property)) {
|
|
71
|
+
object2Value = object2[property];
|
|
72
|
+
result[property] = object2Value;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
return result;
|
|
77
|
+
}
|
|
78
|
+
var combine_default = combine;
|
|
79
|
+
|
|
80
|
+
// packages/engine/Source/Core/Resource.js
|
|
81
|
+
var import_urijs5 = __toESM(require_URI(), 1);
|
|
82
|
+
|
|
83
|
+
// packages/engine/Source/Core/appendForwardSlash.js
|
|
84
|
+
function appendForwardSlash(url) {
|
|
85
|
+
if (url.length === 0 || url[url.length - 1] !== "/") {
|
|
86
|
+
url = `${url}/`;
|
|
87
|
+
}
|
|
88
|
+
return url;
|
|
89
|
+
}
|
|
90
|
+
var appendForwardSlash_default = appendForwardSlash;
|
|
91
|
+
|
|
92
|
+
// packages/engine/Source/Core/clone.js
|
|
93
|
+
function clone(object, deep) {
|
|
94
|
+
if (object === null || typeof object !== "object") {
|
|
95
|
+
return object;
|
|
96
|
+
}
|
|
97
|
+
deep = deep ?? false;
|
|
98
|
+
const result = new object.constructor();
|
|
99
|
+
for (const propertyName in object) {
|
|
100
|
+
if (object.hasOwnProperty(propertyName)) {
|
|
101
|
+
let value = object[propertyName];
|
|
102
|
+
if (deep) {
|
|
103
|
+
value = clone(value, deep);
|
|
104
|
+
}
|
|
105
|
+
result[propertyName] = value;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
return result;
|
|
109
|
+
}
|
|
110
|
+
var clone_default = clone;
|
|
111
|
+
|
|
112
|
+
// packages/engine/Source/Core/defer.js
|
|
113
|
+
function defer() {
|
|
114
|
+
let resolve;
|
|
115
|
+
let reject;
|
|
116
|
+
const promise = new Promise(function(res, rej) {
|
|
117
|
+
resolve = res;
|
|
118
|
+
reject = rej;
|
|
119
|
+
});
|
|
120
|
+
return {
|
|
121
|
+
resolve,
|
|
122
|
+
reject,
|
|
123
|
+
promise
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
var defer_default = defer;
|
|
127
|
+
|
|
128
|
+
// packages/engine/Source/Core/getAbsoluteUri.js
|
|
129
|
+
var import_urijs = __toESM(require_URI(), 1);
|
|
130
|
+
function getAbsoluteUri(relative, base) {
|
|
131
|
+
let documentObject;
|
|
132
|
+
if (typeof document !== "undefined") {
|
|
133
|
+
documentObject = document;
|
|
134
|
+
}
|
|
135
|
+
return getAbsoluteUri._implementation(relative, base, documentObject);
|
|
136
|
+
}
|
|
137
|
+
getAbsoluteUri._implementation = function(relative, base, documentObject) {
|
|
138
|
+
if (!defined_default(relative)) {
|
|
139
|
+
throw new DeveloperError_default("relative uri is required.");
|
|
140
|
+
}
|
|
141
|
+
if (!defined_default(base)) {
|
|
142
|
+
if (typeof documentObject === "undefined") {
|
|
143
|
+
return relative;
|
|
144
|
+
}
|
|
145
|
+
base = documentObject.baseURI ?? documentObject.location.href;
|
|
146
|
+
}
|
|
147
|
+
const relativeUri = new import_urijs.default(relative);
|
|
148
|
+
if (relativeUri.scheme() !== "") {
|
|
149
|
+
return relativeUri.toString();
|
|
150
|
+
}
|
|
151
|
+
return relativeUri.absoluteTo(base).toString();
|
|
152
|
+
};
|
|
153
|
+
var getAbsoluteUri_default = getAbsoluteUri;
|
|
154
|
+
|
|
155
|
+
// packages/engine/Source/Core/getBaseUri.js
|
|
156
|
+
var import_urijs2 = __toESM(require_URI(), 1);
|
|
157
|
+
function getBaseUri(uri, includeQuery) {
|
|
158
|
+
if (!defined_default(uri)) {
|
|
159
|
+
throw new DeveloperError_default("uri is required.");
|
|
160
|
+
}
|
|
161
|
+
let basePath = "";
|
|
162
|
+
const i = uri.lastIndexOf("/");
|
|
163
|
+
if (i !== -1) {
|
|
164
|
+
basePath = uri.substring(0, i + 1);
|
|
165
|
+
}
|
|
166
|
+
if (!includeQuery) {
|
|
167
|
+
return basePath;
|
|
168
|
+
}
|
|
169
|
+
uri = new import_urijs2.default(uri);
|
|
170
|
+
if (uri.query().length !== 0) {
|
|
171
|
+
basePath += `?${uri.query()}`;
|
|
172
|
+
}
|
|
173
|
+
if (uri.fragment().length !== 0) {
|
|
174
|
+
basePath += `#${uri.fragment()}`;
|
|
175
|
+
}
|
|
176
|
+
return basePath;
|
|
177
|
+
}
|
|
178
|
+
var getBaseUri_default = getBaseUri;
|
|
179
|
+
|
|
180
|
+
// packages/engine/Source/Core/getExtensionFromUri.js
|
|
181
|
+
var import_urijs3 = __toESM(require_URI(), 1);
|
|
182
|
+
function getExtensionFromUri(uri) {
|
|
183
|
+
if (!defined_default(uri)) {
|
|
184
|
+
throw new DeveloperError_default("uri is required.");
|
|
185
|
+
}
|
|
186
|
+
const uriObject = new import_urijs3.default(uri);
|
|
187
|
+
uriObject.normalize();
|
|
188
|
+
let path = uriObject.path();
|
|
189
|
+
let index = path.lastIndexOf("/");
|
|
190
|
+
if (index !== -1) {
|
|
191
|
+
path = path.substr(index + 1);
|
|
192
|
+
}
|
|
193
|
+
index = path.lastIndexOf(".");
|
|
194
|
+
if (index === -1) {
|
|
195
|
+
path = "";
|
|
196
|
+
} else {
|
|
197
|
+
path = path.substr(index + 1);
|
|
198
|
+
}
|
|
199
|
+
return path;
|
|
200
|
+
}
|
|
201
|
+
var getExtensionFromUri_default = getExtensionFromUri;
|
|
202
|
+
|
|
203
|
+
// packages/engine/Source/Core/getImagePixels.js
|
|
204
|
+
var context2DsByWidthAndHeight = {};
|
|
205
|
+
function getImagePixels(image, width, height) {
|
|
206
|
+
if (!defined_default(width)) {
|
|
207
|
+
width = image.width;
|
|
208
|
+
}
|
|
209
|
+
if (!defined_default(height)) {
|
|
210
|
+
height = image.height;
|
|
211
|
+
}
|
|
212
|
+
let context2DsByHeight = context2DsByWidthAndHeight[width];
|
|
213
|
+
if (!defined_default(context2DsByHeight)) {
|
|
214
|
+
context2DsByHeight = {};
|
|
215
|
+
context2DsByWidthAndHeight[width] = context2DsByHeight;
|
|
216
|
+
}
|
|
217
|
+
let context2d = context2DsByHeight[height];
|
|
218
|
+
if (!defined_default(context2d)) {
|
|
219
|
+
const canvas = document.createElement("canvas");
|
|
220
|
+
canvas.width = width;
|
|
221
|
+
canvas.height = height;
|
|
222
|
+
context2d = canvas.getContext("2d", { willReadFrequently: true });
|
|
223
|
+
context2d.globalCompositeOperation = "copy";
|
|
224
|
+
context2DsByHeight[height] = context2d;
|
|
225
|
+
}
|
|
226
|
+
context2d.drawImage(image, 0, 0, width, height);
|
|
227
|
+
return context2d.getImageData(0, 0, width, height).data;
|
|
228
|
+
}
|
|
229
|
+
var getImagePixels_default = getImagePixels;
|
|
230
|
+
|
|
231
|
+
// packages/engine/Source/Core/isBlobUri.js
|
|
232
|
+
var blobUriRegex = /^blob:/i;
|
|
233
|
+
function isBlobUri(uri) {
|
|
234
|
+
Check_default.typeOf.string("uri", uri);
|
|
235
|
+
return blobUriRegex.test(uri);
|
|
236
|
+
}
|
|
237
|
+
var isBlobUri_default = isBlobUri;
|
|
238
|
+
|
|
239
|
+
// packages/engine/Source/Core/isCrossOriginUrl.js
|
|
240
|
+
var a;
|
|
241
|
+
function isCrossOriginUrl(url) {
|
|
242
|
+
if (!defined_default(a)) {
|
|
243
|
+
a = document.createElement("a");
|
|
244
|
+
}
|
|
245
|
+
a.href = window.location.href;
|
|
246
|
+
const host = a.host;
|
|
247
|
+
const protocol = a.protocol;
|
|
248
|
+
a.href = url;
|
|
249
|
+
a.href = a.href;
|
|
250
|
+
return protocol !== a.protocol || host !== a.host;
|
|
251
|
+
}
|
|
252
|
+
var isCrossOriginUrl_default = isCrossOriginUrl;
|
|
253
|
+
|
|
254
|
+
// packages/engine/Source/Core/isDataUri.js
|
|
255
|
+
var dataUriRegex = /^data:/i;
|
|
256
|
+
function isDataUri(uri) {
|
|
257
|
+
Check_default.typeOf.string("uri", uri);
|
|
258
|
+
return dataUriRegex.test(uri);
|
|
259
|
+
}
|
|
260
|
+
var isDataUri_default = isDataUri;
|
|
261
|
+
|
|
262
|
+
// packages/engine/Source/Core/loadAndExecuteScript.js
|
|
263
|
+
function loadAndExecuteScript(url) {
|
|
264
|
+
const script = document.createElement("script");
|
|
265
|
+
script.async = true;
|
|
266
|
+
script.src = url;
|
|
267
|
+
return new Promise((resolve, reject) => {
|
|
268
|
+
if (window.crossOriginIsolated) {
|
|
269
|
+
script.setAttribute("crossorigin", "anonymous");
|
|
270
|
+
}
|
|
271
|
+
const head = document.getElementsByTagName("head")[0];
|
|
272
|
+
script.onload = function() {
|
|
273
|
+
script.onload = void 0;
|
|
274
|
+
head.removeChild(script);
|
|
275
|
+
resolve();
|
|
276
|
+
};
|
|
277
|
+
script.onerror = function(e) {
|
|
278
|
+
reject(e);
|
|
279
|
+
};
|
|
280
|
+
head.appendChild(script);
|
|
281
|
+
});
|
|
282
|
+
}
|
|
283
|
+
var loadAndExecuteScript_default = loadAndExecuteScript;
|
|
284
|
+
|
|
285
|
+
// packages/engine/Source/Core/objectToQuery.js
|
|
286
|
+
function objectToQuery(obj) {
|
|
287
|
+
if (!defined_default(obj)) {
|
|
288
|
+
throw new DeveloperError_default("obj is required.");
|
|
289
|
+
}
|
|
290
|
+
let result = "";
|
|
291
|
+
for (const propName in obj) {
|
|
292
|
+
if (obj.hasOwnProperty(propName)) {
|
|
293
|
+
const value = obj[propName];
|
|
294
|
+
const part = `${encodeURIComponent(propName)}=`;
|
|
295
|
+
if (Array.isArray(value)) {
|
|
296
|
+
for (let i = 0, len = value.length; i < len; ++i) {
|
|
297
|
+
result += `${part + encodeURIComponent(value[i])}&`;
|
|
298
|
+
}
|
|
299
|
+
} else {
|
|
300
|
+
result += `${part + encodeURIComponent(value)}&`;
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
result = result.slice(0, -1);
|
|
305
|
+
return result;
|
|
306
|
+
}
|
|
307
|
+
var objectToQuery_default = objectToQuery;
|
|
308
|
+
|
|
309
|
+
// packages/engine/Source/Core/queryToObject.js
|
|
310
|
+
function queryToObject(queryString) {
|
|
311
|
+
if (!defined_default(queryString)) {
|
|
312
|
+
throw new DeveloperError_default("queryString is required.");
|
|
313
|
+
}
|
|
314
|
+
const result = {};
|
|
315
|
+
if (queryString === "") {
|
|
316
|
+
return result;
|
|
317
|
+
}
|
|
318
|
+
const parts = queryString.replace(/\+/g, "%20").split(/[&;]/);
|
|
319
|
+
for (let i = 0, len = parts.length; i < len; ++i) {
|
|
320
|
+
const subparts = parts[i].split("=");
|
|
321
|
+
const name = decodeURIComponent(subparts[0]);
|
|
322
|
+
let value = subparts[1];
|
|
323
|
+
if (defined_default(value)) {
|
|
324
|
+
value = decodeURIComponent(value);
|
|
325
|
+
} else {
|
|
326
|
+
value = "";
|
|
327
|
+
}
|
|
328
|
+
const resultValue = result[name];
|
|
329
|
+
if (typeof resultValue === "string") {
|
|
330
|
+
result[name] = [resultValue, value];
|
|
331
|
+
} else if (Array.isArray(resultValue)) {
|
|
332
|
+
resultValue.push(value);
|
|
333
|
+
} else {
|
|
334
|
+
result[name] = value;
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
return result;
|
|
338
|
+
}
|
|
339
|
+
var queryToObject_default = queryToObject;
|
|
340
|
+
|
|
341
|
+
// packages/engine/Source/Core/RequestState.js
|
|
342
|
+
var RequestState = {
|
|
343
|
+
/**
|
|
344
|
+
* Initial unissued state.
|
|
345
|
+
*
|
|
346
|
+
* @type {number}
|
|
347
|
+
* @constant
|
|
348
|
+
*/
|
|
349
|
+
UNISSUED: 0,
|
|
350
|
+
/**
|
|
351
|
+
* Issued but not yet active. Will become active when open slots are available.
|
|
352
|
+
*
|
|
353
|
+
* @type {number}
|
|
354
|
+
* @constant
|
|
355
|
+
*/
|
|
356
|
+
ISSUED: 1,
|
|
357
|
+
/**
|
|
358
|
+
* Actual http request has been sent.
|
|
359
|
+
*
|
|
360
|
+
* @type {number}
|
|
361
|
+
* @constant
|
|
362
|
+
*/
|
|
363
|
+
ACTIVE: 2,
|
|
364
|
+
/**
|
|
365
|
+
* Request completed successfully.
|
|
366
|
+
*
|
|
367
|
+
* @type {number}
|
|
368
|
+
* @constant
|
|
369
|
+
*/
|
|
370
|
+
RECEIVED: 3,
|
|
371
|
+
/**
|
|
372
|
+
* Request was cancelled, either explicitly or automatically because of low priority.
|
|
373
|
+
*
|
|
374
|
+
* @type {number}
|
|
375
|
+
* @constant
|
|
376
|
+
*/
|
|
377
|
+
CANCELLED: 4,
|
|
378
|
+
/**
|
|
379
|
+
* Request failed.
|
|
380
|
+
*
|
|
381
|
+
* @type {number}
|
|
382
|
+
* @constant
|
|
383
|
+
*/
|
|
384
|
+
FAILED: 5
|
|
385
|
+
};
|
|
386
|
+
Object.freeze(RequestState);
|
|
387
|
+
var RequestState_default = RequestState;
|
|
388
|
+
|
|
389
|
+
// packages/engine/Source/Core/RequestType.js
|
|
390
|
+
var RequestType = {
|
|
391
|
+
/**
|
|
392
|
+
* Terrain request.
|
|
393
|
+
*
|
|
394
|
+
* @type {number}
|
|
395
|
+
* @constant
|
|
396
|
+
*/
|
|
397
|
+
TERRAIN: 0,
|
|
398
|
+
/**
|
|
399
|
+
* Imagery request.
|
|
400
|
+
*
|
|
401
|
+
* @type {number}
|
|
402
|
+
* @constant
|
|
403
|
+
*/
|
|
404
|
+
IMAGERY: 1,
|
|
405
|
+
/**
|
|
406
|
+
* 3D Tiles request.
|
|
407
|
+
*
|
|
408
|
+
* @type {number}
|
|
409
|
+
* @constant
|
|
410
|
+
*/
|
|
411
|
+
TILES3D: 2,
|
|
412
|
+
/**
|
|
413
|
+
* Other request.
|
|
414
|
+
*
|
|
415
|
+
* @type {number}
|
|
416
|
+
* @constant
|
|
417
|
+
*/
|
|
418
|
+
OTHER: 3
|
|
419
|
+
};
|
|
420
|
+
Object.freeze(RequestType);
|
|
421
|
+
var RequestType_default = RequestType;
|
|
422
|
+
|
|
423
|
+
// packages/engine/Source/Core/Request.js
|
|
424
|
+
function Request(options) {
|
|
425
|
+
options = options ?? Frozen_default.EMPTY_OBJECT;
|
|
426
|
+
const throttleByServer = options.throttleByServer ?? false;
|
|
427
|
+
const throttle = options.throttle ?? false;
|
|
428
|
+
this.url = options.url;
|
|
429
|
+
this.requestFunction = options.requestFunction;
|
|
430
|
+
this.cancelFunction = options.cancelFunction;
|
|
431
|
+
this.priorityFunction = options.priorityFunction;
|
|
432
|
+
this.priority = options.priority ?? 0;
|
|
433
|
+
this.throttle = throttle;
|
|
434
|
+
this.throttleByServer = throttleByServer;
|
|
435
|
+
this.type = options.type ?? RequestType_default.OTHER;
|
|
436
|
+
this.serverKey = options.serverKey;
|
|
437
|
+
this.state = RequestState_default.UNISSUED;
|
|
438
|
+
this.deferred = void 0;
|
|
439
|
+
this.cancelled = false;
|
|
440
|
+
}
|
|
441
|
+
Request.prototype.cancel = function() {
|
|
442
|
+
this.cancelled = true;
|
|
443
|
+
};
|
|
444
|
+
Request.prototype.clone = function(result) {
|
|
445
|
+
if (!defined_default(result)) {
|
|
446
|
+
return new Request(this);
|
|
447
|
+
}
|
|
448
|
+
result.url = this.url;
|
|
449
|
+
result.requestFunction = this.requestFunction;
|
|
450
|
+
result.cancelFunction = this.cancelFunction;
|
|
451
|
+
result.priorityFunction = this.priorityFunction;
|
|
452
|
+
result.priority = this.priority;
|
|
453
|
+
result.throttle = this.throttle;
|
|
454
|
+
result.throttleByServer = this.throttleByServer;
|
|
455
|
+
result.type = this.type;
|
|
456
|
+
result.serverKey = this.serverKey;
|
|
457
|
+
result.state = RequestState_default.UNISSUED;
|
|
458
|
+
result.deferred = void 0;
|
|
459
|
+
result.cancelled = false;
|
|
460
|
+
return result;
|
|
461
|
+
};
|
|
462
|
+
var Request_default = Request;
|
|
463
|
+
|
|
464
|
+
// packages/engine/Source/Core/parseResponseHeaders.js
|
|
465
|
+
function parseResponseHeaders(headerString) {
|
|
466
|
+
const headers = {};
|
|
467
|
+
if (!headerString) {
|
|
468
|
+
return headers;
|
|
469
|
+
}
|
|
470
|
+
const headerPairs = headerString.split("\r\n");
|
|
471
|
+
for (let i = 0; i < headerPairs.length; ++i) {
|
|
472
|
+
const headerPair = headerPairs[i];
|
|
473
|
+
const index = headerPair.indexOf(": ");
|
|
474
|
+
if (index > 0) {
|
|
475
|
+
const key = headerPair.substring(0, index);
|
|
476
|
+
const val = headerPair.substring(index + 2);
|
|
477
|
+
headers[key] = val;
|
|
478
|
+
}
|
|
479
|
+
}
|
|
480
|
+
return headers;
|
|
481
|
+
}
|
|
482
|
+
var parseResponseHeaders_default = parseResponseHeaders;
|
|
483
|
+
|
|
484
|
+
// packages/engine/Source/Core/RequestErrorEvent.js
|
|
485
|
+
function RequestErrorEvent(statusCode, response, responseHeaders) {
|
|
486
|
+
this.statusCode = statusCode;
|
|
487
|
+
this.response = response;
|
|
488
|
+
this.responseHeaders = responseHeaders;
|
|
489
|
+
if (typeof this.responseHeaders === "string") {
|
|
490
|
+
this.responseHeaders = parseResponseHeaders_default(this.responseHeaders);
|
|
491
|
+
}
|
|
492
|
+
}
|
|
493
|
+
RequestErrorEvent.prototype.toString = function() {
|
|
494
|
+
let str = "Request has failed.";
|
|
495
|
+
if (defined_default(this.statusCode)) {
|
|
496
|
+
str += ` Status Code: ${this.statusCode}`;
|
|
497
|
+
}
|
|
498
|
+
return str;
|
|
499
|
+
};
|
|
500
|
+
var RequestErrorEvent_default = RequestErrorEvent;
|
|
501
|
+
|
|
502
|
+
// packages/engine/Source/Core/RequestScheduler.js
|
|
503
|
+
var import_urijs4 = __toESM(require_URI(), 1);
|
|
504
|
+
|
|
505
|
+
// packages/engine/Source/Core/Event.js
|
|
506
|
+
function Event() {
|
|
507
|
+
this._listeners = /* @__PURE__ */ new Map();
|
|
508
|
+
this._toRemove = /* @__PURE__ */ new Map();
|
|
509
|
+
this._toAdd = /* @__PURE__ */ new Map();
|
|
510
|
+
this._invokingListeners = false;
|
|
511
|
+
this._listenerCount = 0;
|
|
512
|
+
}
|
|
513
|
+
Object.defineProperties(Event.prototype, {
|
|
514
|
+
/**
|
|
515
|
+
* The number of listeners currently subscribed to the event.
|
|
516
|
+
* @memberof Event.prototype
|
|
517
|
+
* @type {number}
|
|
518
|
+
* @readonly
|
|
519
|
+
*/
|
|
520
|
+
numberOfListeners: {
|
|
521
|
+
get: function() {
|
|
522
|
+
return this._listenerCount;
|
|
523
|
+
}
|
|
524
|
+
}
|
|
525
|
+
});
|
|
526
|
+
Event.prototype.addEventListener = function(listener, scope) {
|
|
527
|
+
Check_default.typeOf.func("listener", listener);
|
|
528
|
+
const event = this;
|
|
529
|
+
const listenerMap = event._invokingListeners ? event._toAdd : event._listeners;
|
|
530
|
+
const added = addEventListener(this, listenerMap, listener, scope);
|
|
531
|
+
if (added) {
|
|
532
|
+
event._listenerCount++;
|
|
533
|
+
}
|
|
534
|
+
return function() {
|
|
535
|
+
event.removeEventListener(listener, scope);
|
|
536
|
+
};
|
|
537
|
+
};
|
|
538
|
+
function addEventListener(event, listenerMap, listener, scope) {
|
|
539
|
+
if (!listenerMap.has(listener)) {
|
|
540
|
+
listenerMap.set(listener, /* @__PURE__ */ new Set());
|
|
541
|
+
}
|
|
542
|
+
const scopes = listenerMap.get(listener);
|
|
543
|
+
if (!scopes.has(scope)) {
|
|
544
|
+
scopes.add(scope);
|
|
545
|
+
return true;
|
|
546
|
+
}
|
|
547
|
+
return false;
|
|
548
|
+
}
|
|
549
|
+
Event.prototype.removeEventListener = function(listener, scope) {
|
|
550
|
+
Check_default.typeOf.func("listener", listener);
|
|
551
|
+
const removedFromListeners = removeEventListener(
|
|
552
|
+
this,
|
|
553
|
+
this._listeners,
|
|
554
|
+
listener,
|
|
555
|
+
scope
|
|
556
|
+
);
|
|
557
|
+
const removedFromToAdd = removeEventListener(
|
|
558
|
+
this,
|
|
559
|
+
this._toAdd,
|
|
560
|
+
listener,
|
|
561
|
+
scope
|
|
562
|
+
);
|
|
563
|
+
const removed = removedFromListeners || removedFromToAdd;
|
|
564
|
+
if (removed) {
|
|
565
|
+
this._listenerCount--;
|
|
566
|
+
}
|
|
567
|
+
return removed;
|
|
568
|
+
};
|
|
569
|
+
function removeEventListener(event, listenerMap, listener, scope) {
|
|
570
|
+
const scopes = listenerMap.get(listener);
|
|
571
|
+
if (!scopes || !scopes.has(scope)) {
|
|
572
|
+
return false;
|
|
573
|
+
}
|
|
574
|
+
if (event._invokingListeners) {
|
|
575
|
+
if (!addEventListener(event, event._toRemove, listener, scope)) {
|
|
576
|
+
return false;
|
|
577
|
+
}
|
|
578
|
+
} else {
|
|
579
|
+
scopes.delete(scope);
|
|
580
|
+
if (scopes.size === 0) {
|
|
581
|
+
listenerMap.delete(listener);
|
|
582
|
+
}
|
|
583
|
+
}
|
|
584
|
+
return true;
|
|
585
|
+
}
|
|
586
|
+
Event.prototype.raiseEvent = function() {
|
|
587
|
+
this._invokingListeners = true;
|
|
588
|
+
for (const [listener, scopes] of this._listeners.entries()) {
|
|
589
|
+
if (!defined_default(listener)) {
|
|
590
|
+
continue;
|
|
591
|
+
}
|
|
592
|
+
for (const scope of scopes) {
|
|
593
|
+
listener.apply(scope, arguments);
|
|
594
|
+
}
|
|
595
|
+
}
|
|
596
|
+
this._invokingListeners = false;
|
|
597
|
+
for (const [listener, scopes] of this._toAdd.entries()) {
|
|
598
|
+
for (const scope of scopes) {
|
|
599
|
+
addEventListener(this, this._listeners, listener, scope);
|
|
600
|
+
}
|
|
601
|
+
}
|
|
602
|
+
this._toAdd.clear();
|
|
603
|
+
for (const [listener, scopes] of this._toRemove.entries()) {
|
|
604
|
+
for (const scope of scopes) {
|
|
605
|
+
removeEventListener(this, this._listeners, listener, scope);
|
|
606
|
+
}
|
|
607
|
+
}
|
|
608
|
+
this._toRemove.clear();
|
|
609
|
+
};
|
|
610
|
+
var Event_default = Event;
|
|
611
|
+
|
|
612
|
+
// packages/engine/Source/Core/Heap.js
|
|
613
|
+
function Heap(options) {
|
|
614
|
+
Check_default.typeOf.object("options", options);
|
|
615
|
+
Check_default.defined("options.comparator", options.comparator);
|
|
616
|
+
this._comparator = options.comparator;
|
|
617
|
+
this._array = [];
|
|
618
|
+
this._length = 0;
|
|
619
|
+
this._maximumLength = void 0;
|
|
620
|
+
}
|
|
621
|
+
Object.defineProperties(Heap.prototype, {
|
|
622
|
+
/**
|
|
623
|
+
* Gets the length of the heap.
|
|
624
|
+
*
|
|
625
|
+
* @memberof Heap.prototype
|
|
626
|
+
*
|
|
627
|
+
* @type {number}
|
|
628
|
+
* @readonly
|
|
629
|
+
*/
|
|
630
|
+
length: {
|
|
631
|
+
get: function() {
|
|
632
|
+
return this._length;
|
|
633
|
+
}
|
|
634
|
+
},
|
|
635
|
+
/**
|
|
636
|
+
* Gets the internal array.
|
|
637
|
+
*
|
|
638
|
+
* @memberof Heap.prototype
|
|
639
|
+
*
|
|
640
|
+
* @type {Array}
|
|
641
|
+
* @readonly
|
|
642
|
+
*/
|
|
643
|
+
internalArray: {
|
|
644
|
+
get: function() {
|
|
645
|
+
return this._array;
|
|
646
|
+
}
|
|
647
|
+
},
|
|
648
|
+
/**
|
|
649
|
+
* Gets and sets the maximum length of the heap.
|
|
650
|
+
*
|
|
651
|
+
* @memberof Heap.prototype
|
|
652
|
+
*
|
|
653
|
+
* @type {number}
|
|
654
|
+
*/
|
|
655
|
+
maximumLength: {
|
|
656
|
+
get: function() {
|
|
657
|
+
return this._maximumLength;
|
|
658
|
+
},
|
|
659
|
+
set: function(value) {
|
|
660
|
+
Check_default.typeOf.number.greaterThanOrEquals("maximumLength", value, 0);
|
|
661
|
+
const originalLength = this._length;
|
|
662
|
+
if (value < originalLength) {
|
|
663
|
+
const array = this._array;
|
|
664
|
+
for (let i = value; i < originalLength; ++i) {
|
|
665
|
+
array[i] = void 0;
|
|
666
|
+
}
|
|
667
|
+
this._length = value;
|
|
668
|
+
array.length = value;
|
|
669
|
+
}
|
|
670
|
+
this._maximumLength = value;
|
|
671
|
+
}
|
|
672
|
+
},
|
|
673
|
+
/**
|
|
674
|
+
* The comparator to use for the heap. If comparator(a, b) is less than 0, sort a to a lower index than b, otherwise sort to a higher index.
|
|
675
|
+
*
|
|
676
|
+
* @memberof Heap.prototype
|
|
677
|
+
*
|
|
678
|
+
* @type {Heap.ComparatorCallback}
|
|
679
|
+
*/
|
|
680
|
+
comparator: {
|
|
681
|
+
get: function() {
|
|
682
|
+
return this._comparator;
|
|
683
|
+
}
|
|
684
|
+
}
|
|
685
|
+
});
|
|
686
|
+
function swap(array, a2, b) {
|
|
687
|
+
const temp = array[a2];
|
|
688
|
+
array[a2] = array[b];
|
|
689
|
+
array[b] = temp;
|
|
690
|
+
}
|
|
691
|
+
Heap.prototype.reserve = function(length) {
|
|
692
|
+
length = length ?? this._length;
|
|
693
|
+
this._array.length = length;
|
|
694
|
+
};
|
|
695
|
+
Heap.prototype.heapify = function(index) {
|
|
696
|
+
index = index ?? 0;
|
|
697
|
+
const length = this._length;
|
|
698
|
+
const comparator = this._comparator;
|
|
699
|
+
const array = this._array;
|
|
700
|
+
let candidate;
|
|
701
|
+
let inserting = true;
|
|
702
|
+
while (inserting) {
|
|
703
|
+
const right = 2 * (index + 1);
|
|
704
|
+
const left = right - 1;
|
|
705
|
+
if (left < length && comparator(array[left], array[index]) < 0) {
|
|
706
|
+
candidate = left;
|
|
707
|
+
} else {
|
|
708
|
+
candidate = index;
|
|
709
|
+
}
|
|
710
|
+
if (right < length && comparator(array[right], array[candidate]) < 0) {
|
|
711
|
+
candidate = right;
|
|
712
|
+
}
|
|
713
|
+
if (candidate !== index) {
|
|
714
|
+
swap(array, candidate, index);
|
|
715
|
+
index = candidate;
|
|
716
|
+
} else {
|
|
717
|
+
inserting = false;
|
|
718
|
+
}
|
|
719
|
+
}
|
|
720
|
+
};
|
|
721
|
+
Heap.prototype.resort = function() {
|
|
722
|
+
const length = this._length;
|
|
723
|
+
for (let i = Math.ceil(length / 2); i >= 0; --i) {
|
|
724
|
+
this.heapify(i);
|
|
725
|
+
}
|
|
726
|
+
};
|
|
727
|
+
Heap.prototype.insert = function(element) {
|
|
728
|
+
Check_default.defined("element", element);
|
|
729
|
+
const array = this._array;
|
|
730
|
+
const comparator = this._comparator;
|
|
731
|
+
const maximumLength = this._maximumLength;
|
|
732
|
+
let index = this._length++;
|
|
733
|
+
if (index < array.length) {
|
|
734
|
+
array[index] = element;
|
|
735
|
+
} else {
|
|
736
|
+
array.push(element);
|
|
737
|
+
}
|
|
738
|
+
while (index !== 0) {
|
|
739
|
+
const parent = Math.floor((index - 1) / 2);
|
|
740
|
+
if (comparator(array[index], array[parent]) < 0) {
|
|
741
|
+
swap(array, index, parent);
|
|
742
|
+
index = parent;
|
|
743
|
+
} else {
|
|
744
|
+
break;
|
|
745
|
+
}
|
|
746
|
+
}
|
|
747
|
+
let removedElement;
|
|
748
|
+
if (defined_default(maximumLength) && this._length > maximumLength) {
|
|
749
|
+
removedElement = array[maximumLength];
|
|
750
|
+
this._length = maximumLength;
|
|
751
|
+
}
|
|
752
|
+
return removedElement;
|
|
753
|
+
};
|
|
754
|
+
Heap.prototype.pop = function(index) {
|
|
755
|
+
index = index ?? 0;
|
|
756
|
+
if (this._length === 0) {
|
|
757
|
+
return void 0;
|
|
758
|
+
}
|
|
759
|
+
Check_default.typeOf.number.lessThan("index", index, this._length);
|
|
760
|
+
const array = this._array;
|
|
761
|
+
const root = array[index];
|
|
762
|
+
swap(array, index, --this._length);
|
|
763
|
+
this.heapify(index);
|
|
764
|
+
array[this._length] = void 0;
|
|
765
|
+
return root;
|
|
766
|
+
};
|
|
767
|
+
var Heap_default = Heap;
|
|
768
|
+
|
|
769
|
+
// packages/engine/Source/Core/RequestScheduler.js
|
|
770
|
+
function sortRequests(a2, b) {
|
|
771
|
+
return a2.priority - b.priority;
|
|
772
|
+
}
|
|
773
|
+
var statistics = {
|
|
774
|
+
numberOfAttemptedRequests: 0,
|
|
775
|
+
numberOfActiveRequests: 0,
|
|
776
|
+
numberOfCancelledRequests: 0,
|
|
777
|
+
numberOfCancelledActiveRequests: 0,
|
|
778
|
+
numberOfFailedRequests: 0,
|
|
779
|
+
numberOfActiveRequestsEver: 0,
|
|
780
|
+
lastNumberOfActiveRequests: 0
|
|
781
|
+
};
|
|
782
|
+
var priorityHeapLength = 20;
|
|
783
|
+
var requestHeap = new Heap_default({
|
|
784
|
+
comparator: sortRequests
|
|
785
|
+
});
|
|
786
|
+
requestHeap.maximumLength = priorityHeapLength;
|
|
787
|
+
requestHeap.reserve(priorityHeapLength);
|
|
788
|
+
var activeRequests = [];
|
|
789
|
+
var numberOfActiveRequestsByServer = {};
|
|
790
|
+
var pageUri = typeof document !== "undefined" ? new import_urijs4.default(document.location.href) : new import_urijs4.default();
|
|
791
|
+
var requestCompletedEvent = new Event_default();
|
|
792
|
+
function RequestScheduler() {
|
|
793
|
+
}
|
|
794
|
+
RequestScheduler.maximumRequests = 50;
|
|
795
|
+
RequestScheduler.maximumRequestsPerServer = 18;
|
|
796
|
+
RequestScheduler.requestsByServer = {};
|
|
797
|
+
RequestScheduler.throttleRequests = true;
|
|
798
|
+
RequestScheduler.debugShowStatistics = false;
|
|
799
|
+
RequestScheduler.requestCompletedEvent = requestCompletedEvent;
|
|
800
|
+
Object.defineProperties(RequestScheduler, {
|
|
801
|
+
/**
|
|
802
|
+
* Returns the statistics used by the request scheduler.
|
|
803
|
+
*
|
|
804
|
+
* @memberof RequestScheduler
|
|
805
|
+
*
|
|
806
|
+
* @type {object}
|
|
807
|
+
* @readonly
|
|
808
|
+
* @private
|
|
809
|
+
*/
|
|
810
|
+
statistics: {
|
|
811
|
+
get: function() {
|
|
812
|
+
return statistics;
|
|
813
|
+
}
|
|
814
|
+
},
|
|
815
|
+
/**
|
|
816
|
+
* The maximum size of the priority heap. This limits the number of requests that are sorted by priority. Only applies to requests that are not yet active.
|
|
817
|
+
*
|
|
818
|
+
* @memberof RequestScheduler
|
|
819
|
+
*
|
|
820
|
+
* @type {number}
|
|
821
|
+
* @default 20
|
|
822
|
+
* @private
|
|
823
|
+
*/
|
|
824
|
+
priorityHeapLength: {
|
|
825
|
+
get: function() {
|
|
826
|
+
return priorityHeapLength;
|
|
827
|
+
},
|
|
828
|
+
set: function(value) {
|
|
829
|
+
if (value < priorityHeapLength) {
|
|
830
|
+
while (requestHeap.length > value) {
|
|
831
|
+
const request = requestHeap.pop();
|
|
832
|
+
cancelRequest(request);
|
|
833
|
+
}
|
|
834
|
+
}
|
|
835
|
+
priorityHeapLength = value;
|
|
836
|
+
requestHeap.maximumLength = value;
|
|
837
|
+
requestHeap.reserve(value);
|
|
838
|
+
}
|
|
839
|
+
}
|
|
840
|
+
});
|
|
841
|
+
function updatePriority(request) {
|
|
842
|
+
if (defined_default(request.priorityFunction)) {
|
|
843
|
+
request.priority = request.priorityFunction();
|
|
844
|
+
}
|
|
845
|
+
}
|
|
846
|
+
RequestScheduler.serverHasOpenSlots = function(serverKey, desiredRequests) {
|
|
847
|
+
desiredRequests = desiredRequests ?? 1;
|
|
848
|
+
const maxRequests = RequestScheduler.requestsByServer[serverKey] ?? RequestScheduler.maximumRequestsPerServer;
|
|
849
|
+
const hasOpenSlotsServer = numberOfActiveRequestsByServer[serverKey] + desiredRequests <= maxRequests;
|
|
850
|
+
return hasOpenSlotsServer;
|
|
851
|
+
};
|
|
852
|
+
RequestScheduler.heapHasOpenSlots = function(desiredRequests) {
|
|
853
|
+
const hasOpenSlotsHeap = requestHeap.length + desiredRequests <= priorityHeapLength;
|
|
854
|
+
return hasOpenSlotsHeap;
|
|
855
|
+
};
|
|
856
|
+
function issueRequest(request) {
|
|
857
|
+
if (request.state === RequestState_default.UNISSUED) {
|
|
858
|
+
request.state = RequestState_default.ISSUED;
|
|
859
|
+
request.deferred = defer_default();
|
|
860
|
+
}
|
|
861
|
+
return request.deferred.promise;
|
|
862
|
+
}
|
|
863
|
+
function getRequestReceivedFunction(request) {
|
|
864
|
+
return function(results) {
|
|
865
|
+
if (request.state === RequestState_default.CANCELLED) {
|
|
866
|
+
return;
|
|
867
|
+
}
|
|
868
|
+
const deferred = request.deferred;
|
|
869
|
+
--statistics.numberOfActiveRequests;
|
|
870
|
+
--numberOfActiveRequestsByServer[request.serverKey];
|
|
871
|
+
requestCompletedEvent.raiseEvent();
|
|
872
|
+
request.state = RequestState_default.RECEIVED;
|
|
873
|
+
request.deferred = void 0;
|
|
874
|
+
deferred.resolve(results);
|
|
875
|
+
};
|
|
876
|
+
}
|
|
877
|
+
function getRequestFailedFunction(request) {
|
|
878
|
+
return function(error) {
|
|
879
|
+
if (request.state === RequestState_default.CANCELLED) {
|
|
880
|
+
return;
|
|
881
|
+
}
|
|
882
|
+
++statistics.numberOfFailedRequests;
|
|
883
|
+
--statistics.numberOfActiveRequests;
|
|
884
|
+
--numberOfActiveRequestsByServer[request.serverKey];
|
|
885
|
+
requestCompletedEvent.raiseEvent(error);
|
|
886
|
+
request.state = RequestState_default.FAILED;
|
|
887
|
+
request.deferred.reject(error);
|
|
888
|
+
};
|
|
889
|
+
}
|
|
890
|
+
function startRequest(request) {
|
|
891
|
+
const promise = issueRequest(request);
|
|
892
|
+
request.state = RequestState_default.ACTIVE;
|
|
893
|
+
activeRequests.push(request);
|
|
894
|
+
++statistics.numberOfActiveRequests;
|
|
895
|
+
++statistics.numberOfActiveRequestsEver;
|
|
896
|
+
++numberOfActiveRequestsByServer[request.serverKey];
|
|
897
|
+
request.requestFunction().then(getRequestReceivedFunction(request)).catch(getRequestFailedFunction(request));
|
|
898
|
+
return promise;
|
|
899
|
+
}
|
|
900
|
+
function cancelRequest(request) {
|
|
901
|
+
const active = request.state === RequestState_default.ACTIVE;
|
|
902
|
+
request.state = RequestState_default.CANCELLED;
|
|
903
|
+
++statistics.numberOfCancelledRequests;
|
|
904
|
+
if (defined_default(request.deferred)) {
|
|
905
|
+
const deferred = request.deferred;
|
|
906
|
+
deferred.promise.catch(() => {
|
|
907
|
+
});
|
|
908
|
+
request.deferred = void 0;
|
|
909
|
+
deferred.reject(new RuntimeError_default(`Request cancelled: "${request.url}"`));
|
|
910
|
+
}
|
|
911
|
+
if (active) {
|
|
912
|
+
--statistics.numberOfActiveRequests;
|
|
913
|
+
--numberOfActiveRequestsByServer[request.serverKey];
|
|
914
|
+
++statistics.numberOfCancelledActiveRequests;
|
|
915
|
+
}
|
|
916
|
+
if (defined_default(request.cancelFunction)) {
|
|
917
|
+
request.cancelFunction();
|
|
918
|
+
}
|
|
919
|
+
}
|
|
920
|
+
RequestScheduler.update = function() {
|
|
921
|
+
let i;
|
|
922
|
+
let request;
|
|
923
|
+
let removeCount = 0;
|
|
924
|
+
const activeLength = activeRequests.length;
|
|
925
|
+
for (i = 0; i < activeLength; ++i) {
|
|
926
|
+
request = activeRequests[i];
|
|
927
|
+
if (request.cancelled) {
|
|
928
|
+
cancelRequest(request);
|
|
929
|
+
}
|
|
930
|
+
if (request.state !== RequestState_default.ACTIVE) {
|
|
931
|
+
++removeCount;
|
|
932
|
+
continue;
|
|
933
|
+
}
|
|
934
|
+
if (removeCount > 0) {
|
|
935
|
+
activeRequests[i - removeCount] = request;
|
|
936
|
+
}
|
|
937
|
+
}
|
|
938
|
+
activeRequests.length -= removeCount;
|
|
939
|
+
const issuedRequests = requestHeap.internalArray;
|
|
940
|
+
const issuedLength = requestHeap.length;
|
|
941
|
+
for (i = 0; i < issuedLength; ++i) {
|
|
942
|
+
updatePriority(issuedRequests[i]);
|
|
943
|
+
}
|
|
944
|
+
requestHeap.resort();
|
|
945
|
+
const openSlots = Math.max(
|
|
946
|
+
RequestScheduler.maximumRequests - activeRequests.length,
|
|
947
|
+
0
|
|
948
|
+
);
|
|
949
|
+
let filledSlots = 0;
|
|
950
|
+
while (filledSlots < openSlots && requestHeap.length > 0) {
|
|
951
|
+
request = requestHeap.pop();
|
|
952
|
+
if (request.cancelled) {
|
|
953
|
+
cancelRequest(request);
|
|
954
|
+
continue;
|
|
955
|
+
}
|
|
956
|
+
if (request.throttleByServer && !RequestScheduler.serverHasOpenSlots(request.serverKey)) {
|
|
957
|
+
cancelRequest(request);
|
|
958
|
+
continue;
|
|
959
|
+
}
|
|
960
|
+
startRequest(request);
|
|
961
|
+
++filledSlots;
|
|
962
|
+
}
|
|
963
|
+
updateStatistics();
|
|
964
|
+
};
|
|
965
|
+
RequestScheduler.getServerKey = function(url) {
|
|
966
|
+
Check_default.typeOf.string("url", url);
|
|
967
|
+
let uri = new import_urijs4.default(url);
|
|
968
|
+
if (uri.scheme() === "") {
|
|
969
|
+
uri = uri.absoluteTo(pageUri);
|
|
970
|
+
uri.normalize();
|
|
971
|
+
}
|
|
972
|
+
let serverKey = uri.authority();
|
|
973
|
+
if (!/:/.test(serverKey)) {
|
|
974
|
+
serverKey = `${serverKey}:${uri.scheme() === "https" ? "443" : "80"}`;
|
|
975
|
+
}
|
|
976
|
+
const length = numberOfActiveRequestsByServer[serverKey];
|
|
977
|
+
if (!defined_default(length)) {
|
|
978
|
+
numberOfActiveRequestsByServer[serverKey] = 0;
|
|
979
|
+
}
|
|
980
|
+
return serverKey;
|
|
981
|
+
};
|
|
982
|
+
RequestScheduler.request = function(request) {
|
|
983
|
+
Check_default.typeOf.object("request", request);
|
|
984
|
+
Check_default.typeOf.string("request.url", request.url);
|
|
985
|
+
Check_default.typeOf.func("request.requestFunction", request.requestFunction);
|
|
986
|
+
if (isDataUri_default(request.url) || isBlobUri_default(request.url)) {
|
|
987
|
+
requestCompletedEvent.raiseEvent();
|
|
988
|
+
request.state = RequestState_default.RECEIVED;
|
|
989
|
+
return request.requestFunction();
|
|
990
|
+
}
|
|
991
|
+
++statistics.numberOfAttemptedRequests;
|
|
992
|
+
if (!defined_default(request.serverKey)) {
|
|
993
|
+
request.serverKey = RequestScheduler.getServerKey(request.url);
|
|
994
|
+
}
|
|
995
|
+
if (RequestScheduler.throttleRequests && request.throttleByServer && !RequestScheduler.serverHasOpenSlots(request.serverKey)) {
|
|
996
|
+
return void 0;
|
|
997
|
+
}
|
|
998
|
+
if (!RequestScheduler.throttleRequests || !request.throttle) {
|
|
999
|
+
return startRequest(request);
|
|
1000
|
+
}
|
|
1001
|
+
if (activeRequests.length >= RequestScheduler.maximumRequests) {
|
|
1002
|
+
return void 0;
|
|
1003
|
+
}
|
|
1004
|
+
updatePriority(request);
|
|
1005
|
+
const removedRequest = requestHeap.insert(request);
|
|
1006
|
+
if (defined_default(removedRequest)) {
|
|
1007
|
+
if (removedRequest === request) {
|
|
1008
|
+
return void 0;
|
|
1009
|
+
}
|
|
1010
|
+
cancelRequest(removedRequest);
|
|
1011
|
+
}
|
|
1012
|
+
return issueRequest(request);
|
|
1013
|
+
};
|
|
1014
|
+
function updateStatistics() {
|
|
1015
|
+
if (!RequestScheduler.debugShowStatistics) {
|
|
1016
|
+
return;
|
|
1017
|
+
}
|
|
1018
|
+
if (statistics.numberOfActiveRequests === 0 && statistics.lastNumberOfActiveRequests > 0) {
|
|
1019
|
+
if (statistics.numberOfAttemptedRequests > 0) {
|
|
1020
|
+
console.log(
|
|
1021
|
+
`Number of attempted requests: ${statistics.numberOfAttemptedRequests}`
|
|
1022
|
+
);
|
|
1023
|
+
statistics.numberOfAttemptedRequests = 0;
|
|
1024
|
+
}
|
|
1025
|
+
if (statistics.numberOfCancelledRequests > 0) {
|
|
1026
|
+
console.log(
|
|
1027
|
+
`Number of cancelled requests: ${statistics.numberOfCancelledRequests}`
|
|
1028
|
+
);
|
|
1029
|
+
statistics.numberOfCancelledRequests = 0;
|
|
1030
|
+
}
|
|
1031
|
+
if (statistics.numberOfCancelledActiveRequests > 0) {
|
|
1032
|
+
console.log(
|
|
1033
|
+
`Number of cancelled active requests: ${statistics.numberOfCancelledActiveRequests}`
|
|
1034
|
+
);
|
|
1035
|
+
statistics.numberOfCancelledActiveRequests = 0;
|
|
1036
|
+
}
|
|
1037
|
+
if (statistics.numberOfFailedRequests > 0) {
|
|
1038
|
+
console.log(
|
|
1039
|
+
`Number of failed requests: ${statistics.numberOfFailedRequests}`
|
|
1040
|
+
);
|
|
1041
|
+
statistics.numberOfFailedRequests = 0;
|
|
1042
|
+
}
|
|
1043
|
+
}
|
|
1044
|
+
statistics.lastNumberOfActiveRequests = statistics.numberOfActiveRequests;
|
|
1045
|
+
}
|
|
1046
|
+
RequestScheduler.clearForSpecs = function() {
|
|
1047
|
+
while (requestHeap.length > 0) {
|
|
1048
|
+
const request = requestHeap.pop();
|
|
1049
|
+
cancelRequest(request);
|
|
1050
|
+
}
|
|
1051
|
+
const length = activeRequests.length;
|
|
1052
|
+
for (let i = 0; i < length; ++i) {
|
|
1053
|
+
cancelRequest(activeRequests[i]);
|
|
1054
|
+
}
|
|
1055
|
+
activeRequests.length = 0;
|
|
1056
|
+
numberOfActiveRequestsByServer = {};
|
|
1057
|
+
statistics.numberOfAttemptedRequests = 0;
|
|
1058
|
+
statistics.numberOfActiveRequests = 0;
|
|
1059
|
+
statistics.numberOfCancelledRequests = 0;
|
|
1060
|
+
statistics.numberOfCancelledActiveRequests = 0;
|
|
1061
|
+
statistics.numberOfFailedRequests = 0;
|
|
1062
|
+
statistics.numberOfActiveRequestsEver = 0;
|
|
1063
|
+
statistics.lastNumberOfActiveRequests = 0;
|
|
1064
|
+
};
|
|
1065
|
+
RequestScheduler.numberOfActiveRequestsByServer = function(serverKey) {
|
|
1066
|
+
return numberOfActiveRequestsByServer[serverKey];
|
|
1067
|
+
};
|
|
1068
|
+
RequestScheduler.requestHeap = requestHeap;
|
|
1069
|
+
var RequestScheduler_default = RequestScheduler;
|
|
1070
|
+
|
|
1071
|
+
// packages/engine/Source/Core/Resource.js
|
|
1072
|
+
var xhrBlobSupported = (function() {
|
|
1073
|
+
try {
|
|
1074
|
+
const xhr = new XMLHttpRequest();
|
|
1075
|
+
xhr.open("GET", "#", true);
|
|
1076
|
+
xhr.responseType = "blob";
|
|
1077
|
+
return xhr.responseType === "blob";
|
|
1078
|
+
} catch (e) {
|
|
1079
|
+
return false;
|
|
1080
|
+
}
|
|
1081
|
+
})();
|
|
1082
|
+
function Resource(options) {
|
|
1083
|
+
options = options ?? Frozen_default.EMPTY_OBJECT;
|
|
1084
|
+
if (typeof options === "string") {
|
|
1085
|
+
options = {
|
|
1086
|
+
url: options
|
|
1087
|
+
};
|
|
1088
|
+
}
|
|
1089
|
+
Check_default.typeOf.string("options.url", options.url);
|
|
1090
|
+
this._url = void 0;
|
|
1091
|
+
this._templateValues = defaultClone(options.templateValues, {});
|
|
1092
|
+
this._queryParameters = defaultClone(options.queryParameters, {});
|
|
1093
|
+
this.headers = defaultClone(options.headers, {});
|
|
1094
|
+
this.request = options.request ?? new Request_default();
|
|
1095
|
+
this.proxy = options.proxy;
|
|
1096
|
+
this.retryCallback = options.retryCallback;
|
|
1097
|
+
this.retryAttempts = options.retryAttempts ?? 0;
|
|
1098
|
+
this._retryCount = 0;
|
|
1099
|
+
const parseUrl = options.parseUrl ?? true;
|
|
1100
|
+
if (parseUrl) {
|
|
1101
|
+
this.parseUrl(options.url, true, true);
|
|
1102
|
+
} else {
|
|
1103
|
+
this._url = options.url;
|
|
1104
|
+
}
|
|
1105
|
+
this._credits = options.credits;
|
|
1106
|
+
}
|
|
1107
|
+
function defaultClone(value, defaultValue) {
|
|
1108
|
+
return defined_default(value) ? clone_default(value) : defaultValue;
|
|
1109
|
+
}
|
|
1110
|
+
Resource.createIfNeeded = function(resource) {
|
|
1111
|
+
if (resource instanceof Resource) {
|
|
1112
|
+
return resource.getDerivedResource({
|
|
1113
|
+
request: resource.request
|
|
1114
|
+
});
|
|
1115
|
+
}
|
|
1116
|
+
if (typeof resource !== "string") {
|
|
1117
|
+
return resource;
|
|
1118
|
+
}
|
|
1119
|
+
return new Resource({
|
|
1120
|
+
url: resource
|
|
1121
|
+
});
|
|
1122
|
+
};
|
|
1123
|
+
var supportsImageBitmapOptionsPromise;
|
|
1124
|
+
Resource.supportsImageBitmapOptions = function() {
|
|
1125
|
+
if (defined_default(supportsImageBitmapOptionsPromise)) {
|
|
1126
|
+
return supportsImageBitmapOptionsPromise;
|
|
1127
|
+
}
|
|
1128
|
+
if (typeof createImageBitmap !== "function") {
|
|
1129
|
+
supportsImageBitmapOptionsPromise = Promise.resolve(false);
|
|
1130
|
+
return supportsImageBitmapOptionsPromise;
|
|
1131
|
+
}
|
|
1132
|
+
const imageDataUri = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAABGdBTUEAAE4g3rEiDgAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAADElEQVQI12Ng6GAAAAEUAIngE3ZiAAAAAElFTkSuQmCC";
|
|
1133
|
+
supportsImageBitmapOptionsPromise = Resource.fetchBlob({
|
|
1134
|
+
url: imageDataUri
|
|
1135
|
+
}).then(function(blob) {
|
|
1136
|
+
const imageBitmapOptions = {
|
|
1137
|
+
// 'from-image' is deprecated, new option is 'none'. However, we still need to support older browsers,
|
|
1138
|
+
// and there's no good way to detect support for these options. For now, continue to use 'from-image'. See: https://github.com/CesiumGS/cesium/issues/12846
|
|
1139
|
+
imageOrientation: "flipY",
|
|
1140
|
+
// default is "from-image"
|
|
1141
|
+
premultiplyAlpha: "none",
|
|
1142
|
+
// default is "default"
|
|
1143
|
+
colorSpaceConversion: "none"
|
|
1144
|
+
// default is "default"
|
|
1145
|
+
};
|
|
1146
|
+
return Promise.all([
|
|
1147
|
+
createImageBitmap(blob, imageBitmapOptions),
|
|
1148
|
+
createImageBitmap(blob)
|
|
1149
|
+
]);
|
|
1150
|
+
}).then(function(imageBitmaps) {
|
|
1151
|
+
const colorWithOptions = getImagePixels_default(imageBitmaps[0]);
|
|
1152
|
+
const colorWithDefaults = getImagePixels_default(imageBitmaps[1]);
|
|
1153
|
+
return colorWithOptions[1] !== colorWithDefaults[1];
|
|
1154
|
+
}).catch(function() {
|
|
1155
|
+
return false;
|
|
1156
|
+
});
|
|
1157
|
+
return supportsImageBitmapOptionsPromise;
|
|
1158
|
+
};
|
|
1159
|
+
Object.defineProperties(Resource, {
|
|
1160
|
+
/**
|
|
1161
|
+
* Returns true if blobs are supported.
|
|
1162
|
+
*
|
|
1163
|
+
* @memberof Resource
|
|
1164
|
+
* @type {boolean}
|
|
1165
|
+
*
|
|
1166
|
+
* @readonly
|
|
1167
|
+
*/
|
|
1168
|
+
isBlobSupported: {
|
|
1169
|
+
get: function() {
|
|
1170
|
+
return xhrBlobSupported;
|
|
1171
|
+
}
|
|
1172
|
+
}
|
|
1173
|
+
});
|
|
1174
|
+
Object.defineProperties(Resource.prototype, {
|
|
1175
|
+
/**
|
|
1176
|
+
* Query parameters appended to the url.
|
|
1177
|
+
*
|
|
1178
|
+
* @memberof Resource.prototype
|
|
1179
|
+
* @type {object}
|
|
1180
|
+
*
|
|
1181
|
+
* @readonly
|
|
1182
|
+
*/
|
|
1183
|
+
queryParameters: {
|
|
1184
|
+
get: function() {
|
|
1185
|
+
return this._queryParameters;
|
|
1186
|
+
}
|
|
1187
|
+
},
|
|
1188
|
+
/**
|
|
1189
|
+
* The key/value pairs used to replace template parameters in the url.
|
|
1190
|
+
*
|
|
1191
|
+
* @memberof Resource.prototype
|
|
1192
|
+
* @type {object}
|
|
1193
|
+
*
|
|
1194
|
+
* @readonly
|
|
1195
|
+
*/
|
|
1196
|
+
templateValues: {
|
|
1197
|
+
get: function() {
|
|
1198
|
+
return this._templateValues;
|
|
1199
|
+
}
|
|
1200
|
+
},
|
|
1201
|
+
/**
|
|
1202
|
+
* The url to the resource with template values replaced, query string appended and encoded by proxy if one was set.
|
|
1203
|
+
*
|
|
1204
|
+
* @memberof Resource.prototype
|
|
1205
|
+
* @type {string}
|
|
1206
|
+
*/
|
|
1207
|
+
url: {
|
|
1208
|
+
get: function() {
|
|
1209
|
+
return this.getUrlComponent(true, true);
|
|
1210
|
+
},
|
|
1211
|
+
set: function(value) {
|
|
1212
|
+
this.parseUrl(value, false, false);
|
|
1213
|
+
}
|
|
1214
|
+
},
|
|
1215
|
+
/**
|
|
1216
|
+
* The file extension of the resource.
|
|
1217
|
+
*
|
|
1218
|
+
* @memberof Resource.prototype
|
|
1219
|
+
* @type {string}
|
|
1220
|
+
*
|
|
1221
|
+
* @readonly
|
|
1222
|
+
*/
|
|
1223
|
+
extension: {
|
|
1224
|
+
get: function() {
|
|
1225
|
+
return getExtensionFromUri_default(this._url);
|
|
1226
|
+
}
|
|
1227
|
+
},
|
|
1228
|
+
/**
|
|
1229
|
+
* True if the Resource refers to a data URI.
|
|
1230
|
+
*
|
|
1231
|
+
* @memberof Resource.prototype
|
|
1232
|
+
* @type {boolean}
|
|
1233
|
+
*/
|
|
1234
|
+
isDataUri: {
|
|
1235
|
+
get: function() {
|
|
1236
|
+
return isDataUri_default(this._url);
|
|
1237
|
+
}
|
|
1238
|
+
},
|
|
1239
|
+
/**
|
|
1240
|
+
* True if the Resource refers to a blob URI.
|
|
1241
|
+
*
|
|
1242
|
+
* @memberof Resource.prototype
|
|
1243
|
+
* @type {boolean}
|
|
1244
|
+
*/
|
|
1245
|
+
isBlobUri: {
|
|
1246
|
+
get: function() {
|
|
1247
|
+
return isBlobUri_default(this._url);
|
|
1248
|
+
}
|
|
1249
|
+
},
|
|
1250
|
+
/**
|
|
1251
|
+
* True if the Resource refers to a cross origin URL.
|
|
1252
|
+
*
|
|
1253
|
+
* @memberof Resource.prototype
|
|
1254
|
+
* @type {boolean}
|
|
1255
|
+
*/
|
|
1256
|
+
isCrossOriginUrl: {
|
|
1257
|
+
get: function() {
|
|
1258
|
+
return isCrossOriginUrl_default(this._url);
|
|
1259
|
+
}
|
|
1260
|
+
},
|
|
1261
|
+
/**
|
|
1262
|
+
* True if the Resource has request headers. This is equivalent to checking if the headers property has any keys.
|
|
1263
|
+
*
|
|
1264
|
+
* @memberof Resource.prototype
|
|
1265
|
+
* @type {boolean}
|
|
1266
|
+
*/
|
|
1267
|
+
hasHeaders: {
|
|
1268
|
+
get: function() {
|
|
1269
|
+
return Object.keys(this.headers).length > 0;
|
|
1270
|
+
}
|
|
1271
|
+
},
|
|
1272
|
+
/**
|
|
1273
|
+
* Gets the credits required for attribution of an asset.
|
|
1274
|
+
* @private
|
|
1275
|
+
*/
|
|
1276
|
+
credits: {
|
|
1277
|
+
get: function() {
|
|
1278
|
+
return this._credits;
|
|
1279
|
+
}
|
|
1280
|
+
}
|
|
1281
|
+
});
|
|
1282
|
+
Resource.prototype.toString = function() {
|
|
1283
|
+
return this.getUrlComponent(true, true);
|
|
1284
|
+
};
|
|
1285
|
+
Resource.prototype.parseUrl = function(url, merge, preserveQuery, baseUrl) {
|
|
1286
|
+
let uri = new import_urijs5.default(url);
|
|
1287
|
+
const query = parseQueryString(uri.query());
|
|
1288
|
+
this._queryParameters = merge ? combineQueryParameters(query, this.queryParameters, preserveQuery) : query;
|
|
1289
|
+
uri.search("");
|
|
1290
|
+
uri.fragment("");
|
|
1291
|
+
if (defined_default(baseUrl) && uri.scheme() === "") {
|
|
1292
|
+
uri = uri.absoluteTo(getAbsoluteUri_default(baseUrl));
|
|
1293
|
+
}
|
|
1294
|
+
this._url = uri.toString();
|
|
1295
|
+
};
|
|
1296
|
+
function parseQueryString(queryString) {
|
|
1297
|
+
if (queryString.length === 0) {
|
|
1298
|
+
return {};
|
|
1299
|
+
}
|
|
1300
|
+
if (queryString.indexOf("=") === -1) {
|
|
1301
|
+
return { [queryString]: void 0 };
|
|
1302
|
+
}
|
|
1303
|
+
return queryToObject_default(queryString);
|
|
1304
|
+
}
|
|
1305
|
+
function combineQueryParameters(q1, q2, preserveQueryParameters) {
|
|
1306
|
+
if (!preserveQueryParameters) {
|
|
1307
|
+
return combine_default(q1, q2);
|
|
1308
|
+
}
|
|
1309
|
+
const result = clone_default(q1, true);
|
|
1310
|
+
for (const param in q2) {
|
|
1311
|
+
if (q2.hasOwnProperty(param)) {
|
|
1312
|
+
let value = result[param];
|
|
1313
|
+
const q2Value = q2[param];
|
|
1314
|
+
if (defined_default(value)) {
|
|
1315
|
+
if (!Array.isArray(value)) {
|
|
1316
|
+
value = result[param] = [value];
|
|
1317
|
+
}
|
|
1318
|
+
result[param] = value.concat(q2Value);
|
|
1319
|
+
} else {
|
|
1320
|
+
result[param] = Array.isArray(q2Value) ? q2Value.slice() : q2Value;
|
|
1321
|
+
}
|
|
1322
|
+
}
|
|
1323
|
+
}
|
|
1324
|
+
return result;
|
|
1325
|
+
}
|
|
1326
|
+
Resource.prototype.getUrlComponent = function(query, proxy) {
|
|
1327
|
+
if (this.isDataUri) {
|
|
1328
|
+
return this._url;
|
|
1329
|
+
}
|
|
1330
|
+
let url = this._url;
|
|
1331
|
+
if (query) {
|
|
1332
|
+
url = `${url}${stringifyQuery(this.queryParameters)}`;
|
|
1333
|
+
}
|
|
1334
|
+
url = url.replace(/%7B/g, "{").replace(/%7D/g, "}");
|
|
1335
|
+
const templateValues = this._templateValues;
|
|
1336
|
+
if (Object.keys(templateValues).length > 0) {
|
|
1337
|
+
url = url.replace(/{(.*?)}/g, function(match, key) {
|
|
1338
|
+
const replacement = templateValues[key];
|
|
1339
|
+
if (defined_default(replacement)) {
|
|
1340
|
+
return encodeURIComponent(replacement);
|
|
1341
|
+
}
|
|
1342
|
+
return match;
|
|
1343
|
+
});
|
|
1344
|
+
}
|
|
1345
|
+
if (proxy && defined_default(this.proxy)) {
|
|
1346
|
+
url = this.proxy.getURL(url);
|
|
1347
|
+
}
|
|
1348
|
+
return url;
|
|
1349
|
+
};
|
|
1350
|
+
function stringifyQuery(queryObject) {
|
|
1351
|
+
const keys = Object.keys(queryObject);
|
|
1352
|
+
if (keys.length === 0) {
|
|
1353
|
+
return "";
|
|
1354
|
+
}
|
|
1355
|
+
if (keys.length === 1 && !defined_default(queryObject[keys[0]])) {
|
|
1356
|
+
return `?${keys[0]}`;
|
|
1357
|
+
}
|
|
1358
|
+
return `?${objectToQuery_default(queryObject)}`;
|
|
1359
|
+
}
|
|
1360
|
+
Resource.prototype.setQueryParameters = function(params, useAsDefault) {
|
|
1361
|
+
if (useAsDefault) {
|
|
1362
|
+
this._queryParameters = combineQueryParameters(
|
|
1363
|
+
this._queryParameters,
|
|
1364
|
+
params,
|
|
1365
|
+
false
|
|
1366
|
+
);
|
|
1367
|
+
} else {
|
|
1368
|
+
this._queryParameters = combineQueryParameters(
|
|
1369
|
+
params,
|
|
1370
|
+
this._queryParameters,
|
|
1371
|
+
false
|
|
1372
|
+
);
|
|
1373
|
+
}
|
|
1374
|
+
};
|
|
1375
|
+
Resource.prototype.appendQueryParameters = function(params) {
|
|
1376
|
+
this._queryParameters = combineQueryParameters(
|
|
1377
|
+
params,
|
|
1378
|
+
this._queryParameters,
|
|
1379
|
+
true
|
|
1380
|
+
);
|
|
1381
|
+
};
|
|
1382
|
+
Resource.prototype.setTemplateValues = function(template, useAsDefault) {
|
|
1383
|
+
if (useAsDefault) {
|
|
1384
|
+
this._templateValues = combine_default(this._templateValues, template);
|
|
1385
|
+
} else {
|
|
1386
|
+
this._templateValues = combine_default(template, this._templateValues);
|
|
1387
|
+
}
|
|
1388
|
+
};
|
|
1389
|
+
Resource.prototype.getDerivedResource = function(options) {
|
|
1390
|
+
const resource = this.clone();
|
|
1391
|
+
resource._retryCount = 0;
|
|
1392
|
+
if (defined_default(options.url)) {
|
|
1393
|
+
const preserveQuery = options.preserveQueryParameters ?? false;
|
|
1394
|
+
resource.parseUrl(options.url, true, preserveQuery, this._url);
|
|
1395
|
+
}
|
|
1396
|
+
if (defined_default(options.queryParameters)) {
|
|
1397
|
+
resource._queryParameters = combine_default(
|
|
1398
|
+
options.queryParameters,
|
|
1399
|
+
resource.queryParameters
|
|
1400
|
+
);
|
|
1401
|
+
}
|
|
1402
|
+
if (defined_default(options.templateValues)) {
|
|
1403
|
+
resource._templateValues = combine_default(
|
|
1404
|
+
options.templateValues,
|
|
1405
|
+
resource.templateValues
|
|
1406
|
+
);
|
|
1407
|
+
}
|
|
1408
|
+
if (defined_default(options.headers)) {
|
|
1409
|
+
resource.headers = combine_default(options.headers, resource.headers);
|
|
1410
|
+
}
|
|
1411
|
+
if (defined_default(options.proxy)) {
|
|
1412
|
+
resource.proxy = options.proxy;
|
|
1413
|
+
}
|
|
1414
|
+
if (defined_default(options.request)) {
|
|
1415
|
+
resource.request = options.request;
|
|
1416
|
+
}
|
|
1417
|
+
if (defined_default(options.retryCallback)) {
|
|
1418
|
+
resource.retryCallback = options.retryCallback;
|
|
1419
|
+
}
|
|
1420
|
+
if (defined_default(options.retryAttempts)) {
|
|
1421
|
+
resource.retryAttempts = options.retryAttempts;
|
|
1422
|
+
}
|
|
1423
|
+
return resource;
|
|
1424
|
+
};
|
|
1425
|
+
Resource.prototype.retryOnError = function(error) {
|
|
1426
|
+
const retryCallback = this.retryCallback;
|
|
1427
|
+
if (typeof retryCallback !== "function" || this._retryCount >= this.retryAttempts) {
|
|
1428
|
+
return Promise.resolve(false);
|
|
1429
|
+
}
|
|
1430
|
+
const that = this;
|
|
1431
|
+
return Promise.resolve(retryCallback(this, error)).then(function(result) {
|
|
1432
|
+
++that._retryCount;
|
|
1433
|
+
return result;
|
|
1434
|
+
});
|
|
1435
|
+
};
|
|
1436
|
+
Resource.prototype.clone = function(result) {
|
|
1437
|
+
if (!defined_default(result)) {
|
|
1438
|
+
return new Resource({
|
|
1439
|
+
url: this._url,
|
|
1440
|
+
queryParameters: this.queryParameters,
|
|
1441
|
+
templateValues: this.templateValues,
|
|
1442
|
+
headers: this.headers,
|
|
1443
|
+
proxy: this.proxy,
|
|
1444
|
+
retryCallback: this.retryCallback,
|
|
1445
|
+
retryAttempts: this.retryAttempts,
|
|
1446
|
+
request: this.request.clone(),
|
|
1447
|
+
parseUrl: false,
|
|
1448
|
+
credits: defined_default(this.credits) ? this.credits.slice() : void 0
|
|
1449
|
+
});
|
|
1450
|
+
}
|
|
1451
|
+
result._url = this._url;
|
|
1452
|
+
result._queryParameters = clone_default(this._queryParameters);
|
|
1453
|
+
result._templateValues = clone_default(this._templateValues);
|
|
1454
|
+
result.headers = clone_default(this.headers);
|
|
1455
|
+
result.proxy = this.proxy;
|
|
1456
|
+
result.retryCallback = this.retryCallback;
|
|
1457
|
+
result.retryAttempts = this.retryAttempts;
|
|
1458
|
+
result._retryCount = 0;
|
|
1459
|
+
result.request = this.request.clone();
|
|
1460
|
+
return result;
|
|
1461
|
+
};
|
|
1462
|
+
Resource.prototype.getBaseUri = function(includeQuery) {
|
|
1463
|
+
return getBaseUri_default(this.getUrlComponent(includeQuery), includeQuery);
|
|
1464
|
+
};
|
|
1465
|
+
Resource.prototype.appendForwardSlash = function() {
|
|
1466
|
+
this._url = appendForwardSlash_default(this._url);
|
|
1467
|
+
};
|
|
1468
|
+
Resource.prototype.fetchArrayBuffer = function() {
|
|
1469
|
+
return this.fetch({
|
|
1470
|
+
responseType: "arraybuffer"
|
|
1471
|
+
});
|
|
1472
|
+
};
|
|
1473
|
+
Resource.fetchArrayBuffer = function(options) {
|
|
1474
|
+
const resource = new Resource(options);
|
|
1475
|
+
return resource.fetchArrayBuffer();
|
|
1476
|
+
};
|
|
1477
|
+
Resource.prototype.fetchBlob = function() {
|
|
1478
|
+
return this.fetch({
|
|
1479
|
+
responseType: "blob"
|
|
1480
|
+
});
|
|
1481
|
+
};
|
|
1482
|
+
Resource.fetchBlob = function(options) {
|
|
1483
|
+
const resource = new Resource(options);
|
|
1484
|
+
return resource.fetchBlob();
|
|
1485
|
+
};
|
|
1486
|
+
Resource.prototype.fetchImage = function(options) {
|
|
1487
|
+
options = options ?? Frozen_default.EMPTY_OBJECT;
|
|
1488
|
+
const preferImageBitmap = options.preferImageBitmap ?? false;
|
|
1489
|
+
const preferBlob = options.preferBlob ?? false;
|
|
1490
|
+
const flipY = options.flipY ?? false;
|
|
1491
|
+
const skipColorSpaceConversion = options.skipColorSpaceConversion ?? false;
|
|
1492
|
+
checkAndResetRequest(this.request);
|
|
1493
|
+
if (!xhrBlobSupported || this.isDataUri || this.isBlobUri || !this.hasHeaders && !preferBlob) {
|
|
1494
|
+
return this._fetchImage({
|
|
1495
|
+
resource: this,
|
|
1496
|
+
flipY,
|
|
1497
|
+
skipColorSpaceConversion,
|
|
1498
|
+
preferImageBitmap
|
|
1499
|
+
});
|
|
1500
|
+
}
|
|
1501
|
+
const blobPromise = this.fetchBlob();
|
|
1502
|
+
if (!defined_default(blobPromise)) {
|
|
1503
|
+
return;
|
|
1504
|
+
}
|
|
1505
|
+
let supportsImageBitmap;
|
|
1506
|
+
let useImageBitmap;
|
|
1507
|
+
let generatedBlobResource;
|
|
1508
|
+
let generatedBlob;
|
|
1509
|
+
return Resource.supportsImageBitmapOptions().then(function(result) {
|
|
1510
|
+
supportsImageBitmap = result;
|
|
1511
|
+
useImageBitmap = supportsImageBitmap && preferImageBitmap;
|
|
1512
|
+
return blobPromise;
|
|
1513
|
+
}).then(function(blob) {
|
|
1514
|
+
if (!defined_default(blob)) {
|
|
1515
|
+
return;
|
|
1516
|
+
}
|
|
1517
|
+
generatedBlob = blob;
|
|
1518
|
+
if (useImageBitmap) {
|
|
1519
|
+
return Resource.createImageBitmapFromBlob(blob, {
|
|
1520
|
+
flipY,
|
|
1521
|
+
premultiplyAlpha: false,
|
|
1522
|
+
skipColorSpaceConversion
|
|
1523
|
+
});
|
|
1524
|
+
}
|
|
1525
|
+
const blobUrl = window.URL.createObjectURL(blob);
|
|
1526
|
+
generatedBlobResource = new Resource({
|
|
1527
|
+
url: blobUrl
|
|
1528
|
+
});
|
|
1529
|
+
return generatedBlobResource._fetchImage({
|
|
1530
|
+
flipY,
|
|
1531
|
+
skipColorSpaceConversion,
|
|
1532
|
+
preferImageBitmap: false
|
|
1533
|
+
});
|
|
1534
|
+
}).then(function(image) {
|
|
1535
|
+
if (!defined_default(image)) {
|
|
1536
|
+
return;
|
|
1537
|
+
}
|
|
1538
|
+
image.blob = generatedBlob;
|
|
1539
|
+
if (useImageBitmap) {
|
|
1540
|
+
return image;
|
|
1541
|
+
}
|
|
1542
|
+
window.URL.revokeObjectURL(generatedBlobResource.url);
|
|
1543
|
+
return image;
|
|
1544
|
+
}).catch(function(error) {
|
|
1545
|
+
if (defined_default(generatedBlobResource)) {
|
|
1546
|
+
window.URL.revokeObjectURL(generatedBlobResource.url);
|
|
1547
|
+
}
|
|
1548
|
+
error.blob = generatedBlob;
|
|
1549
|
+
return Promise.reject(error);
|
|
1550
|
+
});
|
|
1551
|
+
};
|
|
1552
|
+
Resource.prototype._fetchImage = function(options) {
|
|
1553
|
+
const resource = this;
|
|
1554
|
+
const flipY = options.flipY;
|
|
1555
|
+
const skipColorSpaceConversion = options.skipColorSpaceConversion;
|
|
1556
|
+
const preferImageBitmap = options.preferImageBitmap;
|
|
1557
|
+
const request = resource.request;
|
|
1558
|
+
request.url = resource.url;
|
|
1559
|
+
request.requestFunction = function() {
|
|
1560
|
+
let crossOrigin = false;
|
|
1561
|
+
if (!resource.isDataUri && !resource.isBlobUri) {
|
|
1562
|
+
crossOrigin = resource.isCrossOriginUrl;
|
|
1563
|
+
}
|
|
1564
|
+
const deferred = defer_default();
|
|
1565
|
+
Resource._Implementations.createImage(
|
|
1566
|
+
request,
|
|
1567
|
+
crossOrigin,
|
|
1568
|
+
deferred,
|
|
1569
|
+
flipY,
|
|
1570
|
+
skipColorSpaceConversion,
|
|
1571
|
+
preferImageBitmap
|
|
1572
|
+
);
|
|
1573
|
+
return deferred.promise;
|
|
1574
|
+
};
|
|
1575
|
+
const promise = RequestScheduler_default.request(request);
|
|
1576
|
+
if (!defined_default(promise)) {
|
|
1577
|
+
return;
|
|
1578
|
+
}
|
|
1579
|
+
return promise.catch(function(e) {
|
|
1580
|
+
if (request.state !== RequestState_default.FAILED) {
|
|
1581
|
+
return Promise.reject(e);
|
|
1582
|
+
}
|
|
1583
|
+
return resource.retryOnError(e).then(function(retry) {
|
|
1584
|
+
if (retry) {
|
|
1585
|
+
request.state = RequestState_default.UNISSUED;
|
|
1586
|
+
request.deferred = void 0;
|
|
1587
|
+
return resource._fetchImage({
|
|
1588
|
+
flipY,
|
|
1589
|
+
skipColorSpaceConversion,
|
|
1590
|
+
preferImageBitmap
|
|
1591
|
+
});
|
|
1592
|
+
}
|
|
1593
|
+
return Promise.reject(e);
|
|
1594
|
+
});
|
|
1595
|
+
});
|
|
1596
|
+
};
|
|
1597
|
+
Resource.fetchImage = function(options) {
|
|
1598
|
+
const resource = new Resource(options);
|
|
1599
|
+
return resource.fetchImage({
|
|
1600
|
+
flipY: options.flipY,
|
|
1601
|
+
skipColorSpaceConversion: options.skipColorSpaceConversion,
|
|
1602
|
+
preferBlob: options.preferBlob,
|
|
1603
|
+
preferImageBitmap: options.preferImageBitmap
|
|
1604
|
+
});
|
|
1605
|
+
};
|
|
1606
|
+
Resource.prototype.fetchText = function() {
|
|
1607
|
+
return this.fetch({
|
|
1608
|
+
responseType: "text"
|
|
1609
|
+
});
|
|
1610
|
+
};
|
|
1611
|
+
Resource.fetchText = function(options) {
|
|
1612
|
+
const resource = new Resource(options);
|
|
1613
|
+
return resource.fetchText();
|
|
1614
|
+
};
|
|
1615
|
+
Resource.prototype.fetchJson = function() {
|
|
1616
|
+
const promise = this.fetch({
|
|
1617
|
+
responseType: "text",
|
|
1618
|
+
headers: {
|
|
1619
|
+
Accept: "application/json,*/*;q=0.01"
|
|
1620
|
+
}
|
|
1621
|
+
});
|
|
1622
|
+
if (!defined_default(promise)) {
|
|
1623
|
+
return void 0;
|
|
1624
|
+
}
|
|
1625
|
+
return promise.then(function(value) {
|
|
1626
|
+
if (!defined_default(value)) {
|
|
1627
|
+
return;
|
|
1628
|
+
}
|
|
1629
|
+
return JSON.parse(value);
|
|
1630
|
+
});
|
|
1631
|
+
};
|
|
1632
|
+
Resource.fetchJson = function(options) {
|
|
1633
|
+
const resource = new Resource(options);
|
|
1634
|
+
return resource.fetchJson();
|
|
1635
|
+
};
|
|
1636
|
+
Resource.prototype.fetchXML = function() {
|
|
1637
|
+
return this.fetch({
|
|
1638
|
+
responseType: "document",
|
|
1639
|
+
overrideMimeType: "text/xml"
|
|
1640
|
+
});
|
|
1641
|
+
};
|
|
1642
|
+
Resource.fetchXML = function(options) {
|
|
1643
|
+
const resource = new Resource(options);
|
|
1644
|
+
return resource.fetchXML();
|
|
1645
|
+
};
|
|
1646
|
+
Resource.prototype.fetchJsonp = function(callbackParameterName) {
|
|
1647
|
+
callbackParameterName = callbackParameterName ?? "callback";
|
|
1648
|
+
checkAndResetRequest(this.request);
|
|
1649
|
+
let functionName;
|
|
1650
|
+
do {
|
|
1651
|
+
functionName = `loadJsonp${Math_default.nextRandomNumber().toString().substring(2, 8)}`;
|
|
1652
|
+
} while (defined_default(window[functionName]));
|
|
1653
|
+
return fetchJsonp(this, callbackParameterName, functionName);
|
|
1654
|
+
};
|
|
1655
|
+
function fetchJsonp(resource, callbackParameterName, functionName) {
|
|
1656
|
+
const callbackQuery = {};
|
|
1657
|
+
callbackQuery[callbackParameterName] = functionName;
|
|
1658
|
+
resource.setQueryParameters(callbackQuery);
|
|
1659
|
+
const request = resource.request;
|
|
1660
|
+
const url = resource.url;
|
|
1661
|
+
request.url = url;
|
|
1662
|
+
request.requestFunction = function() {
|
|
1663
|
+
const deferred = defer_default();
|
|
1664
|
+
window[functionName] = function(data) {
|
|
1665
|
+
deferred.resolve(data);
|
|
1666
|
+
try {
|
|
1667
|
+
delete window[functionName];
|
|
1668
|
+
} catch (e) {
|
|
1669
|
+
window[functionName] = void 0;
|
|
1670
|
+
}
|
|
1671
|
+
};
|
|
1672
|
+
Resource._Implementations.loadAndExecuteScript(url, functionName, deferred);
|
|
1673
|
+
return deferred.promise;
|
|
1674
|
+
};
|
|
1675
|
+
const promise = RequestScheduler_default.request(request);
|
|
1676
|
+
if (!defined_default(promise)) {
|
|
1677
|
+
return;
|
|
1678
|
+
}
|
|
1679
|
+
return promise.catch(function(e) {
|
|
1680
|
+
if (request.state !== RequestState_default.FAILED) {
|
|
1681
|
+
return Promise.reject(e);
|
|
1682
|
+
}
|
|
1683
|
+
return resource.retryOnError(e).then(function(retry) {
|
|
1684
|
+
if (retry) {
|
|
1685
|
+
request.state = RequestState_default.UNISSUED;
|
|
1686
|
+
request.deferred = void 0;
|
|
1687
|
+
return fetchJsonp(resource, callbackParameterName, functionName);
|
|
1688
|
+
}
|
|
1689
|
+
return Promise.reject(e);
|
|
1690
|
+
});
|
|
1691
|
+
});
|
|
1692
|
+
}
|
|
1693
|
+
Resource.fetchJsonp = function(options) {
|
|
1694
|
+
const resource = new Resource(options);
|
|
1695
|
+
return resource.fetchJsonp(options.callbackParameterName);
|
|
1696
|
+
};
|
|
1697
|
+
Resource.prototype._makeRequest = function(options) {
|
|
1698
|
+
const resource = this;
|
|
1699
|
+
checkAndResetRequest(resource.request);
|
|
1700
|
+
const request = resource.request;
|
|
1701
|
+
const url = resource.url;
|
|
1702
|
+
request.url = url;
|
|
1703
|
+
request.requestFunction = function() {
|
|
1704
|
+
const responseType = options.responseType;
|
|
1705
|
+
const headers = combine_default(options.headers, resource.headers);
|
|
1706
|
+
const overrideMimeType = options.overrideMimeType;
|
|
1707
|
+
const method = options.method;
|
|
1708
|
+
const data = options.data;
|
|
1709
|
+
const deferred = defer_default();
|
|
1710
|
+
const xhr = Resource._Implementations.loadWithXhr(
|
|
1711
|
+
url,
|
|
1712
|
+
responseType,
|
|
1713
|
+
method,
|
|
1714
|
+
data,
|
|
1715
|
+
headers,
|
|
1716
|
+
deferred,
|
|
1717
|
+
overrideMimeType
|
|
1718
|
+
);
|
|
1719
|
+
if (defined_default(xhr) && defined_default(xhr.abort)) {
|
|
1720
|
+
request.cancelFunction = function() {
|
|
1721
|
+
xhr.abort();
|
|
1722
|
+
};
|
|
1723
|
+
}
|
|
1724
|
+
return deferred.promise;
|
|
1725
|
+
};
|
|
1726
|
+
const promise = RequestScheduler_default.request(request);
|
|
1727
|
+
if (!defined_default(promise)) {
|
|
1728
|
+
return;
|
|
1729
|
+
}
|
|
1730
|
+
return promise.then(function(data) {
|
|
1731
|
+
request.cancelFunction = void 0;
|
|
1732
|
+
return data;
|
|
1733
|
+
}).catch(function(e) {
|
|
1734
|
+
request.cancelFunction = void 0;
|
|
1735
|
+
if (request.state !== RequestState_default.FAILED) {
|
|
1736
|
+
return Promise.reject(e);
|
|
1737
|
+
}
|
|
1738
|
+
return resource.retryOnError(e).then(function(retry) {
|
|
1739
|
+
if (retry) {
|
|
1740
|
+
request.state = RequestState_default.UNISSUED;
|
|
1741
|
+
request.deferred = void 0;
|
|
1742
|
+
return resource.fetch(options);
|
|
1743
|
+
}
|
|
1744
|
+
return Promise.reject(e);
|
|
1745
|
+
});
|
|
1746
|
+
});
|
|
1747
|
+
};
|
|
1748
|
+
function checkAndResetRequest(request) {
|
|
1749
|
+
if (request.state === RequestState_default.ISSUED || request.state === RequestState_default.ACTIVE) {
|
|
1750
|
+
throw new RuntimeError_default("The Resource is already being fetched.");
|
|
1751
|
+
}
|
|
1752
|
+
request.state = RequestState_default.UNISSUED;
|
|
1753
|
+
request.deferred = void 0;
|
|
1754
|
+
}
|
|
1755
|
+
var dataUriRegex2 = /^data:(.*?)(;base64)?,(.*)$/;
|
|
1756
|
+
function decodeDataUriText(isBase64, data) {
|
|
1757
|
+
const result = decodeURIComponent(data);
|
|
1758
|
+
if (isBase64) {
|
|
1759
|
+
return atob(result);
|
|
1760
|
+
}
|
|
1761
|
+
return result;
|
|
1762
|
+
}
|
|
1763
|
+
function decodeDataUriArrayBuffer(isBase64, data) {
|
|
1764
|
+
const byteString = decodeDataUriText(isBase64, data);
|
|
1765
|
+
const buffer = new ArrayBuffer(byteString.length);
|
|
1766
|
+
const view = new Uint8Array(buffer);
|
|
1767
|
+
for (let i = 0; i < byteString.length; i++) {
|
|
1768
|
+
view[i] = byteString.charCodeAt(i);
|
|
1769
|
+
}
|
|
1770
|
+
return buffer;
|
|
1771
|
+
}
|
|
1772
|
+
function decodeDataUri(dataUriRegexResult, responseType) {
|
|
1773
|
+
responseType = responseType ?? "";
|
|
1774
|
+
const mimeType = dataUriRegexResult[1];
|
|
1775
|
+
const isBase64 = !!dataUriRegexResult[2];
|
|
1776
|
+
const data = dataUriRegexResult[3];
|
|
1777
|
+
let buffer;
|
|
1778
|
+
let parser;
|
|
1779
|
+
switch (responseType) {
|
|
1780
|
+
case "":
|
|
1781
|
+
case "text":
|
|
1782
|
+
return decodeDataUriText(isBase64, data);
|
|
1783
|
+
case "arraybuffer":
|
|
1784
|
+
return decodeDataUriArrayBuffer(isBase64, data);
|
|
1785
|
+
case "blob":
|
|
1786
|
+
buffer = decodeDataUriArrayBuffer(isBase64, data);
|
|
1787
|
+
return new Blob([buffer], {
|
|
1788
|
+
type: mimeType
|
|
1789
|
+
});
|
|
1790
|
+
case "document":
|
|
1791
|
+
parser = new DOMParser();
|
|
1792
|
+
return parser.parseFromString(
|
|
1793
|
+
decodeDataUriText(isBase64, data),
|
|
1794
|
+
mimeType
|
|
1795
|
+
);
|
|
1796
|
+
case "json":
|
|
1797
|
+
return JSON.parse(decodeDataUriText(isBase64, data));
|
|
1798
|
+
default:
|
|
1799
|
+
throw new DeveloperError_default(`Unhandled responseType: ${responseType}`);
|
|
1800
|
+
}
|
|
1801
|
+
}
|
|
1802
|
+
Resource.prototype.fetch = function(options) {
|
|
1803
|
+
options = defaultClone(options, {});
|
|
1804
|
+
options.method = "GET";
|
|
1805
|
+
return this._makeRequest(options);
|
|
1806
|
+
};
|
|
1807
|
+
Resource.fetch = function(options) {
|
|
1808
|
+
const resource = new Resource(options);
|
|
1809
|
+
return resource.fetch({
|
|
1810
|
+
// Make copy of just the needed fields because headers can be passed to both the constructor and to fetch
|
|
1811
|
+
responseType: options.responseType,
|
|
1812
|
+
overrideMimeType: options.overrideMimeType
|
|
1813
|
+
});
|
|
1814
|
+
};
|
|
1815
|
+
Resource.prototype.delete = function(options) {
|
|
1816
|
+
options = defaultClone(options, {});
|
|
1817
|
+
options.method = "DELETE";
|
|
1818
|
+
return this._makeRequest(options);
|
|
1819
|
+
};
|
|
1820
|
+
Resource.delete = function(options) {
|
|
1821
|
+
const resource = new Resource(options);
|
|
1822
|
+
return resource.delete({
|
|
1823
|
+
// Make copy of just the needed fields because headers can be passed to both the constructor and to fetch
|
|
1824
|
+
responseType: options.responseType,
|
|
1825
|
+
overrideMimeType: options.overrideMimeType,
|
|
1826
|
+
data: options.data
|
|
1827
|
+
});
|
|
1828
|
+
};
|
|
1829
|
+
Resource.prototype.head = function(options) {
|
|
1830
|
+
options = defaultClone(options, {});
|
|
1831
|
+
options.method = "HEAD";
|
|
1832
|
+
return this._makeRequest(options);
|
|
1833
|
+
};
|
|
1834
|
+
Resource.head = function(options) {
|
|
1835
|
+
const resource = new Resource(options);
|
|
1836
|
+
return resource.head({
|
|
1837
|
+
// Make copy of just the needed fields because headers can be passed to both the constructor and to fetch
|
|
1838
|
+
responseType: options.responseType,
|
|
1839
|
+
overrideMimeType: options.overrideMimeType
|
|
1840
|
+
});
|
|
1841
|
+
};
|
|
1842
|
+
Resource.prototype.options = function(options) {
|
|
1843
|
+
options = defaultClone(options, {});
|
|
1844
|
+
options.method = "OPTIONS";
|
|
1845
|
+
return this._makeRequest(options);
|
|
1846
|
+
};
|
|
1847
|
+
Resource.options = function(options) {
|
|
1848
|
+
const resource = new Resource(options);
|
|
1849
|
+
return resource.options({
|
|
1850
|
+
// Make copy of just the needed fields because headers can be passed to both the constructor and to fetch
|
|
1851
|
+
responseType: options.responseType,
|
|
1852
|
+
overrideMimeType: options.overrideMimeType
|
|
1853
|
+
});
|
|
1854
|
+
};
|
|
1855
|
+
Resource.prototype.post = function(data, options) {
|
|
1856
|
+
Check_default.defined("data", data);
|
|
1857
|
+
options = defaultClone(options, {});
|
|
1858
|
+
options.method = "POST";
|
|
1859
|
+
options.data = data;
|
|
1860
|
+
return this._makeRequest(options);
|
|
1861
|
+
};
|
|
1862
|
+
Resource.post = function(options) {
|
|
1863
|
+
const resource = new Resource(options);
|
|
1864
|
+
return resource.post(options.data, {
|
|
1865
|
+
// Make copy of just the needed fields because headers can be passed to both the constructor and to post
|
|
1866
|
+
responseType: options.responseType,
|
|
1867
|
+
overrideMimeType: options.overrideMimeType
|
|
1868
|
+
});
|
|
1869
|
+
};
|
|
1870
|
+
Resource.prototype.put = function(data, options) {
|
|
1871
|
+
Check_default.defined("data", data);
|
|
1872
|
+
options = defaultClone(options, {});
|
|
1873
|
+
options.method = "PUT";
|
|
1874
|
+
options.data = data;
|
|
1875
|
+
return this._makeRequest(options);
|
|
1876
|
+
};
|
|
1877
|
+
Resource.put = function(options) {
|
|
1878
|
+
const resource = new Resource(options);
|
|
1879
|
+
return resource.put(options.data, {
|
|
1880
|
+
// Make copy of just the needed fields because headers can be passed to both the constructor and to post
|
|
1881
|
+
responseType: options.responseType,
|
|
1882
|
+
overrideMimeType: options.overrideMimeType
|
|
1883
|
+
});
|
|
1884
|
+
};
|
|
1885
|
+
Resource.prototype.patch = function(data, options) {
|
|
1886
|
+
Check_default.defined("data", data);
|
|
1887
|
+
options = defaultClone(options, {});
|
|
1888
|
+
options.method = "PATCH";
|
|
1889
|
+
options.data = data;
|
|
1890
|
+
return this._makeRequest(options);
|
|
1891
|
+
};
|
|
1892
|
+
Resource.patch = function(options) {
|
|
1893
|
+
const resource = new Resource(options);
|
|
1894
|
+
return resource.patch(options.data, {
|
|
1895
|
+
// Make copy of just the needed fields because headers can be passed to both the constructor and to post
|
|
1896
|
+
responseType: options.responseType,
|
|
1897
|
+
overrideMimeType: options.overrideMimeType
|
|
1898
|
+
});
|
|
1899
|
+
};
|
|
1900
|
+
Resource._Implementations = {};
|
|
1901
|
+
Resource._Implementations.loadImageElement = function(url, crossOrigin, deferred) {
|
|
1902
|
+
const image = new Image();
|
|
1903
|
+
image.onload = function() {
|
|
1904
|
+
if (image.naturalWidth === 0 && image.naturalHeight === 0 && image.width === 0 && image.height === 0) {
|
|
1905
|
+
image.width = 300;
|
|
1906
|
+
image.height = 150;
|
|
1907
|
+
}
|
|
1908
|
+
deferred.resolve(image);
|
|
1909
|
+
};
|
|
1910
|
+
image.onerror = function(e) {
|
|
1911
|
+
deferred.reject(e);
|
|
1912
|
+
};
|
|
1913
|
+
if (crossOrigin) {
|
|
1914
|
+
if (TrustedServers_default.contains(url)) {
|
|
1915
|
+
image.crossOrigin = "use-credentials";
|
|
1916
|
+
} else {
|
|
1917
|
+
image.crossOrigin = "";
|
|
1918
|
+
}
|
|
1919
|
+
}
|
|
1920
|
+
image.src = url;
|
|
1921
|
+
};
|
|
1922
|
+
Resource._Implementations.createImage = function(request, crossOrigin, deferred, flipY, skipColorSpaceConversion, preferImageBitmap, headers) {
|
|
1923
|
+
const url = request.url;
|
|
1924
|
+
Resource.supportsImageBitmapOptions().then(function(supportsImageBitmap) {
|
|
1925
|
+
if (!(supportsImageBitmap && preferImageBitmap)) {
|
|
1926
|
+
Resource._Implementations.loadImageElement(url, crossOrigin, deferred);
|
|
1927
|
+
return;
|
|
1928
|
+
}
|
|
1929
|
+
const responseType = "blob";
|
|
1930
|
+
const method = "GET";
|
|
1931
|
+
const xhrDeferred = defer_default();
|
|
1932
|
+
const xhr = Resource._Implementations.loadWithXhr(
|
|
1933
|
+
url,
|
|
1934
|
+
responseType,
|
|
1935
|
+
method,
|
|
1936
|
+
void 0,
|
|
1937
|
+
headers,
|
|
1938
|
+
xhrDeferred,
|
|
1939
|
+
void 0,
|
|
1940
|
+
void 0,
|
|
1941
|
+
void 0
|
|
1942
|
+
);
|
|
1943
|
+
if (defined_default(xhr) && defined_default(xhr.abort)) {
|
|
1944
|
+
request.cancelFunction = function() {
|
|
1945
|
+
xhr.abort();
|
|
1946
|
+
};
|
|
1947
|
+
}
|
|
1948
|
+
return xhrDeferred.promise.then(function(blob) {
|
|
1949
|
+
if (!defined_default(blob)) {
|
|
1950
|
+
deferred.reject(
|
|
1951
|
+
new RuntimeError_default(
|
|
1952
|
+
`Successfully retrieved ${url} but it contained no content.`
|
|
1953
|
+
)
|
|
1954
|
+
);
|
|
1955
|
+
return;
|
|
1956
|
+
}
|
|
1957
|
+
return Resource.createImageBitmapFromBlob(blob, {
|
|
1958
|
+
flipY,
|
|
1959
|
+
premultiplyAlpha: false,
|
|
1960
|
+
skipColorSpaceConversion
|
|
1961
|
+
});
|
|
1962
|
+
}).then(function(image) {
|
|
1963
|
+
deferred.resolve(image);
|
|
1964
|
+
});
|
|
1965
|
+
}).catch(function(e) {
|
|
1966
|
+
deferred.reject(e);
|
|
1967
|
+
});
|
|
1968
|
+
};
|
|
1969
|
+
Resource.createImageBitmapFromBlob = function(blob, options) {
|
|
1970
|
+
Check_default.defined("options", options);
|
|
1971
|
+
Check_default.typeOf.bool("options.flipY", options.flipY);
|
|
1972
|
+
Check_default.typeOf.bool("options.premultiplyAlpha", options.premultiplyAlpha);
|
|
1973
|
+
Check_default.typeOf.bool(
|
|
1974
|
+
"options.skipColorSpaceConversion",
|
|
1975
|
+
options.skipColorSpaceConversion
|
|
1976
|
+
);
|
|
1977
|
+
return createImageBitmap(blob, {
|
|
1978
|
+
// 'from-image' is deprecated, new option is 'none'. However, we still need to support older browsers,
|
|
1979
|
+
// and there's no good way to detect support for these options. For now, continue to use 'from-image'. See: https://github.com/CesiumGS/cesium/issues/12846
|
|
1980
|
+
imageOrientation: options.flipY ? "flipY" : "none",
|
|
1981
|
+
premultiplyAlpha: options.premultiplyAlpha ? "premultiply" : "none",
|
|
1982
|
+
colorSpaceConversion: options.skipColorSpaceConversion ? "none" : "default"
|
|
1983
|
+
});
|
|
1984
|
+
};
|
|
1985
|
+
function loadWithHttpRequest(url, responseType, method, data, headers, deferred, overrideMimeType) {
|
|
1986
|
+
fetch(url, {
|
|
1987
|
+
method,
|
|
1988
|
+
headers,
|
|
1989
|
+
credentials: TrustedServers_default.contains(url) ? "include" : "same-origin"
|
|
1990
|
+
}).then(async (response) => {
|
|
1991
|
+
if (!response.ok) {
|
|
1992
|
+
const responseHeaders = {};
|
|
1993
|
+
response.headers.forEach((value, key) => {
|
|
1994
|
+
responseHeaders[key] = value;
|
|
1995
|
+
});
|
|
1996
|
+
deferred.reject(
|
|
1997
|
+
new RequestErrorEvent_default(response.status, response, responseHeaders)
|
|
1998
|
+
);
|
|
1999
|
+
return;
|
|
2000
|
+
}
|
|
2001
|
+
switch (responseType) {
|
|
2002
|
+
case "text":
|
|
2003
|
+
deferred.resolve(response.text());
|
|
2004
|
+
break;
|
|
2005
|
+
case "json":
|
|
2006
|
+
deferred.resolve(response.json());
|
|
2007
|
+
break;
|
|
2008
|
+
default:
|
|
2009
|
+
deferred.resolve(new Uint8Array(await response.arrayBuffer()).buffer);
|
|
2010
|
+
break;
|
|
2011
|
+
}
|
|
2012
|
+
}).catch(() => {
|
|
2013
|
+
deferred.reject(new RequestErrorEvent_default());
|
|
2014
|
+
});
|
|
2015
|
+
}
|
|
2016
|
+
var noXMLHttpRequest = typeof XMLHttpRequest === "undefined";
|
|
2017
|
+
Resource._Implementations.loadWithXhr = function(url, responseType, method, data, headers, deferred, overrideMimeType) {
|
|
2018
|
+
const dataUriRegexResult = dataUriRegex2.exec(url);
|
|
2019
|
+
if (dataUriRegexResult !== null) {
|
|
2020
|
+
deferred.resolve(decodeDataUri(dataUriRegexResult, responseType));
|
|
2021
|
+
return;
|
|
2022
|
+
}
|
|
2023
|
+
if (noXMLHttpRequest) {
|
|
2024
|
+
loadWithHttpRequest(
|
|
2025
|
+
url,
|
|
2026
|
+
responseType,
|
|
2027
|
+
method,
|
|
2028
|
+
data,
|
|
2029
|
+
headers,
|
|
2030
|
+
deferred,
|
|
2031
|
+
overrideMimeType
|
|
2032
|
+
);
|
|
2033
|
+
return;
|
|
2034
|
+
}
|
|
2035
|
+
const xhr = new XMLHttpRequest();
|
|
2036
|
+
if (TrustedServers_default.contains(url)) {
|
|
2037
|
+
xhr.withCredentials = true;
|
|
2038
|
+
}
|
|
2039
|
+
xhr.open(method, url, true);
|
|
2040
|
+
if (defined_default(overrideMimeType) && defined_default(xhr.overrideMimeType)) {
|
|
2041
|
+
xhr.overrideMimeType(overrideMimeType);
|
|
2042
|
+
}
|
|
2043
|
+
if (defined_default(headers)) {
|
|
2044
|
+
for (const key in headers) {
|
|
2045
|
+
if (headers.hasOwnProperty(key)) {
|
|
2046
|
+
xhr.setRequestHeader(key, headers[key]);
|
|
2047
|
+
}
|
|
2048
|
+
}
|
|
2049
|
+
}
|
|
2050
|
+
if (defined_default(responseType)) {
|
|
2051
|
+
xhr.responseType = responseType;
|
|
2052
|
+
}
|
|
2053
|
+
let localFile = false;
|
|
2054
|
+
if (typeof url === "string") {
|
|
2055
|
+
localFile = url.indexOf("file://") === 0 || typeof window !== "undefined" && window.location.origin === "file://";
|
|
2056
|
+
}
|
|
2057
|
+
xhr.onload = function() {
|
|
2058
|
+
if ((xhr.status < 200 || xhr.status >= 300) && !(localFile && xhr.status === 0)) {
|
|
2059
|
+
deferred.reject(
|
|
2060
|
+
new RequestErrorEvent_default(
|
|
2061
|
+
xhr.status,
|
|
2062
|
+
xhr.response,
|
|
2063
|
+
xhr.getAllResponseHeaders()
|
|
2064
|
+
)
|
|
2065
|
+
);
|
|
2066
|
+
return;
|
|
2067
|
+
}
|
|
2068
|
+
const response = xhr.response;
|
|
2069
|
+
const browserResponseType = xhr.responseType;
|
|
2070
|
+
if (method === "HEAD" || method === "OPTIONS") {
|
|
2071
|
+
const responseHeaderString = xhr.getAllResponseHeaders();
|
|
2072
|
+
const splitHeaders = responseHeaderString.trim().split(/[\r\n]+/);
|
|
2073
|
+
const responseHeaders = {};
|
|
2074
|
+
splitHeaders.forEach(function(line) {
|
|
2075
|
+
const parts = line.split(": ");
|
|
2076
|
+
const header = parts.shift();
|
|
2077
|
+
responseHeaders[header] = parts.join(": ");
|
|
2078
|
+
});
|
|
2079
|
+
deferred.resolve(responseHeaders);
|
|
2080
|
+
return;
|
|
2081
|
+
}
|
|
2082
|
+
if (xhr.status === 204) {
|
|
2083
|
+
deferred.resolve(void 0);
|
|
2084
|
+
} else if (defined_default(response) && (!defined_default(responseType) || browserResponseType === responseType)) {
|
|
2085
|
+
deferred.resolve(response);
|
|
2086
|
+
} else if (responseType === "json" && typeof response === "string") {
|
|
2087
|
+
try {
|
|
2088
|
+
deferred.resolve(JSON.parse(response));
|
|
2089
|
+
} catch (e) {
|
|
2090
|
+
deferred.reject(e);
|
|
2091
|
+
}
|
|
2092
|
+
} else if ((browserResponseType === "" || browserResponseType === "document") && defined_default(xhr.responseXML) && xhr.responseXML.hasChildNodes()) {
|
|
2093
|
+
deferred.resolve(xhr.responseXML);
|
|
2094
|
+
} else if ((browserResponseType === "" || browserResponseType === "text") && defined_default(xhr.responseText)) {
|
|
2095
|
+
deferred.resolve(xhr.responseText);
|
|
2096
|
+
} else {
|
|
2097
|
+
deferred.reject(
|
|
2098
|
+
new RuntimeError_default("Invalid XMLHttpRequest response type.")
|
|
2099
|
+
);
|
|
2100
|
+
}
|
|
2101
|
+
};
|
|
2102
|
+
xhr.onerror = function(e) {
|
|
2103
|
+
deferred.reject(new RequestErrorEvent_default());
|
|
2104
|
+
};
|
|
2105
|
+
xhr.send(data);
|
|
2106
|
+
return xhr;
|
|
2107
|
+
};
|
|
2108
|
+
Resource._Implementations.loadAndExecuteScript = function(url, functionName, deferred) {
|
|
2109
|
+
return loadAndExecuteScript_default(url, functionName).catch(function(e) {
|
|
2110
|
+
deferred.reject(e);
|
|
2111
|
+
});
|
|
2112
|
+
};
|
|
2113
|
+
Resource._DefaultImplementations = {};
|
|
2114
|
+
Resource._DefaultImplementations.createImage = Resource._Implementations.createImage;
|
|
2115
|
+
Resource._DefaultImplementations.loadWithXhr = Resource._Implementations.loadWithXhr;
|
|
2116
|
+
Resource._DefaultImplementations.loadWithHttpRequest = loadWithHttpRequest;
|
|
2117
|
+
Resource._DefaultImplementations.loadAndExecuteScript = Resource._Implementations.loadAndExecuteScript;
|
|
2118
|
+
Resource.DEFAULT = Object.freeze(
|
|
2119
|
+
new Resource({
|
|
2120
|
+
url: typeof document === "undefined" ? "" : document.location.href.split("?")[0]
|
|
2121
|
+
})
|
|
2122
|
+
);
|
|
2123
|
+
var Resource_default = Resource;
|
|
2124
|
+
|
|
2125
|
+
export {
|
|
2126
|
+
combine_default,
|
|
2127
|
+
getAbsoluteUri_default,
|
|
2128
|
+
isCrossOriginUrl_default,
|
|
2129
|
+
Event_default,
|
|
2130
|
+
Resource_default
|
|
2131
|
+
};
|