@loaders.gl/wms 3.3.2 → 3.4.0-alpha.2

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 (404) hide show
  1. package/dist/csw-capabilities-loader.d.ts +29 -0
  2. package/dist/csw-capabilities-loader.d.ts.map +1 -0
  3. package/dist/csw-capabilities-loader.js +31 -0
  4. package/dist/csw-domain-loader.d.ts +28 -0
  5. package/dist/csw-domain-loader.d.ts.map +1 -0
  6. package/dist/csw-domain-loader.js +31 -0
  7. package/dist/csw-records-loader.d.ts +12 -0
  8. package/dist/csw-records-loader.d.ts.map +1 -0
  9. package/dist/csw-records-loader.js +30 -0
  10. package/dist/dist.min.js +3781 -4001
  11. package/dist/es5/csw-capabilities-loader.js +55 -0
  12. package/dist/es5/csw-capabilities-loader.js.map +1 -0
  13. package/dist/es5/csw-domain-loader.js +54 -0
  14. package/dist/es5/csw-domain-loader.js.map +1 -0
  15. package/dist/es5/csw-records-loader.js +52 -0
  16. package/dist/es5/csw-records-loader.js.map +1 -0
  17. package/dist/es5/{wip/gml-loader.js → gml-loader.js} +3 -3
  18. package/dist/es5/gml-loader.js.map +1 -0
  19. package/dist/es5/index.js +43 -8
  20. package/dist/es5/index.js.map +1 -1
  21. package/dist/es5/lerc-loader.js +1 -1
  22. package/dist/es5/lerc-loader.js.map +1 -1
  23. package/dist/es5/lib/{data-sources/create-image-source.js → create-image-source.js} +4 -4
  24. package/dist/es5/lib/create-image-source.js.map +1 -0
  25. package/dist/es5/lib/parsers/csw/parse-csw-capabilities.js +24 -0
  26. package/dist/es5/lib/parsers/csw/parse-csw-capabilities.js.map +1 -0
  27. package/dist/es5/lib/parsers/csw/parse-csw-domain.js +42 -0
  28. package/dist/es5/lib/parsers/csw/parse-csw-domain.js.map +1 -0
  29. package/dist/es5/lib/parsers/csw/parse-csw-records.js +76 -0
  30. package/dist/es5/lib/parsers/csw/parse-csw-records.js.map +1 -0
  31. package/dist/es5/lib/parsers/csw/parse-exception-report.js +18 -0
  32. package/dist/es5/lib/parsers/csw/parse-exception-report.js.map +1 -0
  33. package/dist/es5/lib/parsers/gml/deep-strict-equal.js.map +1 -0
  34. package/dist/es5/lib/parsers/gml/parse-gml.js.map +1 -0
  35. package/dist/es5/lib/parsers/lerc/lerc-types.js.map +1 -0
  36. package/dist/es5/lib/{wms/parse-wms.js → parsers/wms/parse-wms-capabilities.js} +1 -42
  37. package/dist/es5/lib/parsers/wms/parse-wms-capabilities.js.map +1 -0
  38. package/dist/es5/lib/parsers/wms/parse-wms-error.js +16 -0
  39. package/dist/es5/lib/parsers/wms/parse-wms-error.js.map +1 -0
  40. package/dist/es5/lib/parsers/wms/parse-wms-features.js +33 -0
  41. package/dist/es5/lib/parsers/wms/parse-wms-features.js.map +1 -0
  42. package/dist/es5/lib/parsers/wms/parse-wms-layer-description.js +13 -0
  43. package/dist/es5/lib/parsers/wms/parse-wms-layer-description.js.map +1 -0
  44. package/dist/es5/lib/{data-sources/image-services → services/arcgis}/arcgis-image-service.js +36 -29
  45. package/dist/es5/lib/services/arcgis/arcgis-image-service.js.map +1 -0
  46. package/dist/es5/lib/services/arcgis/arcgis-server.js +115 -0
  47. package/dist/es5/lib/services/arcgis/arcgis-server.js.map +1 -0
  48. package/dist/es5/lib/{data-sources/adhoc-image-service.js → services/generic/image-service.js} +22 -19
  49. package/dist/es5/lib/services/generic/image-service.js.map +1 -0
  50. package/dist/es5/lib/services/generic/tile-service.js +2 -0
  51. package/dist/es5/lib/services/generic/tile-service.js.map +1 -0
  52. package/dist/es5/lib/services/ogc/csw-service.js +384 -0
  53. package/dist/es5/lib/services/ogc/csw-service.js.map +1 -0
  54. package/dist/es5/lib/{data-sources/image-services → services/ogc}/wms-service.js +163 -115
  55. package/dist/es5/lib/services/ogc/wms-service.js.map +1 -0
  56. package/dist/es5/lib/services/ogc/wmts-service.ts.disabled +348 -0
  57. package/dist/es5/lib/sources/data-source.js +44 -0
  58. package/dist/es5/lib/sources/data-source.js.map +1 -0
  59. package/dist/es5/lib/sources/image-source.js +26 -0
  60. package/dist/es5/lib/sources/image-source.js.map +1 -0
  61. package/dist/es5/lib/sources/tile-source.js +26 -0
  62. package/dist/es5/lib/sources/tile-source.js.map +1 -0
  63. package/dist/es5/lib/sources/utils/utils.js +40 -0
  64. package/dist/es5/lib/sources/utils/utils.js.map +1 -0
  65. package/dist/es5/{lib/wfs/parse-wfs.js → wip/lib/wcs/parse-wcs-capabilities.js} +7 -29
  66. package/dist/es5/wip/lib/wcs/parse-wcs-capabilities.js.map +1 -0
  67. package/dist/es5/{lib/wcs/parse-wcs.js → wip/lib/wfs/parse-wfs-capabilities.js} +7 -28
  68. package/dist/es5/wip/lib/wfs/parse-wfs-capabilities.js.map +1 -0
  69. package/dist/es5/{lib/wmts/parse-wmts.js → wip/lib/wmts/parse-wmts-capabilities.js} +7 -28
  70. package/dist/es5/wip/lib/wmts/parse-wmts-capabilities.js.map +1 -0
  71. package/dist/es5/wip/wcs-capabilities-loader.js +4 -4
  72. package/dist/es5/wip/wcs-capabilities-loader.js.map +1 -1
  73. package/dist/es5/wip/wfs-capabilities-loader.js +4 -4
  74. package/dist/es5/wip/wfs-capabilities-loader.js.map +1 -1
  75. package/dist/es5/wip/wms-feature-info-loader.js +3 -3
  76. package/dist/es5/wip/wms-feature-info-loader.js.map +1 -1
  77. package/dist/es5/wip/wms-layer-description-loader.js +3 -3
  78. package/dist/es5/wip/wms-layer-description-loader.js.map +1 -1
  79. package/dist/es5/wip/wmts-capabilities-loader.js +10 -4
  80. package/dist/es5/wip/wmts-capabilities-loader.js.map +1 -1
  81. package/dist/es5/wms-capabilities-loader.js +5 -4
  82. package/dist/es5/wms-capabilities-loader.js.map +1 -1
  83. package/dist/es5/wms-error-loader.js +3 -3
  84. package/dist/es5/wms-error-loader.js.map +1 -1
  85. package/dist/esm/csw-capabilities-loader.js +26 -0
  86. package/dist/esm/csw-capabilities-loader.js.map +1 -0
  87. package/dist/esm/csw-domain-loader.js +25 -0
  88. package/dist/esm/csw-domain-loader.js.map +1 -0
  89. package/dist/esm/csw-records-loader.js +24 -0
  90. package/dist/esm/csw-records-loader.js.map +1 -0
  91. package/dist/esm/{wip/gml-loader.js → gml-loader.js} +3 -3
  92. package/dist/esm/gml-loader.js.map +1 -0
  93. package/dist/esm/index.js +16 -8
  94. package/dist/esm/index.js.map +1 -1
  95. package/dist/esm/lerc-loader.js +1 -1
  96. package/dist/esm/lerc-loader.js.map +1 -1
  97. package/dist/esm/lib/{data-sources/create-image-source.js → create-image-source.js} +4 -4
  98. package/dist/esm/lib/create-image-source.js.map +1 -0
  99. package/dist/esm/lib/parsers/csw/parse-csw-capabilities.js +19 -0
  100. package/dist/esm/lib/parsers/csw/parse-csw-capabilities.js.map +1 -0
  101. package/dist/esm/lib/parsers/csw/parse-csw-domain.js +25 -0
  102. package/dist/esm/lib/parsers/csw/parse-csw-domain.js.map +1 -0
  103. package/dist/esm/lib/parsers/csw/parse-csw-records.js +46 -0
  104. package/dist/esm/lib/parsers/csw/parse-csw-records.js.map +1 -0
  105. package/dist/esm/lib/parsers/csw/parse-exception-report.js +13 -0
  106. package/dist/esm/lib/parsers/csw/parse-exception-report.js.map +1 -0
  107. package/dist/esm/lib/parsers/gml/deep-strict-equal.js.map +1 -0
  108. package/dist/esm/lib/parsers/gml/parse-gml.js.map +1 -0
  109. package/dist/esm/lib/parsers/lerc/lerc-types.js.map +1 -0
  110. package/dist/esm/lib/{wms/parse-wms.js → parsers/wms/parse-wms-capabilities.js} +1 -37
  111. package/dist/esm/lib/parsers/wms/parse-wms-capabilities.js.map +1 -0
  112. package/dist/esm/lib/parsers/wms/parse-wms-error.js +12 -0
  113. package/dist/esm/lib/parsers/wms/parse-wms-error.js.map +1 -0
  114. package/dist/esm/lib/parsers/wms/parse-wms-features.js +27 -0
  115. package/dist/esm/lib/parsers/wms/parse-wms-features.js.map +1 -0
  116. package/dist/esm/lib/parsers/wms/parse-wms-layer-description.js +9 -0
  117. package/dist/esm/lib/parsers/wms/parse-wms-layer-description.js.map +1 -0
  118. package/dist/esm/lib/services/arcgis/arcgis-image-service.js +67 -0
  119. package/dist/esm/lib/services/arcgis/arcgis-image-service.js.map +1 -0
  120. package/dist/esm/lib/services/arcgis/arcgis-server.js +35 -0
  121. package/dist/esm/lib/services/arcgis/arcgis-server.js.map +1 -0
  122. package/dist/esm/lib/{data-sources/adhoc-image-service.js → services/generic/image-service.js} +13 -10
  123. package/dist/esm/lib/services/generic/image-service.js.map +1 -0
  124. package/dist/esm/lib/services/generic/tile-service.js +2 -0
  125. package/dist/esm/lib/services/generic/tile-service.js.map +1 -0
  126. package/dist/esm/lib/services/ogc/csw-service.js +162 -0
  127. package/dist/esm/lib/services/ogc/csw-service.js.map +1 -0
  128. package/dist/esm/lib/{data-sources/image-services → services/ogc}/wms-service.js +40 -34
  129. package/dist/esm/lib/services/ogc/wms-service.js.map +1 -0
  130. package/dist/esm/lib/services/ogc/wmts-service.ts.disabled +348 -0
  131. package/dist/esm/lib/sources/data-source.js +29 -0
  132. package/dist/esm/lib/sources/data-source.js.map +1 -0
  133. package/dist/esm/lib/sources/image-source.js +6 -0
  134. package/dist/esm/lib/sources/image-source.js.map +1 -0
  135. package/dist/esm/lib/sources/tile-source.js +6 -0
  136. package/dist/esm/lib/sources/tile-source.js.map +1 -0
  137. package/dist/esm/lib/sources/utils/utils.js +26 -0
  138. package/dist/esm/lib/sources/utils/utils.js.map +1 -0
  139. package/dist/esm/wip/lib/wcs/parse-wcs-capabilities.js +16 -0
  140. package/dist/esm/wip/lib/wcs/parse-wcs-capabilities.js.map +1 -0
  141. package/dist/esm/wip/lib/wfs/parse-wfs-capabilities.js +17 -0
  142. package/dist/esm/wip/lib/wfs/parse-wfs-capabilities.js.map +1 -0
  143. package/dist/esm/wip/lib/wmts/parse-wmts-capabilities.js +17 -0
  144. package/dist/esm/wip/lib/wmts/parse-wmts-capabilities.js.map +1 -0
  145. package/dist/esm/wip/wcs-capabilities-loader.js +4 -4
  146. package/dist/esm/wip/wcs-capabilities-loader.js.map +1 -1
  147. package/dist/esm/wip/wfs-capabilities-loader.js +2 -2
  148. package/dist/esm/wip/wfs-capabilities-loader.js.map +1 -1
  149. package/dist/esm/wip/wms-feature-info-loader.js +1 -2
  150. package/dist/esm/wip/wms-feature-info-loader.js.map +1 -1
  151. package/dist/esm/wip/wms-layer-description-loader.js +1 -2
  152. package/dist/esm/wip/wms-layer-description-loader.js.map +1 -1
  153. package/dist/esm/wip/wmts-capabilities-loader.js +4 -2
  154. package/dist/esm/wip/wmts-capabilities-loader.js.map +1 -1
  155. package/dist/esm/wms-capabilities-loader.js +3 -2
  156. package/dist/esm/wms-capabilities-loader.js.map +1 -1
  157. package/dist/esm/wms-error-loader.js +2 -2
  158. package/dist/esm/wms-error-loader.js.map +1 -1
  159. package/dist/gml-loader.d.ts.map +1 -0
  160. package/dist/{wip/gml-loader.js → gml-loader.js} +2 -2
  161. package/dist/index.d.ts +25 -16
  162. package/dist/index.d.ts.map +1 -1
  163. package/dist/index.js +26 -14
  164. package/dist/lerc-loader.d.ts +1 -1
  165. package/dist/lerc-loader.d.ts.map +1 -1
  166. package/dist/lib/create-image-source.d.ts +17 -0
  167. package/dist/lib/create-image-source.d.ts.map +1 -0
  168. package/dist/lib/{data-sources/create-image-source.js → create-image-source.js} +5 -5
  169. package/dist/lib/{wmts/wmts-types.d.ts → parsers/csw/parse-csw-capabilities.d.ts} +9 -3
  170. package/dist/lib/parsers/csw/parse-csw-capabilities.d.ts.map +1 -0
  171. package/dist/lib/parsers/csw/parse-csw-capabilities.js +24 -0
  172. package/dist/lib/parsers/csw/parse-csw-domain.d.ts +17 -0
  173. package/dist/lib/parsers/csw/parse-csw-domain.d.ts.map +1 -0
  174. package/dist/lib/parsers/csw/parse-csw-domain.js +33 -0
  175. package/dist/lib/parsers/csw/parse-csw-records.d.ts +33 -0
  176. package/dist/lib/parsers/csw/parse-csw-records.d.ts.map +1 -0
  177. package/dist/lib/parsers/csw/parse-csw-records.js +58 -0
  178. package/dist/lib/parsers/csw/parse-exception-report.d.ts +6 -0
  179. package/dist/lib/parsers/csw/parse-exception-report.d.ts.map +1 -0
  180. package/dist/lib/parsers/csw/parse-exception-report.js +30 -0
  181. package/dist/lib/parsers/gml/deep-strict-equal.d.ts.map +1 -0
  182. package/dist/lib/parsers/gml/parse-gml.d.ts.map +1 -0
  183. package/dist/lib/parsers/lerc/lerc-types.d.ts.map +1 -0
  184. package/dist/lib/{wms/wms-types.d.ts → parsers/wms/parse-wms-capabilities.d.ts} +6 -19
  185. package/dist/lib/parsers/wms/parse-wms-capabilities.d.ts.map +1 -0
  186. package/dist/lib/{wms/wms-types.js → parsers/wms/parse-wms-capabilities.js} +61 -1
  187. package/dist/lib/parsers/wms/parse-wms-error.d.ts +8 -0
  188. package/dist/lib/parsers/wms/parse-wms-error.d.ts.map +1 -0
  189. package/dist/lib/parsers/wms/parse-wms-error.js +22 -0
  190. package/dist/lib/parsers/wms/parse-wms-features.d.ts +20 -0
  191. package/dist/lib/parsers/wms/parse-wms-features.d.ts.map +1 -0
  192. package/dist/lib/parsers/wms/parse-wms-features.js +27 -0
  193. package/dist/lib/parsers/wms/parse-wms-layer-description.d.ts +10 -0
  194. package/dist/lib/parsers/wms/parse-wms-layer-description.d.ts.map +1 -0
  195. package/dist/lib/parsers/wms/parse-wms-layer-description.js +15 -0
  196. package/dist/lib/{data-sources/image-services → services/arcgis}/arcgis-image-service.d.ts +25 -13
  197. package/dist/lib/services/arcgis/arcgis-image-service.d.ts.map +1 -0
  198. package/dist/lib/{data-sources → services/arcgis}/arcgis-image-service.js +33 -23
  199. package/dist/lib/services/arcgis/arcgis-server.d.ts +15 -0
  200. package/dist/lib/services/arcgis/arcgis-server.d.ts.map +1 -0
  201. package/dist/lib/services/arcgis/arcgis-server.js +42 -0
  202. package/dist/lib/{data-sources/image-services → services/generic}/image-service.d.ts +3 -13
  203. package/dist/lib/services/generic/image-service.d.ts.map +1 -0
  204. package/dist/lib/{data-sources/adhoc-image-service.js → services/generic/image-service.js} +12 -10
  205. package/dist/lib/services/generic/tile-service.d.ts +1 -0
  206. package/dist/lib/services/generic/tile-service.d.ts.map +1 -0
  207. package/dist/lib/services/generic/tile-service.js +1 -0
  208. package/dist/lib/services/ogc/csw-service.d.ts +115 -0
  209. package/dist/lib/services/ogc/csw-service.d.ts.map +1 -0
  210. package/dist/lib/services/ogc/csw-service.js +170 -0
  211. package/dist/lib/{data-sources/image-services → services/ogc}/wms-service.d.ts +41 -22
  212. package/dist/lib/services/ogc/wms-service.d.ts.map +1 -0
  213. package/dist/lib/{data-sources/image-services → services/ogc}/wms-service.js +41 -28
  214. package/dist/lib/sources/data-source.d.ts +22 -0
  215. package/dist/lib/sources/data-source.d.ts.map +1 -0
  216. package/dist/lib/sources/data-source.js +34 -0
  217. package/dist/lib/{data-sources → sources}/image-source.d.ts +4 -1
  218. package/dist/lib/sources/image-source.d.ts.map +1 -0
  219. package/dist/lib/{data-sources → sources}/image-source.js +2 -1
  220. package/dist/lib/sources/tile-source.d.ts +54 -0
  221. package/dist/lib/sources/tile-source.d.ts.map +1 -0
  222. package/dist/lib/sources/tile-source.js +13 -0
  223. package/dist/lib/sources/utils/utils.d.ts +13 -0
  224. package/dist/lib/sources/utils/utils.d.ts.map +1 -0
  225. package/dist/lib/sources/utils/utils.js +38 -0
  226. package/dist/{lib/wfs/wfs-types.d.ts → wip/lib/wcs/parse-wcs-capabilities.d.ts} +8 -3
  227. package/dist/wip/lib/wcs/parse-wcs-capabilities.d.ts.map +1 -0
  228. package/dist/wip/lib/wcs/parse-wcs-capabilities.js +15 -0
  229. package/dist/{lib/wcs/wcs-types.d.ts → wip/lib/wfs/parse-wfs-capabilities.d.ts} +6 -1
  230. package/dist/wip/lib/wfs/parse-wfs-capabilities.d.ts.map +1 -0
  231. package/dist/wip/lib/wfs/parse-wfs-capabilities.js +19 -0
  232. package/dist/wip/lib/wmts/parse-wmts-capabilities.d.ts +87 -0
  233. package/dist/wip/lib/wmts/parse-wmts-capabilities.d.ts.map +1 -0
  234. package/dist/wip/lib/wmts/parse-wmts-capabilities.js +77 -0
  235. package/dist/wip/wcs-capabilities-loader.d.ts +4 -3
  236. package/dist/wip/wcs-capabilities-loader.d.ts.map +1 -1
  237. package/dist/wip/wcs-capabilities-loader.js +3 -3
  238. package/dist/wip/wfs-capabilities-loader.d.ts +4 -3
  239. package/dist/wip/wfs-capabilities-loader.d.ts.map +1 -1
  240. package/dist/wip/wfs-capabilities-loader.js +3 -3
  241. package/dist/wip/wms-feature-info-loader.d.ts +4 -2
  242. package/dist/wip/wms-feature-info-loader.d.ts.map +1 -1
  243. package/dist/wip/wms-feature-info-loader.js +3 -3
  244. package/dist/wip/wms-layer-description-loader.d.ts +5 -3
  245. package/dist/wip/wms-layer-description-loader.d.ts.map +1 -1
  246. package/dist/wip/wms-layer-description-loader.js +3 -3
  247. package/dist/wip/wmts-capabilities-loader.d.ts +4 -3
  248. package/dist/wip/wmts-capabilities-loader.d.ts.map +1 -1
  249. package/dist/wip/wmts-capabilities-loader.js +3 -3
  250. package/dist/wms-capabilities-loader.d.ts +4 -3
  251. package/dist/wms-capabilities-loader.d.ts.map +1 -1
  252. package/dist/wms-capabilities-loader.js +3 -3
  253. package/dist/wms-error-loader.js +2 -2
  254. package/package.json +7 -7
  255. package/src/csw-capabilities-loader.ts +46 -0
  256. package/src/csw-domain-loader.ts +44 -0
  257. package/src/csw-records-loader.ts +42 -0
  258. package/src/{wip/gml-loader.ts → gml-loader.ts} +2 -2
  259. package/src/index.ts +48 -28
  260. package/src/lerc-loader.ts +1 -1
  261. package/src/lib/{data-sources/create-image-source.ts → create-image-source.ts} +12 -10
  262. package/src/lib/parsers/csw/parse-csw-capabilities.ts +103 -0
  263. package/src/lib/parsers/csw/parse-csw-domain.ts +45 -0
  264. package/src/lib/parsers/csw/parse-csw-records.ts +90 -0
  265. package/src/lib/parsers/csw/parse-exception-report.ts +31 -0
  266. package/src/lib/{wms/wms-types.ts → parsers/wms/parse-wms-capabilities.ts} +72 -53
  267. package/src/lib/parsers/wms/parse-wms-error.ts +22 -0
  268. package/src/lib/parsers/wms/parse-wms-features.ts +39 -0
  269. package/src/lib/parsers/wms/parse-wms-layer-description.ts +18 -0
  270. package/src/lib/{data-sources/image-services → services/arcgis}/arcgis-image-service.ts +44 -26
  271. package/src/lib/services/arcgis/arcgis-server.ts +59 -0
  272. package/src/lib/{data-sources/adhoc-image-service.ts → services/generic/image-service.ts} +18 -12
  273. package/src/lib/services/generic/tile-service.ts +0 -0
  274. package/src/lib/services/ogc/csw-service.ts +251 -0
  275. package/src/lib/{data-sources/image-services → services/ogc}/wms-service.ts +73 -34
  276. package/src/lib/services/ogc/wmts-service.ts.disabled +348 -0
  277. package/src/lib/sources/data-source.ts +46 -0
  278. package/src/lib/{data-sources → sources}/image-source.ts +5 -1
  279. package/src/lib/sources/tile-source.ts +59 -0
  280. package/src/lib/sources/utils/utils.ts +42 -0
  281. package/src/{lib/wmts/wmts-types.ts → wip/lib/wcs/parse-wcs-capabilities.ts} +15 -3
  282. package/src/{lib/wcs/wcs-types.ts → wip/lib/wfs/parse-wfs-capabilities.ts} +18 -1
  283. package/src/wip/lib/wmts/parse-wmts-capabilities.ts +170 -0
  284. package/src/wip/wcs-capabilities-loader.ts +6 -3
  285. package/src/wip/wfs-capabilities-loader.ts +4 -1
  286. package/src/wip/wms-feature-info-loader.ts +5 -1
  287. package/src/wip/wms-layer-description-loader.ts +7 -2
  288. package/src/wip/wmts-capabilities-loader.ts +4 -1
  289. package/src/wms-capabilities-loader.ts +5 -1
  290. package/src/wms-error-loader.ts +1 -1
  291. package/dist/es5/lib/data-sources/adhoc-image-service.js.map +0 -1
  292. package/dist/es5/lib/data-sources/arcgis-image-service.js +0 -180
  293. package/dist/es5/lib/data-sources/arcgis-image-service.js.map +0 -1
  294. package/dist/es5/lib/data-sources/create-image-source.js.map +0 -1
  295. package/dist/es5/lib/data-sources/image-services/arcgis-image-service.js.map +0 -1
  296. package/dist/es5/lib/data-sources/image-services/image-service.js +0 -163
  297. package/dist/es5/lib/data-sources/image-services/image-service.js.map +0 -1
  298. package/dist/es5/lib/data-sources/image-services/wms-service.js.map +0 -1
  299. package/dist/es5/lib/data-sources/image-source.js +0 -14
  300. package/dist/es5/lib/data-sources/image-source.js.map +0 -1
  301. package/dist/es5/lib/gml/deep-strict-equal.js.map +0 -1
  302. package/dist/es5/lib/gml/parse-gml.js.map +0 -1
  303. package/dist/es5/lib/lerc/lerc-types.js.map +0 -1
  304. package/dist/es5/lib/wcs/parse-wcs.js.map +0 -1
  305. package/dist/es5/lib/wcs/wcs-types.js +0 -2
  306. package/dist/es5/lib/wcs/wcs-types.js.map +0 -1
  307. package/dist/es5/lib/wfs/parse-wfs.js.map +0 -1
  308. package/dist/es5/lib/wfs/wfs-types.js +0 -2
  309. package/dist/es5/lib/wfs/wfs-types.js.map +0 -1
  310. package/dist/es5/lib/wms/parse-wms.js.map +0 -1
  311. package/dist/es5/lib/wms/wms-types.js +0 -2
  312. package/dist/es5/lib/wms/wms-types.js.map +0 -1
  313. package/dist/es5/lib/wmts/parse-wmts.js.map +0 -1
  314. package/dist/es5/lib/wmts/wmts-types.js +0 -2
  315. package/dist/es5/lib/wmts/wmts-types.js.map +0 -1
  316. package/dist/es5/wip/gml-loader.js.map +0 -1
  317. package/dist/esm/lib/data-sources/adhoc-image-service.js.map +0 -1
  318. package/dist/esm/lib/data-sources/arcgis-image-service.js +0 -62
  319. package/dist/esm/lib/data-sources/arcgis-image-service.js.map +0 -1
  320. package/dist/esm/lib/data-sources/create-image-source.js.map +0 -1
  321. package/dist/esm/lib/data-sources/image-services/arcgis-image-service.js +0 -61
  322. package/dist/esm/lib/data-sources/image-services/arcgis-image-service.js.map +0 -1
  323. package/dist/esm/lib/data-sources/image-services/image-service.js +0 -72
  324. package/dist/esm/lib/data-sources/image-services/image-service.js.map +0 -1
  325. package/dist/esm/lib/data-sources/image-services/wms-service.js.map +0 -1
  326. package/dist/esm/lib/data-sources/image-source.js +0 -4
  327. package/dist/esm/lib/data-sources/image-source.js.map +0 -1
  328. package/dist/esm/lib/gml/deep-strict-equal.js.map +0 -1
  329. package/dist/esm/lib/gml/parse-gml.js.map +0 -1
  330. package/dist/esm/lib/lerc/lerc-types.js.map +0 -1
  331. package/dist/esm/lib/wcs/parse-wcs.js +0 -32
  332. package/dist/esm/lib/wcs/parse-wcs.js.map +0 -1
  333. package/dist/esm/lib/wcs/wcs-types.js +0 -2
  334. package/dist/esm/lib/wcs/wcs-types.js.map +0 -1
  335. package/dist/esm/lib/wfs/parse-wfs.js +0 -32
  336. package/dist/esm/lib/wfs/parse-wfs.js.map +0 -1
  337. package/dist/esm/lib/wfs/wfs-types.js +0 -2
  338. package/dist/esm/lib/wfs/wfs-types.js.map +0 -1
  339. package/dist/esm/lib/wms/parse-wms.js.map +0 -1
  340. package/dist/esm/lib/wms/wms-types.js +0 -2
  341. package/dist/esm/lib/wms/wms-types.js.map +0 -1
  342. package/dist/esm/lib/wmts/parse-wmts.js +0 -32
  343. package/dist/esm/lib/wmts/parse-wmts.js.map +0 -1
  344. package/dist/esm/lib/wmts/wmts-types.js +0 -2
  345. package/dist/esm/lib/wmts/wmts-types.js.map +0 -1
  346. package/dist/esm/wip/gml-loader.js.map +0 -1
  347. package/dist/lib/data-sources/adhoc-image-service.d.ts +0 -24
  348. package/dist/lib/data-sources/adhoc-image-service.d.ts.map +0 -1
  349. package/dist/lib/data-sources/arcgis-image-service.d.ts +0 -79
  350. package/dist/lib/data-sources/arcgis-image-service.d.ts.map +0 -1
  351. package/dist/lib/data-sources/create-image-source.d.ts +0 -16
  352. package/dist/lib/data-sources/create-image-source.d.ts.map +0 -1
  353. package/dist/lib/data-sources/image-services/arcgis-image-service.d.ts.map +0 -1
  354. package/dist/lib/data-sources/image-services/arcgis-image-service.js +0 -85
  355. package/dist/lib/data-sources/image-services/image-service.d.ts.map +0 -1
  356. package/dist/lib/data-sources/image-services/image-service.js +0 -82
  357. package/dist/lib/data-sources/image-services/wms-service.d.ts.map +0 -1
  358. package/dist/lib/data-sources/image-source.d.ts.map +0 -1
  359. package/dist/lib/gml/deep-strict-equal.d.ts.map +0 -1
  360. package/dist/lib/gml/parse-gml.d.ts.map +0 -1
  361. package/dist/lib/lerc/lerc-types.d.ts.map +0 -1
  362. package/dist/lib/wcs/parse-wcs.d.ts +0 -7
  363. package/dist/lib/wcs/parse-wcs.d.ts.map +0 -1
  364. package/dist/lib/wcs/parse-wcs.js +0 -36
  365. package/dist/lib/wcs/wcs-types.d.ts.map +0 -1
  366. package/dist/lib/wcs/wcs-types.js +0 -3
  367. package/dist/lib/wfs/parse-wfs.d.ts +0 -7
  368. package/dist/lib/wfs/parse-wfs.d.ts.map +0 -1
  369. package/dist/lib/wfs/parse-wfs.js +0 -36
  370. package/dist/lib/wfs/wfs-types.d.ts.map +0 -1
  371. package/dist/lib/wfs/wfs-types.js +0 -3
  372. package/dist/lib/wms/parse-wms.d.ts +0 -24
  373. package/dist/lib/wms/parse-wms.d.ts.map +0 -1
  374. package/dist/lib/wms/parse-wms.js +0 -115
  375. package/dist/lib/wms/wms-types.d.ts.map +0 -1
  376. package/dist/lib/wmts/parse-wmts.d.ts +0 -7
  377. package/dist/lib/wmts/parse-wmts.d.ts.map +0 -1
  378. package/dist/lib/wmts/parse-wmts.js +0 -36
  379. package/dist/lib/wmts/wmts-types.d.ts.map +0 -1
  380. package/dist/lib/wmts/wmts-types.js +0 -3
  381. package/dist/wip/gml-loader.d.ts.map +0 -1
  382. package/src/lib/data-sources/arcgis-image-service.ts +0 -146
  383. package/src/lib/data-sources/image-services/image-service.ts +0 -105
  384. package/src/lib/wcs/parse-wcs.ts +0 -39
  385. package/src/lib/wfs/parse-wfs.ts +0 -39
  386. package/src/lib/wfs/wfs-types.ts +0 -78
  387. package/src/lib/wms/parse-wms.ts +0 -142
  388. package/src/lib/wmts/parse-wmts.ts +0 -39
  389. /package/dist/es5/lib/{gml → parsers/gml}/deep-strict-equal.js +0 -0
  390. /package/dist/es5/lib/{gml → parsers/gml}/parse-gml.js +0 -0
  391. /package/dist/es5/lib/{lerc → parsers/lerc}/lerc-types.js +0 -0
  392. /package/dist/esm/lib/{gml → parsers/gml}/deep-strict-equal.js +0 -0
  393. /package/dist/esm/lib/{gml → parsers/gml}/parse-gml.js +0 -0
  394. /package/dist/esm/lib/{lerc → parsers/lerc}/lerc-types.js +0 -0
  395. /package/dist/{wip/gml-loader.d.ts → gml-loader.d.ts} +0 -0
  396. /package/dist/lib/{gml → parsers/gml}/deep-strict-equal.d.ts +0 -0
  397. /package/dist/lib/{gml → parsers/gml}/deep-strict-equal.js +0 -0
  398. /package/dist/lib/{gml → parsers/gml}/parse-gml.d.ts +0 -0
  399. /package/dist/lib/{gml → parsers/gml}/parse-gml.js +0 -0
  400. /package/dist/lib/{lerc → parsers/lerc}/lerc-types.d.ts +0 -0
  401. /package/dist/lib/{lerc → parsers/lerc}/lerc-types.js +0 -0
  402. /package/src/lib/{gml → parsers/gml}/deep-strict-equal.ts +0 -0
  403. /package/src/lib/{gml → parsers/gml}/parse-gml.ts +0 -0
  404. /package/src/lib/{lerc → parsers/lerc}/lerc-types.ts +0 -0
@@ -0,0 +1,31 @@
1
+ // loaders.gl, MIT license
2
+
3
+ // import type {XMLLoaderOptions} from '@loaders.gl/xml';
4
+ // import {XMLLoader} from '@loaders.gl/xml';
5
+
6
+ /**
7
+ * Parses a typed data structure from raw XML for `GetDomain` response
8
+ * @note Error handlings is fairly weak
9
+ */
10
+ export function parseExceptionReport(parsedXML: any): void {
11
+ // const parsedXML = XMLLoader.parseTextSync(text, {
12
+ // ...options,
13
+ // xml: {
14
+ // ...options?.xml,
15
+ // removeNSPrefix: true,
16
+ // uncapitalizeKeys: true
17
+ // }
18
+ // });
19
+
20
+ const exceptionReport: any = parsedXML.exceptionReport;
21
+ if (!exceptionReport) {
22
+ return;
23
+ }
24
+ const errorMessage =
25
+ exceptionReport.exception?.exceptionText ||
26
+ exceptionReport.exception?.exceptionCode ||
27
+ exceptionReport.exception?.locator ||
28
+ 'server error';
29
+
30
+ throw new Error(`Catalog Server: ${errorMessage}`);
31
+ }
@@ -1,4 +1,6 @@
1
- // loaders.gl, MIT licenses
1
+ // loaders.gl, MIT license
2
+
3
+ import {XMLLoader} from '@loaders.gl/xml';
2
4
 
3
5
  /** All capabilities of a WMS service - response to a WMS `GetCapabilities` data structure extracted from XML */
4
6
  export type WMSCapabilities = {
@@ -30,58 +32,6 @@ export type WMSRequest = {
30
32
  mimeTypes: string[];
31
33
  };
32
34
 
33
- // GetFeatureInfo
34
-
35
- /** WMS Feature info - response to a WMS `GetFeatureInfo` request */
36
- export type WMSFeatureInfo = {
37
- features: WMSFeature[];
38
- };
39
-
40
- export type WMSFeature = {
41
- attributes: Record<string, number | string>;
42
- type: string;
43
- bounds: {top: number; bottom: number; left: number; right: number};
44
- };
45
-
46
- // DescribeLayer
47
-
48
- /** Layer description - response to a WMS `DescribeLayer` request */
49
- export type WMSLayerDescription = {
50
- layers: {}[];
51
- };
52
-
53
- // // WIP
54
-
55
- // export type GetCapabilities = {
56
- // request: 'GetCapabilities';
57
- // format: string[];
58
- // dcpType: unknown;
59
- // };
60
-
61
- // export type GetMap = {
62
- // request: 'GetMap';
63
- // format: string[];
64
- // dcpType: unknown;
65
- // };
66
-
67
- // export type GetFeatureInfo = {
68
- // request: 'GetFeatureInfo';
69
- // format: string[];
70
- // dcpType: unknown;
71
- // };
72
-
73
- // export type GetLegendGraphic = {
74
- // request: 'GetLegendGraphic';
75
- // format: string[];
76
- // dcpType: unknown;
77
- // };
78
-
79
- // export type GetStyles = {
80
- // request: 'GetStyles';
81
- // format: string[];
82
- // dcpType: unknown;
83
- // };
84
-
85
35
  /**
86
36
  * <EX_GeographicBoundingBox>
87
37
  * <westBoundLongitude>-180</westBoundLongitude>
@@ -2051,3 +2001,72 @@ export type WMSService = {
2051
2001
  </Capability>
2052
2002
  </WMS_Capabilities>
2053
2003
  */
2004
+
2005
+ /**
2006
+ * Parses a typed data structure from raw XML for `GetCapabilities` response
2007
+ * @note Error handlings is fairly weak
2008
+ */
2009
+ export function parseWMSCapabilities(text: string, options): WMSCapabilities {
2010
+ const parsedXML = XMLLoader.parseTextSync(text, options);
2011
+ const xmlCapabilities: any =
2012
+ parsedXML.WMT_MS_Capabilities || parsedXML.WMS_Capabilities || parsedXML;
2013
+ return extractCapabilities(xmlCapabilities);
2014
+ }
2015
+
2016
+ /** Extract typed capability data from XML */
2017
+ function extractCapabilities(xml: any): WMSCapabilities {
2018
+ const capabilities: WMSCapabilities = {
2019
+ name: xml.Service?.Name || 'unnamed',
2020
+ title: xml.Service?.Title,
2021
+ keywords: [],
2022
+ requests: {},
2023
+ layer: extractLayer(xml.Capability?.Layer),
2024
+ raw: xml
2025
+ };
2026
+
2027
+ for (const keyword of xml.Service?.KeywordList?.Keyword || []) {
2028
+ capabilities.keywords.push(keyword);
2029
+ }
2030
+
2031
+ for (const [name, xmlRequest] of Object.entries(xml.Capability?.Request || {})) {
2032
+ capabilities.requests[name] = extractRequest(name, xmlRequest);
2033
+ }
2034
+
2035
+ return capabilities;
2036
+ }
2037
+
2038
+ /** Extract typed request data from XML */
2039
+ function extractRequest(name: string, xmlRequest: any): WMSRequest {
2040
+ const format: string | string[] = xmlRequest?.Format;
2041
+ const mimeTypes: string[] = Array.isArray(format) ? format : [format];
2042
+ return {name, mimeTypes};
2043
+ }
2044
+
2045
+ /** Extract request data */
2046
+ function extractLayer(xmlLayer: any): WMSLayer {
2047
+ const layer: WMSLayer = {
2048
+ name: xmlLayer?.Name,
2049
+ title: xmlLayer?.Title,
2050
+ srs: xmlLayer?.SRS || [],
2051
+ layers: []
2052
+ };
2053
+
2054
+ // Single layer is not represented as array in XML
2055
+ const xmlLayers = getXMLArray(xmlLayer?.Layer);
2056
+
2057
+ for (const xmlSubLayer of xmlLayers) {
2058
+ layer.layers?.push(extractLayer(xmlSubLayer));
2059
+ }
2060
+
2061
+ return layer;
2062
+ }
2063
+
2064
+ function getXMLArray(xmlValue: any) {
2065
+ if (Array.isArray(xmlValue)) {
2066
+ return xmlValue;
2067
+ }
2068
+ if (xmlValue) {
2069
+ return [xmlValue];
2070
+ }
2071
+ return [];
2072
+ }
@@ -0,0 +1,22 @@
1
+ // loaders.gl, MIT license
2
+
3
+ import {XMLLoader} from '@loaders.gl/xml';
4
+
5
+ /**
6
+ * Extract an error message from WMS error response XML
7
+ * @param text
8
+ * @param options
9
+ * @returns a string with a human readable message
10
+ */
11
+ export function parseWMSError(text: string, options): string {
12
+ const parsedXML = XMLLoader.parseTextSync?.(text, options);
13
+ const serviceExceptionXML =
14
+ parsedXML?.ServiceExceptionReport?.ServiceException ||
15
+ parsedXML?.['ogc:ServiceExceptionReport']?.['ogc:ServiceException'];
16
+ // Sigh, can be either a string or an object
17
+ const message =
18
+ typeof serviceExceptionXML === 'string'
19
+ ? serviceExceptionXML
20
+ : serviceExceptionXML.value || serviceExceptionXML.code || 'Unknown error';
21
+ return message;
22
+ }
@@ -0,0 +1,39 @@
1
+ // loaders.gl, MIT license
2
+
3
+ import {XMLLoader} from '@loaders.gl/xml';
4
+
5
+ /** WMS Feature info - response to a WMS `GetFeatureInfo` request */
6
+ export type WMSFeatureInfo = {
7
+ features: WMSFeature[];
8
+ };
9
+
10
+ export type WMSFeature = {
11
+ attributes: Record<string, number | string>;
12
+ type: string;
13
+ bounds: {top: number; bottom: number; left: number; right: number};
14
+ };
15
+
16
+ /**
17
+ * Parses a typed data structure from raw XML for `GetFeatureInfo` response
18
+ * @note Error handlings is fairly weak
19
+ */
20
+ export function parseWMSFeatureInfo(text: string, options): WMSFeatureInfo {
21
+ const parsedXML = XMLLoader.parseTextSync(text, options);
22
+ const xmlFeatureInfo: any = parsedXML.FeatureInfoResponse?.FIELDS || [];
23
+
24
+ const xmlFeatures = Array.isArray(xmlFeatureInfo) ? xmlFeatureInfo : [xmlFeatureInfo];
25
+
26
+ return {
27
+ features: xmlFeatures.map((xmlFeature) => extractFeature(xmlFeature))
28
+ };
29
+ }
30
+
31
+ function extractFeature(xmlFeature: any) {
32
+ const xmlFields = xmlFeature || {};
33
+ // TODO - not correct
34
+ return {
35
+ attributes: xmlFields,
36
+ type: '',
37
+ bounds: {bottom: 0, top: 0, left: 0, right: 0}
38
+ };
39
+ }
@@ -0,0 +1,18 @@
1
+ // loaders.gl, MIT license
2
+
3
+ import {XMLLoader} from '@loaders.gl/xml';
4
+
5
+ /** Layer description - response to a WMS `DescribeLayer` request */
6
+ export type WMSLayerDescription = {
7
+ layers: {}[];
8
+ };
9
+
10
+ /**
11
+ * Parses a typed data structure from raw XML for `GetFeatureInfo` response
12
+ * @note Error handlings is fairly weak
13
+ */
14
+ export function parseWMSLayerDescription(text: string, options): WMSLayerDescription {
15
+ const parsedXML = XMLLoader.parseTextSync(text, options);
16
+ // TODO - implement parser
17
+ return parsedXML as unknown as WMSLayerDescription;
18
+ }
@@ -1,27 +1,34 @@
1
1
  // loaders.gl, MIT license
2
2
 
3
3
  import {ImageType} from '@loaders.gl/images';
4
- import type {ImageSourceMetadata, GetImageParameters} from '../image-source';
5
- import {ImageSource} from '../image-source';
6
- import {ImageServiceProps, mergeImageServiceProps, getFetchFunction} from './image-service';
7
-
8
- export class ArcGISImageService extends ImageSource {
4
+ import type {ImageSourceMetadata, GetImageParameters} from '../../sources/image-source';
5
+ import type {ImageSourceProps} from '../../sources/image-source';
6
+ import {ImageSource} from '../../sources/image-source';
7
+
8
+ export type ArcGISImageServerProps = ImageSourceProps & {
9
+ url: string;
10
+ };
11
+
12
+ /**
13
+ * ArcGIS ImageServer
14
+ * Note - exports a big API, that could be exposed here if there is a use case
15
+ * @see https://developers.arcgis.com/rest/services-reference/enterprise/image-service.htm
16
+ */
17
+ export class ArcGISImageServer extends ImageSource {
9
18
  static type: 'arcgis-image-server' = 'arcgis-image-server';
10
19
  static testURL = (url: string): boolean => url.toLowerCase().includes('ImageServer');
11
20
 
12
- props: Required<ImageServiceProps>;
13
- fetch: (url: string, options?: RequestInit) => Promise<Response>;
21
+ props: ArcGISImageServerProps;
14
22
 
15
- constructor(props: ImageServiceProps) {
16
- super();
17
- this.props = mergeImageServiceProps(props);
18
- this.fetch = getFetchFunction(this.props);
23
+ constructor(props: ArcGISImageServerProps) {
24
+ super(props);
25
+ this.props = props;
19
26
  }
20
27
 
21
28
  // ImageSource (normalized endpoints)
22
29
 
23
30
  async getMetadata(): Promise<ImageSourceMetadata> {
24
- return (await this.info()) as ImageSourceMetadata;
31
+ return (await this.metadata()) as ImageSourceMetadata;
25
32
  // TODO - normalize metadata
26
33
  }
27
34
 
@@ -33,7 +40,7 @@ export class ArcGISImageService extends ImageSource {
33
40
 
34
41
  // ImageServer endpoints
35
42
 
36
- async info(): Promise<unknown> {
43
+ async metadata(): Promise<unknown> {
37
44
  // We just need a JSON parsing...
38
45
  // return this.getUrl({path: '', ...options});
39
46
  throw new Error('not implemented');
@@ -68,18 +75,22 @@ export class ArcGISImageService extends ImageSource {
68
75
 
69
76
  // URL creators
70
77
 
71
- infoURL(options: {parameters?: Record<string, unknown>}): string {
72
- return this.props.url;
73
- // return this.getUrl({path: '', ...options});
78
+ metadataURL(options: {parameters?: Record<string, unknown>}): string {
79
+ return `${this.props.url}?f=pjson`;
74
80
  }
75
81
 
76
82
  /**
77
83
  * Form a URL to an ESRI ImageServer
78
- // https://sampleserver6.arcgisonline.com/arcgis/rest/services/NLCDLandCover2001/ImageServer/exportImage?bbox=${bounds[0]},${bounds[1]},${bounds[2]},${bounds[3]}&bboxSR=4326&size=${width},${height}&imageSR=102100&time=&format=jpgpng&pixelType=U8&noData=&noDataInterpretation=esriNoDataMatchAny&interpolation=+RSP_NearestNeighbor&compression=&compressionQuality=&bandIds=&mosaicRule=&renderingRule=&f=image`,
84
+ // https://sampleserver6.arcgisonline.com/arcgis/rest/services/NLCDLandCover2001/ImageServer/exportImage?
85
+ // bbox=${bounds[0]},${bounds[1]},${bounds[2]},${bounds[3]}&bboxSR=4326&
86
+ // size=${width},${height}&imageSR=102100&time=&format=jpgpng&pixelType=U8&
87
+ // noData=&noDataInterpretation=esriNoDataMatchAny&interpolation=+RSP_NearestNeighbor&compression=&
88
+ // compressionQuality=&bandIds=&mosaicRule=&renderingRule=&
89
+ // f=image
79
90
  */
80
91
  exportImageURL(options: {
81
- boundingBox: [number, number, number, number];
82
- boundingBoxSR?: string;
92
+ bbox: [number, number, number, number];
93
+ boxSR?: string;
83
94
  width: number;
84
95
  height: number;
85
96
  imageSR?: string;
@@ -96,11 +107,14 @@ export class ArcGISImageService extends ImageSource {
96
107
  renderingRule?: never;
97
108
  f?: 'image';
98
109
  }): string {
99
- // const {boundingBox} = options;
100
- // const bbox = `bbox=${boundingBox[0]},${boundingBox[1]},${boundingBox[2]},${boundingBox[3]}`;
101
- // const size = `size=${width},${height}`;
102
- // return this.getUrl({path: 'exportImage'});
103
- return this.props.url;
110
+ const bbox = `bbox=${options.bbox[0]},${options.bbox[1]},${options.bbox[2]},${options.bbox[3]}`;
111
+ const size = `size=${options.width},${options.height}`;
112
+ const arcgisOptions = {...options, bbox, size};
113
+ // @ts-expect-error
114
+ delete arcgisOptions.width;
115
+ // @ts-expect-error
116
+ delete arcgisOptions.height;
117
+ return this.getUrl('exportImage', arcgisOptions);
104
118
  }
105
119
 
106
120
  // INTERNAL METHODS
@@ -109,8 +123,12 @@ export class ArcGISImageService extends ImageSource {
109
123
  * @note protected, since perhaps getWMSUrl may need to be overridden to handle certain backends?
110
124
  * @note if override is common, maybe add a callback prop?
111
125
  * */
112
- protected getUrl(options: Record<string, unknown>, extra?: Record<string, unknown>): string {
113
- let url = `${this.props.url}`;
126
+ protected getUrl(
127
+ path: string,
128
+ options: Record<string, unknown>,
129
+ extra?: Record<string, unknown>
130
+ ): string {
131
+ let url = `${this.props.url}/${path}`;
114
132
  let first = true;
115
133
  for (const [key, value] of Object.entries(options)) {
116
134
  url += first ? '?' : '&';
@@ -0,0 +1,59 @@
1
+ // loaders.gl, MIT license
2
+
3
+ export type Service = {name: string; type: string; url: string};
4
+
5
+ type FetchLike = typeof fetch;
6
+
7
+ /**
8
+ * (Recursively) load the service directory from an ArcGIS Server URL
9
+ * @param url
10
+ * @param fetchFile= Optional fetch function override
11
+ * @returns
12
+ */
13
+ export async function getArcGISServices(
14
+ url: string,
15
+ fetchFile: FetchLike = fetch
16
+ ): Promise<Service[] | null> {
17
+ if (url.includes('rest/services')) {
18
+ const serverUrl = url.replace(/rest\/services.*$/i, 'rest/services');
19
+ return loadServiceDirectory(serverUrl, fetchFile, []);
20
+ }
21
+ return null;
22
+ }
23
+
24
+ async function loadServiceDirectory(
25
+ serverUrl: string,
26
+ fetch: FetchLike,
27
+ path: string[]
28
+ ): Promise<Service[]> {
29
+ const serviceUrl = `${serverUrl}/${path.join('/')}`;
30
+
31
+ const response = await fetch(`${serviceUrl}?f=pjson`);
32
+ const directory = await response.json();
33
+
34
+ const services = extractServices(directory, serviceUrl);
35
+
36
+ const folders = (directory.folders || []) as string[];
37
+ const promises = folders.map((folder) =>
38
+ loadServiceDirectory(`${serverUrl}`, fetch, [...path, folder])
39
+ );
40
+
41
+ for (const folderServices of await Promise.all(promises)) {
42
+ services.push(...folderServices);
43
+ }
44
+
45
+ return services;
46
+ }
47
+
48
+ function extractServices(directory: unknown, url: string): Service[] {
49
+ const arcgisServices = ((directory as any).services || []) as {name: string; type: string}[];
50
+ const services: Service[] = [];
51
+ for (const service of arcgisServices) {
52
+ services.push({
53
+ name: service.name,
54
+ type: `arcgis-${service.type.toLocaleLowerCase().replace('server', '-server')}`,
55
+ url: `${url}${service.name}/${service.type}`
56
+ });
57
+ }
58
+ return services;
59
+ }
@@ -1,14 +1,18 @@
1
1
  // loaders.gl, MIT license
2
2
 
3
+ import {LoaderOptions} from '@loaders.gl/loader-utils';
3
4
  import type {ImageType} from '@loaders.gl/images';
4
5
  import {ImageLoader} from '@loaders.gl/images';
5
6
 
6
- import type {ImageSourceMetadata, GetImageParameters} from './image-source';
7
- import {ImageSource} from './image-source';
7
+ import type {ImageSourceMetadata, GetImageParameters} from '../../sources/image-source';
8
+ import {ImageSource} from '../../sources/image-source';
8
9
 
9
- export type AdHocImageServiceProps = {
10
- /** Template URL string should contain `${width}` etc which will be substituted. */
11
- templateUrl: string;
10
+ /** Template URL string should contain `${width}` etc which will be substituted. */
11
+ export type ImageServiceProps = {
12
+ /** Base URL to the service */
13
+ url: string;
14
+ /** Any load options to the loaders.gl Loaders used by the WMSService methods */
15
+ loadOptions?: LoaderOptions;
12
16
  };
13
17
 
14
18
  /**
@@ -16,15 +20,15 @@ export type AdHocImageServiceProps = {
16
20
  * ImageSource allows template url strings to be used to ad hoc connect to arbitrary image data sources
17
21
  * Accepts a template url string and builds requests URLs
18
22
  */
19
- export class AdHocImageService extends ImageSource {
23
+ export class ImageService extends ImageSource {
20
24
  static type: 'template' = 'template';
21
25
  static testURL = (url: string): boolean => url.toLowerCase().includes('{');
22
26
 
23
- templateUrl: string;
27
+ props: ImageServiceProps;
24
28
 
25
- constructor(props: AdHocImageServiceProps) {
26
- super();
27
- this.templateUrl = props.templateUrl;
29
+ constructor(props: ImageServiceProps) {
30
+ super(props);
31
+ this.props = props;
28
32
  }
29
33
 
30
34
  // IMAGE SOURCE API
@@ -36,7 +40,7 @@ export class AdHocImageService extends ImageSource {
36
40
  async getImage(parameters: GetImageParameters): Promise<ImageType> {
37
41
  const granularParameters = this.getGranularParameters(parameters);
38
42
  const url = this.getURLFromTemplate(granularParameters);
39
- const response = await fetch(url);
43
+ const response = await this.fetch(url);
40
44
  const arrayBuffer = await response.arrayBuffer();
41
45
  return await ImageLoader.parse(arrayBuffer);
42
46
  }
@@ -49,12 +53,14 @@ export class AdHocImageService extends ImageSource {
49
53
  return {...parameters, east, north, south, west};
50
54
  }
51
55
 
56
+ /** Supports both ${} and {} notations */
52
57
  protected getURLFromTemplate(parameters: Record<string, unknown>): string {
53
- let url = this.templateUrl;
58
+ let url = this.props.url;
54
59
  for (const [key, value] of Object.entries(parameters)) {
55
60
  // TODO - parameter could be repeated
56
61
  // const regex = new RegExp(`\${${key}}`, 'g');
57
62
  url = url.replace(`\${${key}}`, String(value));
63
+ url = url.replace(`{${key}}`, String(value));
58
64
  }
59
65
  return url;
60
66
  }
File without changes