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

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 (208) hide show
  1. package/dist/dist.min.js +412 -176
  2. package/dist/es5/csw-capabilities-loader.js +7 -11
  3. package/dist/es5/csw-capabilities-loader.js.map +1 -1
  4. package/dist/es5/csw-domain-loader.js +7 -10
  5. package/dist/es5/csw-domain-loader.js.map +1 -1
  6. package/dist/es5/csw-records-loader.js +7 -10
  7. package/dist/es5/csw-records-loader.js.map +1 -1
  8. package/dist/es5/gml-loader.js +7 -10
  9. package/dist/es5/gml-loader.js.map +1 -1
  10. package/dist/es5/index.js +0 -7
  11. package/dist/es5/index.js.map +1 -1
  12. package/dist/es5/lerc-loader.js +17 -22
  13. package/dist/es5/lerc-loader.js.map +1 -1
  14. package/dist/es5/lib/create-image-source.js +1 -2
  15. package/dist/es5/lib/create-image-source.js.map +1 -1
  16. package/dist/es5/lib/parsers/csw/parse-csw-capabilities.js.map +1 -1
  17. package/dist/es5/lib/parsers/csw/parse-csw-domain.js +1 -1
  18. package/dist/es5/lib/parsers/csw/parse-csw-domain.js.map +1 -1
  19. package/dist/es5/lib/parsers/csw/parse-csw-records.js +1 -2
  20. package/dist/es5/lib/parsers/csw/parse-csw-records.js.map +1 -1
  21. package/dist/es5/lib/parsers/csw/parse-exception-report.js +0 -2
  22. package/dist/es5/lib/parsers/csw/parse-exception-report.js.map +1 -1
  23. package/dist/es5/lib/parsers/gml/deep-strict-equal.js +0 -8
  24. package/dist/es5/lib/parsers/gml/deep-strict-equal.js.map +1 -1
  25. package/dist/es5/lib/parsers/gml/parse-gml.js +1 -13
  26. package/dist/es5/lib/parsers/gml/parse-gml.js.map +1 -1
  27. package/dist/es5/lib/parsers/wms/parse-wms-capabilities.js +197 -54
  28. package/dist/es5/lib/parsers/wms/parse-wms-capabilities.js.map +1 -1
  29. package/dist/es5/lib/parsers/wms/parse-wms-error.js +0 -1
  30. package/dist/es5/lib/parsers/wms/parse-wms-error.js.map +1 -1
  31. package/dist/es5/lib/parsers/wms/parse-wms-features.js +0 -1
  32. package/dist/es5/lib/parsers/wms/parse-wms-features.js.map +1 -1
  33. package/dist/es5/lib/parsers/wms/parse-wms-layer-description.js +0 -1
  34. package/dist/es5/lib/parsers/wms/parse-wms-layer-description.js.map +1 -1
  35. package/dist/es5/lib/parsers/xml/parse-xml-helpers.js +67 -0
  36. package/dist/es5/lib/parsers/xml/parse-xml-helpers.js.map +1 -0
  37. package/dist/es5/lib/services/arcgis/arcgis-image-service.js +36 -60
  38. package/dist/es5/lib/services/arcgis/arcgis-image-service.js.map +1 -1
  39. package/dist/es5/lib/services/arcgis/arcgis-server.js +50 -54
  40. package/dist/es5/lib/services/arcgis/arcgis-server.js.map +1 -1
  41. package/dist/es5/lib/services/generic/image-service.js +28 -42
  42. package/dist/es5/lib/services/generic/image-service.js.map +1 -1
  43. package/dist/es5/lib/services/ogc/csw-service.js +161 -188
  44. package/dist/es5/lib/services/ogc/csw-service.js.map +1 -1
  45. package/dist/es5/lib/services/ogc/wms-service.js +325 -245
  46. package/dist/es5/lib/services/ogc/wms-service.js.map +1 -1
  47. package/dist/es5/lib/sources/data-source.js +36 -13
  48. package/dist/es5/lib/sources/data-source.js.map +1 -1
  49. package/dist/es5/lib/sources/image-source.js.map +1 -1
  50. package/dist/es5/lib/sources/tile-source.js.map +1 -1
  51. package/dist/es5/lib/sources/utils/utils.js +0 -4
  52. package/dist/es5/lib/sources/utils/utils.js.map +1 -1
  53. package/dist/es5/wip/arcgis-feature-service.js +2 -7
  54. package/dist/es5/wip/arcgis-feature-service.js.map +1 -1
  55. package/dist/es5/wip/data-source.js +0 -2
  56. package/dist/es5/wip/lib/wcs/parse-wcs-capabilities.js.map +1 -1
  57. package/dist/es5/wip/lib/wfs/parse-wfs-capabilities.js.map +1 -1
  58. package/dist/es5/wip/lib/wmts/parse-wmts-capabilities.js.map +1 -1
  59. package/dist/es5/wip/wcs-capabilities-loader.js +7 -10
  60. package/dist/es5/wip/wcs-capabilities-loader.js.map +1 -1
  61. package/dist/es5/wip/wfs-capabilities-loader.js +7 -10
  62. package/dist/es5/wip/wfs-capabilities-loader.js.map +1 -1
  63. package/dist/es5/wip/wms-feature-info-loader.js +6 -8
  64. package/dist/es5/wip/wms-feature-info-loader.js.map +1 -1
  65. package/dist/es5/wip/wms-layer-description-loader.js +6 -8
  66. package/dist/es5/wip/wms-layer-description-loader.js.map +1 -1
  67. package/dist/es5/wip/wmts-capabilities-loader.js +7 -16
  68. package/dist/es5/wip/wmts-capabilities-loader.js.map +1 -1
  69. package/dist/es5/wms-capabilities-loader.js +8 -12
  70. package/dist/es5/wms-capabilities-loader.js.map +1 -1
  71. package/dist/es5/wms-error-loader.js +7 -9
  72. package/dist/es5/wms-error-loader.js.map +1 -1
  73. package/dist/esm/bundle.js +0 -2
  74. package/dist/esm/bundle.js.map +1 -1
  75. package/dist/esm/csw-capabilities-loader.js +1 -5
  76. package/dist/esm/csw-capabilities-loader.js.map +1 -1
  77. package/dist/esm/csw-domain-loader.js +1 -4
  78. package/dist/esm/csw-domain-loader.js.map +1 -1
  79. package/dist/esm/csw-records-loader.js +1 -4
  80. package/dist/esm/csw-records-loader.js.map +1 -1
  81. package/dist/esm/gml-loader.js +1 -4
  82. package/dist/esm/gml-loader.js.map +1 -1
  83. package/dist/esm/index.js +0 -11
  84. package/dist/esm/index.js.map +1 -1
  85. package/dist/esm/lerc-loader.js +1 -4
  86. package/dist/esm/lerc-loader.js.map +1 -1
  87. package/dist/esm/lib/create-image-source.js +0 -3
  88. package/dist/esm/lib/create-image-source.js.map +1 -1
  89. package/dist/esm/lib/parsers/csw/parse-csw-capabilities.js +0 -3
  90. package/dist/esm/lib/parsers/csw/parse-csw-capabilities.js.map +1 -1
  91. package/dist/esm/lib/parsers/csw/parse-csw-domain.js +0 -3
  92. package/dist/esm/lib/parsers/csw/parse-csw-domain.js.map +1 -1
  93. package/dist/esm/lib/parsers/csw/parse-csw-records.js +0 -3
  94. package/dist/esm/lib/parsers/csw/parse-csw-records.js.map +1 -1
  95. package/dist/esm/lib/parsers/csw/parse-exception-report.js +0 -3
  96. package/dist/esm/lib/parsers/csw/parse-exception-report.js.map +1 -1
  97. package/dist/esm/lib/parsers/gml/deep-strict-equal.js +0 -9
  98. package/dist/esm/lib/parsers/gml/deep-strict-equal.js.map +1 -1
  99. package/dist/esm/lib/parsers/gml/parse-gml.js +0 -14
  100. package/dist/esm/lib/parsers/gml/parse-gml.js.map +1 -1
  101. package/dist/esm/lib/parsers/wms/parse-wms-capabilities.js +151 -42
  102. package/dist/esm/lib/parsers/wms/parse-wms-capabilities.js.map +1 -1
  103. package/dist/esm/lib/parsers/wms/parse-wms-error.js +0 -3
  104. package/dist/esm/lib/parsers/wms/parse-wms-error.js.map +1 -1
  105. package/dist/esm/lib/parsers/wms/parse-wms-features.js +0 -3
  106. package/dist/esm/lib/parsers/wms/parse-wms-features.js.map +1 -1
  107. package/dist/esm/lib/parsers/wms/parse-wms-layer-description.js +0 -3
  108. package/dist/esm/lib/parsers/wms/parse-wms-layer-description.js.map +1 -1
  109. package/dist/esm/lib/parsers/xml/parse-xml-helpers.js +53 -0
  110. package/dist/esm/lib/parsers/xml/parse-xml-helpers.js.map +1 -0
  111. package/dist/esm/lib/services/arcgis/arcgis-image-service.js +0 -11
  112. package/dist/esm/lib/services/arcgis/arcgis-image-service.js.map +1 -1
  113. package/dist/esm/lib/services/arcgis/arcgis-server.js +0 -2
  114. package/dist/esm/lib/services/arcgis/arcgis-server.js.map +1 -1
  115. package/dist/esm/lib/services/generic/image-service.js +0 -7
  116. package/dist/esm/lib/services/generic/image-service.js.map +1 -1
  117. package/dist/esm/lib/services/ogc/csw-service.js +0 -13
  118. package/dist/esm/lib/services/ogc/csw-service.js.map +1 -1
  119. package/dist/esm/lib/services/ogc/wms-service.js +135 -86
  120. package/dist/esm/lib/services/ogc/wms-service.js.map +1 -1
  121. package/dist/esm/lib/sources/data-source.js +20 -6
  122. package/dist/esm/lib/sources/data-source.js.map +1 -1
  123. package/dist/esm/lib/sources/image-source.js +0 -3
  124. package/dist/esm/lib/sources/image-source.js.map +1 -1
  125. package/dist/esm/lib/sources/tile-source.js +0 -3
  126. package/dist/esm/lib/sources/tile-source.js.map +1 -1
  127. package/dist/esm/lib/sources/utils/utils.js +0 -5
  128. package/dist/esm/lib/sources/utils/utils.js.map +1 -1
  129. package/dist/esm/wip/arcgis-feature-service.js +0 -3
  130. package/dist/esm/wip/arcgis-feature-service.js.map +1 -1
  131. package/dist/esm/wip/lib/wcs/parse-wcs-capabilities.js +0 -3
  132. package/dist/esm/wip/lib/wcs/parse-wcs-capabilities.js.map +1 -1
  133. package/dist/esm/wip/lib/wfs/parse-wfs-capabilities.js +0 -3
  134. package/dist/esm/wip/lib/wfs/parse-wfs-capabilities.js.map +1 -1
  135. package/dist/esm/wip/lib/wmts/parse-wmts-capabilities.js +0 -3
  136. package/dist/esm/wip/lib/wmts/parse-wmts-capabilities.js.map +1 -1
  137. package/dist/esm/wip/wcs-capabilities-loader.js +1 -4
  138. package/dist/esm/wip/wcs-capabilities-loader.js.map +1 -1
  139. package/dist/esm/wip/wfs-capabilities-loader.js +1 -4
  140. package/dist/esm/wip/wfs-capabilities-loader.js.map +1 -1
  141. package/dist/esm/wip/wms-feature-info-loader.js +0 -2
  142. package/dist/esm/wip/wms-feature-info-loader.js.map +1 -1
  143. package/dist/esm/wip/wms-layer-description-loader.js +0 -2
  144. package/dist/esm/wip/wms-layer-description-loader.js.map +1 -1
  145. package/dist/esm/wip/wmts-capabilities-loader.js +1 -6
  146. package/dist/esm/wip/wmts-capabilities-loader.js.map +1 -1
  147. package/dist/esm/wms-capabilities-loader.js +3 -7
  148. package/dist/esm/wms-capabilities-loader.js.map +1 -1
  149. package/dist/esm/wms-error-loader.js +1 -4
  150. package/dist/esm/wms-error-loader.js.map +1 -1
  151. package/dist/index.d.ts +0 -3
  152. package/dist/index.d.ts.map +1 -1
  153. package/dist/index.js +3 -5
  154. package/dist/lib/create-image-source.d.ts +1 -1
  155. package/dist/lib/create-image-source.d.ts.map +1 -1
  156. package/dist/lib/parsers/wms/parse-wms-capabilities.d.ts +78 -62
  157. package/dist/lib/parsers/wms/parse-wms-capabilities.d.ts.map +1 -1
  158. package/dist/lib/parsers/wms/parse-wms-capabilities.js +166 -1935
  159. package/dist/lib/parsers/xml/parse-xml-helpers.d.ts +11 -0
  160. package/dist/lib/parsers/xml/parse-xml-helpers.d.ts.map +1 -0
  161. package/dist/lib/parsers/xml/parse-xml-helpers.js +68 -0
  162. package/dist/lib/services/arcgis/arcgis-image-service.d.ts +1 -2
  163. package/dist/lib/services/arcgis/arcgis-image-service.d.ts.map +1 -1
  164. package/dist/lib/services/arcgis/arcgis-image-service.js +1 -2
  165. package/dist/lib/services/generic/image-service.d.ts +2 -3
  166. package/dist/lib/services/generic/image-service.d.ts.map +1 -1
  167. package/dist/lib/services/generic/image-service.js +1 -2
  168. package/dist/lib/services/ogc/csw-service.d.ts +2 -3
  169. package/dist/lib/services/ogc/csw-service.d.ts.map +1 -1
  170. package/dist/lib/services/ogc/csw-service.js +1 -2
  171. package/dist/lib/services/ogc/wms-service.d.ts +128 -72
  172. package/dist/lib/services/ogc/wms-service.d.ts.map +1 -1
  173. package/dist/lib/services/ogc/wms-service.js +154 -73
  174. package/dist/lib/sources/data-source.d.ts +12 -2
  175. package/dist/lib/sources/data-source.d.ts.map +1 -1
  176. package/dist/lib/sources/data-source.js +22 -0
  177. package/dist/lib/sources/image-source.d.ts +9 -15
  178. package/dist/lib/sources/image-source.d.ts.map +1 -1
  179. package/dist/lib/sources/tile-source.d.ts +4 -2
  180. package/dist/lib/sources/tile-source.d.ts.map +1 -1
  181. package/dist/wip/wmts-capabilities-loader.d.ts +3 -4
  182. package/dist/wip/wmts-capabilities-loader.d.ts.map +1 -1
  183. package/dist/wip/wmts-capabilities-loader.js +1 -0
  184. package/dist/wms-capabilities-loader.d.ts +6 -1
  185. package/dist/wms-capabilities-loader.d.ts.map +1 -1
  186. package/dist/wms-capabilities-loader.js +2 -2
  187. package/package.json +6 -6
  188. package/src/index.ts +3 -4
  189. package/src/lib/create-image-source.ts +1 -1
  190. package/src/lib/parsers/wms/parse-wms-capabilities.ts +294 -2004
  191. package/src/lib/parsers/xml/parse-xml-helpers.ts +65 -0
  192. package/src/lib/services/arcgis/arcgis-image-service.ts +1 -4
  193. package/src/lib/services/generic/image-service.ts +2 -5
  194. package/src/lib/services/ogc/csw-service.ts +2 -4
  195. package/src/lib/services/ogc/wms-service.ts +290 -125
  196. package/src/lib/sources/data-source.ts +29 -2
  197. package/src/lib/sources/image-source.ts +9 -15
  198. package/src/lib/sources/tile-source.ts +4 -2
  199. package/src/wip/wmts-capabilities-loader.ts +2 -2
  200. package/src/wms-capabilities-loader.ts +9 -3
  201. package/dist/es5/lib/services/generic/tile-service.js +0 -2
  202. package/dist/es5/lib/services/generic/tile-service.js.map +0 -1
  203. package/dist/esm/lib/services/generic/tile-service.js +0 -2
  204. package/dist/esm/lib/services/generic/tile-service.js.map +0 -1
  205. package/dist/lib/services/generic/tile-service.d.ts +0 -1
  206. package/dist/lib/services/generic/tile-service.d.ts.map +0 -1
  207. package/dist/lib/services/generic/tile-service.js +0 -1
  208. package/src/lib/services/generic/tile-service.ts +0 -0
@@ -1,5 +1,3 @@
1
-
2
-
3
1
  export async function getArcGISServices(url) {
4
2
  let fetchFile = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : fetch;
5
3
  if (url.includes('rest/services')) {
@@ -1 +1 @@
1
- {"version":3,"file":"arcgis-server.js","names":["getArcGISServices","url","fetchFile","fetch","includes","serverUrl","replace","loadServiceDirectory","path","serviceUrl","join","response","directory","json","services","extractServices","folders","promises","map","folder","folderServices","Promise","all","push","arcgisServices","service","name","type","toLocaleLowerCase"],"sources":["../../../../../src/lib/services/arcgis/arcgis-server.ts"],"sourcesContent":["// loaders.gl, MIT license\n\nexport type Service = {name: string; type: string; url: string};\n\ntype FetchLike = typeof fetch;\n\n/**\n * (Recursively) load the service directory from an ArcGIS Server URL\n * @param url\n * @param fetchFile= Optional fetch function override\n * @returns\n */\nexport async function getArcGISServices(\n url: string,\n fetchFile: FetchLike = fetch\n): Promise<Service[] | null> {\n if (url.includes('rest/services')) {\n const serverUrl = url.replace(/rest\\/services.*$/i, 'rest/services');\n return loadServiceDirectory(serverUrl, fetchFile, []);\n }\n return null;\n}\n\nasync function loadServiceDirectory(\n serverUrl: string,\n fetch: FetchLike,\n path: string[]\n): Promise<Service[]> {\n const serviceUrl = `${serverUrl}/${path.join('/')}`;\n\n const response = await fetch(`${serviceUrl}?f=pjson`);\n const directory = await response.json();\n\n const services = extractServices(directory, serviceUrl);\n\n const folders = (directory.folders || []) as string[];\n const promises = folders.map((folder) =>\n loadServiceDirectory(`${serverUrl}`, fetch, [...path, folder])\n );\n\n for (const folderServices of await Promise.all(promises)) {\n services.push(...folderServices);\n }\n\n return services;\n}\n\nfunction extractServices(directory: unknown, url: string): Service[] {\n const arcgisServices = ((directory as any).services || []) as {name: string; type: string}[];\n const services: Service[] = [];\n for (const service of arcgisServices) {\n services.push({\n name: service.name,\n type: `arcgis-${service.type.toLocaleLowerCase().replace('server', '-server')}`,\n url: `${url}${service.name}/${service.type}`\n });\n }\n return services;\n}\n"],"mappings":";;AAYA,OAAO,eAAeA,iBAAiB,CACrCC,GAAW,EAEgB;EAAA,IAD3BC,SAAoB,uEAAGC,KAAK;EAE5B,IAAIF,GAAG,CAACG,QAAQ,CAAC,eAAe,CAAC,EAAE;IACjC,MAAMC,SAAS,GAAGJ,GAAG,CAACK,OAAO,CAAC,oBAAoB,EAAE,eAAe,CAAC;IACpE,OAAOC,oBAAoB,CAACF,SAAS,EAAEH,SAAS,EAAE,EAAE,CAAC;EACvD;EACA,OAAO,IAAI;AACb;AAEA,eAAeK,oBAAoB,CACjCF,SAAiB,EACjBF,KAAgB,EAChBK,IAAc,EACM;EACpB,MAAMC,UAAU,aAAMJ,SAAS,cAAIG,IAAI,CAACE,IAAI,CAAC,GAAG,CAAC,CAAE;EAEnD,MAAMC,QAAQ,GAAG,MAAMR,KAAK,WAAIM,UAAU,cAAW;EACrD,MAAMG,SAAS,GAAG,MAAMD,QAAQ,CAACE,IAAI,EAAE;EAEvC,MAAMC,QAAQ,GAAGC,eAAe,CAACH,SAAS,EAAEH,UAAU,CAAC;EAEvD,MAAMO,OAAO,GAAIJ,SAAS,CAACI,OAAO,IAAI,EAAe;EACrD,MAAMC,QAAQ,GAAGD,OAAO,CAACE,GAAG,CAAEC,MAAM,IAClCZ,oBAAoB,WAAIF,SAAS,GAAIF,KAAK,EAAE,CAAC,GAAGK,IAAI,EAAEW,MAAM,CAAC,CAAC,CAC/D;EAED,KAAK,MAAMC,cAAc,IAAI,MAAMC,OAAO,CAACC,GAAG,CAACL,QAAQ,CAAC,EAAE;IACxDH,QAAQ,CAACS,IAAI,CAAC,GAAGH,cAAc,CAAC;EAClC;EAEA,OAAON,QAAQ;AACjB;AAEA,SAASC,eAAe,CAACH,SAAkB,EAAEX,GAAW,EAAa;EACnE,MAAMuB,cAAc,GAAKZ,SAAS,CAASE,QAAQ,IAAI,EAAqC;EAC5F,MAAMA,QAAmB,GAAG,EAAE;EAC9B,KAAK,MAAMW,OAAO,IAAID,cAAc,EAAE;IACpCV,QAAQ,CAACS,IAAI,CAAC;MACZG,IAAI,EAAED,OAAO,CAACC,IAAI;MAClBC,IAAI,mBAAYF,OAAO,CAACE,IAAI,CAACC,iBAAiB,EAAE,CAACtB,OAAO,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAE;MAC/EL,GAAG,YAAKA,GAAG,SAAGwB,OAAO,CAACC,IAAI,cAAID,OAAO,CAACE,IAAI;IAC5C,CAAC,CAAC;EACJ;EACA,OAAOb,QAAQ;AACjB"}
1
+ {"version":3,"file":"arcgis-server.js","names":["getArcGISServices","url","fetchFile","arguments","length","undefined","fetch","includes","serverUrl","replace","loadServiceDirectory","path","serviceUrl","concat","join","response","directory","json","services","extractServices","folders","promises","map","folder","folderServices","Promise","all","push","arcgisServices","service","name","type","toLocaleLowerCase"],"sources":["../../../../../src/lib/services/arcgis/arcgis-server.ts"],"sourcesContent":["// loaders.gl, MIT license\n\nexport type Service = {name: string; type: string; url: string};\n\ntype FetchLike = typeof fetch;\n\n/**\n * (Recursively) load the service directory from an ArcGIS Server URL\n * @param url\n * @param fetchFile= Optional fetch function override\n * @returns\n */\nexport async function getArcGISServices(\n url: string,\n fetchFile: FetchLike = fetch\n): Promise<Service[] | null> {\n if (url.includes('rest/services')) {\n const serverUrl = url.replace(/rest\\/services.*$/i, 'rest/services');\n return loadServiceDirectory(serverUrl, fetchFile, []);\n }\n return null;\n}\n\nasync function loadServiceDirectory(\n serverUrl: string,\n fetch: FetchLike,\n path: string[]\n): Promise<Service[]> {\n const serviceUrl = `${serverUrl}/${path.join('/')}`;\n\n const response = await fetch(`${serviceUrl}?f=pjson`);\n const directory = await response.json();\n\n const services = extractServices(directory, serviceUrl);\n\n const folders = (directory.folders || []) as string[];\n const promises = folders.map((folder) =>\n loadServiceDirectory(`${serverUrl}`, fetch, [...path, folder])\n );\n\n for (const folderServices of await Promise.all(promises)) {\n services.push(...folderServices);\n }\n\n return services;\n}\n\nfunction extractServices(directory: unknown, url: string): Service[] {\n const arcgisServices = ((directory as any).services || []) as {name: string; type: string}[];\n const services: Service[] = [];\n for (const service of arcgisServices) {\n services.push({\n name: service.name,\n type: `arcgis-${service.type.toLocaleLowerCase().replace('server', '-server')}`,\n url: `${url}${service.name}/${service.type}`\n });\n }\n return services;\n}\n"],"mappings":"AAYA,OAAO,eAAeA,iBAAiBA,CACrCC,GAAW,EAEgB;EAAA,IAD3BC,SAAoB,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAGG,KAAK;EAE5B,IAAIL,GAAG,CAACM,QAAQ,CAAC,eAAe,CAAC,EAAE;IACjC,MAAMC,SAAS,GAAGP,GAAG,CAACQ,OAAO,CAAC,oBAAoB,EAAE,eAAe,CAAC;IACpE,OAAOC,oBAAoB,CAACF,SAAS,EAAEN,SAAS,EAAE,EAAE,CAAC;EACvD;EACA,OAAO,IAAI;AACb;AAEA,eAAeQ,oBAAoBA,CACjCF,SAAiB,EACjBF,KAAgB,EAChBK,IAAc,EACM;EACpB,MAAMC,UAAU,MAAAC,MAAA,CAAML,SAAS,OAAAK,MAAA,CAAIF,IAAI,CAACG,IAAI,CAAC,GAAG,CAAC,CAAE;EAEnD,MAAMC,QAAQ,GAAG,MAAMT,KAAK,IAAAO,MAAA,CAAID,UAAU,aAAU,CAAC;EACrD,MAAMI,SAAS,GAAG,MAAMD,QAAQ,CAACE,IAAI,CAAC,CAAC;EAEvC,MAAMC,QAAQ,GAAGC,eAAe,CAACH,SAAS,EAAEJ,UAAU,CAAC;EAEvD,MAAMQ,OAAO,GAAIJ,SAAS,CAACI,OAAO,IAAI,EAAe;EACrD,MAAMC,QAAQ,GAAGD,OAAO,CAACE,GAAG,CAAEC,MAAM,IAClCb,oBAAoB,IAAAG,MAAA,CAAIL,SAAS,GAAIF,KAAK,EAAE,CAAC,GAAGK,IAAI,EAAEY,MAAM,CAAC,CAC/D,CAAC;EAED,KAAK,MAAMC,cAAc,IAAI,MAAMC,OAAO,CAACC,GAAG,CAACL,QAAQ,CAAC,EAAE;IACxDH,QAAQ,CAACS,IAAI,CAAC,GAAGH,cAAc,CAAC;EAClC;EAEA,OAAON,QAAQ;AACjB;AAEA,SAASC,eAAeA,CAACH,SAAkB,EAAEf,GAAW,EAAa;EACnE,MAAM2B,cAAc,GAAKZ,SAAS,CAASE,QAAQ,IAAI,EAAqC;EAC5F,MAAMA,QAAmB,GAAG,EAAE;EAC9B,KAAK,MAAMW,OAAO,IAAID,cAAc,EAAE;IACpCV,QAAQ,CAACS,IAAI,CAAC;MACZG,IAAI,EAAED,OAAO,CAACC,IAAI;MAClBC,IAAI,YAAAlB,MAAA,CAAYgB,OAAO,CAACE,IAAI,CAACC,iBAAiB,CAAC,CAAC,CAACvB,OAAO,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAE;MAC/ER,GAAG,KAAAY,MAAA,CAAKZ,GAAG,EAAAY,MAAA,CAAGgB,OAAO,CAACC,IAAI,OAAAjB,MAAA,CAAIgB,OAAO,CAACE,IAAI;IAC5C,CAAC,CAAC;EACJ;EACA,OAAOb,QAAQ;AACjB"}
@@ -1,15 +1,10 @@
1
1
  import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
-
3
2
  import { ImageLoader } from '@loaders.gl/images';
4
3
  import { ImageSource } from '../../sources/image-source';
5
-
6
4
  export class ImageService extends ImageSource {
7
5
  constructor(props) {
8
6
  super(props);
9
- _defineProperty(this, "props", void 0);
10
- this.props = props;
11
7
  }
12
-
13
8
  async getMetadata() {
14
9
  throw new Error('ImageSource.getMetadata not implemented');
15
10
  }
@@ -20,7 +15,6 @@ export class ImageService extends ImageSource {
20
15
  const arrayBuffer = await response.arrayBuffer();
21
16
  return await ImageLoader.parse(arrayBuffer);
22
17
  }
23
-
24
18
  getGranularParameters(parameters) {
25
19
  const [east, north, west, south] = parameters.bbox;
26
20
  return {
@@ -31,7 +25,6 @@ export class ImageService extends ImageSource {
31
25
  west
32
26
  };
33
27
  }
34
-
35
28
  getURLFromTemplate(parameters) {
36
29
  let url = this.props.url;
37
30
  for (const [key, value] of Object.entries(parameters)) {
@@ -1 +1 @@
1
- {"version":3,"file":"image-service.js","names":["ImageLoader","ImageSource","ImageService","constructor","props","getMetadata","Error","getImage","parameters","granularParameters","getGranularParameters","url","getURLFromTemplate","response","fetch","arrayBuffer","parse","east","north","west","south","bbox","key","value","Object","entries","replace","String","toLowerCase","includes"],"sources":["../../../../../src/lib/services/generic/image-service.ts"],"sourcesContent":["// loaders.gl, MIT license\n\nimport {LoaderOptions} from '@loaders.gl/loader-utils';\nimport type {ImageType} from '@loaders.gl/images';\nimport {ImageLoader} from '@loaders.gl/images';\n\nimport type {ImageSourceMetadata, GetImageParameters} from '../../sources/image-source';\nimport {ImageSource} from '../../sources/image-source';\n\n/** Template URL string should contain `${width}` etc which will be substituted. */\nexport type ImageServiceProps = {\n /** Base URL to the service */\n url: string;\n /** Any load options to the loaders.gl Loaders used by the WMSService methods */\n loadOptions?: LoaderOptions;\n};\n\n/**\n * Quickly connect to \"ad hoc\" image sources without subclassing ImageSource.\n * ImageSource allows template url strings to be used to ad hoc connect to arbitrary image data sources\n * Accepts a template url string and builds requests URLs\n */\nexport class ImageService extends ImageSource {\n static type: 'template' = 'template';\n static testURL = (url: string): boolean => url.toLowerCase().includes('{');\n\n props: ImageServiceProps;\n\n constructor(props: ImageServiceProps) {\n super(props);\n this.props = props;\n }\n\n // IMAGE SOURCE API\n\n async getMetadata(): Promise<ImageSourceMetadata> {\n throw new Error('ImageSource.getMetadata not implemented');\n }\n\n async getImage(parameters: GetImageParameters): Promise<ImageType> {\n const granularParameters = this.getGranularParameters(parameters);\n const url = this.getURLFromTemplate(granularParameters);\n const response = await this.fetch(url);\n const arrayBuffer = await response.arrayBuffer();\n return await ImageLoader.parse(arrayBuffer);\n }\n\n // HELPERS\n\n /** Break up bounding box in east, north, south, west */\n protected getGranularParameters(parameters: GetImageParameters): Record<string, unknown> {\n const [east, north, west, south] = parameters.bbox;\n return {...parameters, east, north, south, west};\n }\n\n /** Supports both ${} and {} notations */\n protected getURLFromTemplate(parameters: Record<string, unknown>): string {\n let url = this.props.url;\n for (const [key, value] of Object.entries(parameters)) {\n // TODO - parameter could be repeated\n // const regex = new RegExp(`\\${${key}}`, 'g');\n url = url.replace(`\\${${key}}`, String(value));\n url = url.replace(`{${key}}`, String(value));\n }\n return url;\n }\n}\n"],"mappings":";;AAIA,SAAQA,WAAW,QAAO,oBAAoB;AAG9C,SAAQC,WAAW,QAAO,4BAA4B;;AAetD,OAAO,MAAMC,YAAY,SAASD,WAAW,CAAC;EAM5CE,WAAW,CAACC,KAAwB,EAAE;IACpC,KAAK,CAACA,KAAK,CAAC;IAAC;IACb,IAAI,CAACA,KAAK,GAAGA,KAAK;EACpB;;EAIA,MAAMC,WAAW,GAAiC;IAChD,MAAM,IAAIC,KAAK,CAAC,yCAAyC,CAAC;EAC5D;EAEA,MAAMC,QAAQ,CAACC,UAA8B,EAAsB;IACjE,MAAMC,kBAAkB,GAAG,IAAI,CAACC,qBAAqB,CAACF,UAAU,CAAC;IACjE,MAAMG,GAAG,GAAG,IAAI,CAACC,kBAAkB,CAACH,kBAAkB,CAAC;IACvD,MAAMI,QAAQ,GAAG,MAAM,IAAI,CAACC,KAAK,CAACH,GAAG,CAAC;IACtC,MAAMI,WAAW,GAAG,MAAMF,QAAQ,CAACE,WAAW,EAAE;IAChD,OAAO,MAAMf,WAAW,CAACgB,KAAK,CAACD,WAAW,CAAC;EAC7C;;EAKUL,qBAAqB,CAACF,UAA8B,EAA2B;IACvF,MAAM,CAACS,IAAI,EAAEC,KAAK,EAAEC,IAAI,EAAEC,KAAK,CAAC,GAAGZ,UAAU,CAACa,IAAI;IAClD,OAAO;MAAC,GAAGb,UAAU;MAAES,IAAI;MAAEC,KAAK;MAAEE,KAAK;MAAED;IAAI,CAAC;EAClD;;EAGUP,kBAAkB,CAACJ,UAAmC,EAAU;IACxE,IAAIG,GAAG,GAAG,IAAI,CAACP,KAAK,CAACO,GAAG;IACxB,KAAK,MAAM,CAACW,GAAG,EAAEC,KAAK,CAAC,IAAIC,MAAM,CAACC,OAAO,CAACjB,UAAU,CAAC,EAAE;MAGrDG,GAAG,GAAGA,GAAG,CAACe,OAAO,aAAOJ,GAAG,QAAKK,MAAM,CAACJ,KAAK,CAAC,CAAC;MAC9CZ,GAAG,GAAGA,GAAG,CAACe,OAAO,YAAKJ,GAAG,QAAKK,MAAM,CAACJ,KAAK,CAAC,CAAC;IAC9C;IACA,OAAOZ,GAAG;EACZ;AACF;AAAC,gBA5CYT,YAAY,UACG,UAAU;AAAA,gBADzBA,YAAY,aAELS,GAAW,IAAcA,GAAG,CAACiB,WAAW,EAAE,CAACC,QAAQ,CAAC,GAAG,CAAC"}
1
+ {"version":3,"file":"image-service.js","names":["ImageLoader","ImageSource","ImageService","constructor","props","getMetadata","Error","getImage","parameters","granularParameters","getGranularParameters","url","getURLFromTemplate","response","fetch","arrayBuffer","parse","east","north","west","south","bbox","key","value","Object","entries","replace","concat","String","_defineProperty","toLowerCase","includes"],"sources":["../../../../../src/lib/services/generic/image-service.ts"],"sourcesContent":["// loaders.gl, MIT license\n\nimport {LoaderOptions} from '@loaders.gl/loader-utils';\nimport type {ImageType} from '@loaders.gl/images';\nimport {ImageLoader} from '@loaders.gl/images';\n\nimport type {ImageSourceMetadata, GetImageParameters} from '../../sources/image-source';\nimport {ImageSource} from '../../sources/image-source';\n\n/** Template URL string should contain `${width}` etc which will be substituted. */\nexport type ImageServiceProps = {\n /** Base URL to the service */\n url: string;\n /** Any load options to the loaders.gl Loaders used by the WMSService methods */\n loadOptions?: LoaderOptions;\n};\n\n/**\n * Quickly connect to \"ad hoc\" image sources without subclassing ImageSource.\n * ImageSource allows template url strings to be used to ad hoc connect to arbitrary image data sources\n * Accepts a template url string and builds requests URLs\n */\nexport class ImageService<PropsT extends ImageServiceProps> extends ImageSource<PropsT> {\n static type: 'template' = 'template';\n static testURL = (url: string): boolean => url.toLowerCase().includes('{');\n\n constructor(props: PropsT) {\n super(props);\n }\n\n // IMAGE SOURCE API\n\n async getMetadata(): Promise<ImageSourceMetadata> {\n throw new Error('ImageSource.getMetadata not implemented');\n }\n\n async getImage(parameters: GetImageParameters): Promise<ImageType> {\n const granularParameters = this.getGranularParameters(parameters);\n const url = this.getURLFromTemplate(granularParameters);\n const response = await this.fetch(url);\n const arrayBuffer = await response.arrayBuffer();\n return await ImageLoader.parse(arrayBuffer);\n }\n\n // HELPERS\n\n /** Break up bounding box in east, north, south, west */\n protected getGranularParameters(parameters: GetImageParameters): Record<string, unknown> {\n const [east, north, west, south] = parameters.bbox;\n return {...parameters, east, north, south, west};\n }\n\n /** Supports both ${} and {} notations */\n protected getURLFromTemplate(parameters: Record<string, unknown>): string {\n let url = this.props.url;\n for (const [key, value] of Object.entries(parameters)) {\n // TODO - parameter could be repeated\n // const regex = new RegExp(`\\${${key}}`, 'g');\n url = url.replace(`\\${${key}}`, String(value));\n url = url.replace(`{${key}}`, String(value));\n }\n return url;\n }\n}\n"],"mappings":";AAIA,SAAQA,WAAW,QAAO,oBAAoB;AAG9C,SAAQC,WAAW,QAAO,4BAA4B;AAetD,OAAO,MAAMC,YAAY,SAA2CD,WAAW,CAAS;EAItFE,WAAWA,CAACC,KAAa,EAAE;IACzB,KAAK,CAACA,KAAK,CAAC;EACd;EAIA,MAAMC,WAAWA,CAAA,EAAiC;IAChD,MAAM,IAAIC,KAAK,CAAC,yCAAyC,CAAC;EAC5D;EAEA,MAAMC,QAAQA,CAACC,UAA8B,EAAsB;IACjE,MAAMC,kBAAkB,GAAG,IAAI,CAACC,qBAAqB,CAACF,UAAU,CAAC;IACjE,MAAMG,GAAG,GAAG,IAAI,CAACC,kBAAkB,CAACH,kBAAkB,CAAC;IACvD,MAAMI,QAAQ,GAAG,MAAM,IAAI,CAACC,KAAK,CAACH,GAAG,CAAC;IACtC,MAAMI,WAAW,GAAG,MAAMF,QAAQ,CAACE,WAAW,CAAC,CAAC;IAChD,OAAO,MAAMf,WAAW,CAACgB,KAAK,CAACD,WAAW,CAAC;EAC7C;EAKUL,qBAAqBA,CAACF,UAA8B,EAA2B;IACvF,MAAM,CAACS,IAAI,EAAEC,KAAK,EAAEC,IAAI,EAAEC,KAAK,CAAC,GAAGZ,UAAU,CAACa,IAAI;IAClD,OAAO;MAAC,GAAGb,UAAU;MAAES,IAAI;MAAEC,KAAK;MAAEE,KAAK;MAAED;IAAI,CAAC;EAClD;EAGUP,kBAAkBA,CAACJ,UAAmC,EAAU;IACxE,IAAIG,GAAG,GAAG,IAAI,CAACP,KAAK,CAACO,GAAG;IACxB,KAAK,MAAM,CAACW,GAAG,EAAEC,KAAK,CAAC,IAAIC,MAAM,CAACC,OAAO,CAACjB,UAAU,CAAC,EAAE;MAGrDG,GAAG,GAAGA,GAAG,CAACe,OAAO,MAAAC,MAAA,CAAOL,GAAG,QAAKM,MAAM,CAACL,KAAK,CAAC,CAAC;MAC9CZ,GAAG,GAAGA,GAAG,CAACe,OAAO,KAAAC,MAAA,CAAKL,GAAG,QAAKM,MAAM,CAACL,KAAK,CAAC,CAAC;IAC9C;IACA,OAAOZ,GAAG;EACZ;AACF;AAACkB,eAAA,CAzCY3B,YAAY,UACG,UAAU;AAAA2B,eAAA,CADzB3B,YAAY,aAELS,GAAW,IAAcA,GAAG,CAACmB,WAAW,CAAC,CAAC,CAACC,QAAQ,CAAC,GAAG,CAAC"}
@@ -1,18 +1,14 @@
1
1
  import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
-
3
2
  import { DataSource } from '../../sources/data-source';
4
3
  import { CSWCapabilitiesLoader } from '../../../csw-capabilities-loader';
5
4
  import { CSWRecordsLoader } from '../../../csw-records-loader';
6
5
  import { CSWDomainLoader } from '../../../csw-domain-loader';
7
6
  import { WMSErrorLoader as CSWErrorLoader } from '../../../wms-error-loader';
8
7
  export class CSWService extends DataSource {
9
-
10
8
  constructor(props) {
11
9
  super(props);
12
- _defineProperty(this, "props", void 0);
13
10
  _defineProperty(this, "capabilities", null);
14
11
  _defineProperty(this, "loaders", [CSWErrorLoader, CSWCapabilitiesLoader]);
15
- this.props = props;
16
12
  }
17
13
  async getMetadata() {
18
14
  const capabilities = await this.getCapabilities();
@@ -69,7 +65,6 @@ export class CSWService extends DataSource {
69
65
  params: parts[1] || ''
70
66
  };
71
67
  }
72
-
73
68
  async getCapabilities(wmsParameters, vendorParameters) {
74
69
  const url = this.getCapabilitiesURL(wmsParameters, vendorParameters);
75
70
  const response = await this.fetch(url);
@@ -78,7 +73,6 @@ export class CSWService extends DataSource {
78
73
  const capabilities = await CSWCapabilitiesLoader.parse(arrayBuffer, this.props.loadOptions);
79
74
  return capabilities;
80
75
  }
81
-
82
76
  async getRecords(wmsParameters, vendorParameters) {
83
77
  const url = this.getRecordsURL(wmsParameters, vendorParameters);
84
78
  const response = await this.fetch(url);
@@ -86,7 +80,6 @@ export class CSWService extends DataSource {
86
80
  this._checkResponse(response, arrayBuffer);
87
81
  return await CSWRecordsLoader.parse(arrayBuffer, this.props.loadOptions);
88
82
  }
89
-
90
83
  async getDomain(wmsParameters, vendorParameters) {
91
84
  const url = this.getDomainURL(wmsParameters, vendorParameters);
92
85
  const response = await this.fetch(url);
@@ -94,7 +87,6 @@ export class CSWService extends DataSource {
94
87
  this._checkResponse(response, arrayBuffer);
95
88
  return await CSWDomainLoader.parse(arrayBuffer, this.props.loadOptions);
96
89
  }
97
-
98
90
  getCapabilitiesURL(wmsParameters, vendorParameters) {
99
91
  const options = {
100
92
  version: '3.0.0',
@@ -105,7 +97,6 @@ export class CSWService extends DataSource {
105
97
  };
106
98
  return this._getCSWUrl(options, vendorParameters);
107
99
  }
108
-
109
100
  getRecordsURL(wmsParameters, vendorParameters) {
110
101
  const options = {
111
102
  version: '3.0.0',
@@ -117,7 +108,6 @@ export class CSWService extends DataSource {
117
108
  };
118
109
  return this._getCSWUrl(options, vendorParameters);
119
110
  }
120
-
121
111
  getDomainURL(wmsParameters, vendorParameters) {
122
112
  const options = {
123
113
  version: '3.0.0',
@@ -128,7 +118,6 @@ export class CSWService extends DataSource {
128
118
  };
129
119
  return this._getCSWUrl(options, vendorParameters);
130
120
  }
131
-
132
121
  _getCSWUrl(options, vendorParameters) {
133
122
  let url = this.props.url;
134
123
  let first = true;
@@ -143,7 +132,6 @@ export class CSWService extends DataSource {
143
132
  }
144
133
  return encodeURI(url);
145
134
  }
146
-
147
135
  _checkResponse(response, arrayBuffer) {
148
136
  const contentType = response.headers['content-type'];
149
137
  if (!response.ok || CSWErrorLoader.mimeTypes.includes(contentType)) {
@@ -151,7 +139,6 @@ export class CSWService extends DataSource {
151
139
  throw new Error(error);
152
140
  }
153
141
  }
154
-
155
142
  _parseError(arrayBuffer) {
156
143
  const error = CSWErrorLoader.parseSync(arrayBuffer, this.props.loadOptions);
157
144
  return new Error(error);
@@ -1 +1 @@
1
- {"version":3,"file":"csw-service.js","names":["DataSource","CSWCapabilitiesLoader","CSWRecordsLoader","CSWDomainLoader","WMSErrorLoader","CSWErrorLoader","CSWService","constructor","props","getMetadata","capabilities","getCapabilities","normalizeMetadata","getServiceDirectory","options","services","unknownServices","records","getRecords","record","reference","references","url","value","scheme","push","name","title","type","_parseOGCUrl","includeUnknown","concat","parts","split","params","wmsParameters","vendorParameters","getCapabilitiesURL","response","fetch","arrayBuffer","_checkResponse","parse","loadOptions","getRecordsURL","getDomain","getDomainURL","version","service","request","_getCSWUrl","typenames","first","key","Object","entries","Array","isArray","toUpperCase","join","String","encodeURI","contentType","headers","ok","mimeTypes","includes","error","parseSync","Error","_parseError","toLowerCase"],"sources":["../../../../../src/lib/services/ogc/csw-service.ts"],"sourcesContent":["// loaders.gl, MIT license\n\n/* eslint-disable camelcase */\n\nimport type {DataSourceProps} from '../../sources/data-source';\nimport {DataSource} from '../../sources/data-source';\n\nimport type {CSWCapabilities} from '../../../csw-capabilities-loader';\nimport {CSWCapabilitiesLoader} from '../../../csw-capabilities-loader';\n\nimport type {CSWRecords} from '../../../csw-records-loader';\nimport {CSWRecordsLoader} from '../../../csw-records-loader';\n\nimport type {CSWDomain} from '../../../csw-domain-loader';\nimport {CSWDomainLoader} from '../../../csw-domain-loader';\n\nimport {WMSErrorLoader as CSWErrorLoader} from '../../../wms-error-loader';\n\ntype CSWCommonParameters = {\n /** In case the endpoint supports multiple services */\n service?: 'CSW';\n /** In case the endpoint supports multiple CSW versions */\n version?: '1.1.1' | '2.0.0' | '2.0.1' | '3.0.0' | '3.0.0';\n};\n\nexport type CSWGetCapabilitiesParameters = CSWCommonParameters & {\n /** Request type */\n request?: 'GetCapabilities';\n};\n\nexport type CSWGetRecordsParameters = CSWCommonParameters & {\n /** Request type */\n request?: 'GetRecords';\n /** type of records */\n typenames: 'csw:Record';\n};\n\nexport type CSWGetDomainParameters = CSWCommonParameters & {\n /** Request type */\n request?: 'GetDomain';\n // TBA\n};\n\nexport type Service = {name: string; type: string; url: string; params?: string; scheme?: string};\n\nexport type CSWServiceProps = DataSourceProps & {\n url: string;\n};\n\n/**\n * The CSWService class provides\n * - provides type safe methods to form URLs to a CSW service\n * - provides type safe methods to query and parse results (and errors) from a CSW service\n * - implements the ImageService interface\n * @note Only the URL parameter conversion is supported. XML posts are not supported.\n */\nexport class CSWService extends DataSource {\n static type: 'csw' = 'csw';\n static testURL = (url: string): boolean => url.toLowerCase().includes('csw');\n\n props: CSWServiceProps;\n capabilities: CSWCapabilities | null = null;\n\n /** A list of loaders used by the CSWService methods */\n readonly loaders = [CSWErrorLoader, CSWCapabilitiesLoader];\n\n /** Create a CSWService */\n constructor(props: CSWServiceProps) {\n super(props);\n this.props = props;\n }\n\n async getMetadata(): Promise<CSWCapabilities> {\n const capabilities = await this.getCapabilities();\n return this.normalizeMetadata(capabilities);\n }\n\n normalizeMetadata(capabilities: CSWCapabilities): CSWCapabilities {\n return capabilities;\n }\n\n async getServiceDirectory(options: {includeUnknown?: boolean}): Promise<Service[]> {\n const services: Service[] = [];\n const unknownServices: Service[] = [];\n\n const records = await this.getRecords();\n for (const record of records.records) {\n for (const reference of record.references) {\n const url = reference.value;\n switch (reference.scheme) {\n case 'OGC:WMS':\n services.push({name: record.title, type: 'ogc-wms-service', ...this._parseOGCUrl(url)});\n break;\n case 'OGC:WMTS':\n services.push({\n name: record.title,\n type: 'ogc-wmts-service',\n ...this._parseOGCUrl(url)\n });\n break;\n case 'OGC:WFS':\n services.push({name: record.title, type: 'ogc-wfs-service', ...this._parseOGCUrl(url)});\n break;\n default:\n unknownServices.push({\n name: record.title,\n type: 'unknown',\n url: reference.value,\n scheme: reference.scheme\n });\n }\n }\n }\n\n return options?.includeUnknown ? services.concat(unknownServices) : services;\n }\n\n _parseOGCUrl(url: string): {url: string; params: string} {\n const parts = url.split('?');\n return {\n url: parts[0],\n params: parts[1] || ''\n };\n }\n\n // CSW Service API Stubs\n\n /** Get Capabilities */\n async getCapabilities(\n wmsParameters?: CSWGetCapabilitiesParameters,\n vendorParameters?: Record<string, unknown>\n ): Promise<CSWCapabilities> {\n const url = this.getCapabilitiesURL(wmsParameters, vendorParameters);\n const response = await this.fetch(url);\n const arrayBuffer = await response.arrayBuffer();\n this._checkResponse(response, arrayBuffer);\n const capabilities = await CSWCapabilitiesLoader.parse(arrayBuffer, this.props.loadOptions);\n return capabilities;\n }\n\n /** Get Records */\n async getRecords(\n wmsParameters?: CSWGetRecordsParameters,\n vendorParameters?: Record<string, unknown>\n ): Promise<CSWRecords> {\n const url = this.getRecordsURL(wmsParameters, vendorParameters);\n const response = await this.fetch(url);\n const arrayBuffer = await response.arrayBuffer();\n this._checkResponse(response, arrayBuffer);\n return await CSWRecordsLoader.parse(arrayBuffer, this.props.loadOptions);\n }\n\n /** Get Domain */\n async getDomain(\n wmsParameters?: CSWGetDomainParameters,\n vendorParameters?: Record<string, unknown>\n ): Promise<CSWDomain> {\n const url = this.getDomainURL(wmsParameters, vendorParameters);\n const response = await this.fetch(url);\n const arrayBuffer = await response.arrayBuffer();\n this._checkResponse(response, arrayBuffer);\n return await CSWDomainLoader.parse(arrayBuffer, this.props.loadOptions);\n }\n\n // Typed URL creators\n // For applications that want full control of fetching and parsing\n\n /** Generate a URL for the GetCapabilities request */\n getCapabilitiesURL(\n wmsParameters?: CSWGetCapabilitiesParameters,\n vendorParameters?: Record<string, unknown>\n ): string {\n const options: Required<CSWGetCapabilitiesParameters> = {\n version: '3.0.0',\n ...wmsParameters,\n ...vendorParameters,\n service: 'CSW',\n request: 'GetCapabilities'\n };\n return this._getCSWUrl(options, vendorParameters);\n }\n\n /** Generate a URL for the GetCapabilities request */\n getRecordsURL(\n wmsParameters?: CSWGetRecordsParameters,\n vendorParameters?: Record<string, unknown>\n ): string {\n const options: Required<CSWGetRecordsParameters> = {\n version: '3.0.0',\n typenames: 'csw:Record',\n ...wmsParameters,\n ...vendorParameters,\n service: 'CSW',\n request: 'GetRecords'\n };\n return this._getCSWUrl(options, vendorParameters);\n }\n\n /** Generate a URL for the GetCapabilities request */\n getDomainURL(\n wmsParameters?: CSWGetDomainParameters,\n vendorParameters?: Record<string, unknown>\n ): string {\n const options: Required<CSWGetDomainParameters> = {\n version: '3.0.0',\n ...wmsParameters,\n ...vendorParameters,\n service: 'CSW',\n request: 'GetDomain'\n };\n return this._getCSWUrl(options, vendorParameters);\n }\n\n // INTERNAL METHODS\n\n /**\n * @note case _getCSWUrl may need to be overridden to handle certain backends?\n * */\n protected _getCSWUrl(\n options: Record<string, unknown>,\n vendorParameters?: Record<string, unknown>\n ): string {\n let url = this.props.url;\n let first = true;\n for (const [key, value] of Object.entries(options)) {\n url += first ? '?' : '&';\n first = false;\n if (Array.isArray(value)) {\n url += `${key.toUpperCase()}=${value.join(',')}`;\n } else {\n url += `${key.toUpperCase()}=${value ? String(value) : ''}`;\n }\n }\n return encodeURI(url);\n }\n\n /** Checks for and parses a CSW XML formatted ServiceError and throws an exception */\n protected _checkResponse(response: Response, arrayBuffer: ArrayBuffer): void {\n const contentType = response.headers['content-type'];\n if (!response.ok || CSWErrorLoader.mimeTypes.includes(contentType)) {\n const error = CSWErrorLoader.parseSync(arrayBuffer, this.props.loadOptions);\n throw new Error(error);\n }\n }\n\n /** Error situation detected */\n protected _parseError(arrayBuffer: ArrayBuffer): Error {\n const error = CSWErrorLoader.parseSync(arrayBuffer, this.props.loadOptions);\n return new Error(error);\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"csw-service.js","names":["DataSource","CSWCapabilitiesLoader","CSWRecordsLoader","CSWDomainLoader","WMSErrorLoader","CSWErrorLoader","CSWService","constructor","props","_defineProperty","getMetadata","capabilities","getCapabilities","normalizeMetadata","getServiceDirectory","options","services","unknownServices","records","getRecords","record","reference","references","url","value","scheme","push","name","title","type","_parseOGCUrl","includeUnknown","concat","parts","split","params","wmsParameters","vendorParameters","getCapabilitiesURL","response","fetch","arrayBuffer","_checkResponse","parse","loadOptions","getRecordsURL","getDomain","getDomainURL","version","service","request","_getCSWUrl","typenames","first","key","Object","entries","Array","isArray","toUpperCase","join","String","encodeURI","contentType","headers","ok","mimeTypes","includes","error","parseSync","Error","_parseError","toLowerCase"],"sources":["../../../../../src/lib/services/ogc/csw-service.ts"],"sourcesContent":["// loaders.gl, MIT license\n\n/* eslint-disable camelcase */\n\nimport type {DataSourceProps} from '../../sources/data-source';\nimport {DataSource} from '../../sources/data-source';\n\nimport type {CSWCapabilities} from '../../../csw-capabilities-loader';\nimport {CSWCapabilitiesLoader} from '../../../csw-capabilities-loader';\n\nimport type {CSWRecords} from '../../../csw-records-loader';\nimport {CSWRecordsLoader} from '../../../csw-records-loader';\n\nimport type {CSWDomain} from '../../../csw-domain-loader';\nimport {CSWDomainLoader} from '../../../csw-domain-loader';\n\nimport {WMSErrorLoader as CSWErrorLoader} from '../../../wms-error-loader';\n\ntype CSWCommonParameters = {\n /** In case the endpoint supports multiple services */\n service?: 'CSW';\n /** In case the endpoint supports multiple CSW versions */\n version?: '1.1.1' | '2.0.0' | '2.0.1' | '3.0.0' | '3.0.0';\n};\n\nexport type CSWGetCapabilitiesParameters = CSWCommonParameters & {\n /** Request type */\n request?: 'GetCapabilities';\n};\n\nexport type CSWGetRecordsParameters = CSWCommonParameters & {\n /** Request type */\n request?: 'GetRecords';\n /** type of records */\n typenames: 'csw:Record';\n};\n\nexport type CSWGetDomainParameters = CSWCommonParameters & {\n /** Request type */\n request?: 'GetDomain';\n // TBA\n};\n\nexport type Service = {name: string; type: string; url: string; params?: string; scheme?: string};\n\nexport type CSWServiceProps = DataSourceProps & {\n url: string;\n};\n\n/**\n * The CSWService class provides\n * - provides type safe methods to form URLs to a CSW service\n * - provides type safe methods to query and parse results (and errors) from a CSW service\n * - implements the ImageService interface\n * @note Only the URL parameter conversion is supported. XML posts are not supported.\n */\nexport class CSWService extends DataSource<CSWServiceProps> {\n static type: 'csw' = 'csw';\n static testURL = (url: string): boolean => url.toLowerCase().includes('csw');\n\n capabilities: CSWCapabilities | null = null;\n\n /** A list of loaders used by the CSWService methods */\n readonly loaders = [CSWErrorLoader, CSWCapabilitiesLoader];\n\n /** Create a CSWService */\n constructor(props: CSWServiceProps) {\n super(props);\n }\n\n async getMetadata(): Promise<CSWCapabilities> {\n const capabilities = await this.getCapabilities();\n return this.normalizeMetadata(capabilities);\n }\n\n normalizeMetadata(capabilities: CSWCapabilities): CSWCapabilities {\n return capabilities;\n }\n\n async getServiceDirectory(options?: {includeUnknown?: boolean}): Promise<Service[]> {\n const services: Service[] = [];\n const unknownServices: Service[] = [];\n\n const records = await this.getRecords();\n for (const record of records.records) {\n for (const reference of record.references) {\n const url = reference.value;\n switch (reference.scheme) {\n case 'OGC:WMS':\n services.push({name: record.title, type: 'ogc-wms-service', ...this._parseOGCUrl(url)});\n break;\n case 'OGC:WMTS':\n services.push({\n name: record.title,\n type: 'ogc-wmts-service',\n ...this._parseOGCUrl(url)\n });\n break;\n case 'OGC:WFS':\n services.push({name: record.title, type: 'ogc-wfs-service', ...this._parseOGCUrl(url)});\n break;\n default:\n unknownServices.push({\n name: record.title,\n type: 'unknown',\n url: reference.value,\n scheme: reference.scheme\n });\n }\n }\n }\n\n return options?.includeUnknown ? services.concat(unknownServices) : services;\n }\n\n _parseOGCUrl(url: string): {url: string; params: string} {\n const parts = url.split('?');\n return {\n url: parts[0],\n params: parts[1] || ''\n };\n }\n\n // CSW Service API Stubs\n\n /** Get Capabilities */\n async getCapabilities(\n wmsParameters?: CSWGetCapabilitiesParameters,\n vendorParameters?: Record<string, unknown>\n ): Promise<CSWCapabilities> {\n const url = this.getCapabilitiesURL(wmsParameters, vendorParameters);\n const response = await this.fetch(url);\n const arrayBuffer = await response.arrayBuffer();\n this._checkResponse(response, arrayBuffer);\n const capabilities = await CSWCapabilitiesLoader.parse(arrayBuffer, this.props.loadOptions);\n return capabilities;\n }\n\n /** Get Records */\n async getRecords(\n wmsParameters?: CSWGetRecordsParameters,\n vendorParameters?: Record<string, unknown>\n ): Promise<CSWRecords> {\n const url = this.getRecordsURL(wmsParameters, vendorParameters);\n const response = await this.fetch(url);\n const arrayBuffer = await response.arrayBuffer();\n this._checkResponse(response, arrayBuffer);\n return await CSWRecordsLoader.parse(arrayBuffer, this.props.loadOptions);\n }\n\n /** Get Domain */\n async getDomain(\n wmsParameters?: CSWGetDomainParameters,\n vendorParameters?: Record<string, unknown>\n ): Promise<CSWDomain> {\n const url = this.getDomainURL(wmsParameters, vendorParameters);\n const response = await this.fetch(url);\n const arrayBuffer = await response.arrayBuffer();\n this._checkResponse(response, arrayBuffer);\n return await CSWDomainLoader.parse(arrayBuffer, this.props.loadOptions);\n }\n\n // Typed URL creators\n // For applications that want full control of fetching and parsing\n\n /** Generate a URL for the GetCapabilities request */\n getCapabilitiesURL(\n wmsParameters?: CSWGetCapabilitiesParameters,\n vendorParameters?: Record<string, unknown>\n ): string {\n const options: Required<CSWGetCapabilitiesParameters> = {\n version: '3.0.0',\n ...wmsParameters,\n ...vendorParameters,\n service: 'CSW',\n request: 'GetCapabilities'\n };\n return this._getCSWUrl(options, vendorParameters);\n }\n\n /** Generate a URL for the GetCapabilities request */\n getRecordsURL(\n wmsParameters?: CSWGetRecordsParameters,\n vendorParameters?: Record<string, unknown>\n ): string {\n const options: Required<CSWGetRecordsParameters> = {\n version: '3.0.0',\n typenames: 'csw:Record',\n ...wmsParameters,\n ...vendorParameters,\n service: 'CSW',\n request: 'GetRecords'\n };\n return this._getCSWUrl(options, vendorParameters);\n }\n\n /** Generate a URL for the GetCapabilities request */\n getDomainURL(\n wmsParameters?: CSWGetDomainParameters,\n vendorParameters?: Record<string, unknown>\n ): string {\n const options: Required<CSWGetDomainParameters> = {\n version: '3.0.0',\n ...wmsParameters,\n ...vendorParameters,\n service: 'CSW',\n request: 'GetDomain'\n };\n return this._getCSWUrl(options, vendorParameters);\n }\n\n // INTERNAL METHODS\n\n /**\n * @note case _getCSWUrl may need to be overridden to handle certain backends?\n * */\n protected _getCSWUrl(\n options: Record<string, unknown>,\n vendorParameters?: Record<string, unknown>\n ): string {\n let url = this.props.url;\n let first = true;\n for (const [key, value] of Object.entries(options)) {\n url += first ? '?' : '&';\n first = false;\n if (Array.isArray(value)) {\n url += `${key.toUpperCase()}=${value.join(',')}`;\n } else {\n url += `${key.toUpperCase()}=${value ? String(value) : ''}`;\n }\n }\n return encodeURI(url);\n }\n\n /** Checks for and parses a CSW XML formatted ServiceError and throws an exception */\n protected _checkResponse(response: Response, arrayBuffer: ArrayBuffer): void {\n const contentType = response.headers['content-type'];\n if (!response.ok || CSWErrorLoader.mimeTypes.includes(contentType)) {\n const error = CSWErrorLoader.parseSync(arrayBuffer, this.props.loadOptions);\n throw new Error(error);\n }\n }\n\n /** Error situation detected */\n protected _parseError(arrayBuffer: ArrayBuffer): Error {\n const error = CSWErrorLoader.parseSync(arrayBuffer, this.props.loadOptions);\n return new Error(error);\n }\n}\n"],"mappings":"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"}
@@ -1,5 +1,4 @@
1
1
  import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
-
3
2
  import { ImageLoader } from '@loaders.gl/images';
4
3
  import { mergeLoaderOptions } from '@loaders.gl/loader-utils';
5
4
  import { ImageSource } from '../../sources/image-source';
@@ -8,26 +7,32 @@ import { WMSFeatureInfoLoader } from '../../../wip/wms-feature-info-loader';
8
7
  import { WMSLayerDescriptionLoader } from '../../../wip/wms-layer-description-loader';
9
8
  import { WMSErrorLoader } from '../../../wms-error-loader';
10
9
  export class WMSService extends ImageSource {
11
-
12
10
  constructor(props) {
11
+ var _props$substituteCRS;
13
12
  super(props);
14
-
15
- _defineProperty(this, "props", void 0);
13
+ _defineProperty(this, "url", void 0);
14
+ _defineProperty(this, "substituteCRS84", void 0);
15
+ _defineProperty(this, "flipCRS", void 0);
16
+ _defineProperty(this, "wmsParameters", void 0);
17
+ _defineProperty(this, "vendorParameters", void 0);
16
18
  _defineProperty(this, "capabilities", null);
17
19
  _defineProperty(this, "loaders", [ImageLoader, WMSErrorLoader, WMSCapabilitiesLoader, WMSFeatureInfoLoader, WMSLayerDescriptionLoader]);
18
-
19
- this.props = {
20
- loadOptions: undefined,
20
+ this.url = props.url;
21
+ this.substituteCRS84 = (_props$substituteCRS = props.substituteCRS84) !== null && _props$substituteCRS !== void 0 ? _props$substituteCRS : false;
22
+ this.flipCRS = ['EPSG:4326'];
23
+ this.wmsParameters = {
21
24
  layers: undefined,
25
+ query_layers: undefined,
22
26
  styles: undefined,
23
- version: '1.1.1',
24
- srs: 'EPSG:4326',
27
+ version: '1.3.0',
28
+ crs: 'EPSG:4326',
25
29
  format: 'image/png',
26
30
  info_format: 'text/plain',
27
- ...props
31
+ transparent: undefined,
32
+ ...props.wmsParameters
28
33
  };
34
+ this.vendorParameters = props.vendorParameters || {};
29
35
  }
30
-
31
36
  async getMetadata() {
32
37
  const capabilities = await this.getCapabilities();
33
38
  return this.normalizeMetadata(capabilities);
@@ -38,145 +43,190 @@ export class WMSService extends ImageSource {
38
43
  normalizeMetadata(capabilities) {
39
44
  return capabilities;
40
45
  }
41
-
42
46
  async getCapabilities(wmsParameters, vendorParameters) {
43
47
  const url = this.getCapabilitiesURL(wmsParameters, vendorParameters);
44
48
  const response = await this.fetch(url);
45
49
  const arrayBuffer = await response.arrayBuffer();
46
50
  this._checkResponse(response, arrayBuffer);
47
- const capabilities = await WMSCapabilitiesLoader.parse(arrayBuffer, this.props.loadOptions);
51
+ const capabilities = await WMSCapabilitiesLoader.parse(arrayBuffer, this.loadOptions);
48
52
  this.capabilities = capabilities;
49
53
  return capabilities;
50
54
  }
51
-
52
- async getMap(options, vendorParameters) {
53
- const url = this.getMapURL(options, vendorParameters);
55
+ async getMap(wmsParameters, vendorParameters) {
56
+ const url = this.getMapURL(wmsParameters, vendorParameters);
54
57
  const response = await this.fetch(url);
55
58
  const arrayBuffer = await response.arrayBuffer();
56
59
  this._checkResponse(response, arrayBuffer);
57
60
  try {
58
- return await ImageLoader.parse(arrayBuffer, this.props.loadOptions);
61
+ return await ImageLoader.parse(arrayBuffer, this.loadOptions);
59
62
  } catch {
60
63
  throw this._parseError(arrayBuffer);
61
64
  }
62
65
  }
63
-
64
- async getFeatureInfo(options, vendorParameters) {
65
- const url = this.getFeatureInfoURL(options, vendorParameters);
66
+ async getFeatureInfo(wmsParameters, vendorParameters) {
67
+ const url = this.getFeatureInfoURL(wmsParameters, vendorParameters);
66
68
  const response = await this.fetch(url);
67
69
  const arrayBuffer = await response.arrayBuffer();
68
70
  this._checkResponse(response, arrayBuffer);
69
- return await WMSFeatureInfoLoader.parse(arrayBuffer, this.props.loadOptions);
71
+ return await WMSFeatureInfoLoader.parse(arrayBuffer, this.loadOptions);
70
72
  }
71
-
72
- async getFeatureInfoText(options, vendorParameters) {
73
- const url = this.getFeatureInfoURL(options, vendorParameters);
73
+ async getFeatureInfoText(wmsParameters, vendorParameters) {
74
+ const url = this.getFeatureInfoURL(wmsParameters, vendorParameters);
74
75
  const response = await this.fetch(url);
75
76
  const arrayBuffer = await response.arrayBuffer();
76
77
  this._checkResponse(response, arrayBuffer);
77
78
  return new TextDecoder().decode(arrayBuffer);
78
79
  }
79
-
80
- async describeLayer(options, vendorParameters) {
81
- const url = this.describeLayerURL(options, vendorParameters);
80
+ async describeLayer(wmsParameters, vendorParameters) {
81
+ const url = this.describeLayerURL(wmsParameters, vendorParameters);
82
82
  const response = await this.fetch(url);
83
83
  const arrayBuffer = await response.arrayBuffer();
84
84
  this._checkResponse(response, arrayBuffer);
85
- return await WMSLayerDescriptionLoader.parse(arrayBuffer, this.props.loadOptions);
85
+ return await WMSLayerDescriptionLoader.parse(arrayBuffer, this.loadOptions);
86
86
  }
87
-
88
- async getLegendGraphic(options, vendorParameters) {
89
- const url = this.getLegendGraphicURL(options, vendorParameters);
87
+ async getLegendGraphic(wmsParameters, vendorParameters) {
88
+ const url = this.getLegendGraphicURL(wmsParameters, vendorParameters);
90
89
  const response = await this.fetch(url);
91
90
  const arrayBuffer = await response.arrayBuffer();
92
91
  this._checkResponse(response, arrayBuffer);
93
92
  try {
94
- return await ImageLoader.parse(arrayBuffer, this.props.loadOptions);
93
+ return await ImageLoader.parse(arrayBuffer, this.loadOptions);
95
94
  } catch {
96
95
  throw this._parseError(arrayBuffer);
97
96
  }
98
97
  }
99
-
100
98
  getCapabilitiesURL(wmsParameters, vendorParameters) {
101
99
  const options = {
102
- service: 'WMS',
103
- version: this.props.version,
104
- request: 'GetCapabilities',
105
- ...wmsParameters,
106
- ...vendorParameters
100
+ version: this.wmsParameters.version,
101
+ ...wmsParameters
107
102
  };
108
- return this._getWMSUrl(options, vendorParameters);
103
+ return this._getWMSUrl('GetCapabilities', options, vendorParameters);
109
104
  }
110
-
111
105
  getMapURL(wmsParameters, vendorParameters) {
106
+ wmsParameters = this._getWMS130Parameters(wmsParameters);
112
107
  const options = {
113
- service: 'WMS',
114
- version: this.props.version,
115
- request: 'GetMap',
116
- styles: this.props.styles,
117
- srs: this.props.srs,
118
- format: this.props.format,
119
- ...wmsParameters,
120
- ...vendorParameters
108
+ version: this.wmsParameters.version,
109
+ format: this.wmsParameters.format,
110
+ transparent: this.wmsParameters.transparent,
111
+ layers: this.wmsParameters.layers,
112
+ styles: this.wmsParameters.styles,
113
+ crs: this.wmsParameters.crs,
114
+ ...wmsParameters
121
115
  };
122
- return this._getWMSUrl(options, vendorParameters);
116
+ return this._getWMSUrl('GetMap', options, vendorParameters);
123
117
  }
124
-
125
118
  getFeatureInfoURL(wmsParameters, vendorParameters) {
126
119
  const options = {
127
- service: 'WMS',
128
- version: this.props.version,
129
- request: 'GetFeatureInfo',
130
- srs: this.props.srs,
131
- format: this.props.format,
132
- info_format: this.props.info_format,
133
- styles: this.props.styles,
134
- ...wmsParameters,
135
- ...vendorParameters
120
+ version: this.wmsParameters.version,
121
+ info_format: this.wmsParameters.info_format,
122
+ layers: this.wmsParameters.layers,
123
+ query_layers: this.wmsParameters.query_layers,
124
+ styles: this.wmsParameters.styles,
125
+ crs: this.wmsParameters.crs,
126
+ ...wmsParameters
136
127
  };
137
- return this._getWMSUrl(options, vendorParameters);
128
+ return this._getWMSUrl('GetFeatureInfo', options, vendorParameters);
138
129
  }
139
-
140
130
  describeLayerURL(wmsParameters, vendorParameters) {
141
131
  const options = {
142
- service: 'WMS',
143
- version: this.props.version,
144
- request: 'DescribeLayer',
145
- ...wmsParameters,
146
- ...vendorParameters
132
+ version: this.wmsParameters.version,
133
+ ...wmsParameters
147
134
  };
148
- return this._getWMSUrl(options, vendorParameters);
135
+ return this._getWMSUrl('DescribeLayer', options, vendorParameters);
149
136
  }
150
137
  getLegendGraphicURL(wmsParameters, vendorParameters) {
151
138
  const options = {
139
+ version: this.wmsParameters.version,
140
+ ...wmsParameters
141
+ };
142
+ return this._getWMSUrl('GetLegendGraphic', options, vendorParameters);
143
+ }
144
+ _parseWMSUrl(url) {
145
+ const [baseUrl, search] = url.split('?');
146
+ const searchParams = search.split('&');
147
+ const parameters = {};
148
+ for (const parameter of searchParams) {
149
+ const [key, value] = parameter.split('=');
150
+ parameters[key] = value;
151
+ }
152
+ return {
153
+ url: baseUrl,
154
+ parameters
155
+ };
156
+ }
157
+ _getWMSUrl(request, wmsParameters, vendorParameters) {
158
+ let url = this.url;
159
+ let first = true;
160
+ const allParameters = {
152
161
  service: 'WMS',
153
- version: this.props.version,
154
- request: 'GetLegendGraphic',
162
+ version: wmsParameters.version,
163
+ request,
155
164
  ...wmsParameters,
165
+ ...this.vendorParameters,
156
166
  ...vendorParameters
157
167
  };
158
- return this._getWMSUrl(options, vendorParameters);
159
- }
160
-
161
- _getWMSUrl(options, vendorParameters) {
162
- let url = this.props.url;
163
- let first = true;
164
- for (const [key, value] of Object.entries(options)) {
165
- url += first ? '?' : '&';
166
- first = false;
167
- if (Array.isArray(value)) {
168
- url += "".concat(key.toUpperCase(), "=").concat(value.join(','));
169
- } else {
170
- url += "".concat(key.toUpperCase(), "=").concat(value ? String(value) : '');
168
+ for (const [key, value] of Object.entries(allParameters)) {
169
+ if (key !== 'transparent' || value) {
170
+ url += first ? '?' : '&';
171
+ first = false;
172
+ url += this._getURLParameter(key, value, wmsParameters);
171
173
  }
172
174
  }
173
175
  return encodeURI(url);
174
176
  }
175
-
177
+ _getWMS130Parameters(wmsParameters) {
178
+ const newParameters = {
179
+ ...wmsParameters
180
+ };
181
+ if (newParameters.srs) {
182
+ newParameters.crs = newParameters.crs || newParameters.srs;
183
+ delete newParameters.srs;
184
+ }
185
+ return newParameters;
186
+ }
187
+ _getURLParameter(key, value, wmsParameters) {
188
+ switch (key) {
189
+ case 'crs':
190
+ if (wmsParameters.version !== '1.3.0') {
191
+ key = 'srs';
192
+ } else if (this.substituteCRS84 && value === 'EPSG:4326') {
193
+ value = 'CRS:84';
194
+ }
195
+ break;
196
+ case 'srs':
197
+ if (wmsParameters.version === '1.3.0') {
198
+ key = 'crs';
199
+ }
200
+ break;
201
+ case 'bbox':
202
+ const bbox = this._flipBoundingBox(value, wmsParameters);
203
+ if (bbox) {
204
+ value = bbox;
205
+ }
206
+ break;
207
+ default:
208
+ }
209
+ key = key.toUpperCase();
210
+ return Array.isArray(value) ? "".concat(key, "=").concat(value.join(',')) : "".concat(key, "=").concat(value ? String(value) : '');
211
+ }
212
+ _flipBoundingBox(bboxValue, wmsParameters) {
213
+ if (!Array.isArray(bboxValue) || bboxValue.length !== 4) {
214
+ return null;
215
+ }
216
+ const flipCoordinates = wmsParameters.version === '1.3.0' && this.flipCRS.includes(wmsParameters.crs || '') && !(this.substituteCRS84 && wmsParameters.crs === 'EPSG:4326');
217
+ const bbox = bboxValue;
218
+ return flipCoordinates ? [bbox[1], bbox[0], bbox[3], bbox[2]] : bbox;
219
+ }
220
+ async _fetchArrayBuffer(url) {
221
+ const response = await this.fetch(url);
222
+ const arrayBuffer = await response.arrayBuffer();
223
+ this._checkResponse(response, arrayBuffer);
224
+ return arrayBuffer;
225
+ }
176
226
  _checkResponse(response, arrayBuffer) {
177
227
  const contentType = response.headers['content-type'];
178
228
  if (!response.ok || WMSErrorLoader.mimeTypes.includes(contentType)) {
179
- const loadOptions = mergeLoaderOptions(this.props.loadOptions, {
229
+ const loadOptions = mergeLoaderOptions(this.loadOptions, {
180
230
  wms: {
181
231
  throwOnError: true
182
232
  }
@@ -185,9 +235,8 @@ export class WMSService extends ImageSource {
185
235
  throw new Error(error);
186
236
  }
187
237
  }
188
-
189
238
  _parseError(arrayBuffer) {
190
- const error = WMSErrorLoader.parseSync(arrayBuffer, this.props.loadOptions);
239
+ const error = WMSErrorLoader.parseSync(arrayBuffer, this.loadOptions);
191
240
  return new Error(error);
192
241
  }
193
242
  }