@loaders.gl/wms 3.3.0-alpha.9 → 3.4.0-alpha.1

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 (266) hide show
  1. package/dist/bundle.d.ts +2 -0
  2. package/dist/bundle.d.ts.map +1 -0
  3. package/dist/bundle.js +6 -0
  4. package/dist/dist.min.js +4080 -2009
  5. package/dist/es5/index.js +63 -7
  6. package/dist/es5/index.js.map +1 -1
  7. package/dist/es5/lerc-loader.js +74 -0
  8. package/dist/es5/lerc-loader.js.map +1 -0
  9. package/dist/es5/lib/data-sources/adhoc-image-service.js +129 -0
  10. package/dist/es5/lib/data-sources/adhoc-image-service.js.map +1 -0
  11. package/dist/es5/lib/data-sources/arcgis-image-service.js +180 -0
  12. package/dist/es5/lib/data-sources/arcgis-image-service.js.map +1 -0
  13. package/dist/es5/lib/data-sources/create-image-source.js +45 -0
  14. package/dist/es5/lib/data-sources/create-image-source.js.map +1 -0
  15. package/dist/es5/lib/data-sources/image-services/arcgis-image-service.js +179 -0
  16. package/dist/es5/lib/data-sources/image-services/arcgis-image-service.js.map +1 -0
  17. package/dist/es5/lib/data-sources/image-services/image-service.js +163 -0
  18. package/dist/es5/lib/data-sources/image-services/image-service.js.map +1 -0
  19. package/dist/es5/lib/data-sources/image-services/wms-service.js +400 -0
  20. package/dist/es5/lib/data-sources/image-services/wms-service.js.map +1 -0
  21. package/dist/es5/lib/data-sources/image-source.js +14 -0
  22. package/dist/es5/lib/data-sources/image-source.js.map +1 -0
  23. package/dist/es5/lib/gml/deep-strict-equal.js +64 -0
  24. package/dist/es5/lib/gml/deep-strict-equal.js.map +1 -0
  25. package/dist/es5/lib/gml/parse-gml.js +416 -0
  26. package/dist/es5/lib/gml/parse-gml.js.map +1 -0
  27. package/dist/es5/lib/lerc/lerc-types.js +2 -0
  28. package/dist/es5/lib/lerc/lerc-types.js.map +1 -0
  29. package/dist/es5/lib/wcs/parse-wcs.js +43 -0
  30. package/dist/es5/lib/wcs/parse-wcs.js.map +1 -0
  31. package/dist/es5/lib/wcs/wcs-types.js +2 -0
  32. package/dist/es5/lib/wcs/wcs-types.js.map +1 -0
  33. package/dist/es5/lib/wfs/parse-wfs.js +43 -0
  34. package/dist/es5/lib/wfs/parse-wfs.js.map +1 -0
  35. package/dist/es5/lib/wfs/wfs-types.js +2 -0
  36. package/dist/es5/lib/wfs/wfs-types.js.map +1 -0
  37. package/dist/es5/lib/{parse-wms.js → wms/parse-wms.js} +35 -2
  38. package/dist/es5/lib/wms/parse-wms.js.map +1 -0
  39. package/dist/es5/{wms-types.js → lib/wms/wms-types.js} +0 -0
  40. package/dist/es5/lib/wms/wms-types.js.map +1 -0
  41. package/dist/es5/lib/wmts/parse-wmts.js +43 -0
  42. package/dist/es5/lib/wmts/parse-wmts.js.map +1 -0
  43. package/dist/es5/lib/wmts/wmts-types.js +2 -0
  44. package/dist/es5/lib/wmts/wmts-types.js.map +1 -0
  45. package/dist/es5/wip/arcgis-feature-service.js +45 -0
  46. package/dist/es5/wip/arcgis-feature-service.js.map +1 -0
  47. package/dist/es5/wip/data-source.js +4 -0
  48. package/dist/es5/wip/data-source.js.map +1 -0
  49. package/dist/es5/wip/gml-loader.js +54 -0
  50. package/dist/es5/wip/gml-loader.js.map +1 -0
  51. package/dist/es5/wip/wcs-capabilities-loader.js +54 -0
  52. package/dist/es5/wip/wcs-capabilities-loader.js.map +1 -0
  53. package/dist/es5/wip/wfs-capabilities-loader.js +54 -0
  54. package/dist/es5/wip/wfs-capabilities-loader.js.map +1 -0
  55. package/dist/es5/{wms-feature-info-loader.js → wip/wms-feature-info-loader.js} +3 -3
  56. package/dist/es5/wip/wms-feature-info-loader.js.map +1 -0
  57. package/dist/es5/{wms-layer-description-loader.js → wip/wms-layer-description-loader.js} +5 -5
  58. package/dist/es5/wip/wms-layer-description-loader.js.map +1 -0
  59. package/dist/es5/wip/wms-layer-description-loader.md.disabled.md +47 -0
  60. package/dist/es5/wip/wmts-capabilities-loader.js +54 -0
  61. package/dist/es5/wip/wmts-capabilities-loader.js.map +1 -0
  62. package/dist/es5/wms-capabilities-loader.js +3 -3
  63. package/dist/es5/wms-capabilities-loader.js.map +1 -1
  64. package/dist/es5/wms-error-loader.js +70 -0
  65. package/dist/es5/wms-error-loader.js.map +1 -0
  66. package/dist/esm/index.js +16 -3
  67. package/dist/esm/index.js.map +1 -1
  68. package/dist/esm/lerc-loader.js +25 -0
  69. package/dist/esm/lerc-loader.js.map +1 -0
  70. package/dist/esm/lib/data-sources/adhoc-image-service.js +43 -0
  71. package/dist/esm/lib/data-sources/adhoc-image-service.js.map +1 -0
  72. package/dist/esm/lib/data-sources/arcgis-image-service.js +62 -0
  73. package/dist/esm/lib/data-sources/arcgis-image-service.js.map +1 -0
  74. package/dist/esm/lib/data-sources/create-image-source.js +30 -0
  75. package/dist/esm/lib/data-sources/create-image-source.js.map +1 -0
  76. package/dist/esm/lib/data-sources/image-services/arcgis-image-service.js +61 -0
  77. package/dist/esm/lib/data-sources/image-services/arcgis-image-service.js.map +1 -0
  78. package/dist/esm/lib/data-sources/image-services/image-service.js +72 -0
  79. package/dist/esm/lib/data-sources/image-services/image-service.js.map +1 -0
  80. package/dist/esm/lib/data-sources/image-services/wms-service.js +190 -0
  81. package/dist/esm/lib/data-sources/image-services/wms-service.js.map +1 -0
  82. package/dist/esm/lib/data-sources/image-source.js +4 -0
  83. package/dist/esm/lib/data-sources/image-source.js.map +1 -0
  84. package/dist/esm/lib/gml/deep-strict-equal.js +57 -0
  85. package/dist/esm/lib/gml/deep-strict-equal.js.map +1 -0
  86. package/dist/esm/lib/gml/parse-gml.js +348 -0
  87. package/dist/esm/lib/gml/parse-gml.js.map +1 -0
  88. package/dist/esm/lib/lerc/lerc-types.js +2 -0
  89. package/dist/esm/lib/lerc/lerc-types.js.map +1 -0
  90. package/dist/esm/lib/wcs/parse-wcs.js +32 -0
  91. package/dist/esm/lib/wcs/parse-wcs.js.map +1 -0
  92. package/dist/esm/lib/wcs/wcs-types.js +2 -0
  93. package/dist/esm/lib/wcs/wcs-types.js.map +1 -0
  94. package/dist/esm/lib/wfs/parse-wfs.js +32 -0
  95. package/dist/esm/lib/wfs/parse-wfs.js.map +1 -0
  96. package/dist/esm/lib/wfs/wfs-types.js +2 -0
  97. package/dist/esm/lib/wfs/wfs-types.js.map +1 -0
  98. package/dist/esm/lib/{parse-wms.js → wms/parse-wms.js} +33 -2
  99. package/dist/esm/lib/wms/parse-wms.js.map +1 -0
  100. package/dist/esm/{wms-types.js → lib/wms/wms-types.js} +0 -0
  101. package/dist/esm/lib/wms/wms-types.js.map +1 -0
  102. package/dist/esm/lib/wmts/parse-wmts.js +32 -0
  103. package/dist/esm/lib/wmts/parse-wmts.js.map +1 -0
  104. package/dist/esm/lib/wmts/wmts-types.js +2 -0
  105. package/dist/esm/lib/wmts/wmts-types.js.map +1 -0
  106. package/dist/esm/wip/arcgis-feature-service.js +28 -0
  107. package/dist/esm/wip/arcgis-feature-service.js.map +1 -0
  108. package/dist/esm/wip/data-source.js +2 -0
  109. package/dist/esm/wip/data-source.js.map +1 -0
  110. package/dist/esm/wip/gml-loader.js +25 -0
  111. package/dist/esm/wip/gml-loader.js.map +1 -0
  112. package/dist/esm/wip/wcs-capabilities-loader.js +25 -0
  113. package/dist/esm/wip/wcs-capabilities-loader.js.map +1 -0
  114. package/dist/esm/wip/wfs-capabilities-loader.js +25 -0
  115. package/dist/esm/wip/wfs-capabilities-loader.js.map +1 -0
  116. package/dist/esm/{wms-feature-info-loader.js → wip/wms-feature-info-loader.js} +3 -3
  117. package/dist/esm/wip/wms-feature-info-loader.js.map +1 -0
  118. package/dist/esm/wip/wms-layer-description-loader.js +14 -0
  119. package/dist/esm/wip/wms-layer-description-loader.js.map +1 -0
  120. package/dist/esm/wip/wms-layer-description-loader.md.disabled.md +47 -0
  121. package/dist/esm/wip/wmts-capabilities-loader.js +25 -0
  122. package/dist/esm/wip/wmts-capabilities-loader.js.map +1 -0
  123. package/dist/esm/wms-capabilities-loader.js +3 -3
  124. package/dist/esm/wms-capabilities-loader.js.map +1 -1
  125. package/dist/esm/wms-error-loader.js +40 -0
  126. package/dist/esm/wms-error-loader.js.map +1 -0
  127. package/dist/index.d.ts +27 -0
  128. package/dist/index.d.ts.map +1 -0
  129. package/dist/index.js +33 -0
  130. package/dist/lerc-loader.d.ts +30 -0
  131. package/dist/lerc-loader.d.ts.map +1 -0
  132. package/dist/lerc-loader.js +56 -0
  133. package/dist/lib/data-sources/adhoc-image-service.d.ts +24 -0
  134. package/dist/lib/data-sources/adhoc-image-service.d.ts.map +1 -0
  135. package/dist/lib/data-sources/adhoc-image-service.js +46 -0
  136. package/dist/lib/data-sources/arcgis-image-service.d.ts +79 -0
  137. package/dist/lib/data-sources/arcgis-image-service.d.ts.map +1 -0
  138. package/dist/lib/data-sources/arcgis-image-service.js +85 -0
  139. package/dist/lib/data-sources/create-image-source.d.ts +16 -0
  140. package/dist/lib/data-sources/create-image-source.d.ts.map +1 -0
  141. package/dist/lib/data-sources/create-image-source.js +39 -0
  142. package/dist/lib/data-sources/image-services/arcgis-image-service.d.ts +71 -0
  143. package/dist/lib/data-sources/image-services/arcgis-image-service.d.ts.map +1 -0
  144. package/dist/lib/data-sources/image-services/arcgis-image-service.js +85 -0
  145. package/dist/lib/data-sources/image-services/image-service.d.ts +39 -0
  146. package/dist/lib/data-sources/image-services/image-service.d.ts.map +1 -0
  147. package/dist/lib/data-sources/image-services/image-service.js +82 -0
  148. package/dist/lib/data-sources/image-services/wms-service.d.ts +188 -0
  149. package/dist/lib/data-sources/image-services/wms-service.d.ts.map +1 -0
  150. package/dist/lib/data-sources/image-services/wms-service.js +218 -0
  151. package/dist/lib/data-sources/image-source.d.ts +73 -0
  152. package/dist/lib/data-sources/image-source.d.ts.map +1 -0
  153. package/dist/lib/data-sources/image-source.js +12 -0
  154. package/dist/lib/gml/deep-strict-equal.d.ts +3 -0
  155. package/dist/lib/gml/deep-strict-equal.d.ts.map +1 -0
  156. package/dist/lib/gml/deep-strict-equal.js +119 -0
  157. package/dist/lib/gml/parse-gml.d.ts +28 -0
  158. package/dist/lib/gml/parse-gml.d.ts.map +1 -0
  159. package/dist/lib/gml/parse-gml.js +371 -0
  160. package/dist/lib/lerc/lerc-types.d.ts +30 -0
  161. package/dist/lib/lerc/lerc-types.d.ts.map +1 -0
  162. package/dist/lib/lerc/lerc-types.js +3 -0
  163. package/dist/lib/wcs/parse-wcs.d.ts +7 -0
  164. package/dist/lib/wcs/parse-wcs.d.ts.map +1 -0
  165. package/dist/lib/wcs/parse-wcs.js +36 -0
  166. package/dist/lib/wcs/wcs-types.d.ts +73 -0
  167. package/dist/lib/wcs/wcs-types.d.ts.map +1 -0
  168. package/dist/lib/wcs/wcs-types.js +3 -0
  169. package/dist/lib/wfs/parse-wfs.d.ts +7 -0
  170. package/dist/lib/wfs/parse-wfs.d.ts.map +1 -0
  171. package/dist/lib/wfs/parse-wfs.js +36 -0
  172. package/dist/lib/wfs/wfs-types.d.ts +73 -0
  173. package/dist/lib/wfs/wfs-types.d.ts.map +1 -0
  174. package/dist/lib/wfs/wfs-types.js +3 -0
  175. package/dist/lib/wms/parse-wms.d.ts +24 -0
  176. package/dist/lib/wms/parse-wms.d.ts.map +1 -0
  177. package/dist/lib/wms/parse-wms.js +115 -0
  178. package/dist/lib/wms/wms-types.d.ts +100 -0
  179. package/dist/lib/wms/wms-types.d.ts.map +1 -0
  180. package/dist/lib/wms/wms-types.js +1908 -0
  181. package/dist/lib/wmts/parse-wmts.d.ts +7 -0
  182. package/dist/lib/wmts/parse-wmts.d.ts.map +1 -0
  183. package/dist/lib/wmts/parse-wmts.js +36 -0
  184. package/dist/lib/wmts/wmts-types.d.ts +73 -0
  185. package/dist/lib/wmts/wmts-types.d.ts.map +1 -0
  186. package/dist/lib/wmts/wmts-types.js +3 -0
  187. package/dist/wip/arcgis-feature-service.d.ts +56 -0
  188. package/dist/wip/arcgis-feature-service.d.ts.map +1 -0
  189. package/dist/wip/arcgis-feature-service.js +28 -0
  190. package/dist/wip/data-source.d.ts +54 -0
  191. package/dist/wip/data-source.d.ts.map +1 -0
  192. package/dist/wip/data-source.js +59 -0
  193. package/dist/wip/gml-loader.d.ts +26 -0
  194. package/dist/wip/gml-loader.d.ts.map +1 -0
  195. package/dist/wip/gml-loader.js +31 -0
  196. package/dist/wip/wcs-capabilities-loader.d.ts +26 -0
  197. package/dist/wip/wcs-capabilities-loader.d.ts.map +1 -0
  198. package/dist/wip/wcs-capabilities-loader.js +31 -0
  199. package/dist/wip/wfs-capabilities-loader.d.ts +26 -0
  200. package/dist/wip/wfs-capabilities-loader.d.ts.map +1 -0
  201. package/dist/wip/wfs-capabilities-loader.js +31 -0
  202. package/dist/wip/wms-feature-info-loader.d.ts +22 -0
  203. package/dist/wip/wms-feature-info-loader.d.ts.map +1 -0
  204. package/dist/wip/wms-feature-info-loader.js +17 -0
  205. package/dist/wip/wms-layer-description-loader.d.ts +22 -0
  206. package/dist/wip/wms-layer-description-loader.d.ts.map +1 -0
  207. package/dist/wip/wms-layer-description-loader.js +17 -0
  208. package/dist/wip/wmts-capabilities-loader.d.ts +26 -0
  209. package/dist/wip/wmts-capabilities-loader.d.ts.map +1 -0
  210. package/dist/wip/wmts-capabilities-loader.js +31 -0
  211. package/dist/wms-capabilities-loader.d.ts +26 -0
  212. package/dist/wms-capabilities-loader.d.ts.map +1 -0
  213. package/dist/wms-capabilities-loader.js +31 -0
  214. package/dist/wms-error-loader.d.ts +34 -0
  215. package/dist/wms-error-loader.d.ts.map +1 -0
  216. package/dist/wms-error-loader.js +43 -0
  217. package/package.json +17 -6
  218. package/src/index.ts +51 -6
  219. package/src/lerc-loader.ts +50 -0
  220. package/src/lib/data-sources/adhoc-image-service.ts +61 -0
  221. package/src/lib/data-sources/arcgis-image-service.ts +146 -0
  222. package/src/lib/data-sources/create-image-source.ts +46 -0
  223. package/src/lib/data-sources/image-services/arcgis-image-service.ts +136 -0
  224. package/src/lib/data-sources/image-services/image-service.ts +105 -0
  225. package/src/lib/data-sources/image-services/wms-service.ts +351 -0
  226. package/src/lib/data-sources/image-source.ts +82 -0
  227. package/src/lib/gml/deep-strict-equal.ts +119 -0
  228. package/src/lib/gml/parse-gml.ts +500 -0
  229. package/src/lib/lerc/lerc-types.ts +43 -0
  230. package/src/lib/wcs/parse-wcs.ts +39 -0
  231. package/src/lib/wcs/wcs-types.ts +77 -0
  232. package/src/lib/wfs/parse-wfs.ts +39 -0
  233. package/src/lib/wfs/wfs-types.ts +78 -0
  234. package/src/lib/{parse-wms.ts → wms/parse-wms.ts} +54 -4
  235. package/src/{wms-types.ts → lib/wms/wms-types.ts} +3 -1
  236. package/src/lib/wmts/parse-wmts.ts +39 -0
  237. package/src/lib/wmts/wmts-types.ts +77 -0
  238. package/src/wip/arcgis-feature-service.ts +89 -0
  239. package/src/{lib/data-sources/image-data-source.ts → wip/data-source.ts} +20 -42
  240. package/src/wip/gml-loader.ts +40 -0
  241. package/src/wip/wcs-capabilities-loader.ts +40 -0
  242. package/src/wip/wfs-capabilities-loader.ts +40 -0
  243. package/src/{wms-feature-info-loader.ts → wip/wms-feature-info-loader.ts} +3 -3
  244. package/src/wip/wms-layer-description-loader.md.disabled.md +47 -0
  245. package/src/{wms-layer-description-loader.ts → wip/wms-layer-description-loader.ts} +6 -6
  246. package/src/wip/wmts-capabilities-loader.ts +40 -0
  247. package/src/wms-capabilities-loader.ts +2 -2
  248. package/src/wms-error-loader.ts +59 -0
  249. package/dist/es5/lib/data-sources/image-data-source.js +0 -4
  250. package/dist/es5/lib/data-sources/image-data-source.js.map +0 -1
  251. package/dist/es5/lib/data-sources/wms-data-source.js +0 -223
  252. package/dist/es5/lib/data-sources/wms-data-source.js.map +0 -1
  253. package/dist/es5/lib/parse-wms.js.map +0 -1
  254. package/dist/es5/wms-feature-info-loader.js.map +0 -1
  255. package/dist/es5/wms-layer-description-loader.js.map +0 -1
  256. package/dist/es5/wms-types.js.map +0 -1
  257. package/dist/esm/lib/data-sources/image-data-source.js +0 -2
  258. package/dist/esm/lib/data-sources/image-data-source.js.map +0 -1
  259. package/dist/esm/lib/data-sources/wms-data-source.js +0 -70
  260. package/dist/esm/lib/data-sources/wms-data-source.js.map +0 -1
  261. package/dist/esm/lib/parse-wms.js.map +0 -1
  262. package/dist/esm/wms-feature-info-loader.js.map +0 -1
  263. package/dist/esm/wms-layer-description-loader.js +0 -14
  264. package/dist/esm/wms-layer-description-loader.js.map +0 -1
  265. package/dist/esm/wms-types.js.map +0 -1
  266. package/src/lib/data-sources/wms-data-source.ts +0 -99
@@ -0,0 +1,40 @@
1
+ // loaders.gl, MIT license
2
+
3
+ import type {LoaderWithParser, LoaderOptions} from '@loaders.gl/loader-utils';
4
+ import {parseWFSCapabilities} from '../lib/wfs/parse-wfs';
5
+
6
+ // __VERSION__ is injected by babel-plugin-version-inline
7
+ // @ts-ignore TS2304: Cannot find name '__VERSION__'.
8
+ const VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';
9
+
10
+ export type WFSLoaderOptions = LoaderOptions & {
11
+ wfs?: {};
12
+ };
13
+
14
+ /**
15
+ * Loader for the response to the WFS GetCapability request
16
+ */
17
+ export const WFSCapabilitiesLoader = {
18
+ id: 'wfs-capabilities',
19
+ name: 'WFS Capabilities',
20
+
21
+ module: 'wms',
22
+ version: VERSION,
23
+ worker: false,
24
+ extensions: ['xml'],
25
+ mimeTypes: ['application/vnd.ogc.wfs_xml', 'application/xml', 'text/xml'],
26
+ testText: testXMLFile,
27
+ options: {
28
+ wms: {}
29
+ },
30
+ parse: async (arrayBuffer: ArrayBuffer, options?: WFSLoaderOptions) =>
31
+ parseWFSCapabilities(new TextDecoder().decode(arrayBuffer), options),
32
+ parseTextSync: (text: string, options?: WFSLoaderOptions) => parseWFSCapabilities(text, options)
33
+ };
34
+
35
+ function testXMLFile(text: string): boolean {
36
+ // TODO - There could be space first.
37
+ return text.startsWith('<?xml');
38
+ }
39
+
40
+ export const _typecheckWFSCapabilitiesLoader: LoaderWithParser = WFSCapabilitiesLoader;
@@ -1,8 +1,8 @@
1
1
  // loaders.gl, MIT license
2
2
 
3
3
  import type {LoaderWithParser} from '@loaders.gl/loader-utils';
4
- import {WMSCapabilitiesLoader, WMSLoaderOptions} from './wms-capabilities-loader';
5
- import {parseWMSFeatureInfo} from './lib/parse-wms';
4
+ import {WMSCapabilitiesLoader, WMSLoaderOptions} from '../wms-capabilities-loader';
5
+ import {parseWMSFeatureInfo} from '../lib/wms/parse-wms';
6
6
 
7
7
  /**
8
8
  * Loader for the response to the WMS GetFeatureInfo request
@@ -10,8 +10,8 @@ import {parseWMSFeatureInfo} from './lib/parse-wms';
10
10
  export const WMSFeatureInfoLoader = {
11
11
  ...WMSCapabilitiesLoader,
12
12
 
13
- name: 'WMS FeatureInfo',
14
13
  id: 'wms-feature-info',
14
+ name: 'WMS FeatureInfo',
15
15
 
16
16
  parse: async (arrayBuffer: ArrayBuffer, options?: WMSLoaderOptions) =>
17
17
  parseWMSFeatureInfo(new TextDecoder().decode(arrayBuffer), options),
@@ -0,0 +1,47 @@
1
+ # WMSLayerDescriptionLoader
2
+
3
+ <p class="badges">
4
+ <img src="https://img.shields.io/badge/From-v3.3-blue.svg?style=flat-square" alt="From-v3.3" />
5
+ <img src="https://img.shields.io/badge/-BETA-teal.svg" alt="BETA" />
6
+ </p>
7
+
8
+ The `WMSLayerDescriptionLoader` parses the XML-formatted response from the
9
+ the [OGC](https://www.opengeospatial.org/) [WMS](https://www.ogc.org/standards/wms) (Web Map Service) standard `DescribeLayer` request into a typed JavaScript data structure.
10
+
11
+ > Note that the WMS standard is rather verbose and the XML responses can contain many rarely used metadata fields, not all of which are extracted by this loader. If this is a problem, it is possible to use the `XMLLoader` directly though the result will be untyped and not normalized.
12
+
13
+ | Loader | Characteristic |
14
+ | --------------------- | ---------------------------------------------------- |
15
+ | File Extension | `.xml` |
16
+ | File Type | Text |
17
+ | File Format | [WMS](https://en.wikipedia.org/wiki/Web_Map_Service) |
18
+ | Data Format | Data structure |
19
+ | Decoder Type | Synchronous |
20
+ | Worker Thread Support | No |
21
+ | Streaming Support | No |
22
+
23
+ ## Usage
24
+
25
+ ```js
26
+ import {WMSLayerDescriptionLoader} from '@loaders.gl/wms';
27
+ import {load} from '@loaders.gl/core';
28
+
29
+ // Form a WMS request
30
+ const url = `${WMS_SERVICE_URL}?REQUEST=DescribeLayer&LAYER=...`;
31
+
32
+ const data = await load(url, WMSLayerDescriptionLoader, options);
33
+ ```
34
+
35
+ ## Parsed Data Format
36
+
37
+ ```typescript
38
+ /** All capabilities of a WMS service. Typed data structure extracted from XML */
39
+ export type WMSLayerDescription = {
40
+ // TO BE DOCUMENTED
41
+ }
42
+ ```
43
+
44
+ ## Options
45
+
46
+ | Option | Type | Default | Description |
47
+ | ------ | ---- | ------- | ----------- |
@@ -1,21 +1,21 @@
1
1
  // loaders.gl, MIT license
2
2
 
3
3
  import type {LoaderWithParser} from '@loaders.gl/loader-utils';
4
- import {WMSCapabilitiesLoader, WMSLoaderOptions} from './wms-capabilities-loader';
5
- import {parseWMSFeatureInfo} from './lib/parse-wms';
4
+ import {WMSCapabilitiesLoader, WMSLoaderOptions} from '../wms-capabilities-loader';
5
+ import {parseWMSLayerDescription} from '../lib/wms/parse-wms';
6
6
 
7
7
  /**
8
- * Loader for the response to the WMS GetFeatureInfo request
8
+ * Loader for the response to the WMS DescribeLayer request
9
9
  */
10
10
  export const WMSLayerDescriptionLoader = {
11
11
  ...WMSCapabilitiesLoader,
12
12
 
13
- name: 'WMS DescribeLayer',
14
13
  id: 'wms-layer-description',
14
+ name: 'WMS DescribeLayer',
15
15
 
16
16
  parse: async (arrayBuffer: ArrayBuffer, options?: WMSLoaderOptions) =>
17
- parseWMSFeatureInfo(new TextDecoder().decode(arrayBuffer), options),
18
- parseTextSync: (text: string, options?: WMSLoaderOptions) => parseWMSFeatureInfo(text, options)
17
+ parseWMSLayerDescription(new TextDecoder().decode(arrayBuffer), options),
18
+ parseTextSync: (text: string, options?: WMSLoaderOptions) => parseWMSLayerDescription(text, options)
19
19
  };
20
20
 
21
21
  export const _typecheckWMSFeatureInfoLoader: LoaderWithParser = WMSLayerDescriptionLoader;
@@ -0,0 +1,40 @@
1
+ // loaders.gl, MIT license
2
+
3
+ import type {LoaderWithParser, LoaderOptions} from '@loaders.gl/loader-utils';
4
+ import {parseWMTSCapabilities} from '../lib/wmts/parse-wmts';
5
+
6
+ // __VERSION__ is injected by babel-plugin-version-inline
7
+ // @ts-ignore TS2304: Cannot find name '__VERSION__'.
8
+ const VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';
9
+
10
+ export type WMTSLoaderOptions = LoaderOptions & {
11
+ wmts?: {};
12
+ };
13
+
14
+ /**
15
+ * Loader for the response to the WMTS GetCapability request
16
+ */
17
+ export const WMTSCapabilitiesLoader = {
18
+ id: 'wmts-capabilities',
19
+ name: 'WMTS Capabilities',
20
+
21
+ module: 'wms',
22
+ version: VERSION,
23
+ worker: false,
24
+ extensions: ['xml'],
25
+ mimeTypes: ['application/vnd.ogc.wmts_xml', 'application/xml', 'text/xml'],
26
+ testText: testXMLFile,
27
+ options: {
28
+ wms: {}
29
+ },
30
+ parse: async (arrayBuffer: ArrayBuffer, options?: WMTSLoaderOptions) =>
31
+ parseWMTSCapabilities(new TextDecoder().decode(arrayBuffer), options),
32
+ parseTextSync: (text: string, options?: WMTSLoaderOptions) => parseWMTSCapabilities(text, options)
33
+ };
34
+
35
+ function testXMLFile(text: string): boolean {
36
+ // TODO - There could be space first.
37
+ return text.startsWith('<?xml');
38
+ }
39
+
40
+ export const _typecheckWMTSCapabilitiesLoader: LoaderWithParser = WMTSCapabilitiesLoader;
@@ -1,7 +1,7 @@
1
1
  // loaders.gl, MIT license
2
2
 
3
3
  import type {LoaderWithParser, LoaderOptions} from '@loaders.gl/loader-utils';
4
- import {parseWMSCapabilities} from './lib/parse-wms';
4
+ import {parseWMSCapabilities} from './lib/wms/parse-wms';
5
5
 
6
6
  // __VERSION__ is injected by babel-plugin-version-inline
7
7
  // @ts-ignore TS2304: Cannot find name '__VERSION__'.
@@ -15,8 +15,8 @@ export type WMSLoaderOptions = LoaderOptions & {
15
15
  * Loader for the response to the WMS GetCapability request
16
16
  */
17
17
  export const WMSCapabilitiesLoader = {
18
- name: 'WMS Capabilities',
19
18
  id: 'wms-capabilities',
19
+ name: 'WMS Capabilities',
20
20
 
21
21
  module: 'wms',
22
22
  version: VERSION,
@@ -0,0 +1,59 @@
1
+ // loaders.gl, MIT license
2
+
3
+ import type {LoaderWithParser, LoaderOptions} from '@loaders.gl/loader-utils';
4
+ import {parseWMSError} from './lib/wms/parse-wms';
5
+
6
+ // __VERSION__ is injected by babel-plugin-version-inline
7
+ // @ts-ignore TS2304: Cannot find name '__VERSION__'.
8
+ const VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';
9
+
10
+ export type WMSLoaderOptions = LoaderOptions & {
11
+ wms?: {
12
+ /** By default the error loader will throw an error with the parsed error message */
13
+ throwOnError?: boolean;
14
+ /** Do not add any text to errors */
15
+ minimalErrors?: boolean;
16
+ };
17
+ };
18
+
19
+ /**
20
+ * Loader for the response to the WMS GetCapability request
21
+ */
22
+ export const WMSErrorLoader = {
23
+ id: 'wms-error',
24
+ name: 'WMS Error',
25
+
26
+ module: 'wms',
27
+ version: VERSION,
28
+ worker: false,
29
+ extensions: ['xml'],
30
+ mimeTypes: ['application/vnd.ogc.se_xml', 'application/xml', 'text/xml'],
31
+ testText: testXMLFile,
32
+ options: {
33
+ wms: {
34
+ throwOnError: false
35
+ }
36
+ },
37
+ parse: async (arrayBuffer: ArrayBuffer, options?: WMSLoaderOptions): Promise<string> =>
38
+ parseTextSync(new TextDecoder().decode(arrayBuffer), options),
39
+ parseSync: (arrayBuffer: ArrayBuffer, options?: WMSLoaderOptions): string =>
40
+ parseTextSync(new TextDecoder().decode(arrayBuffer), options),
41
+ parseTextSync: (text: string, options?: WMSLoaderOptions): string => parseTextSync(text, options)
42
+ };
43
+
44
+ function testXMLFile(text: string): boolean {
45
+ // TODO - There could be space first.
46
+ return text.startsWith('<?xml');
47
+ }
48
+
49
+ function parseTextSync(text: string, options?: WMSLoaderOptions): string {
50
+ const wmsOptions: WMSLoaderOptions['wms'] = {...WMSErrorLoader.options.wms, ...options?.wms};
51
+ const error = parseWMSError(text, wmsOptions);
52
+ const message = wmsOptions.minimalErrors ? error : `WMS Service error: ${error}`;
53
+ if (wmsOptions.throwOnError) {
54
+ throw new Error(message);
55
+ }
56
+ return message;
57
+ }
58
+
59
+ export const _typecheckWMSErrorLoader: LoaderWithParser = WMSErrorLoader;
@@ -1,4 +0,0 @@
1
-
2
-
3
- "use strict";
4
- //# sourceMappingURL=image-data-source.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"image-data-source.js","names":[],"sources":["../../../../src/lib/data-sources/image-data-source.ts"],"sourcesContent":["// loaders.gl, MIT license\n\n/*\nimport {ImageType} from '@loaders.gl/images';\n\n/** General data source class *\nexport abstract class DataSource {};\n\n/** Data source that serves data by tile index *\nexport abstract class TileDataSource extends DataSource {};\n\nexport type ImageFeatureInfo = {};\n\nexport type ImageLayerInfo = {};\n\nexport type ImageDataSourceCapabilities = {}\n\n/**\n * ImageDataSource - data sources that allow data to be queried by (geospatial) extents\n * @note\n * - If geospatial, bounding box is expected to be in web mercator coordinates\n *\nexport abstract class ImageDataSource extends DataSource {\n abstract getCapabilities(): Promise<ImageDataSourceCapabilities>;\n abstract getImage({boundingBox, width, height, layers, parameters}): Promise<ImageType>;\n getFeatureInfo({layers, parameters}): Promise<ImageFeatureInfo> {\n throw new Error('not implemented');\n }\n getLayerInfo({layers, parameters}): Promise<ImageLayerInfo> {\n throw new Error('not implemented');\n }\n getLegendImage({layers, parameters}): Promise<ImageType> {\n throw new Error('not implemented');\n }\n}\n\n// Vector Tile Data Source\n\nexport type VectorTileDataSourceCapabilities = {\n // check tile.json\n}\n\nexport type VectorTile = Record<string, any>;\n\nexport abstract class VectorTileDataSource extends TileDataSource {\n abstract getCapabilities(): Promise<VectorTileDataSourceCapabilities>;\n abstract getTile({x, y, z, width, height, layers, parameters}): Promise<VectorTile>;\n}\n\n// Image Tile Data Source\n\nexport type ImageTileDataSourceCapabilities = {\n}\n\nexport type ImageTile = Record<string, any>;\n\nexport type FeatureInfo = {};\n\nexport abstract class ImageTileDataSource extends TileDataSource {\n source: ImageDataSource;\n \n constructor(source: ImageDataSource) {\n super();\n this.source = source;\n }\n\n getCapabilities(): Promise<ImageTileDataSourceCapabilities> {\n return this.source.getCapabilities();\n }\n\n getTile({x, y, z, width, height, layers, parameters}): Promise<ImageType> {\n const boundingBox = this.getBoundingBoxFromTileIndex(x, y, z);\n return this.source.getImage({boundingBox, width, height, layers, parameters});\n }\n\n getFeatureInfo(): FeatureInfo | null {\n return null;\n }\n\n getBoundingBoxFromTileIndex(x: number, y: number, z: number): [number, number, number, number] {\n return [0, 0, 1, 1];\n }\n}\n*/\n"],"mappings":""}
@@ -1,223 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.WMSDataSource = void 0;
8
- var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
9
- var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
10
- var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
11
- var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
12
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
13
- var _wms = require("@loaders.gl/wms");
14
- var _images = require("@loaders.gl/images");
15
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
16
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
17
- var WMSDataSource = function () {
18
-
19
- function WMSDataSource(props) {
20
- (0, _classCallCheck2.default)(this, WMSDataSource);
21
- (0, _defineProperty2.default)(this, "url", void 0);
22
- (0, _defineProperty2.default)(this, "loadOptions", void 0);
23
- (0, _defineProperty2.default)(this, "fetch", void 0);
24
- this.url = props.url;
25
- this.loadOptions = props.loadOptions || {};
26
- this.fetch = props.fetch || fetch;
27
- }
28
- (0, _createClass2.default)(WMSDataSource, [{
29
- key: "getCapabilities",
30
- value: function () {
31
- var _getCapabilities = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(options) {
32
- var url, response, arrayBuffer;
33
- return _regenerator.default.wrap(function _callee$(_context) {
34
- while (1) {
35
- switch (_context.prev = _context.next) {
36
- case 0:
37
- url = this.getUrl(_objectSpread({
38
- request: 'GetCapabilities'
39
- }, options));
40
- _context.next = 3;
41
- return this.fetch(url, this.loadOptions);
42
- case 3:
43
- response = _context.sent;
44
- _context.next = 6;
45
- return response.arrayBuffer();
46
- case 6:
47
- arrayBuffer = _context.sent;
48
- _context.next = 9;
49
- return _wms.WMSCapabilitiesLoader.parse(arrayBuffer, this.loadOptions);
50
- case 9:
51
- return _context.abrupt("return", _context.sent);
52
- case 10:
53
- case "end":
54
- return _context.stop();
55
- }
56
- }
57
- }, _callee, this);
58
- }));
59
- function getCapabilities(_x) {
60
- return _getCapabilities.apply(this, arguments);
61
- }
62
- return getCapabilities;
63
- }()
64
- }, {
65
- key: "getImage",
66
- value: function () {
67
- var _getImage = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee2(options) {
68
- var url, response, arrayBuffer;
69
- return _regenerator.default.wrap(function _callee2$(_context2) {
70
- while (1) {
71
- switch (_context2.prev = _context2.next) {
72
- case 0:
73
- url = this.getUrl(_objectSpread({
74
- request: 'GetMap'
75
- }, options));
76
- _context2.next = 3;
77
- return this.fetch(url, this.loadOptions);
78
- case 3:
79
- response = _context2.sent;
80
- _context2.next = 6;
81
- return response.arrayBuffer();
82
- case 6:
83
- arrayBuffer = _context2.sent;
84
- _context2.next = 9;
85
- return _images.ImageLoader.parse(arrayBuffer, this.loadOptions);
86
- case 9:
87
- return _context2.abrupt("return", _context2.sent);
88
- case 10:
89
- case "end":
90
- return _context2.stop();
91
- }
92
- }
93
- }, _callee2, this);
94
- }));
95
- function getImage(_x2) {
96
- return _getImage.apply(this, arguments);
97
- }
98
- return getImage;
99
- }()
100
- }, {
101
- key: "getFeatureInfo",
102
- value: function () {
103
- var _getFeatureInfo = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee3(options) {
104
- var url, response, arrayBuffer;
105
- return _regenerator.default.wrap(function _callee3$(_context3) {
106
- while (1) {
107
- switch (_context3.prev = _context3.next) {
108
- case 0:
109
- url = this.getUrl(_objectSpread({
110
- request: 'GetFeatureInfo'
111
- }, options));
112
- _context3.next = 3;
113
- return this.fetch(url, this.loadOptions);
114
- case 3:
115
- response = _context3.sent;
116
- _context3.next = 6;
117
- return response.arrayBuffer();
118
- case 6:
119
- arrayBuffer = _context3.sent;
120
- _context3.next = 9;
121
- return _wms.WMSFeatureInfoLoader.parse(arrayBuffer, this.loadOptions);
122
- case 9:
123
- return _context3.abrupt("return", _context3.sent);
124
- case 10:
125
- case "end":
126
- return _context3.stop();
127
- }
128
- }
129
- }, _callee3, this);
130
- }));
131
- function getFeatureInfo(_x3) {
132
- return _getFeatureInfo.apply(this, arguments);
133
- }
134
- return getFeatureInfo;
135
- }()
136
- }, {
137
- key: "getLayerInfo",
138
- value: function () {
139
- var _getLayerInfo = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee4(options) {
140
- var url, response, arrayBuffer;
141
- return _regenerator.default.wrap(function _callee4$(_context4) {
142
- while (1) {
143
- switch (_context4.prev = _context4.next) {
144
- case 0:
145
- url = this.getUrl(_objectSpread({
146
- request: 'GetLayerInfo'
147
- }, options));
148
- _context4.next = 3;
149
- return this.fetch(url, this.loadOptions);
150
- case 3:
151
- response = _context4.sent;
152
- _context4.next = 6;
153
- return response.arrayBuffer();
154
- case 6:
155
- arrayBuffer = _context4.sent;
156
- _context4.next = 9;
157
- return _wms.WMSLayerDescriptionLoader.parse(arrayBuffer, this.loadOptions);
158
- case 9:
159
- return _context4.abrupt("return", _context4.sent);
160
- case 10:
161
- case "end":
162
- return _context4.stop();
163
- }
164
- }
165
- }, _callee4, this);
166
- }));
167
- function getLayerInfo(_x4) {
168
- return _getLayerInfo.apply(this, arguments);
169
- }
170
- return getLayerInfo;
171
- }()
172
- }, {
173
- key: "getLegendImage",
174
- value: function () {
175
- var _getLegendImage = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee5(options) {
176
- var url, response, arrayBuffer;
177
- return _regenerator.default.wrap(function _callee5$(_context5) {
178
- while (1) {
179
- switch (_context5.prev = _context5.next) {
180
- case 0:
181
- url = this.getUrl(_objectSpread({
182
- request: 'GetLegendImage'
183
- }, options));
184
- _context5.next = 3;
185
- return this.fetch(url, this.loadOptions);
186
- case 3:
187
- response = _context5.sent;
188
- _context5.next = 6;
189
- return response.arrayBuffer();
190
- case 6:
191
- arrayBuffer = _context5.sent;
192
- _context5.next = 9;
193
- return _images.ImageLoader.parse(arrayBuffer, this.loadOptions);
194
- case 9:
195
- return _context5.abrupt("return", _context5.sent);
196
- case 10:
197
- case "end":
198
- return _context5.stop();
199
- }
200
- }
201
- }, _callee5, this);
202
- }));
203
- function getLegendImage(_x5) {
204
- return _getLegendImage.apply(this, arguments);
205
- }
206
- return getLegendImage;
207
- }()
208
- }, {
209
- key: "getUrl",
210
- value:
211
- function getUrl(options) {
212
- var _options$layers;
213
- var url = "".concat(this.url, "?REQUEST=").concat(options.request);
214
- if ((_options$layers = options.layers) !== null && _options$layers !== void 0 && _options$layers.length) {
215
- url += "&LAYERS=[".concat(options.layers.join(','), "]");
216
- }
217
- return url;
218
- }
219
- }]);
220
- return WMSDataSource;
221
- }();
222
- exports.WMSDataSource = WMSDataSource;
223
- //# sourceMappingURL=wms-data-source.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"wms-data-source.js","names":["WMSDataSource","props","url","loadOptions","fetch","options","getUrl","request","response","arrayBuffer","WMSCapabilitiesLoader","parse","ImageLoader","WMSFeatureInfoLoader","WMSLayerDescriptionLoader","layers","length","join"],"sources":["../../../../src/lib/data-sources/wms-data-source.ts"],"sourcesContent":["// loaders.gl, MIT license\n\nimport type {WMSCapabilities, WMSFeatureInfo, WMSLayerDescription} from '@loaders.gl/wms';\nimport {\n WMSCapabilitiesLoader,\n WMSFeatureInfoLoader,\n WMSLayerDescriptionLoader\n} from '@loaders.gl/wms';\nimport {ImageLoader, ImageType} from '@loaders.gl/images';\nimport {LoaderOptions} from '@loaders.gl/loader-utils';\n\n// import {ImageDataSource} from './image-data-sources';\n\ntype FetchLike = (url: string, options?: RequestInit) => Promise<Response>;\n\nexport type WMSDataSourceProps = {\n url: string;\n loadOptions?: LoaderOptions;\n fetch?: typeof fetch | FetchLike;\n};\n\nexport class WMSDataSource {\n // implements ImageDataSource {\n url: string;\n loadOptions: LoaderOptions;\n fetch: typeof fetch | FetchLike;\n\n constructor(props: WMSDataSourceProps) {\n this.url = props.url;\n this.loadOptions = props.loadOptions || {};\n this.fetch = props.fetch || fetch;\n }\n\n async getCapabilities(options: {parameters?: Record<string, unknown>}): Promise<WMSCapabilities> {\n const url = this.getUrl({request: 'GetCapabilities', ...options});\n const response = await this.fetch(url, this.loadOptions);\n const arrayBuffer = await response.arrayBuffer();\n return await WMSCapabilitiesLoader.parse(arrayBuffer, this.loadOptions);\n }\n\n async getImage(options: {\n boundingBox;\n width;\n height;\n layers: string[];\n parameters?: Record<string, unknown>;\n }): Promise<ImageType> {\n const url = this.getUrl({request: 'GetMap', ...options});\n const response = await this.fetch(url, this.loadOptions);\n const arrayBuffer = await response.arrayBuffer();\n return await ImageLoader.parse(arrayBuffer, this.loadOptions);\n }\n\n async getFeatureInfo(options: {\n layers: string[];\n parameters?: Record<string, unknown>;\n }): Promise<WMSFeatureInfo> {\n const url = this.getUrl({request: 'GetFeatureInfo', ...options});\n const response = await this.fetch(url, this.loadOptions);\n const arrayBuffer = await response.arrayBuffer();\n return await WMSFeatureInfoLoader.parse(arrayBuffer, this.loadOptions);\n }\n\n async getLayerInfo(options: {\n layers: string[];\n parameters?: Record<string, unknown>;\n }): Promise<WMSLayerDescription> {\n const url = this.getUrl({request: 'GetLayerInfo', ...options});\n const response = await this.fetch(url, this.loadOptions);\n const arrayBuffer = await response.arrayBuffer();\n return await WMSLayerDescriptionLoader.parse(arrayBuffer, this.loadOptions);\n }\n\n async getLegendImage(options: {\n layers: string[];\n parameters?: Record<string, unknown>;\n }): Promise<ImageType> {\n const url = this.getUrl({request: 'GetLegendImage', ...options});\n const response = await this.fetch(url, this.loadOptions);\n const arrayBuffer = await response.arrayBuffer();\n return await ImageLoader.parse(arrayBuffer, this.loadOptions);\n }\n\n /**\n * @note protected, since perhaps getUrl may need to be overridden to handle certain backends?\n * @note if override is common, maybe add a callback prop?\n * */\n protected getUrl(options: {\n request: string;\n layers?: string[];\n parameters?: Record<string, unknown>;\n }): string {\n let url = `${this.url}?REQUEST=${options.request}`;\n if (options.layers?.length) {\n url += `&LAYERS=[${options.layers.join(',')}]`;\n }\n return url;\n }\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"parse-wms.js","names":["parseWMSCapabilities","text","options","parsedXML","XMLLoader","parseTextSync","xmlCapabilities","WMT_MS_Capabilities","WMS_Capabilities","extractCapabilities","xml","capabilities","name","Service","Name","title","Title","keywords","requests","layer","extractLayer","Capability","Layer","raw","KeywordList","Keyword","keyword","push","Object","entries","Request","xmlRequest","extractRequest","format","Format","mimeTypes","Array","isArray","xmlLayer","srs","SRS","layers","xmlSubLayer","parseWMSFeatureInfo","xmlFeatureInfo","FeatureInfoResponse","FIELDS","xmlFeatures","features","map","xmlFeature","extractFeature","xmlFields","attributes"],"sources":["../../../src/lib/parse-wms.ts"],"sourcesContent":["// loaders.gl, MIT license\n\nimport type {\n WMSCapabilities,\n WMSLayer,\n WMSRequest,\n WMSFeatureInfo\n // WMSFeature,\n // WMSLayerDescription\n} from '../wms-types';\n\nimport {XMLLoader} from '@loaders.gl/xml';\n\n// GetCapabilities\n\n/**\n * Parses a typed data structure from raw XML for `GetCapabilities` response\n * @note Error handlings is fairly weak\n */\nexport function parseWMSCapabilities(text: string, options): WMSCapabilities {\n const parsedXML = XMLLoader.parseTextSync(text, options);\n const xmlCapabilities: any =\n parsedXML.WMT_MS_Capabilities || parsedXML.WMS_Capabilities || parsedXML;\n return extractCapabilities(xmlCapabilities);\n}\n\n/** Extract typed capability data from XML */\nfunction extractCapabilities(xml: any): WMSCapabilities {\n const capabilities: WMSCapabilities = {\n name: xml.Service?.Name || 'unnamed',\n title: xml.Service?.Title,\n keywords: [],\n requests: {},\n layer: extractLayer(xml.Capability?.Layer),\n raw: xml\n };\n\n for (const keyword of xml.Service?.KeywordList?.Keyword || []) {\n capabilities.keywords.push(keyword);\n }\n\n for (const [name, xmlRequest] of Object.entries(xml.Capability?.Request || {})) {\n capabilities.requests[name] = extractRequest(name, xmlRequest);\n }\n\n return capabilities;\n}\n\n/** Extract typed request data from XML */\nfunction extractRequest(name: string, xmlRequest: any): WMSRequest {\n const format: string | string[] = xmlRequest?.Format;\n const mimeTypes: string[] = Array.isArray(format) ? format : [format];\n return {name, mimeTypes};\n}\n\n/** Extract request data */\nfunction extractLayer(xmlLayer: any): WMSLayer {\n const layer: WMSLayer = {\n name: xmlLayer?.Name,\n title: xmlLayer?.Title,\n srs: xmlLayer?.SRS || [],\n layers: []\n };\n\n for (const xmlSubLayer of xmlLayer?.Layer || []) {\n layer.layers?.push(extractLayer(xmlSubLayer));\n }\n\n return layer;\n}\n\n// GetFeatureInfo\n\n/**\n * Parses a typed data structure from raw XML for `GetFeatureInfo` response\n * @note Error handlings is fairly weak\n */\nexport function parseWMSFeatureInfo(text: string, options): WMSFeatureInfo {\n const parsedXML = XMLLoader.parseTextSync(text, options);\n const xmlFeatureInfo: any = parsedXML.FeatureInfoResponse?.FIELDS || [];\n\n const xmlFeatures = Array.isArray(xmlFeatureInfo) ? xmlFeatureInfo : [xmlFeatureInfo];\n\n return {\n features: xmlFeatures.map((xmlFeature) => extractFeature(xmlFeature))\n };\n}\n\nfunction extractFeature(xmlFeature: any) {\n const xmlFields = xmlFeature || {};\n return {attributes: xmlFields};\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"wms-feature-info-loader.js","names":["WMSFeatureInfoLoader","WMSCapabilitiesLoader","name","id","parse","arrayBuffer","options","parseWMSFeatureInfo","TextDecoder","decode","parseTextSync","text","_typecheckWMSFeatureInfoLoader"],"sources":["../../src/wms-feature-info-loader.ts"],"sourcesContent":["// loaders.gl, MIT license\n\nimport type {LoaderWithParser} from '@loaders.gl/loader-utils';\nimport {WMSCapabilitiesLoader, WMSLoaderOptions} from './wms-capabilities-loader';\nimport {parseWMSFeatureInfo} from './lib/parse-wms';\n\n/**\n * Loader for the response to the WMS GetFeatureInfo request\n */\nexport const WMSFeatureInfoLoader = {\n ...WMSCapabilitiesLoader,\n\n name: 'WMS FeatureInfo',\n id: 'wms-feature-info',\n\n parse: async (arrayBuffer: ArrayBuffer, options?: WMSLoaderOptions) =>\n parseWMSFeatureInfo(new TextDecoder().decode(arrayBuffer), options),\n parseTextSync: (text: string, options?: WMSLoaderOptions) => parseWMSFeatureInfo(text, options)\n};\n\nexport const _typecheckWMSFeatureInfoLoader: LoaderWithParser = WMSFeatureInfoLoader;\n"],"mappings":";;;;;;;;;;AAGA;AACA;AAAoD;AAAA;AAK7C,IAAMA,oBAAoB,mCAC5BC,4CAAqB;EAExBC,IAAI,EAAE,iBAAiB;EACvBC,EAAE,EAAE,kBAAkB;EAEtBC,KAAK;IAAA,uEAAE,iBAAOC,WAAwB,EAAEC,OAA0B;MAAA;QAAA;UAAA;YAAA;cAAA,iCAChE,IAAAC,6BAAmB,EAAC,IAAIC,WAAW,EAAE,CAACC,MAAM,CAACJ,WAAW,CAAC,EAAEC,OAAO,CAAC;YAAA;YAAA;cAAA;UAAA;QAAA;MAAA;IAAA;IAAA;MAAA;IAAA;IAAA;EAAA;EACrEI,aAAa,EAAE,uBAACC,IAAY,EAAEL,OAA0B;IAAA,OAAK,IAAAC,6BAAmB,EAACI,IAAI,EAAEL,OAAO,CAAC;EAAA;AAAA,EAChG;AAAC;AAEK,IAAMM,8BAAgD,GAAGZ,oBAAoB;AAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"wms-layer-description-loader.js","names":["WMSLayerDescriptionLoader","WMSCapabilitiesLoader","name","id","parse","arrayBuffer","options","parseWMSFeatureInfo","TextDecoder","decode","parseTextSync","text","_typecheckWMSFeatureInfoLoader"],"sources":["../../src/wms-layer-description-loader.ts"],"sourcesContent":["// loaders.gl, MIT license\n\nimport type {LoaderWithParser} from '@loaders.gl/loader-utils';\nimport {WMSCapabilitiesLoader, WMSLoaderOptions} from './wms-capabilities-loader';\nimport {parseWMSFeatureInfo} from './lib/parse-wms';\n\n/**\n * Loader for the response to the WMS GetFeatureInfo request\n */\nexport const WMSLayerDescriptionLoader = {\n ...WMSCapabilitiesLoader,\n\n name: 'WMS DescribeLayer',\n id: 'wms-layer-description',\n\n parse: async (arrayBuffer: ArrayBuffer, options?: WMSLoaderOptions) =>\n parseWMSFeatureInfo(new TextDecoder().decode(arrayBuffer), options),\n parseTextSync: (text: string, options?: WMSLoaderOptions) => parseWMSFeatureInfo(text, options)\n};\n\nexport const _typecheckWMSFeatureInfoLoader: LoaderWithParser = WMSLayerDescriptionLoader;\n"],"mappings":";;;;;;;;;;AAGA;AACA;AAAoD;AAAA;AAK7C,IAAMA,yBAAyB,mCACjCC,4CAAqB;EAExBC,IAAI,EAAE,mBAAmB;EACzBC,EAAE,EAAE,uBAAuB;EAE3BC,KAAK;IAAA,uEAAE,iBAAOC,WAAwB,EAAEC,OAA0B;MAAA;QAAA;UAAA;YAAA;cAAA,iCAChE,IAAAC,6BAAmB,EAAC,IAAIC,WAAW,EAAE,CAACC,MAAM,CAACJ,WAAW,CAAC,EAAEC,OAAO,CAAC;YAAA;YAAA;cAAA;UAAA;QAAA;MAAA;IAAA;IAAA;MAAA;IAAA;IAAA;EAAA;EACrEI,aAAa,EAAE,uBAACC,IAAY,EAAEL,OAA0B;IAAA,OAAK,IAAAC,6BAAmB,EAACI,IAAI,EAAEL,OAAO,CAAC;EAAA;AAAA,EAChG;AAAC;AAEK,IAAMM,8BAAgD,GAAGZ,yBAAyB;AAAC"}