@npm9912/v-map 0.1.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.
Files changed (438) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +185 -0
  3. package/dist/cjs/_commonjsHelpers-B83fTs8d.js +36 -0
  4. package/dist/cjs/app-globals-V2Kpy_OQ.js +5 -0
  5. package/dist/cjs/cesium-provider-BiFFyAl9.js +2598 -0
  6. package/dist/cjs/deck-provider-Ctq3Q8a1.js +47824 -0
  7. package/dist/cjs/geotiff-CEwvF9cG.js +47 -0
  8. package/dist/cjs/geotiff-source-RaNzzWkC.js +1522 -0
  9. package/dist/cjs/index-B1oGO1g-.js +10658 -0
  10. package/dist/cjs/index-B8LHqjyg.js +1765 -0
  11. package/dist/cjs/index-BIL4VsgP.js +310 -0
  12. package/dist/cjs/index-Blku2QY8.js +167 -0
  13. package/dist/cjs/index-CJvvX4yx.js +21 -0
  14. package/dist/cjs/index-CbVT-Con.js +699 -0
  15. package/dist/cjs/index-ISOEpMC3.js +20478 -0
  16. package/dist/cjs/index-JSwBbvGA.js +1621 -0
  17. package/dist/cjs/index.browser-DQhD8Jwl.js +6873 -0
  18. package/dist/cjs/index.cjs.js +2 -0
  19. package/dist/cjs/layer-extension-B_olS0rc.js +65 -0
  20. package/dist/cjs/leaflet-provider-DOqfs7g5.js +1815 -0
  21. package/dist/cjs/loader.cjs.js +13 -0
  22. package/dist/cjs/main-dist-7TykwFci.js +2655 -0
  23. package/dist/cjs/messages-D7h4m8Tx.js +186 -0
  24. package/dist/cjs/openlayers-provider-Dfeg6L4n.js +1604 -0
  25. package/dist/cjs/polygon-layer-B9PrN7vr.js +1300 -0
  26. package/dist/cjs/scenegraph-layer-DwNoxQdi.js +2530 -0
  27. package/dist/cjs/styleconfig-CVRqArk-.js +23 -0
  28. package/dist/cjs/v-map-builder.cjs.entry.js +3786 -0
  29. package/dist/cjs/v-map-layer-geojson_12.cjs.entry.js +40894 -0
  30. package/dist/cjs/v-map-layer-helper-iAzxAg9I.js +285 -0
  31. package/dist/cjs/v-map-layer-terrain-geotiff.cjs.entry.js +258 -0
  32. package/dist/cjs/v-map-layercontrol.cjs.entry.js +247 -0
  33. package/dist/cjs/v-map.cjs.js +25 -0
  34. package/dist/cjs/v-map.v-map-layer-osm.v-map-layergroup-BsXp3BoL.js +582 -0
  35. package/dist/cjs/v-map_3.cjs.entry.js +12 -0
  36. package/dist/collection/collection-manifest.json +30 -0
  37. package/dist/collection/components/v-map/v-map.css +3 -0
  38. package/dist/collection/components/v-map/v-map.js +467 -0
  39. package/dist/collection/components/v-map/v-map.test.js +33 -0
  40. package/dist/collection/components/v-map-builder/v-map-builder.css +1 -0
  41. package/dist/collection/components/v-map-builder/v-map-builder.js +913 -0
  42. package/dist/collection/components/v-map-builder/v-map-builder.test.js +56 -0
  43. package/dist/collection/components/v-map-layer-geojson/v-map-layer-geojson.js +862 -0
  44. package/dist/collection/components/v-map-layer-geojson/v-map-layer-geojson.test.js +42 -0
  45. package/dist/collection/components/v-map-layer-geotiff/v-map-layer-geotiff.css +4 -0
  46. package/dist/collection/components/v-map-layer-geotiff/v-map-layer-geotiff.js +500 -0
  47. package/dist/collection/components/v-map-layer-geotiff/v-map-layer-geotiff.test.js +38 -0
  48. package/dist/collection/components/v-map-layer-google/v-map-layer-google.css +1 -0
  49. package/dist/collection/components/v-map-layer-google/v-map-layer-google.js +442 -0
  50. package/dist/collection/components/v-map-layer-osm/error-api.test.js +108 -0
  51. package/dist/collection/components/v-map-layer-osm/v-map-layer-osm.css +4 -0
  52. package/dist/collection/components/v-map-layer-osm/v-map-layer-osm.js +311 -0
  53. package/dist/collection/components/v-map-layer-osm/v-map-layer-osm.test.js +36 -0
  54. package/dist/collection/components/v-map-layer-scatterplot/v-map-layer-scatterplot.css +1 -0
  55. package/dist/collection/components/v-map-layer-scatterplot/v-map-layer-scatterplot.js +305 -0
  56. package/dist/collection/components/v-map-layer-terrain/v-map-layer-terrain.css +3 -0
  57. package/dist/collection/components/v-map-layer-terrain/v-map-layer-terrain.js +548 -0
  58. package/dist/collection/components/v-map-layer-terrain/v-map-layer-terrain.test.js +36 -0
  59. package/dist/collection/components/v-map-layer-terrain-geotiff/v-map-layer-terrain-geotiff.css +3 -0
  60. package/dist/collection/components/v-map-layer-terrain-geotiff/v-map-layer-terrain-geotiff.js +735 -0
  61. package/dist/collection/components/v-map-layer-terrain-geotiff/v-map-layer-terrain-geotiff.test.js +42 -0
  62. package/dist/collection/components/v-map-layer-tile3d/v-map-layer-tile3d.css +3 -0
  63. package/dist/collection/components/v-map-layer-tile3d/v-map-layer-tile3d.js +449 -0
  64. package/dist/collection/components/v-map-layer-tile3d/v-map-layer-tile3d.test.js +50 -0
  65. package/dist/collection/components/v-map-layer-wcs/v-map-layer-wcs.css +1 -0
  66. package/dist/collection/components/v-map-layer-wcs/v-map-layer-wcs.js +448 -0
  67. package/dist/collection/components/v-map-layer-wcs/v-map-layer-wcs.test.js +39 -0
  68. package/dist/collection/components/v-map-layer-wfs/v-map-layer-wfs.css +1 -0
  69. package/dist/collection/components/v-map-layer-wfs/v-map-layer-wfs.js +489 -0
  70. package/dist/collection/components/v-map-layer-wfs/v-map-layer-wfs.test.js +43 -0
  71. package/dist/collection/components/v-map-layer-wkt/v-map-layer-wkt.css +1 -0
  72. package/dist/collection/components/v-map-layer-wkt/v-map-layer-wkt.js +811 -0
  73. package/dist/collection/components/v-map-layer-wkt/v-map-layer-wkt.test.js +34 -0
  74. package/dist/collection/components/v-map-layer-wms/v-map-layer-wms.css +1 -0
  75. package/dist/collection/components/v-map-layer-wms/v-map-layer-wms.js +453 -0
  76. package/dist/collection/components/v-map-layer-wms/v-map-layer-wms.test.js +36 -0
  77. package/dist/collection/components/v-map-layer-xyz/v-map-layer-xyz.css +1 -0
  78. package/dist/collection/components/v-map-layer-xyz/v-map-layer-xyz.js +331 -0
  79. package/dist/collection/components/v-map-layer-xyz/v-map-layer-xyz.test.js +28 -0
  80. package/dist/collection/components/v-map-layercontrol/v-map-layercontrol.css +74 -0
  81. package/dist/collection/components/v-map-layercontrol/v-map-layercontrol.js +277 -0
  82. package/dist/collection/components/v-map-layercontrol/v-map-layercontrol.test.js +134 -0
  83. package/dist/collection/components/v-map-layergroup/v-map-layergroup.css +4 -0
  84. package/dist/collection/components/v-map-layergroup/v-map-layergroup.js +212 -0
  85. package/dist/collection/components/v-map-layergroup/v-map-layergroup.test.js +39 -0
  86. package/dist/collection/components/v-map-style/v-map-style.css +38 -0
  87. package/dist/collection/components/v-map-style/v-map-style.js +492 -0
  88. package/dist/collection/components/v-map-style/v-map-style.unit.js +62 -0
  89. package/dist/collection/index.js +1 -0
  90. package/dist/collection/layer/v-map-layer-helper.js +281 -0
  91. package/dist/collection/layer/v-map-layer-helper.unit.js +234 -0
  92. package/dist/collection/lib/cesium-loader.js +58 -0
  93. package/dist/collection/lib/ensure-importmap.js +12 -0
  94. package/dist/collection/lib/ensure-importmap.unit.js +57 -0
  95. package/dist/collection/lib/versions.gen.js +6 -0
  96. package/dist/collection/lib/vstyle.js +8 -0
  97. package/dist/collection/map-provider/cesium/CesiumGeoTIFFTerrainProvider.js +285 -0
  98. package/dist/collection/map-provider/cesium/CesiumLayerGroups.js +159 -0
  99. package/dist/collection/map-provider/cesium/GeoTIFFImageryProvider.js +192 -0
  100. package/dist/collection/map-provider/cesium/GeoTIFFImageryProvider.test.js +57 -0
  101. package/dist/collection/map-provider/cesium/cesium-provider.js +1408 -0
  102. package/dist/collection/map-provider/cesium/i-layer.js +1 -0
  103. package/dist/collection/map-provider/cesium/layer-manager.js +467 -0
  104. package/dist/collection/map-provider/deck/DeckGLGeoTIFFLayer.js +483 -0
  105. package/dist/collection/map-provider/deck/DeckGLGeoTIFFTerrainLayer.js +410 -0
  106. package/dist/collection/map-provider/deck/LayerGroupWithModel.js +169 -0
  107. package/dist/collection/map-provider/deck/LayerGroups.js +192 -0
  108. package/dist/collection/map-provider/deck/LayerModel.js +1 -0
  109. package/dist/collection/map-provider/deck/RenderableGroup.js +1 -0
  110. package/dist/collection/map-provider/deck/deck-provider.js +1563 -0
  111. package/dist/collection/map-provider/geotiff/geotiff-source.js +172 -0
  112. package/dist/collection/map-provider/geotiff/utils/AABB2D.js +24 -0
  113. package/dist/collection/map-provider/geotiff/utils/BVHNode2D.js +166 -0
  114. package/dist/collection/map-provider/geotiff/utils/GeoTIFFTileProcessor.js +484 -0
  115. package/dist/collection/map-provider/geotiff/utils/Triangle.js +1 -0
  116. package/dist/collection/map-provider/geotiff/utils/Triangulation.js +321 -0
  117. package/dist/collection/map-provider/geotiff/utils/colormap-utils.js +190 -0
  118. package/dist/collection/map-provider/geotiff/utils/normalization-utils.js +122 -0
  119. package/dist/collection/map-provider/geotiff/utils/sampling-utils.js +108 -0
  120. package/dist/collection/map-provider/leaflet/GeoTIFFGridLayer.js +147 -0
  121. package/dist/collection/map-provider/leaflet/WCSGridLayer.js +124 -0
  122. package/dist/collection/map-provider/leaflet/google-map-tiles-layer.js +352 -0
  123. package/dist/collection/map-provider/leaflet/leaflet-helpers.js +94 -0
  124. package/dist/collection/map-provider/leaflet/leaflet-provider.js +1095 -0
  125. package/dist/collection/map-provider/ol/CustomGeoTiff.js +145 -0
  126. package/dist/collection/map-provider/ol/openlayers-helper.js +26 -0
  127. package/dist/collection/map-provider/ol/openlayers-provider.js +1427 -0
  128. package/dist/collection/map-provider/provider-factory.js +44 -0
  129. package/dist/collection/map-provider/provider-factory.unit.js +66 -0
  130. package/dist/collection/testing/browser-test-utils.js +49 -0
  131. package/dist/collection/testing/e2e-testing.js +122 -0
  132. package/dist/collection/testing/e2e-utils.js +70 -0
  133. package/dist/collection/testing/geotiff-test-server.js +100 -0
  134. package/dist/collection/testing/mocks/geostyler-lyrx-parser.js +12 -0
  135. package/dist/collection/testing/mocks/geostyler-mapbox-parser.js +12 -0
  136. package/dist/collection/testing/mocks/geostyler-qgis-parser.js +12 -0
  137. package/dist/collection/testing/mocks/geostyler-sld-parser.js +13 -0
  138. package/dist/collection/testing/mocks/geostyler-style.js +5 -0
  139. package/dist/collection/testing/setupTests.browser.js +1 -0
  140. package/dist/collection/testing/setupTests.stencil.js +20 -0
  141. package/dist/collection/testing/setupTests.vitest.js +59 -0
  142. package/dist/collection/testing/stencil-testing-wrapper.js +43 -0
  143. package/dist/collection/testing/styleMock.js +1 -0
  144. package/dist/collection/types/color.js +1 -0
  145. package/dist/collection/types/cssmode.js +1 -0
  146. package/dist/collection/types/flavour.js +1 -0
  147. package/dist/collection/types/layerconfig.js +1 -0
  148. package/dist/collection/types/lonlat.js +1 -0
  149. package/dist/collection/types/mapinitoptions.js +1 -0
  150. package/dist/collection/types/mapprovider.js +1 -0
  151. package/dist/collection/types/provideroptions.js +1 -0
  152. package/dist/collection/types/styleconfig.js +19 -0
  153. package/dist/collection/types/styling.js +13 -0
  154. package/dist/collection/types/styling.unit.js +37 -0
  155. package/dist/collection/types/vmaplayer.js +1 -0
  156. package/dist/collection/utils/async-mutex.js +28 -0
  157. package/dist/collection/utils/diff.js +142 -0
  158. package/dist/collection/utils/diff.unit.js +59 -0
  159. package/dist/collection/utils/dom-env.js +43 -0
  160. package/dist/collection/utils/dom-env.unit.js +92 -0
  161. package/dist/collection/utils/events.js +8 -0
  162. package/dist/collection/utils/logger.js +183 -0
  163. package/dist/collection/utils/logger.unit.js +98 -0
  164. package/dist/collection/utils/messages.js +12 -0
  165. package/dist/collection/utils/spatial-utils.js +27 -0
  166. package/dist/collection/utils/spatial-utils.unit.js +24 -0
  167. package/dist/components/_commonjsHelpers.js +1 -0
  168. package/dist/components/cesium-provider.js +1 -0
  169. package/dist/components/deck-provider.js +1 -0
  170. package/dist/components/events.js +1 -0
  171. package/dist/components/geotiff-source.js +1 -0
  172. package/dist/components/geotiff.js +4 -0
  173. package/dist/components/index.browser.js +15 -0
  174. package/dist/components/index.d.ts +35 -0
  175. package/dist/components/index.js +1 -0
  176. package/dist/components/index2.js +1 -0
  177. package/dist/components/index3.js +1 -0
  178. package/dist/components/index4.js +1 -0
  179. package/dist/components/index5.js +1 -0
  180. package/dist/components/index6.js +1 -0
  181. package/dist/components/index7.js +1 -0
  182. package/dist/components/index8.js +7 -0
  183. package/dist/components/layer-extension.js +1 -0
  184. package/dist/components/leaflet-provider.js +1 -0
  185. package/dist/components/main-dist.js +1 -0
  186. package/dist/components/messages.js +1 -0
  187. package/dist/components/openlayers-provider.js +1 -0
  188. package/dist/components/polygon-layer.js +1 -0
  189. package/dist/components/scenegraph-layer.js +1 -0
  190. package/dist/components/styleconfig.js +1 -0
  191. package/dist/components/styling.js +1 -0
  192. package/dist/components/v-map-builder.d.ts +11 -0
  193. package/dist/components/v-map-builder.js +2 -0
  194. package/dist/components/v-map-layer-geojson.d.ts +11 -0
  195. package/dist/components/v-map-layer-geojson.js +1 -0
  196. package/dist/components/v-map-layer-geojson2.js +1 -0
  197. package/dist/components/v-map-layer-geotiff.d.ts +11 -0
  198. package/dist/components/v-map-layer-geotiff.js +1 -0
  199. package/dist/components/v-map-layer-geotiff2.js +1 -0
  200. package/dist/components/v-map-layer-google.d.ts +11 -0
  201. package/dist/components/v-map-layer-google.js +1 -0
  202. package/dist/components/v-map-layer-google2.js +1 -0
  203. package/dist/components/v-map-layer-helper.js +1 -0
  204. package/dist/components/v-map-layer-osm.d.ts +11 -0
  205. package/dist/components/v-map-layer-osm.js +1 -0
  206. package/dist/components/v-map-layer-osm2.js +1 -0
  207. package/dist/components/v-map-layer-scatterplot.d.ts +11 -0
  208. package/dist/components/v-map-layer-scatterplot.js +1 -0
  209. package/dist/components/v-map-layer-scatterplot2.js +1 -0
  210. package/dist/components/v-map-layer-terrain-geotiff.d.ts +11 -0
  211. package/dist/components/v-map-layer-terrain-geotiff.js +1 -0
  212. package/dist/components/v-map-layer-terrain.d.ts +11 -0
  213. package/dist/components/v-map-layer-terrain.js +1 -0
  214. package/dist/components/v-map-layer-terrain2.js +1 -0
  215. package/dist/components/v-map-layer-tile3d.d.ts +11 -0
  216. package/dist/components/v-map-layer-tile3d.js +1 -0
  217. package/dist/components/v-map-layer-tile3d2.js +1 -0
  218. package/dist/components/v-map-layer-wcs.d.ts +11 -0
  219. package/dist/components/v-map-layer-wcs.js +1 -0
  220. package/dist/components/v-map-layer-wcs2.js +1 -0
  221. package/dist/components/v-map-layer-wfs.d.ts +11 -0
  222. package/dist/components/v-map-layer-wfs.js +1 -0
  223. package/dist/components/v-map-layer-wfs2.js +1 -0
  224. package/dist/components/v-map-layer-wkt.d.ts +11 -0
  225. package/dist/components/v-map-layer-wkt.js +1 -0
  226. package/dist/components/v-map-layer-wkt2.js +1 -0
  227. package/dist/components/v-map-layer-wms.d.ts +11 -0
  228. package/dist/components/v-map-layer-wms.js +1 -0
  229. package/dist/components/v-map-layer-wms2.js +1 -0
  230. package/dist/components/v-map-layer-xyz.d.ts +11 -0
  231. package/dist/components/v-map-layer-xyz.js +1 -0
  232. package/dist/components/v-map-layer-xyz2.js +1 -0
  233. package/dist/components/v-map-layercontrol.d.ts +11 -0
  234. package/dist/components/v-map-layercontrol.js +1 -0
  235. package/dist/components/v-map-layergroup.d.ts +11 -0
  236. package/dist/components/v-map-layergroup.js +1 -0
  237. package/dist/components/v-map-layergroup2.js +1 -0
  238. package/dist/components/v-map-style.d.ts +11 -0
  239. package/dist/components/v-map-style.js +1 -0
  240. package/dist/components/v-map-style2.js +10 -0
  241. package/dist/components/v-map.d.ts +11 -0
  242. package/dist/components/v-map.js +1 -0
  243. package/dist/components/v-map2.js +1 -0
  244. package/dist/esm/_commonjsHelpers-E-ZsRS8r.js +32 -0
  245. package/dist/esm/app-globals-DQuL1Twl.js +3 -0
  246. package/dist/esm/cesium-provider-BJfAup3w.js +2596 -0
  247. package/dist/esm/deck-provider-C7U9VDEq.js +47709 -0
  248. package/dist/esm/geotiff-BEWxTIfH.js +45 -0
  249. package/dist/esm/geotiff-source-esnDnC-u.js +1516 -0
  250. package/dist/esm/index-B1zwA4IC.js +685 -0
  251. package/dist/esm/index-BBpiaTpT.js +165 -0
  252. package/dist/esm/index-BIEmlzCf.js +1697 -0
  253. package/dist/esm/index-BUHa4Jj0.js +307 -0
  254. package/dist/esm/index-DbSdn93t.js +20461 -0
  255. package/dist/esm/index-RpJarvr_.js +10656 -0
  256. package/dist/esm/index-jN06TXUp.js +14 -0
  257. package/dist/esm/index-jzneDarq.js +1613 -0
  258. package/dist/esm/index.browser-DhQAXuA7.js +6860 -0
  259. package/dist/esm/index.js +1 -0
  260. package/dist/esm/layer-extension-CZXK5goK.js +63 -0
  261. package/dist/esm/leaflet-provider-Q41TB6ku.js +1794 -0
  262. package/dist/esm/loader.js +11 -0
  263. package/dist/esm/main-dist-CwnA7_Xn.js +2652 -0
  264. package/dist/esm/messages-CMKJzsgL.js +180 -0
  265. package/dist/esm/openlayers-provider-CMsDsQTQ.js +1602 -0
  266. package/dist/esm/polygon-layer-ByhxGhWC.js +1295 -0
  267. package/dist/esm/scenegraph-layer-09K_B6DT.js +2526 -0
  268. package/dist/esm/styleconfig-B-bAcABs.js +21 -0
  269. package/dist/esm/v-map-builder.entry.js +3784 -0
  270. package/dist/esm/v-map-layer-geojson_12.entry.js +40881 -0
  271. package/dist/esm/v-map-layer-helper-Dys44Cgo.js +283 -0
  272. package/dist/esm/v-map-layer-terrain-geotiff.entry.js +256 -0
  273. package/dist/esm/v-map-layercontrol.entry.js +245 -0
  274. package/dist/esm/v-map.js +21 -0
  275. package/dist/esm/v-map.v-map-layer-osm.v-map-layergroup-B4pFHuSf.js +572 -0
  276. package/dist/esm/v-map_3.entry.js +4 -0
  277. package/dist/index.cjs.js +1 -0
  278. package/dist/index.js +1 -0
  279. package/dist/types/cesium-augment.d.ts +5 -0
  280. package/dist/types/components/v-map/v-map.d.ts +70 -0
  281. package/dist/types/components/v-map/v-map.test.d.ts +1 -0
  282. package/dist/types/components/v-map-builder/v-map-builder.d.ts +48 -0
  283. package/dist/types/components/v-map-builder/v-map-builder.test.d.ts +1 -0
  284. package/dist/types/components/v-map-layer-geojson/v-map-layer-geojson.d.ts +129 -0
  285. package/dist/types/components/v-map-layer-geojson/v-map-layer-geojson.test.d.ts +1 -0
  286. package/dist/types/components/v-map-layer-geotiff/v-map-layer-geotiff.d.ts +74 -0
  287. package/dist/types/components/v-map-layer-geotiff/v-map-layer-geotiff.test.d.ts +1 -0
  288. package/dist/types/components/v-map-layer-google/v-map-layer-google.d.ts +78 -0
  289. package/dist/types/components/v-map-layer-osm/error-api.test.d.ts +1 -0
  290. package/dist/types/components/v-map-layer-osm/v-map-layer-osm.d.ts +50 -0
  291. package/dist/types/components/v-map-layer-osm/v-map-layer-osm.test.d.ts +1 -0
  292. package/dist/types/components/v-map-layer-scatterplot/v-map-layer-scatterplot.d.ts +54 -0
  293. package/dist/types/components/v-map-layer-terrain/v-map-layer-terrain.d.ts +74 -0
  294. package/dist/types/components/v-map-layer-terrain/v-map-layer-terrain.test.d.ts +1 -0
  295. package/dist/types/components/v-map-layer-terrain-geotiff/v-map-layer-terrain-geotiff.d.ts +117 -0
  296. package/dist/types/components/v-map-layer-terrain-geotiff/v-map-layer-terrain-geotiff.test.d.ts +1 -0
  297. package/dist/types/components/v-map-layer-tile3d/v-map-layer-tile3d.d.ts +69 -0
  298. package/dist/types/components/v-map-layer-tile3d/v-map-layer-tile3d.test.d.ts +1 -0
  299. package/dist/types/components/v-map-layer-wcs/v-map-layer-wcs.d.ts +47 -0
  300. package/dist/types/components/v-map-layer-wcs/v-map-layer-wcs.test.d.ts +1 -0
  301. package/dist/types/components/v-map-layer-wfs/v-map-layer-wfs.d.ts +59 -0
  302. package/dist/types/components/v-map-layer-wfs/v-map-layer-wfs.test.d.ts +1 -0
  303. package/dist/types/components/v-map-layer-wkt/v-map-layer-wkt.d.ts +132 -0
  304. package/dist/types/components/v-map-layer-wkt/v-map-layer-wkt.test.d.ts +1 -0
  305. package/dist/types/components/v-map-layer-wms/v-map-layer-wms.d.ts +76 -0
  306. package/dist/types/components/v-map-layer-wms/v-map-layer-wms.test.d.ts +1 -0
  307. package/dist/types/components/v-map-layer-xyz/v-map-layer-xyz.d.ts +59 -0
  308. package/dist/types/components/v-map-layer-xyz/v-map-layer-xyz.test.d.ts +1 -0
  309. package/dist/types/components/v-map-layercontrol/v-map-layercontrol.d.ts +44 -0
  310. package/dist/types/components/v-map-layercontrol/v-map-layercontrol.test.d.ts +1 -0
  311. package/dist/types/components/v-map-layergroup/v-map-layergroup.d.ts +31 -0
  312. package/dist/types/components/v-map-layergroup/v-map-layergroup.test.d.ts +1 -0
  313. package/dist/types/components/v-map-style/v-map-style.d.ts +75 -0
  314. package/dist/types/components/v-map-style/v-map-style.unit.d.ts +1 -0
  315. package/dist/types/components.d.ts +2391 -0
  316. package/dist/types/globals.d.ts +16 -0
  317. package/dist/types/index.d.ts +10 -0
  318. package/dist/types/layer/v-map-layer-helper.d.ts +45 -0
  319. package/dist/types/layer/v-map-layer-helper.unit.d.ts +1 -0
  320. package/dist/types/leaflet-augment.d.ts +15 -0
  321. package/dist/types/lib/cesium-loader.d.ts +3 -0
  322. package/dist/types/lib/ensure-importmap.d.ts +3 -0
  323. package/dist/types/lib/ensure-importmap.unit.d.ts +1 -0
  324. package/dist/types/lib/versions.gen.d.ts +5 -0
  325. package/dist/types/lib/vstyle.d.ts +44 -0
  326. package/dist/types/map-provider/cesium/CesiumGeoTIFFTerrainProvider.d.ts +92 -0
  327. package/dist/types/map-provider/cesium/CesiumLayerGroups.d.ts +64 -0
  328. package/dist/types/map-provider/cesium/GeoTIFFImageryProvider.d.ts +75 -0
  329. package/dist/types/map-provider/cesium/GeoTIFFImageryProvider.test.d.ts +1 -0
  330. package/dist/types/map-provider/cesium/cesium-provider.d.ts +87 -0
  331. package/dist/types/map-provider/cesium/i-layer.d.ts +11 -0
  332. package/dist/types/map-provider/cesium/layer-manager.d.ts +31 -0
  333. package/dist/types/map-provider/deck/DeckGLGeoTIFFLayer.d.ts +91 -0
  334. package/dist/types/map-provider/deck/DeckGLGeoTIFFTerrainLayer.d.ts +82 -0
  335. package/dist/types/map-provider/deck/LayerGroupWithModel.d.ts +55 -0
  336. package/dist/types/map-provider/deck/LayerGroups.d.ts +63 -0
  337. package/dist/types/map-provider/deck/LayerModel.d.ts +8 -0
  338. package/dist/types/map-provider/deck/RenderableGroup.d.ts +20 -0
  339. package/dist/types/map-provider/deck/deck-provider.d.ts +92 -0
  340. package/dist/types/map-provider/geotiff/geotiff-source.d.ts +30 -0
  341. package/dist/types/map-provider/geotiff/utils/AABB2D.d.ts +28 -0
  342. package/dist/types/map-provider/geotiff/utils/BVHNode2D.d.ts +36 -0
  343. package/dist/types/map-provider/geotiff/utils/GeoTIFFTileProcessor.d.ts +116 -0
  344. package/dist/types/map-provider/geotiff/utils/Triangle.d.ts +5 -0
  345. package/dist/types/map-provider/geotiff/utils/Triangulation.d.ts +94 -0
  346. package/dist/types/map-provider/geotiff/utils/colormap-utils.d.ts +47 -0
  347. package/dist/types/map-provider/geotiff/utils/normalization-utils.d.ts +39 -0
  348. package/dist/types/map-provider/geotiff/utils/sampling-utils.d.ts +13 -0
  349. package/dist/types/map-provider/leaflet/GeoTIFFGridLayer.d.ts +34 -0
  350. package/dist/types/map-provider/leaflet/WCSGridLayer.d.ts +38 -0
  351. package/dist/types/map-provider/leaflet/google-map-tiles-layer.d.ts +73 -0
  352. package/dist/types/map-provider/leaflet/leaflet-helpers.d.ts +6 -0
  353. package/dist/types/map-provider/leaflet/leaflet-provider.d.ts +73 -0
  354. package/dist/types/map-provider/ol/CustomGeoTiff.d.ts +14 -0
  355. package/dist/types/map-provider/ol/openlayers-helper.d.ts +2 -0
  356. package/dist/types/map-provider/ol/openlayers-provider.d.ts +80 -0
  357. package/dist/types/map-provider/provider-factory.d.ts +12 -0
  358. package/dist/types/map-provider/provider-factory.unit.d.ts +1 -0
  359. package/dist/types/namespaces.d.ts +3 -0
  360. package/dist/types/ol-augment.d.ts +3 -0
  361. package/dist/types/ol-override.d.ts +7 -0
  362. package/dist/types/ol.d.ts +10 -0
  363. package/dist/types/stencil-public-runtime.d.ts +1860 -0
  364. package/dist/types/testing/browser-test-utils.d.ts +6 -0
  365. package/dist/types/testing/e2e-testing.d.ts +5 -0
  366. package/dist/types/testing/e2e-utils.d.ts +4 -0
  367. package/dist/types/testing/geotiff-test-server.d.ts +5 -0
  368. package/dist/types/testing/mocks/geostyler-lyrx-parser.d.ts +11 -0
  369. package/dist/types/testing/mocks/geostyler-mapbox-parser.d.ts +11 -0
  370. package/dist/types/testing/mocks/geostyler-qgis-parser.d.ts +11 -0
  371. package/dist/types/testing/mocks/geostyler-sld-parser.d.ts +11 -0
  372. package/dist/types/testing/mocks/geostyler-style.d.ts +5 -0
  373. package/dist/types/testing/setupTests.browser.d.ts +1 -0
  374. package/dist/types/testing/setupTests.stencil.d.ts +1 -0
  375. package/dist/types/testing/setupTests.vitest.d.ts +1 -0
  376. package/dist/types/testing/stencil-testing-wrapper.d.ts +3 -0
  377. package/dist/types/types/color.d.ts +1 -0
  378. package/dist/types/types/cssmode.d.ts +1 -0
  379. package/dist/types/types/flavour.d.ts +1 -0
  380. package/dist/types/types/layerconfig.d.ts +207 -0
  381. package/dist/types/types/lonlat.d.ts +1 -0
  382. package/dist/types/types/mapinitoptions.d.ts +4 -0
  383. package/dist/types/types/mapprovider.d.ts +46 -0
  384. package/dist/types/types/provideroptions.d.ts +8 -0
  385. package/dist/types/types/styleconfig.d.ts +27 -0
  386. package/dist/types/types/styling.d.ts +24 -0
  387. package/dist/types/types/styling.unit.d.ts +1 -0
  388. package/dist/types/types/vmaplayer.d.ts +10 -0
  389. package/dist/types/utils/async-mutex.d.ts +7 -0
  390. package/dist/types/utils/diff.d.ts +64 -0
  391. package/dist/types/utils/diff.unit.d.ts +1 -0
  392. package/dist/types/utils/dom-env.d.ts +5 -0
  393. package/dist/types/utils/dom-env.unit.d.ts +1 -0
  394. package/dist/types/utils/events.d.ts +29 -0
  395. package/dist/types/utils/logger.d.ts +47 -0
  396. package/dist/types/utils/logger.unit.d.ts +1 -0
  397. package/dist/types/utils/messages.d.ts +12 -0
  398. package/dist/types/utils/spatial-utils.d.ts +6 -0
  399. package/dist/types/utils/spatial-utils.unit.d.ts +1 -0
  400. package/dist/types/versions.d.ts +7 -0
  401. package/dist/v-map/index.esm.js +0 -0
  402. package/dist/v-map/p--vVleK-M.js +1 -0
  403. package/dist/v-map/p-09d10db0.entry.js +1 -0
  404. package/dist/v-map/p-5eba6058.entry.js +10 -0
  405. package/dist/v-map/p-6b102336.entry.js +1 -0
  406. package/dist/v-map/p-B-bAcABs.js +1 -0
  407. package/dist/v-map/p-BBpiaTpT.js +1 -0
  408. package/dist/v-map/p-BdijL4Av.js +1 -0
  409. package/dist/v-map/p-Be3r33VF.js +4 -0
  410. package/dist/v-map/p-BeFu0ap4.js +1 -0
  411. package/dist/v-map/p-BxFJezdK.js +1 -0
  412. package/dist/v-map/p-CMKJzsgL.js +1 -0
  413. package/dist/v-map/p-CXfA_q8m.js +1 -0
  414. package/dist/v-map/p-CZqY0yW4.js +1 -0
  415. package/dist/v-map/p-CafTHT9i.js +1 -0
  416. package/dist/v-map/p-DCTHyf58.js +1 -0
  417. package/dist/v-map/p-DQuL1Twl.js +1 -0
  418. package/dist/v-map/p-DR9McdNX.js +1 -0
  419. package/dist/v-map/p-Dckgonw8.js +1 -0
  420. package/dist/v-map/p-DhQAXuA7.js +15 -0
  421. package/dist/v-map/p-DmICdG34.js +7 -0
  422. package/dist/v-map/p-DrOQ9V4h.js +1 -0
  423. package/dist/v-map/p-DvHXtWUg.js +1 -0
  424. package/dist/v-map/p-E-ZsRS8r.js +1 -0
  425. package/dist/v-map/p-MyTSFnEk.js +1 -0
  426. package/dist/v-map/p-RpJarvr_.js +1 -0
  427. package/dist/v-map/p-WaMDUuAz.js +1 -0
  428. package/dist/v-map/p-aa410e64.entry.js +2 -0
  429. package/dist/v-map/p-c21c93fe.entry.js +1 -0
  430. package/dist/v-map/p-jzneDarq.js +2 -0
  431. package/dist/v-map/p-uiIP-taz.js +1 -0
  432. package/dist/v-map/v-map.esm.js +1 -0
  433. package/loader/cdn.js +1 -0
  434. package/loader/index.cjs.js +1 -0
  435. package/loader/index.d.ts +24 -0
  436. package/loader/index.es2017.js +1 -0
  437. package/loader/index.js +2 -0
  438. package/package.json +193 -0
@@ -0,0 +1,44 @@
1
+ import { log } from "../utils/logger";
2
+ /** Exhaustiveness-Guard für Switch/Union */
3
+ function assertNever(x, msg) {
4
+ throw new Error(msg ?? `Unbekannte Engine: ${String(x)}`);
5
+ }
6
+ /**
7
+ * Erzeugt eine konkrete Karten-Provider-Instanz abhängig vom gewählten Flavour.
8
+ *
9
+ * Unterstützt:
10
+ * - "ol" → OpenLayers
11
+ * - "cesium" → CesiumJS
12
+ * - "deck" → Deck.gl
13
+ * - "leaflet" → Leaflet
14
+ */
15
+ export async function createProvider(engine) {
16
+ try {
17
+ switch (engine) {
18
+ case 'ol': {
19
+ const { OpenLayersProvider } = await import('./ol/openlayers-provider');
20
+ return new OpenLayersProvider();
21
+ }
22
+ case 'cesium': {
23
+ const { CesiumProvider } = await import('./cesium/cesium-provider');
24
+ return new CesiumProvider();
25
+ }
26
+ case 'deck': {
27
+ const { DeckProvider } = await import('./deck/deck-provider');
28
+ return new DeckProvider();
29
+ }
30
+ case 'leaflet': {
31
+ const { LeafletProvider } = await import('./leaflet/leaflet-provider');
32
+ return new LeafletProvider();
33
+ }
34
+ default: {
35
+ // Exhaustiveness: Falls Flavour erweitert wird, meckert TS hier
36
+ return assertNever(engine, `Unbekannte Engine: ${engine}`);
37
+ }
38
+ }
39
+ }
40
+ catch (e) {
41
+ log(e);
42
+ throw e;
43
+ }
44
+ }
@@ -0,0 +1,66 @@
1
+ import { afterEach, describe, expect, it, vi } from "vitest";
2
+ const { logMock, OpenLayersProviderMock, CesiumProviderMock, DeckProviderMock, LeafletProviderMock, } = vi.hoisted(() => ({
3
+ logMock: vi.fn(),
4
+ OpenLayersProviderMock: vi.fn(),
5
+ CesiumProviderMock: vi.fn(),
6
+ DeckProviderMock: vi.fn(),
7
+ LeafletProviderMock: vi.fn(),
8
+ }));
9
+ vi.mock('../utils/logger', () => ({
10
+ log: logMock,
11
+ }));
12
+ vi.mock('./ol/openlayers-provider', () => ({
13
+ OpenLayersProvider: OpenLayersProviderMock,
14
+ }));
15
+ vi.mock('./cesium/cesium-provider', () => ({
16
+ CesiumProvider: CesiumProviderMock,
17
+ }));
18
+ vi.mock('./deck/deck-provider', () => ({
19
+ DeckProvider: DeckProviderMock,
20
+ }));
21
+ vi.mock('./leaflet/leaflet-provider', () => ({
22
+ LeafletProvider: LeafletProviderMock,
23
+ }));
24
+ async function loadFactory() {
25
+ vi.resetModules();
26
+ return import('./provider-factory');
27
+ }
28
+ describe('provider-factory unit', () => {
29
+ afterEach(() => {
30
+ vi.clearAllMocks();
31
+ vi.resetModules();
32
+ });
33
+ it('creates the expected provider for each supported flavour', async () => {
34
+ OpenLayersProviderMock.mockImplementation(function OpenLayersProvider() {
35
+ return { engine: 'ol' };
36
+ });
37
+ CesiumProviderMock.mockImplementation(function CesiumProvider() {
38
+ return { engine: 'cesium' };
39
+ });
40
+ DeckProviderMock.mockImplementation(function DeckProvider() {
41
+ return { engine: 'deck' };
42
+ });
43
+ LeafletProviderMock.mockImplementation(function LeafletProvider() {
44
+ return { engine: 'leaflet' };
45
+ });
46
+ const { createProvider } = await loadFactory();
47
+ await expect(createProvider('ol')).resolves.toEqual({ engine: 'ol' });
48
+ await expect(createProvider('cesium')).resolves.toEqual({ engine: 'cesium' });
49
+ await expect(createProvider('deck')).resolves.toEqual({ engine: 'deck' });
50
+ await expect(createProvider('leaflet')).resolves.toEqual({ engine: 'leaflet' });
51
+ });
52
+ it('logs and rethrows provider creation errors', async () => {
53
+ const providerError = new Error('deck failed');
54
+ DeckProviderMock.mockImplementation(function DeckProvider() {
55
+ throw providerError;
56
+ });
57
+ const { createProvider } = await loadFactory();
58
+ await expect(createProvider('deck')).rejects.toThrow('deck failed');
59
+ expect(logMock).toHaveBeenCalledWith(providerError);
60
+ });
61
+ it('rejects unsupported flavours at runtime', async () => {
62
+ const { createProvider } = await loadFactory();
63
+ await expect(createProvider('unknown')).rejects.toThrow('Unbekannte Engine: unknown');
64
+ expect(logMock).toHaveBeenCalledTimes(1);
65
+ });
66
+ });
@@ -0,0 +1,49 @@
1
+ let bundlePromise;
2
+ export function createTaggedElement(tagName) {
3
+ return document.createElement(tagName);
4
+ }
5
+ export async function loadVMapBundle() {
6
+ if (!bundlePromise) {
7
+ // Browser tests intentionally load the built Stencil bundle at runtime.
8
+ // `tsc --noEmit` runs before `dist` exists in CI, so this must stay a string import.
9
+ bundlePromise = Function('return import("/dist/v-map/v-map.esm.js")')().then(() => undefined);
10
+ }
11
+ await bundlePromise;
12
+ }
13
+ export async function waitFor(condition, timeoutMs = 3_000) {
14
+ const deadline = performance.now() + timeoutMs;
15
+ while (performance.now() < deadline) {
16
+ if (condition())
17
+ return;
18
+ await new Promise(resolve => requestAnimationFrame(() => resolve(undefined)));
19
+ }
20
+ throw new Error('Timed out while waiting for browser test condition');
21
+ }
22
+ export async function waitForHydration(element) {
23
+ await waitFor(() => element.classList.contains('hydrated'));
24
+ }
25
+ export function onceEvent(target, type, timeoutMs = 3_000) {
26
+ return new Promise((resolve, reject) => {
27
+ const timer = window.setTimeout(() => {
28
+ target.removeEventListener(type, onEvent);
29
+ reject(new Error(`Timed out while waiting for "${type}" event`));
30
+ }, timeoutMs);
31
+ const onEvent = (event) => {
32
+ window.clearTimeout(timer);
33
+ resolve(event);
34
+ };
35
+ target.addEventListener(type, onEvent, { once: true });
36
+ });
37
+ }
38
+ export function createLiveMap(flavour = 'leaflet') {
39
+ const map = createTaggedElement('v-map');
40
+ map.setAttribute('flavour', flavour);
41
+ map.setAttribute('center', '11.5761,48.1371');
42
+ map.setAttribute('zoom', '12');
43
+ map.setAttribute('css-mode', 'none');
44
+ map.style.display = 'block';
45
+ map.style.width = '300px';
46
+ map.style.height = '200px';
47
+ map.useDefaultImportMap = false;
48
+ return map;
49
+ }
@@ -0,0 +1,122 @@
1
+ export * from '@stencil/core/testing';
2
+ import { newE2EPage as _newE2EPage } from "@stencil/core/testing";
3
+ // Global list of additional errors to ignore
4
+ const additionalIgnoredErrors = [];
5
+ async function patchConsoleOnNewDocument(page) {
6
+ await page.evaluateOnNewDocument(() => {
7
+ const origError = console.error;
8
+ const origWarn = console.warn;
9
+ const origInfo = console.info;
10
+ const origLog = console.log;
11
+ const stringifyArg = (arg) => {
12
+ if (arg instanceof Error) {
13
+ return arg.stack || arg.message;
14
+ }
15
+ try {
16
+ if (typeof arg === 'string') {
17
+ return arg;
18
+ }
19
+ return JSON.stringify(arg);
20
+ }
21
+ catch {
22
+ return String(arg);
23
+ }
24
+ };
25
+ console.error = (...args) => {
26
+ origError('[browser:error]', ...args.map(stringifyArg));
27
+ };
28
+ console.warn = (...args) => {
29
+ origWarn('[browser:warn]', ...args.map(stringifyArg));
30
+ };
31
+ console.info = (...args) => {
32
+ origInfo('[browser:info]', ...args.map(stringifyArg));
33
+ };
34
+ console.log = (...args) => {
35
+ origLog('[browser:log]', ...args.map(stringifyArg));
36
+ };
37
+ window.addEventListener('error', e => {
38
+ const err = e.error;
39
+ console.error('window.error:', err?.stack || e.message);
40
+ });
41
+ window.addEventListener('unhandledrejection', (e) => {
42
+ const r = e?.reason;
43
+ console.error('unhandledrejection:', (r && (r.stack || r.message)) || String(r));
44
+ });
45
+ try {
46
+ const seenDefines = new Set();
47
+ const seenMissing = new Set();
48
+ const origDefine = customElements.define.bind(customElements);
49
+ const origGet = customElements.get.bind(customElements);
50
+ customElements.define = (name, constructor, options) => {
51
+ seenDefines.add(name);
52
+ console.info(`[custom-elements#define] ${name}`);
53
+ return origDefine(name, constructor, options);
54
+ };
55
+ customElements.get = name => {
56
+ const ctor = origGet(name);
57
+ if (!ctor && !seenMissing.has(name)) {
58
+ seenMissing.add(name);
59
+ console.info(`[custom-elements#get-miss] ${name}`);
60
+ }
61
+ else if (ctor && !seenDefines.has(name)) {
62
+ console.info(`[custom-elements#get-hit] ${name}`);
63
+ }
64
+ return ctor;
65
+ };
66
+ }
67
+ catch (err) {
68
+ console.warn('Failed to patch customElements logging', err);
69
+ }
70
+ document.addEventListener('readystatechange', () => {
71
+ console.info(`[document.readyState] ${document.readyState}`);
72
+ });
73
+ window.addEventListener('DOMContentLoaded', () => {
74
+ console.info('[lifecycle] DOMContentLoaded');
75
+ });
76
+ window.addEventListener('load', () => {
77
+ console.info('[lifecycle] load');
78
+ });
79
+ });
80
+ }
81
+ export const newE2EPage = (async (...args) => {
82
+ const page = await _newE2EPage(...args);
83
+ await patchConsoleOnNewDocument(page);
84
+ // Seitenbasierte Fehlerfalle
85
+ const { failOnConsole } = await import('./e2e-utils');
86
+ // Build the full ignore list by combining default and additional errors
87
+ const defaultIgnore = [
88
+ /useDefaultImportMap/i,
89
+ /Failed to resolve module specifier "child_process"/i,
90
+ /Failed to resolve module specifier "@loaders\.gl\//i,
91
+ /Blocked script execution in 'about:blank'/i,
92
+ /GPU stall due to ReadPixels/i,
93
+ /No map visible because the map container's width or height are 0/i,
94
+ /\[custom-elements#get-miss]/i,
95
+ ];
96
+ const additionalIgnore = additionalIgnoredErrors.map(pattern => new RegExp(pattern, 'i'));
97
+ failOnConsole(page, {
98
+ ignore: [...defaultIgnore, ...additionalIgnore],
99
+ });
100
+ // Netzwerkzugriffe für Debug-Zwecke protokollieren, um auffällige Requests (z. B. Google Maps) zu erkennen.
101
+ page.on('request', req => {
102
+ const url = req.url();
103
+ if (/^https:\/\/maps\.(googleapis|gstatic)\.com\//.test(url)) {
104
+ console.info(`[e2e] request ${url}`);
105
+ }
106
+ });
107
+ page.on('requestfailed', req => {
108
+ console.warn(`[e2e] request failed ${req.url()} :: ${req.failure()?.errorText}`);
109
+ });
110
+ return page;
111
+ });
112
+ /**
113
+ * Add an error pattern to the global ignore list for all E2E tests.
114
+ * This should be called before creating a new E2E page.
115
+ *
116
+ * @param errorPattern - String pattern to match against error messages (case-insensitive)
117
+ */
118
+ newE2EPage.setIgnoreError = (errorPattern) => {
119
+ if (!additionalIgnoredErrors.includes(errorPattern)) {
120
+ additionalIgnoredErrors.push(errorPattern);
121
+ }
122
+ };
@@ -0,0 +1,70 @@
1
+ function anyToStringSafe(v) {
2
+ if (typeof v === 'string')
3
+ return v;
4
+ if (typeof v === 'number' || typeof v === 'boolean')
5
+ return String(v);
6
+ if (v && typeof v === 'object') {
7
+ const o = v;
8
+ if (typeof o.stack === 'string')
9
+ return o.stack;
10
+ if (typeof o.message === 'string')
11
+ return o.message;
12
+ }
13
+ try {
14
+ return JSON.stringify(v);
15
+ }
16
+ catch {
17
+ return String(v);
18
+ }
19
+ }
20
+ export function failOnConsole(page, opts) {
21
+ const ignore = opts?.ignore ?? [];
22
+ page.on('console', async (msg) => {
23
+ // Hole Location, wenn verfügbar (Puppeteer hat location())
24
+ const loc = typeof msg.location === 'function'
25
+ ? msg.location()
26
+ : undefined;
27
+ // WICHTIG: JSHandles im Browser auswerten, um Error.stack zu bekommen
28
+ const argVals = await Promise.all(msg.args().map(a => a
29
+ .evaluate((v) => {
30
+ if (v instanceof Error)
31
+ return v.stack || v.message || String(v);
32
+ try {
33
+ return JSON.stringify(v);
34
+ }
35
+ catch {
36
+ return String(v);
37
+ }
38
+ })
39
+ .catch(() => undefined)));
40
+ const parts = [
41
+ msg.text(), // oft schon "Error: …"
42
+ ...argVals.map(anyToStringSafe), // sauber extrahiert
43
+ loc ? `${loc.url}:${loc.lineNumber}:${loc.columnNumber}` : '',
44
+ ].filter(Boolean);
45
+ const text = parts.join('\n');
46
+ const prefix = `[browser:${msg.type()}]`;
47
+ const line = `${prefix} ${text}\n`;
48
+ const shouldIgnore = ignore.some(rx => rx.test(text));
49
+ if (!shouldIgnore) {
50
+ if (msg.type() === 'error') {
51
+ process.stderr.write(line);
52
+ }
53
+ else if (msg.type() === 'warn') {
54
+ process.stdout.write(line);
55
+ }
56
+ }
57
+ if (msg.type() === 'error') {
58
+ if (shouldIgnore)
59
+ return;
60
+ throw new Error(`Console error in browser:\n${text}`);
61
+ }
62
+ });
63
+ page.on('pageerror', err => {
64
+ const text = anyToStringSafe(err);
65
+ console.error(`[browser:pageerror] ${text}`);
66
+ if (ignore.some(rx => rx.test(text)))
67
+ return;
68
+ throw new Error(`Unhandled page error:\n${text}`);
69
+ });
70
+ }
@@ -0,0 +1,100 @@
1
+ import { createServer } from "node:http";
2
+ import { readFileSync } from "node:fs";
3
+ import path from "node:path";
4
+ function writeCorsHeaders(res) {
5
+ res.setHeader('Access-Control-Allow-Origin', '*');
6
+ res.setHeader('Access-Control-Allow-Headers', 'Range, Content-Type');
7
+ res.setHeader('Access-Control-Allow-Methods', 'GET, HEAD, OPTIONS');
8
+ res.setHeader('Access-Control-Expose-Headers', 'Accept-Ranges, Content-Length, Content-Range, Content-Type');
9
+ }
10
+ function parseRangeHeader(rangeHeader, size) {
11
+ const match = /^bytes=(\d+)-(\d+)?$/.exec(rangeHeader);
12
+ if (!match)
13
+ return null;
14
+ const start = Number.parseInt(match[1], 10);
15
+ const requestedEnd = match[2] !== undefined ? Number.parseInt(match[2], 10) : size - 1;
16
+ const end = Math.min(requestedEnd, size - 1);
17
+ if (Number.isNaN(start) || Number.isNaN(end) || start > end || start >= size) {
18
+ return null;
19
+ }
20
+ return { start, end };
21
+ }
22
+ function getPathname(req) {
23
+ return new URL(req.url ?? '/', 'http://127.0.0.1').pathname;
24
+ }
25
+ export async function startGeoTiffTestServer(fixturePath = path.resolve(process.cwd(), 'public/geotiff/cea.tif'), route = '/geotiff/cea.tif') {
26
+ const payload = readFileSync(fixturePath);
27
+ const server = createServer((req, res) => {
28
+ writeCorsHeaders(res);
29
+ if (req.method === 'OPTIONS') {
30
+ res.writeHead(204);
31
+ res.end();
32
+ return;
33
+ }
34
+ if (getPathname(req) !== route) {
35
+ res.writeHead(404, { 'Content-Type': 'text/plain; charset=utf-8' });
36
+ res.end('Not found');
37
+ return;
38
+ }
39
+ if (req.method !== 'GET' && req.method !== 'HEAD') {
40
+ res.writeHead(405, { Allow: 'GET, HEAD, OPTIONS' });
41
+ res.end();
42
+ return;
43
+ }
44
+ const baseHeaders = {
45
+ 'Accept-Ranges': 'bytes',
46
+ 'Content-Type': 'image/tiff',
47
+ };
48
+ const rangeHeader = req.headers.range;
49
+ if (!rangeHeader) {
50
+ res.writeHead(200, {
51
+ ...baseHeaders,
52
+ 'Content-Length': String(payload.length),
53
+ });
54
+ if (req.method === 'HEAD') {
55
+ res.end();
56
+ return;
57
+ }
58
+ res.end(payload);
59
+ return;
60
+ }
61
+ const range = parseRangeHeader(rangeHeader, payload.length);
62
+ if (!range) {
63
+ res.writeHead(416, {
64
+ ...baseHeaders,
65
+ 'Content-Range': `bytes */${payload.length}`,
66
+ });
67
+ res.end();
68
+ return;
69
+ }
70
+ const chunk = payload.subarray(range.start, range.end + 1);
71
+ res.writeHead(206, {
72
+ ...baseHeaders,
73
+ 'Content-Length': String(chunk.length),
74
+ 'Content-Range': `bytes ${range.start}-${range.end}/${payload.length}`,
75
+ });
76
+ if (req.method === 'HEAD') {
77
+ res.end();
78
+ return;
79
+ }
80
+ res.end(chunk);
81
+ });
82
+ await new Promise((resolve, reject) => {
83
+ server.once('error', reject);
84
+ server.listen(0, '127.0.0.1', () => resolve());
85
+ });
86
+ const address = server.address();
87
+ const url = `http://127.0.0.1:${address.port}${route}`;
88
+ return {
89
+ url,
90
+ close: () => new Promise((resolve, reject) => {
91
+ server.close(err => {
92
+ if (err) {
93
+ reject(err);
94
+ return;
95
+ }
96
+ resolve();
97
+ });
98
+ }),
99
+ };
100
+ }
@@ -0,0 +1,12 @@
1
+ // src/testing/mocks/geostyler-lyrx-parser.ts
2
+ export default class LyrxParser {
3
+ async readStyle(_content) {
4
+ return {
5
+ output: {
6
+ name: 'Mock LYRX Style',
7
+ layers: [],
8
+ _meta: { format: 'lyrx' },
9
+ },
10
+ };
11
+ }
12
+ }
@@ -0,0 +1,12 @@
1
+ // src/testing/mocks/geostyler-mapbox-parser.ts
2
+ export default class MapboxParser {
3
+ async readStyle(_content) {
4
+ return {
5
+ output: {
6
+ name: 'Mock Mapbox Style',
7
+ layers: [],
8
+ _meta: { format: 'mapbox-gl' },
9
+ },
10
+ };
11
+ }
12
+ }
@@ -0,0 +1,12 @@
1
+ // src/testing/mocks/geostyler-qgis-parser.ts
2
+ export default class QGISParser {
3
+ async readStyle(_content) {
4
+ return {
5
+ output: {
6
+ name: 'Mock QGIS Style',
7
+ rules: [],
8
+ _meta: { format: 'qgis' },
9
+ },
10
+ };
11
+ }
12
+ }
@@ -0,0 +1,13 @@
1
+ // src/testing/mocks/geostyler-sld-parser.ts
2
+ export default class SLDParser {
3
+ async readStyle(_content) {
4
+ return {
5
+ output: {
6
+ name: 'Mock SLD Style',
7
+ rules: [],
8
+ // Minimale geostyler-style-konforme Struktur
9
+ _meta: { format: 'sld' },
10
+ },
11
+ };
12
+ }
13
+ }
@@ -0,0 +1,5 @@
1
+ const mockStyle = {};
2
+ export const Style = mockStyle;
3
+ export default {
4
+ Style,
5
+ };
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,20 @@
1
+ import { vi } from "vitest";
2
+ // Provide stub decorators so Stencil component source files can be imported.
3
+ // The decorators are compile-time constructs; at runtime they are no-ops.
4
+ const noop = () => (_target, _key) => { };
5
+ const noopClass = (_opts) => (_target) => { };
6
+ vi.mock('@stencil/core', async (importOriginal) => {
7
+ const actual = await importOriginal();
8
+ return {
9
+ ...actual,
10
+ Component: noopClass,
11
+ Prop: noop,
12
+ State: noop,
13
+ Element: noop,
14
+ Event: noop,
15
+ Watch: () => noop,
16
+ Method: noop,
17
+ Listen: () => noop,
18
+ Build: { isDev: true, isBrowser: false, isTesting: true },
19
+ };
20
+ });
@@ -0,0 +1,59 @@
1
+ import { vi } from "vitest";
2
+ Object.defineProperty(document, 'createRange', {
3
+ value: () => ({
4
+ setStart: () => { },
5
+ setEnd: () => { },
6
+ commonAncestorContainer: document.body,
7
+ createContextualFragment: (html) => {
8
+ const t = document.createElement('template');
9
+ t.innerHTML = html;
10
+ return t.content;
11
+ },
12
+ }),
13
+ });
14
+ class RO {
15
+ observe() { }
16
+ unobserve() { }
17
+ disconnect() { }
18
+ }
19
+ global.ResizeObserver = RO;
20
+ class MockMutationObserver {
21
+ observe() { }
22
+ disconnect() { }
23
+ takeRecords() {
24
+ return [];
25
+ }
26
+ }
27
+ if (typeof globalThis.MutationObserver === 'undefined') {
28
+ globalThis.MutationObserver = MockMutationObserver;
29
+ }
30
+ vi.mock('geostyler-sld-parser', () => import('./mocks/geostyler-sld-parser'));
31
+ vi.mock('geostyler-mapbox-parser', () => import('./mocks/geostyler-mapbox-parser'));
32
+ vi.mock('geostyler-qgis-parser', () => import('./mocks/geostyler-qgis-parser'));
33
+ vi.mock('geostyler-lyrx-parser', () => import('./mocks/geostyler-lyrx-parser'));
34
+ vi.mock('geostyler-style', () => import('./mocks/geostyler-style'));
35
+ globalThis.global = globalThis;
36
+ if (typeof window !== 'undefined') {
37
+ globalThis.Event = window.Event;
38
+ globalThis.CustomEvent = window.CustomEvent;
39
+ }
40
+ if (typeof HTMLCanvasElement !== 'undefined') {
41
+ Object.defineProperty(HTMLCanvasElement.prototype, 'getContext', {
42
+ configurable: true,
43
+ writable: true,
44
+ value: function getContext(_contextId) {
45
+ // jsdom logs noisy "Not implemented" errors for canvas. In spec tests we
46
+ // default to "no 2d context available" and let targeted tests override
47
+ // this when they need a working canvas mock.
48
+ return null;
49
+ },
50
+ });
51
+ }
52
+ // Catch known async leaks from test constructors that start fetch/timers
53
+ const knownLeaks = /Google Maps session request failed|getBounds is not a function/;
54
+ process.on('unhandledRejection', (reason) => {
55
+ const msg = reason instanceof Error ? reason.message : String(reason);
56
+ if (knownLeaks.test(msg))
57
+ return;
58
+ throw reason;
59
+ });
@@ -0,0 +1,43 @@
1
+ // Re-export alles aus dem Original
2
+ export * from '@stencil/core/testing';
3
+ import { newE2EPage as _newE2EPage } from "@stencil/core/testing";
4
+ async function patchConsoleOnNewDocument(page) {
5
+ await page.evaluateOnNewDocument(() => {
6
+ const origError = console.error;
7
+ console.error = (...args) => {
8
+ const mapped = args.map(a => {
9
+ if (a instanceof Error)
10
+ return a.stack || a.message;
11
+ try {
12
+ return JSON.stringify(a);
13
+ }
14
+ catch {
15
+ return String(a);
16
+ }
17
+ });
18
+ origError(...mapped);
19
+ };
20
+ window.addEventListener('error', e => {
21
+ const err = e.error;
22
+ console.error('window.error:', err?.stack || e.message);
23
+ });
24
+ window.addEventListener('unhandledrejection', (e) => {
25
+ const r = e?.reason;
26
+ console.error('unhandledrejection:', (r && (r.stack || r.message)) || String(r));
27
+ });
28
+ });
29
+ }
30
+ // unser Replacement für newE2EPage
31
+ export const newE2EPage = (async (...args) => {
32
+ const page = await _newE2EPage(...args);
33
+ // 1) Browser: console.error patchen (Stack sichtbar machen)
34
+ await patchConsoleOnNewDocument(page);
35
+ // 2) Node-Seite: Console/Errors strikt überwachen (mit Whitelist)
36
+ const { failOnConsole } = await import('./e2e-utils');
37
+ const ignore = [
38
+ /useDefaultImportMap/i, // dein Dev-Log
39
+ ...(process.env.E2E_IGNORE?.split('|').map(s => new RegExp(s)) ?? []),
40
+ ];
41
+ failOnConsole(page, { ignore });
42
+ return page;
43
+ });
@@ -0,0 +1 @@
1
+ module.exports = {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};