@loaders.gl/wms 4.0.0-alpha.6 → 4.0.0-alpha.8

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 (82) hide show
  1. package/dist/dist.min.js +39 -6
  2. package/dist/es5/csw-capabilities-loader.js +1 -1
  3. package/dist/es5/csw-domain-loader.js +1 -1
  4. package/dist/es5/csw-records-loader.js +1 -1
  5. package/dist/es5/gml-loader.js +1 -1
  6. package/dist/es5/index.js.map +1 -1
  7. package/dist/es5/lerc-loader.js +1 -1
  8. package/dist/es5/lib/parsers/wms/parse-wms-capabilities.js +41 -5
  9. package/dist/es5/lib/parsers/wms/parse-wms-capabilities.js.map +1 -1
  10. package/dist/es5/lib/parsers/wms/parse-wms-layer-description.js.map +1 -1
  11. package/dist/es5/lib/services/ogc/csw-service.js.map +1 -1
  12. package/dist/es5/lib/services/ogc/wms-service.js +7 -2
  13. package/dist/es5/lib/services/ogc/wms-service.js.map +1 -1
  14. package/dist/es5/lib/sources/image-source.js.map +1 -1
  15. package/dist/es5/wip/wcs-capabilities-loader.js +1 -1
  16. package/dist/es5/wip/wfs-capabilities-loader.js +1 -1
  17. package/dist/es5/wip/wms-feature-info-loader.js.map +1 -1
  18. package/dist/es5/wip/wms-layer-description-loader.js.map +1 -1
  19. package/dist/es5/wip/wmts-capabilities-loader.js +1 -1
  20. package/dist/es5/wip/wmts-capabilities-loader.js.map +1 -1
  21. package/dist/es5/wms-capabilities-loader.js +1 -1
  22. package/dist/es5/wms-capabilities-loader.js.map +1 -1
  23. package/dist/es5/wms-error-loader.js +1 -1
  24. package/dist/esm/csw-capabilities-loader.js +1 -1
  25. package/dist/esm/csw-domain-loader.js +1 -1
  26. package/dist/esm/csw-records-loader.js +1 -1
  27. package/dist/esm/gml-loader.js +1 -1
  28. package/dist/esm/index.js.map +1 -1
  29. package/dist/esm/lerc-loader.js +1 -1
  30. package/dist/esm/lib/parsers/wms/parse-wms-capabilities.js +41 -5
  31. package/dist/esm/lib/parsers/wms/parse-wms-capabilities.js.map +1 -1
  32. package/dist/esm/lib/parsers/wms/parse-wms-layer-description.js.map +1 -1
  33. package/dist/esm/lib/services/ogc/csw-service.js.map +1 -1
  34. package/dist/esm/lib/services/ogc/wms-service.js +6 -1
  35. package/dist/esm/lib/services/ogc/wms-service.js.map +1 -1
  36. package/dist/esm/lib/sources/image-source.js.map +1 -1
  37. package/dist/esm/wip/wcs-capabilities-loader.js +1 -1
  38. package/dist/esm/wip/wfs-capabilities-loader.js +1 -1
  39. package/dist/esm/wip/wms-feature-info-loader.js.map +1 -1
  40. package/dist/esm/wip/wms-layer-description-loader.js.map +1 -1
  41. package/dist/esm/wip/wmts-capabilities-loader.js +1 -1
  42. package/dist/esm/wip/wmts-capabilities-loader.js.map +1 -1
  43. package/dist/esm/wms-capabilities-loader.js +1 -1
  44. package/dist/esm/wms-capabilities-loader.js.map +1 -1
  45. package/dist/esm/wms-error-loader.js +1 -1
  46. package/dist/index.d.ts +5 -3
  47. package/dist/index.d.ts.map +1 -1
  48. package/dist/index.js +0 -4
  49. package/dist/lib/parsers/wms/parse-wms-capabilities.d.ts +26 -2
  50. package/dist/lib/parsers/wms/parse-wms-capabilities.d.ts.map +1 -1
  51. package/dist/lib/parsers/wms/parse-wms-capabilities.js +40 -6
  52. package/dist/lib/parsers/wms/parse-wms-layer-description.d.ts +2 -1
  53. package/dist/lib/parsers/wms/parse-wms-layer-description.d.ts.map +1 -1
  54. package/dist/lib/services/ogc/csw-service.d.ts +5 -3
  55. package/dist/lib/services/ogc/csw-service.d.ts.map +1 -1
  56. package/dist/lib/services/ogc/csw-service.js +1 -2
  57. package/dist/lib/services/ogc/wms-service.d.ts +31 -6
  58. package/dist/lib/services/ogc/wms-service.d.ts.map +1 -1
  59. package/dist/lib/services/ogc/wms-service.js +6 -1
  60. package/dist/lib/sources/image-source.d.ts +13 -4
  61. package/dist/lib/sources/image-source.d.ts.map +1 -1
  62. package/dist/wip/wms-feature-info-loader.d.ts +3 -3
  63. package/dist/wip/wms-feature-info-loader.d.ts.map +1 -1
  64. package/dist/wip/wms-layer-description-loader.d.ts +3 -3
  65. package/dist/wip/wms-layer-description-loader.d.ts.map +1 -1
  66. package/dist/wip/wmts-capabilities-loader.d.ts +3 -2
  67. package/dist/wip/wmts-capabilities-loader.d.ts.map +1 -1
  68. package/dist/wip/wmts-capabilities-loader.js +1 -1
  69. package/dist/wms-capabilities-loader.d.ts +11 -7
  70. package/dist/wms-capabilities-loader.d.ts.map +1 -1
  71. package/dist/wms-capabilities-loader.js +6 -2
  72. package/package.json +6 -6
  73. package/src/index.ts +11 -4
  74. package/src/lib/parsers/wms/parse-wms-capabilities.ts +74 -9
  75. package/src/lib/parsers/wms/parse-wms-layer-description.ts +5 -1
  76. package/src/lib/services/ogc/csw-service.ts +12 -4
  77. package/src/lib/services/ogc/wms-service.ts +16 -3
  78. package/src/lib/sources/image-source.ts +16 -4
  79. package/src/wip/wms-feature-info-loader.ts +4 -3
  80. package/src/wip/wms-layer-description-loader.ts +3 -3
  81. package/src/wip/wmts-capabilities-loader.ts +3 -2
  82. package/src/wms-capabilities-loader.ts +22 -9
@@ -73,6 +73,9 @@ export type WMSLayer = {
73
73
  // FeatureListURL
74
74
  // DataURL
75
75
 
76
+ /** any extra dimension such as time */
77
+ dimensions?: WMSDimension[];
78
+
76
79
  /** Whether queries can be performed on the layer */
77
80
  queryable?: boolean;
78
81
  /** `false` if layer has significant no-data areas that the client can display as transparent. */
@@ -105,6 +108,30 @@ export type WMSBoundingBox = {
105
108
  yResolution?: number;
106
109
  };
107
110
 
111
+ /**
112
+ * An optional dimension that can be queried using the `name=...` parameter
113
+ * Note that layers that have at least one dimension without `default` value
114
+ * become unrenderable unless the dimension value is supplied to GetMap requests.
115
+ */
116
+ export type WMSDimension = {
117
+ /** name of dimension, becomes a valid parameter key for this layer */
118
+ name: string;
119
+ /** Textual units for this dimensional axis */
120
+ units: string;
121
+ /** Unit symbol for this dimensional axis */
122
+ unitSymbol?: string;
123
+ /** Default value if no value is supplied. If dimension lacks defaultValue, requests fail if no value is supplied */
124
+ defaultValue?: string;
125
+ /** Can multiple values of the dimension be requested? */
126
+ multipleValues?: boolean;
127
+ /* Will nearest values will be substituted when out of range, if false exact values are required */
128
+ nearestValue?: boolean;
129
+ /** A special value "current" is supported, typically for time dimension */
130
+ current?: boolean;
131
+ /** Text content indicating available values for dimension */
132
+ extent: string;
133
+ };
134
+
108
135
  /** Metadata about a supported WMS request */
109
136
  export type WMSRequest = {
110
137
  /** MIMEtypes that can be returned by this request. */
@@ -116,7 +143,7 @@ export type WMSExceptions = {
116
143
  mimeTypes: string[];
117
144
  };
118
145
 
119
- export type parseWMSCapabilitiesOptions = {
146
+ export type ParseWMSCapabilitiesOptions = {
120
147
  /** Add inherited layer information to sub layers */
121
148
  inheritedLayerProps?: boolean;
122
149
  /** Include the "raw" JSON (parsed but untyped, unprocessed XML). May contain additional fields */
@@ -125,7 +152,6 @@ export type parseWMSCapabilitiesOptions = {
125
152
  includeXMLText?: boolean;
126
153
  /** @deprecated Use includeRawData` */
127
154
  raw?: boolean;
128
-
129
155
  // xml options are passed through to xml loader
130
156
  };
131
157
 
@@ -135,7 +161,7 @@ export type parseWMSCapabilitiesOptions = {
135
161
  */
136
162
  export function parseWMSCapabilities(
137
163
  xmlText: string,
138
- options?: parseWMSCapabilitiesOptions
164
+ options?: ParseWMSCapabilitiesOptions
139
165
  ): WMSCapabilities {
140
166
  const parsedXML = XMLLoader.parseTextSync?.(xmlText, options);
141
167
  const xmlCapabilities: any =
@@ -227,8 +253,8 @@ function extractLayer(xmlLayer: any): WMSLayer {
227
253
  // All layers must have a title
228
254
  title: String(xmlLayer?.Title || ''),
229
255
  // Name is required only if renderable
230
- name: String(xmlLayer?.Name),
231
- abstract: String(xmlLayer?.Abstract),
256
+ name: xmlLayer?.Name && String(xmlLayer?.Name),
257
+ abstract: xmlLayer?.Name && String(xmlLayer?.Abstract),
232
258
  keywords: getXMLStringArray(xmlLayer.KeywordList?.Keyword)
233
259
  };
234
260
 
@@ -258,6 +284,13 @@ function extractLayer(xmlLayer: any): WMSLayer {
258
284
  layer.boundingBoxes = boundingBoxes;
259
285
  }
260
286
 
287
+ // Extract dimensions
288
+ const xmlDimensions = getXMLArray(xmlLayer?.Dimension);
289
+ const dimensions = xmlDimensions.map((xml) => extractDimension(xml));
290
+ if (dimensions.length) {
291
+ layer.dimensions = dimensions;
292
+ }
293
+
261
294
  if (xmlLayer?.opaque) {
262
295
  layer.opaque = getXMLBoolean(xmlLayer?.opaque);
263
296
  }
@@ -339,22 +372,54 @@ function extractWMSBoundingBox(xmlBoundingBox: any): WMSBoundingBox {
339
372
  return boundingBox;
340
373
  }
341
374
 
375
+ /**
376
+ * Extracts optional WMS Dimension layer field
377
+ * @param xmlDimension
378
+ * @example <Dimension name="time" units="ISO8601" default="2018-01-01" nearestValue="0">2001-01-01/2018-01-01/P1Y</Dimension>
379
+ * @see https://mapserver.org/ogc/wms_dimension.html
380
+ */
381
+ function extractDimension(xmlDimension: any): WMSDimension {
382
+ const {name, units, value: extent} = xmlDimension;
383
+
384
+ const dimension: WMSDimension = {name, units, extent};
385
+
386
+ if (xmlDimension.unitSymbol) {
387
+ dimension.unitSymbol = xmlDimension.unitSymbol;
388
+ }
389
+ if (xmlDimension.default) {
390
+ dimension.defaultValue = xmlDimension.default;
391
+ }
392
+ if (xmlDimension.multipleValues) {
393
+ dimension.multipleValues = getXMLBoolean(xmlDimension.multipleValues);
394
+ }
395
+ if (xmlDimension.nearestValue) {
396
+ dimension.nearestValue = getXMLBoolean(xmlDimension.nearestValue);
397
+ }
398
+ if (xmlDimension.current) {
399
+ dimension.current = getXMLBoolean(xmlDimension.current);
400
+ }
401
+
402
+ return dimension;
403
+ }
404
+
342
405
  /** Traverse layers and inject missing props from parents */
343
406
  // eslint-disable-next-line complexity
344
407
  function addInheritedLayerProps(layer: WMSLayer, parent: WMSLayer | null): void {
345
- if (parent && parent.geographicBoundingBox && !layer.geographicBoundingBox) {
408
+ if (parent?.geographicBoundingBox && !layer.geographicBoundingBox) {
346
409
  layer.geographicBoundingBox = [...parent.geographicBoundingBox];
347
410
  }
348
411
 
349
- if (parent && parent.crs && !layer.crs) {
412
+ if (parent?.crs && !layer.crs) {
350
413
  layer.crs = [...parent.crs];
351
414
  }
352
415
 
353
- if (parent && parent.boundingBoxes && !layer.boundingBoxes) {
416
+ if (parent?.boundingBoxes && !layer.boundingBoxes) {
354
417
  layer.boundingBoxes = [...parent.boundingBoxes];
355
418
  }
356
419
 
357
- // TODO inherit other elements
420
+ if (parent?.dimensions && !layer.dimensions) {
421
+ layer.dimensions = [...parent.dimensions];
422
+ }
358
423
 
359
424
  for (const subLayer of layer.layers || []) {
360
425
  addInheritedLayerProps(subLayer, layer);
@@ -1,5 +1,6 @@
1
1
  // loaders.gl, MIT license
2
2
 
3
+ import type {XMLLoaderOptions} from '@loaders.gl/xml';
3
4
  import {XMLLoader} from '@loaders.gl/xml';
4
5
 
5
6
  /** Layer description - response to a WMS `DescribeLayer` request */
@@ -11,7 +12,10 @@ export type WMSLayerDescription = {
11
12
  * Parses a typed data structure from raw XML for `GetFeatureInfo` response
12
13
  * @note Error handlings is fairly weak
13
14
  */
14
- export function parseWMSLayerDescription(text: string, options): WMSLayerDescription {
15
+ export function parseWMSLayerDescription(
16
+ text: string,
17
+ options?: XMLLoaderOptions
18
+ ): WMSLayerDescription {
15
19
  const parsedXML = XMLLoader.parseTextSync?.(text, options);
16
20
  // TODO - implement parser
17
21
  return parsedXML as unknown as WMSLayerDescription;
@@ -20,7 +20,7 @@ type CSWCommonParameters = {
20
20
  /** In case the endpoint supports multiple services */
21
21
  service?: 'CSW';
22
22
  /** In case the endpoint supports multiple CSW versions */
23
- version?: '1.1.1' | '2.0.0' | '2.0.1' | '3.0.0' | '3.0.0';
23
+ version?: '1.1.1' | '2.0.0' | '2.0.1' | '3.0.0';
24
24
  };
25
25
 
26
26
  export type CSWGetCapabilitiesParameters = CSWCommonParameters & {
@@ -41,17 +41,25 @@ export type CSWGetDomainParameters = CSWCommonParameters & {
41
41
  // TBA
42
42
  };
43
43
 
44
- export type Service = {name: string; type: string; url: string; params?: string; scheme?: string};
44
+ /** Describes a service or resource exposed by the catalog */
45
+ export type Service = {
46
+ /** name of service or resource */
47
+ name: string;
48
+ /** type of service or resource */
49
+ type: string;
50
+ url: string;
51
+ params?: string;
52
+ scheme?: string;
53
+ };
45
54
 
46
55
  export type CSWServiceProps = DataSourceProps & {
47
56
  url: string;
48
57
  };
49
58
 
50
59
  /**
51
- * The CSWService class provides
60
+ * The CSWService class
52
61
  * - provides type safe methods to form URLs to a CSW service
53
62
  * - provides type safe methods to query and parse results (and errors) from a CSW service
54
- * - implements the ImageService interface
55
63
  * @note Only the URL parameter conversion is supported. XML posts are not supported.
56
64
  */
57
65
  export class CSWService extends DataSource<CSWServiceProps> {
@@ -42,6 +42,10 @@ export type WMSParameters = {
42
42
  styles?: unknown;
43
43
  /** Any additional parameters specific to this WMSService (GetMap) */
44
44
  transparent?: boolean;
45
+ /** If layer supports time dimension */
46
+ time?: string;
47
+ /** If layer supports elevation dimension */
48
+ elevation?: string;
45
49
  };
46
50
 
47
51
  /** Parameters for GetCapabilities */
@@ -60,6 +64,8 @@ export type WMSGetMapParameters = {
60
64
  width: number;
61
65
  /** pixels */
62
66
  height: number;
67
+ /** requested format for the return image. can be provided in service constructor */
68
+ format?: 'image/png';
63
69
  /** Layers to render - can be provided in service constructor */
64
70
  layers?: string | string[];
65
71
  /** Coordinate Reference System for the image (not bounding box). can be provided in service constructor. */
@@ -68,8 +74,10 @@ export type WMSGetMapParameters = {
68
74
  styles?: unknown;
69
75
  /** Don't render background when no data. can be provided in service constructor */
70
76
  transparent?: boolean;
71
- /** requested format for the return image. can be provided in service constructor */
72
- format?: 'image/png';
77
+ /** If layer supports time dimension */
78
+ time?: string;
79
+ /** If layer supports elevation dimension */
80
+ elevation?: string;
73
81
  };
74
82
 
75
83
  /** GetMap parameters that are specific to the current view */
@@ -213,6 +221,8 @@ export class WMSService extends ImageSource<WMSServiceProps> {
213
221
  format: 'image/png',
214
222
  info_format: 'text/plain',
215
223
  transparent: undefined!,
224
+ time: undefined!,
225
+ elevation: undefined!,
216
226
  ...props.wmsParameters
217
227
  };
218
228
 
@@ -342,6 +352,8 @@ export class WMSService extends ImageSource<WMSServiceProps> {
342
352
  version: this.wmsParameters.version,
343
353
  format: this.wmsParameters.format,
344
354
  transparent: this.wmsParameters.transparent,
355
+ time: this.wmsParameters.time,
356
+ elevation: this.wmsParameters.elevation,
345
357
  layers: this.wmsParameters.layers,
346
358
  styles: this.wmsParameters.styles,
347
359
  crs: this.wmsParameters.crs,
@@ -440,9 +452,10 @@ export class WMSService extends ImageSource<WMSServiceProps> {
440
452
  };
441
453
 
442
454
  // Encode the keys
455
+ const IGNORE_EMPTY_KEYS = ['transparent', 'time', 'elevation'];
443
456
  for (const [key, value] of Object.entries(allParameters)) {
444
457
  // hack to preserve test cases. Not super clear if keys should be included when values are undefined
445
- if (key !== 'transparent' || value) {
458
+ if (!IGNORE_EMPTY_KEYS.includes(key) || value) {
446
459
  url += first ? '?' : '&';
447
460
  first = false;
448
461
  url += this._getURLParameter(key, value, wmsParameters);
@@ -7,8 +7,8 @@ import {DataSource} from './data-source';
7
7
  /**
8
8
  * Normalized capabilities of an Image service
9
9
  * @example
10
- * The WMSService will normalize the response to the WMS `GetCapabilities` data structure extracted from WMS XML response
11
- * into an ImageSourceMetadata.
10
+ * The WMSService will normalize the response to the WMS `GetCapabilities`
11
+ * data structure extracted from WMS XML response into an ImageSourceMetadata.
12
12
  */
13
13
  export type ImageSourceMetadata = {
14
14
  name: string;
@@ -18,14 +18,24 @@ export type ImageSourceMetadata = {
18
18
  layers: ImageSourceLayer[];
19
19
  };
20
20
 
21
+ /** Description of one data layer in the image source */
21
22
  export type ImageSourceLayer = {
23
+ /** Name of this layer */
22
24
  name?: string;
25
+ /** Human readable title of this layer */
23
26
  title?: string;
27
+ /** Coordinate systems supported by this layer */
24
28
  crs?: string[];
25
- boundingBox?: [number, number, number, number];
29
+ /** layer limits in unspecified CRS:84-like lng/lat, for quick access w/o CRS calculations. */
30
+ geographicBoundingBox?: [min: [x: number, y: number], max: [x: number, y: number]];
31
+ /** Sub layers of this layer */
26
32
  layers?: ImageSourceLayer[];
33
+
34
+ /** @deprecated from v3.4: non-vis.gl style bounding box. Use `.geographicBoundingBox` instead */
35
+ boundingBox?: [number, number, number, number];
27
36
  };
28
37
 
38
+ /** Generic parameters for requesting an image from an image source */
29
39
  export type GetImageParameters = {
30
40
  /** Layers to render */
31
41
  layers: string | string[];
@@ -74,7 +84,9 @@ export type ImageSourceProps = DataSourceProps;
74
84
  * @note
75
85
  * - If geospatial, bounding box is expected to be in web mercator coordinates
76
86
  */
77
- export abstract class ImageSource<PropsT extends ImageSourceProps> extends DataSource<PropsT> {
87
+ export abstract class ImageSource<
88
+ PropsT extends ImageSourceProps = ImageSourceProps
89
+ > extends DataSource<PropsT> {
78
90
  abstract getMetadata(): Promise<ImageSourceMetadata>;
79
91
  abstract getImage(parameters: GetImageParameters): Promise<ImageType>;
80
92
  }
@@ -1,7 +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';
4
+ import type {XMLLoaderOptions} from '@loaders.gl/xml';
5
+ import {WMSCapabilitiesLoader} from '../wms-capabilities-loader';
5
6
 
6
7
  import type {WMSFeatureInfo} from '../lib/parsers/wms/parse-wms-features';
7
8
  import {parseWMSFeatureInfo} from '../lib/parsers/wms/parse-wms-features';
@@ -17,9 +18,9 @@ export const WMSFeatureInfoLoader = {
17
18
  id: 'wms-feature-info',
18
19
  name: 'WMS FeatureInfo',
19
20
 
20
- parse: async (arrayBuffer: ArrayBuffer, options?: WMSLoaderOptions) =>
21
+ parse: async (arrayBuffer: ArrayBuffer, options?: XMLLoaderOptions) =>
21
22
  parseWMSFeatureInfo(new TextDecoder().decode(arrayBuffer), options),
22
- parseTextSync: (text: string, options?: WMSLoaderOptions) => parseWMSFeatureInfo(text, options)
23
+ parseTextSync: (text: string, options?: XMLLoaderOptions) => parseWMSFeatureInfo(text, options)
23
24
  };
24
25
 
25
26
  export const _typecheckWMSFeatureInfoLoader: LoaderWithParser = WMSFeatureInfoLoader;
@@ -1,7 +1,7 @@
1
1
  // loaders.gl, MIT license
2
2
 
3
3
  import type {LoaderWithParser} from '@loaders.gl/loader-utils';
4
- import type{WMSLoaderOptions} from '../wms-capabilities-loader';
4
+ import type {XMLLoaderOptions} from '@loaders.gl/xml';
5
5
  import {WMSCapabilitiesLoader} from '../wms-capabilities-loader';
6
6
 
7
7
  import type {WMSLayerDescription} from '../lib/parsers/wms/parse-wms-layer-description';
@@ -18,9 +18,9 @@ export const WMSLayerDescriptionLoader = {
18
18
  id: 'wms-layer-description',
19
19
  name: 'WMS DescribeLayer',
20
20
 
21
- parse: async (arrayBuffer: ArrayBuffer, options?: WMSLoaderOptions) =>
21
+ parse: async (arrayBuffer: ArrayBuffer, options?: XMLLoaderOptions) =>
22
22
  parseWMSLayerDescription(new TextDecoder().decode(arrayBuffer), options),
23
- parseTextSync: (text: string, options?: WMSLoaderOptions) => parseWMSLayerDescription(text, options)
23
+ parseTextSync: (text: string, options?: XMLLoaderOptions) => parseWMSLayerDescription(text, options)
24
24
  };
25
25
 
26
26
  export const _typecheckWMSFeatureInfoLoader: LoaderWithParser = WMSLayerDescriptionLoader;
@@ -1,6 +1,7 @@
1
1
  // loaders.gl, MIT license
2
2
 
3
- import type {LoaderWithParser, LoaderOptions} from '@loaders.gl/loader-utils';
3
+ import type {LoaderWithParser} from '@loaders.gl/loader-utils';
4
+ import type {XMLLoaderOptions} from '@loaders.gl/xml';
4
5
  // import type {WMTSCapabilities} from './lib/wmts/parse-wmts-capabilities';
5
6
  import {parseWMTSCapabilities} from './lib/wmts/parse-wmts-capabilities';
6
7
 
@@ -10,7 +11,7 @@ const VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';
10
11
 
11
12
  // export type {WMTSCapabilities};
12
13
 
13
- export type WMTSLoaderOptions = LoaderOptions & {
14
+ export type WMTSLoaderOptions = XMLLoaderOptions & {
14
15
  wmts?: {};
15
16
  };
16
17
 
@@ -1,21 +1,32 @@
1
1
  // loaders.gl, MIT license
2
2
 
3
- import type {LoaderWithParser, LoaderOptions} from '@loaders.gl/loader-utils';
4
- import type {WMSCapabilities} from './lib/parsers/wms/parse-wms-capabilities';
3
+ import type {LoaderWithParser} from '@loaders.gl/loader-utils';
4
+ import type {XMLLoaderOptions} from '@loaders.gl/xml';
5
5
  import {parseWMSCapabilities} from './lib/parsers/wms/parse-wms-capabilities';
6
6
 
7
7
  // __VERSION__ is injected by babel-plugin-version-inline
8
8
  // @ts-ignore TS2304: Cannot find name '__VERSION__'.
9
9
  const VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';
10
10
 
11
- // Parsed data type
12
- export type {WMSCapabilities};
13
-
14
- export type WMSLoaderOptions = LoaderOptions & {
11
+ // Parsed data types
12
+ export type {
13
+ WMSCapabilities,
14
+ WMSLayer,
15
+ WMSBoundingBox,
16
+ WMSDimension,
17
+ WMSRequest,
18
+ WMSExceptions
19
+ } from './lib/parsers/wms/parse-wms-capabilities';
20
+
21
+ export type WMSCapabilitiesLoaderOptions = XMLLoaderOptions & {
15
22
  wms?: {
16
23
  /** Add inherited layer information to sub layers */
17
24
  inheritedLayerProps?: boolean;
18
- /** Whether to include "raw" XML-derived JSON */
25
+ /** Include the "raw" JSON (parsed but untyped, unprocessed XML). May contain additional fields */
26
+ includeRawData?: boolean;
27
+ /** Include the original XML document text. May contain additional information. */
28
+ includeXMLText?: boolean;
29
+ /** @deprecated Use options.includeRawData` */
19
30
  raw?: boolean;
20
31
  };
21
32
  };
@@ -36,9 +47,11 @@ export const WMSCapabilitiesLoader = {
36
47
  options: {
37
48
  wms: {}
38
49
  },
39
- parse: async (arrayBuffer: ArrayBuffer, options?: WMSLoaderOptions) =>
50
+ parse: async (arrayBuffer: ArrayBuffer, options?: WMSCapabilitiesLoaderOptions) =>
51
+ // TODO pass in XML options
40
52
  parseWMSCapabilities(new TextDecoder().decode(arrayBuffer), options?.wms),
41
- parseTextSync: (text: string, options?: WMSLoaderOptions) =>
53
+ parseTextSync: (text: string, options?: WMSCapabilitiesLoaderOptions) =>
54
+ // TODO pass in XML options
42
55
  parseWMSCapabilities(text, options?.wms)
43
56
  };
44
57