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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (60) hide show
  1. package/dist/dist.min.js +25 -0
  2. package/dist/es5/csw-capabilities-loader.js +1 -1
  3. package/dist/es5/csw-capabilities-loader.js.map +1 -1
  4. package/dist/es5/csw-domain-loader.js +1 -1
  5. package/dist/es5/csw-domain-loader.js.map +1 -1
  6. package/dist/es5/csw-records-loader.js +1 -1
  7. package/dist/es5/csw-records-loader.js.map +1 -1
  8. package/dist/es5/gml-loader.js +1 -1
  9. package/dist/es5/gml-loader.js.map +1 -1
  10. package/dist/es5/index.js.map +1 -1
  11. package/dist/es5/lerc-loader.js +1 -1
  12. package/dist/es5/lerc-loader.js.map +1 -1
  13. package/dist/es5/lib/parsers/wms/parse-wms-capabilities.js +33 -0
  14. package/dist/es5/lib/parsers/wms/parse-wms-capabilities.js.map +1 -1
  15. package/dist/es5/lib/sources/image-source.js.map +1 -1
  16. package/dist/es5/wip/wcs-capabilities-loader.js +1 -1
  17. package/dist/es5/wip/wcs-capabilities-loader.js.map +1 -1
  18. package/dist/es5/wip/wfs-capabilities-loader.js +1 -1
  19. package/dist/es5/wip/wfs-capabilities-loader.js.map +1 -1
  20. package/dist/es5/wip/wmts-capabilities-loader.js +1 -1
  21. package/dist/es5/wip/wmts-capabilities-loader.js.map +1 -1
  22. package/dist/es5/wms-capabilities-loader.js +1 -1
  23. package/dist/es5/wms-capabilities-loader.js.map +1 -1
  24. package/dist/es5/wms-error-loader.js +1 -1
  25. package/dist/es5/wms-error-loader.js.map +1 -1
  26. package/dist/esm/csw-capabilities-loader.js +1 -1
  27. package/dist/esm/csw-capabilities-loader.js.map +1 -1
  28. package/dist/esm/csw-domain-loader.js +1 -1
  29. package/dist/esm/csw-domain-loader.js.map +1 -1
  30. package/dist/esm/csw-records-loader.js +1 -1
  31. package/dist/esm/csw-records-loader.js.map +1 -1
  32. package/dist/esm/gml-loader.js +1 -1
  33. package/dist/esm/gml-loader.js.map +1 -1
  34. package/dist/esm/index.js.map +1 -1
  35. package/dist/esm/lerc-loader.js +1 -1
  36. package/dist/esm/lerc-loader.js.map +1 -1
  37. package/dist/esm/lib/parsers/wms/parse-wms-capabilities.js +33 -0
  38. package/dist/esm/lib/parsers/wms/parse-wms-capabilities.js.map +1 -1
  39. package/dist/esm/lib/sources/image-source.js.map +1 -1
  40. package/dist/esm/wip/wcs-capabilities-loader.js +1 -1
  41. package/dist/esm/wip/wcs-capabilities-loader.js.map +1 -1
  42. package/dist/esm/wip/wfs-capabilities-loader.js +1 -1
  43. package/dist/esm/wip/wfs-capabilities-loader.js.map +1 -1
  44. package/dist/esm/wip/wmts-capabilities-loader.js +1 -1
  45. package/dist/esm/wip/wmts-capabilities-loader.js.map +1 -1
  46. package/dist/esm/wms-capabilities-loader.js +1 -1
  47. package/dist/esm/wms-capabilities-loader.js.map +1 -1
  48. package/dist/esm/wms-error-loader.js +1 -1
  49. package/dist/esm/wms-error-loader.js.map +1 -1
  50. package/dist/index.d.ts +1 -1
  51. package/dist/index.d.ts.map +1 -1
  52. package/dist/lib/parsers/wms/parse-wms-capabilities.d.ts +24 -0
  53. package/dist/lib/parsers/wms/parse-wms-capabilities.d.ts.map +1 -1
  54. package/dist/lib/parsers/wms/parse-wms-capabilities.js +32 -0
  55. package/dist/lib/sources/image-source.d.ts +1 -1
  56. package/dist/lib/sources/image-source.d.ts.map +1 -1
  57. package/package.json +6 -6
  58. package/src/index.ts +1 -1
  59. package/src/lib/parsers/wms/parse-wms-capabilities.ts +64 -0
  60. package/src/lib/sources/image-source.ts +3 -1
@@ -1 +1 @@
1
- {"version":3,"file":"parse-wms-capabilities.d.ts","sourceRoot":"","sources":["../../../../src/lib/parsers/wms/parse-wms-capabilities.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"parse-wms-capabilities.d.ts","sourceRoot":"","sources":["../../../../src/lib/parsers/wms/parse-wms-capabilities.ts"],"names":[],"mappings":"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"}
@@ -114,6 +114,12 @@ function extractLayer(xmlLayer) {
114
114
  if (boundingBoxes && boundingBoxes.length > 0) {
115
115
  layer.boundingBoxes = boundingBoxes;
116
116
  }
117
+ // Extract dimensions
118
+ const xmlDimensions = (0, parse_xml_helpers_1.getXMLArray)(xmlLayer?.Dimension);
119
+ const dimensions = xmlDimensions.map((xml) => extractDimension(xml));
120
+ if (dimensions.length) {
121
+ layer.dimensions = dimensions;
122
+ }
117
123
  if (xmlLayer?.opaque) {
118
124
  layer.opaque = (0, parse_xml_helpers_1.getXMLBoolean)(xmlLayer?.opaque);
119
125
  }
@@ -180,6 +186,32 @@ function extractWMSBoundingBox(xmlBoundingBox) {
180
186
  }
181
187
  return boundingBox;
182
188
  }
189
+ /**
190
+ * Extracts optional WMS Dimension layer field
191
+ * @param xmlDimension
192
+ * @example <Dimension name="time" units="ISO8601" default="2018-01-01" nearestValue="0">2001-01-01/2018-01-01/P1Y</Dimension>
193
+ * @see https://mapserver.org/ogc/wms_dimension.html
194
+ */
195
+ function extractDimension(xmlDimension) {
196
+ const { name, units, value: extent } = xmlDimension;
197
+ const dimension = { name, units, extent };
198
+ if (xmlDimension.unitSymbol) {
199
+ dimension.unitSymbol = xmlDimension.unitSymbol;
200
+ }
201
+ if (xmlDimension.default) {
202
+ dimension.defaultValue = xmlDimension.default;
203
+ }
204
+ if (xmlDimension.multipleValues) {
205
+ dimension.multipleValues = (0, parse_xml_helpers_1.getXMLBoolean)(xmlDimension.multipleValues);
206
+ }
207
+ if (xmlDimension.nearestValue) {
208
+ dimension.nearestValue = (0, parse_xml_helpers_1.getXMLBoolean)(xmlDimension.nearestValue);
209
+ }
210
+ if (xmlDimension.current) {
211
+ dimension.current = (0, parse_xml_helpers_1.getXMLBoolean)(xmlDimension.current);
212
+ }
213
+ return dimension;
214
+ }
183
215
  /** Traverse layers and inject missing props from parents */
184
216
  // eslint-disable-next-line complexity
185
217
  function addInheritedLayerProps(layer, parent) {
@@ -63,7 +63,7 @@ export type ImageSourceProps = DataSourceProps;
63
63
  * @note
64
64
  * - If geospatial, bounding box is expected to be in web mercator coordinates
65
65
  */
66
- export declare abstract class ImageSource<PropsT extends ImageSourceProps> extends DataSource<PropsT> {
66
+ export declare abstract class ImageSource<PropsT extends ImageSourceProps = ImageSourceProps> extends DataSource<PropsT> {
67
67
  abstract getMetadata(): Promise<ImageSourceMetadata>;
68
68
  abstract getImage(parameters: GetImageParameters): Promise<ImageType>;
69
69
  }
@@ -1 +1 @@
1
- {"version":3,"file":"image-source.d.ts","sourceRoot":"","sources":["../../../src/lib/sources/image-source.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,oBAAoB,CAAC;AAClD,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,eAAe,CAAC;AACnD,OAAO,EAAC,UAAU,EAAC,MAAM,eAAe,CAAC;AAEzC;;;;;GAKG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,EAAE,gBAAgB,EAAE,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;IACf,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/C,MAAM,CAAC,EAAE,gBAAgB,EAAE,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,uBAAuB;IACvB,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC1B,cAAc;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,8CAA8C;IAC9C,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,oCAAoC;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,aAAa;IACb,MAAM,EAAE,MAAM,CAAC;IACf,+CAA+C;IAC/C,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,4CAA4C;IAC5C,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB,CAAC;AAGF,MAAM,MAAM,YAAY,GAAG;IACzB,uBAAuB;IACvB,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC1B,cAAc;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,8CAA8C;IAC9C,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;CACxC,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,oCAAoC;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,aAAa;IACb,MAAM,EAAE,MAAM,CAAC;IACf,+CAA+C;IAC/C,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,4CAA4C;IAC5C,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG,eAAe,CAAC;AAE/C;;;;GAIG;AACH,8BAAsB,WAAW,CAAC,MAAM,SAAS,gBAAgB,CAAE,SAAQ,UAAU,CAAC,MAAM,CAAC;IAC3F,QAAQ,CAAC,WAAW,IAAI,OAAO,CAAC,mBAAmB,CAAC;IACpD,QAAQ,CAAC,QAAQ,CAAC,UAAU,EAAE,kBAAkB,GAAG,OAAO,CAAC,SAAS,CAAC;CACtE"}
1
+ {"version":3,"file":"image-source.d.ts","sourceRoot":"","sources":["../../../src/lib/sources/image-source.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,oBAAoB,CAAC;AAClD,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,eAAe,CAAC;AACnD,OAAO,EAAC,UAAU,EAAC,MAAM,eAAe,CAAC;AAEzC;;;;;GAKG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,EAAE,gBAAgB,EAAE,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;IACf,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/C,MAAM,CAAC,EAAE,gBAAgB,EAAE,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,uBAAuB;IACvB,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC1B,cAAc;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,8CAA8C;IAC9C,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,oCAAoC;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,aAAa;IACb,MAAM,EAAE,MAAM,CAAC;IACf,+CAA+C;IAC/C,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,4CAA4C;IAC5C,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB,CAAC;AAGF,MAAM,MAAM,YAAY,GAAG;IACzB,uBAAuB;IACvB,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC1B,cAAc;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,8CAA8C;IAC9C,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;CACxC,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,oCAAoC;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,aAAa;IACb,MAAM,EAAE,MAAM,CAAC;IACf,+CAA+C;IAC/C,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,4CAA4C;IAC5C,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG,eAAe,CAAC;AAE/C;;;;GAIG;AACH,8BAAsB,WAAW,CAC/B,MAAM,SAAS,gBAAgB,GAAG,gBAAgB,CAClD,SAAQ,UAAU,CAAC,MAAM,CAAC;IAC1B,QAAQ,CAAC,WAAW,IAAI,OAAO,CAAC,mBAAmB,CAAC;IACpD,QAAQ,CAAC,QAAQ,CAAC,UAAU,EAAE,kBAAkB,GAAG,OAAO,CAAC,SAAS,CAAC;CACtE"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@loaders.gl/wms",
3
- "version": "3.4.0-alpha.4",
3
+ "version": "3.4.0",
4
4
  "description": "Framework-independent loaders for the WMS (Web Map Service) standard",
5
5
  "license": "MIT",
6
6
  "publishConfig": {
@@ -39,10 +39,10 @@
39
39
  },
40
40
  "dependencies": {
41
41
  "@babel/runtime": "^7.3.1",
42
- "@loaders.gl/images": "3.4.0-alpha.4",
43
- "@loaders.gl/loader-utils": "3.4.0-alpha.4",
44
- "@loaders.gl/schema": "3.4.0-alpha.4",
45
- "@loaders.gl/xml": "3.4.0-alpha.4",
42
+ "@loaders.gl/images": "3.4.0",
43
+ "@loaders.gl/loader-utils": "3.4.0",
44
+ "@loaders.gl/schema": "3.4.0",
45
+ "@loaders.gl/xml": "3.4.0",
46
46
  "@turf/rewind": "^5.1.5",
47
47
  "deep-strict-equal": "^0.2.0",
48
48
  "lerc": "^4.0.1"
@@ -50,5 +50,5 @@
50
50
  "devDependencies": {
51
51
  "xmldom": "0.6.0"
52
52
  },
53
- "gitHead": "f039a523df8b908a91f26c5ba8c4cfc1924b6140"
53
+ "gitHead": "63854c9c521112108239e9c23fd6accbe6d6e380"
54
54
  }
package/src/index.ts CHANGED
@@ -49,8 +49,8 @@ export {GMLLoader as _GMLLoader} from './gml-loader';
49
49
 
50
50
  // EXPERIMENTAL: DATA SOURCES
51
51
 
52
- export type {ImageSourceMetadata} from './lib/sources/image-source';
53
52
  export type {ImageType} from '@loaders.gl/images';
53
+ export type {ImageSourceProps, ImageSourceMetadata} from './lib/sources/image-source';
54
54
  export {ImageSource} from './lib/sources/image-source';
55
55
 
56
56
  export type {ImageServiceType} from './lib/create-image-source';
@@ -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. */
@@ -258,6 +285,13 @@ function extractLayer(xmlLayer: any): WMSLayer {
258
285
  layer.boundingBoxes = boundingBoxes;
259
286
  }
260
287
 
288
+ // Extract dimensions
289
+ const xmlDimensions = getXMLArray(xmlLayer?.Dimension);
290
+ const dimensions = xmlDimensions.map((xml) => extractDimension(xml));
291
+ if (dimensions.length) {
292
+ layer.dimensions = dimensions;
293
+ }
294
+
261
295
  if (xmlLayer?.opaque) {
262
296
  layer.opaque = getXMLBoolean(xmlLayer?.opaque);
263
297
  }
@@ -339,6 +373,36 @@ function extractWMSBoundingBox(xmlBoundingBox: any): WMSBoundingBox {
339
373
  return boundingBox;
340
374
  }
341
375
 
376
+ /**
377
+ * Extracts optional WMS Dimension layer field
378
+ * @param xmlDimension
379
+ * @example <Dimension name="time" units="ISO8601" default="2018-01-01" nearestValue="0">2001-01-01/2018-01-01/P1Y</Dimension>
380
+ * @see https://mapserver.org/ogc/wms_dimension.html
381
+ */
382
+ function extractDimension(xmlDimension: any): WMSDimension {
383
+ const {name, units, value: extent} = xmlDimension;
384
+
385
+ const dimension: WMSDimension = {name, units, extent};
386
+
387
+ if (xmlDimension.unitSymbol) {
388
+ dimension.unitSymbol = xmlDimension.unitSymbol;
389
+ }
390
+ if (xmlDimension.default) {
391
+ dimension.defaultValue = xmlDimension.default;
392
+ }
393
+ if (xmlDimension.multipleValues) {
394
+ dimension.multipleValues = getXMLBoolean(xmlDimension.multipleValues);
395
+ }
396
+ if (xmlDimension.nearestValue) {
397
+ dimension.nearestValue = getXMLBoolean(xmlDimension.nearestValue);
398
+ }
399
+ if (xmlDimension.current) {
400
+ dimension.current = getXMLBoolean(xmlDimension.current);
401
+ }
402
+
403
+ return dimension;
404
+ }
405
+
342
406
  /** Traverse layers and inject missing props from parents */
343
407
  // eslint-disable-next-line complexity
344
408
  function addInheritedLayerProps(layer: WMSLayer, parent: WMSLayer | null): void {
@@ -74,7 +74,9 @@ export type ImageSourceProps = DataSourceProps;
74
74
  * @note
75
75
  * - If geospatial, bounding box is expected to be in web mercator coordinates
76
76
  */
77
- export abstract class ImageSource<PropsT extends ImageSourceProps> extends DataSource<PropsT> {
77
+ export abstract class ImageSource<
78
+ PropsT extends ImageSourceProps = ImageSourceProps
79
+ > extends DataSource<PropsT> {
78
80
  abstract getMetadata(): Promise<ImageSourceMetadata>;
79
81
  abstract getImage(parameters: GetImageParameters): Promise<ImageType>;
80
82
  }