@loaders.gl/wms 3.4.13 → 3.4.15

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 (94) hide show
  1. package/dist/dist.min.js +0 -7
  2. package/dist/es5/bundle.js +1 -1
  3. package/dist/es5/bundle.js.map +1 -1
  4. package/dist/es5/csw-capabilities-loader.js +5 -26
  5. package/dist/es5/csw-capabilities-loader.js.map +1 -1
  6. package/dist/es5/csw-domain-loader.js +5 -26
  7. package/dist/es5/csw-domain-loader.js.map +1 -1
  8. package/dist/es5/csw-records-loader.js +4 -25
  9. package/dist/es5/csw-records-loader.js.map +1 -1
  10. package/dist/es5/gml-loader.js +5 -26
  11. package/dist/es5/gml-loader.js.map +1 -1
  12. package/dist/es5/index.js +16 -16
  13. package/dist/es5/lerc-loader.js +10 -47
  14. package/dist/es5/lerc-loader.js.map +1 -1
  15. package/dist/es5/lib/create-image-source.js +8 -19
  16. package/dist/es5/lib/create-image-source.js.map +1 -1
  17. package/dist/es5/lib/parsers/csw/parse-csw-capabilities.js +7 -9
  18. package/dist/es5/lib/parsers/csw/parse-csw-capabilities.js.map +1 -1
  19. package/dist/es5/lib/parsers/csw/parse-csw-domain.js +11 -25
  20. package/dist/es5/lib/parsers/csw/parse-csw-domain.js.map +1 -1
  21. package/dist/es5/lib/parsers/csw/parse-csw-records.js +21 -47
  22. package/dist/es5/lib/parsers/csw/parse-csw-records.js.map +1 -1
  23. package/dist/es5/lib/parsers/csw/parse-exception-report.js +2 -2
  24. package/dist/es5/lib/parsers/csw/parse-exception-report.js.map +1 -1
  25. package/dist/es5/lib/parsers/gml/deep-strict-equal.js +9 -11
  26. package/dist/es5/lib/parsers/gml/deep-strict-equal.js.map +1 -1
  27. package/dist/es5/lib/parsers/gml/parse-gml.js +79 -130
  28. package/dist/es5/lib/parsers/gml/parse-gml.js.map +1 -1
  29. package/dist/es5/lib/parsers/wms/parse-wms-capabilities.js +69 -126
  30. package/dist/es5/lib/parsers/wms/parse-wms-capabilities.js.map +1 -1
  31. package/dist/es5/lib/parsers/wms/parse-wms-error.js +3 -3
  32. package/dist/es5/lib/parsers/wms/parse-wms-error.js.map +1 -1
  33. package/dist/es5/lib/parsers/wms/parse-wms-features.js +5 -7
  34. package/dist/es5/lib/parsers/wms/parse-wms-features.js.map +1 -1
  35. package/dist/es5/lib/parsers/wms/parse-wms-layer-description.js +1 -1
  36. package/dist/es5/lib/parsers/wms/parse-wms-layer-description.js.map +1 -1
  37. package/dist/es5/lib/parsers/xml/parse-xml-helpers.js +6 -10
  38. package/dist/es5/lib/parsers/xml/parse-xml-helpers.js.map +1 -1
  39. package/dist/es5/lib/services/arcgis/arcgis-image-service.js +48 -146
  40. package/dist/es5/lib/services/arcgis/arcgis-image-service.js.map +1 -1
  41. package/dist/es5/lib/services/arcgis/arcgis-server.js +26 -98
  42. package/dist/es5/lib/services/arcgis/arcgis-server.js.map +1 -1
  43. package/dist/es5/lib/services/generic/image-service.js +32 -103
  44. package/dist/es5/lib/services/generic/image-service.js.map +1 -1
  45. package/dist/es5/lib/services/ogc/csw-service.js +134 -334
  46. package/dist/es5/lib/services/ogc/csw-service.js.map +1 -1
  47. package/dist/es5/lib/services/ogc/wms-service.js +218 -494
  48. package/dist/es5/lib/services/ogc/wms-service.js.map +1 -1
  49. package/dist/es5/lib/sources/data-source.js +28 -43
  50. package/dist/es5/lib/sources/data-source.js.map +1 -1
  51. package/dist/es5/lib/sources/image-source.js +1 -17
  52. package/dist/es5/lib/sources/image-source.js.map +1 -1
  53. package/dist/es5/lib/sources/tile-source.js +1 -17
  54. package/dist/es5/lib/sources/tile-source.js.map +1 -1
  55. package/dist/es5/lib/sources/utils/utils.js +11 -19
  56. package/dist/es5/lib/sources/utils/utils.js.map +1 -1
  57. package/dist/es5/wip/arcgis-feature-service.js +16 -23
  58. package/dist/es5/wip/arcgis-feature-service.js.map +1 -1
  59. package/dist/es5/wip/lib/wcs/parse-wcs-capabilities.js +7 -9
  60. package/dist/es5/wip/lib/wcs/parse-wcs-capabilities.js.map +1 -1
  61. package/dist/es5/wip/lib/wfs/parse-wfs-capabilities.js +7 -9
  62. package/dist/es5/wip/lib/wfs/parse-wfs-capabilities.js.map +1 -1
  63. package/dist/es5/wip/lib/wmts/parse-wmts-capabilities.js +7 -9
  64. package/dist/es5/wip/lib/wmts/parse-wmts-capabilities.js.map +1 -1
  65. package/dist/es5/wip/wcs-capabilities-loader.js +5 -26
  66. package/dist/es5/wip/wcs-capabilities-loader.js.map +1 -1
  67. package/dist/es5/wip/wfs-capabilities-loader.js +5 -26
  68. package/dist/es5/wip/wfs-capabilities-loader.js.map +1 -1
  69. package/dist/es5/wip/wms-feature-info-loader.js +6 -29
  70. package/dist/es5/wip/wms-feature-info-loader.js.map +1 -1
  71. package/dist/es5/wip/wms-layer-description-loader.js +6 -29
  72. package/dist/es5/wip/wms-layer-description-loader.js.map +1 -1
  73. package/dist/es5/wip/wmts-capabilities-loader.js +5 -26
  74. package/dist/es5/wip/wmts-capabilities-loader.js.map +1 -1
  75. package/dist/es5/wms-capabilities-loader.js +5 -26
  76. package/dist/es5/wms-capabilities-loader.js.map +1 -1
  77. package/dist/es5/wms-error-loader.js +13 -36
  78. package/dist/es5/wms-error-loader.js.map +1 -1
  79. package/dist/esm/csw-capabilities-loader.js +1 -1
  80. package/dist/esm/csw-domain-loader.js +1 -1
  81. package/dist/esm/csw-records-loader.js +1 -1
  82. package/dist/esm/gml-loader.js +1 -1
  83. package/dist/esm/lerc-loader.js +1 -1
  84. package/dist/esm/lib/services/ogc/wms-service.js +0 -1
  85. package/dist/esm/lib/services/ogc/wms-service.js.map +1 -1
  86. package/dist/esm/wip/wcs-capabilities-loader.js +1 -1
  87. package/dist/esm/wip/wfs-capabilities-loader.js +1 -1
  88. package/dist/esm/wip/wmts-capabilities-loader.js +1 -1
  89. package/dist/esm/wms-capabilities-loader.js +1 -1
  90. package/dist/esm/wms-error-loader.js +1 -1
  91. package/dist/lib/services/ogc/wms-service.d.ts +0 -75
  92. package/dist/lib/services/ogc/wms-service.d.ts.map +1 -1
  93. package/package.json +6 -6
  94. package/src/lib/services/ogc/wms-service.ts +0 -9
@@ -17,18 +17,9 @@ exports.parsePos = parsePos;
17
17
  exports.parsePosList = parsePosList;
18
18
  exports.parseRing = parseRing;
19
19
  exports.parseSurface = parseSurface;
20
- var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
21
- var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
22
- var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
23
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
24
20
  var _xml = require("@loaders.gl/xml");
25
21
  var _deepStrictEqual = require("./deep-strict-equal");
26
22
  var _rewind = _interopRequireDefault(require("@turf/rewind"));
27
- function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
28
- function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
29
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
30
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
31
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
32
23
  function noTransform() {
33
24
  for (var _len = arguments.length, coords = new Array(_len), _key = 0; _key < _len; _key++) {
34
25
  coords[_key] = arguments[_key];
@@ -36,21 +27,19 @@ function noTransform() {
36
27
  return coords;
37
28
  }
38
29
  function parseGML(text, options) {
39
- var parsedXML = _xml.XMLLoader.parseTextSync(text, options);
40
- options = _objectSpread({
30
+ const parsedXML = _xml.XMLLoader.parseTextSync(text, options);
31
+ options = {
41
32
  transformCoords: noTransform,
42
- stride: 2
43
- }, options);
44
- var context = createChildContext(parsedXML, options, {});
33
+ stride: 2,
34
+ ...options
35
+ };
36
+ const context = createChildContext(parsedXML, options, {});
45
37
  return parseGMLToGeometry(parsedXML, options, context);
46
38
  }
47
39
  function parseGMLToGeometry(inputXML, options, context) {
48
- var childContext = createChildContext(inputXML, options, context);
49
- var geometry = null;
50
- var _getFirstKeyValue = getFirstKeyValue(inputXML),
51
- _getFirstKeyValue2 = (0, _slicedToArray2.default)(_getFirstKeyValue, 2),
52
- name = _getFirstKeyValue2[0],
53
- xml = _getFirstKeyValue2[1];
40
+ const childContext = createChildContext(inputXML, options, context);
41
+ let geometry = null;
42
+ const [name, xml] = getFirstKeyValue(inputXML);
54
43
  switch (name) {
55
44
  case 'gml:LineString':
56
45
  geometry = {
@@ -85,58 +74,55 @@ function parseGMLToGeometry(inputXML, options, context) {
85
74
  });
86
75
  }
87
76
  function parseCoords(s, options, context) {
88
- var stride = context.srsDimension || options.stride || 2;
89
- var coords = s.replace(/\s+/g, ' ').trim().split(' ');
77
+ const stride = context.srsDimension || options.stride || 2;
78
+ const coords = s.replace(/\s+/g, ' ').trim().split(' ');
90
79
  if (coords.length === 0 || coords.length % stride !== 0) {
91
80
  throw new Error("invalid coordinates list (stride ".concat(stride, ")"));
92
81
  }
93
- var points = [];
94
- for (var i = 0; i < coords.length - 1; i += stride) {
95
- var _options$transformCoo, _options$transformCoo2;
96
- var point = coords.slice(i, i + stride).map(parseFloat);
97
- points.push(((_options$transformCoo = options.transformCoords) === null || _options$transformCoo === void 0 ? void 0 : (_options$transformCoo2 = _options$transformCoo).call.apply(_options$transformCoo2, [options].concat((0, _toConsumableArray2.default)(point)))) || point);
82
+ const points = [];
83
+ for (let i = 0; i < coords.length - 1; i += stride) {
84
+ var _options$transformCoo;
85
+ const point = coords.slice(i, i + stride).map(parseFloat);
86
+ points.push(((_options$transformCoo = options.transformCoords) === null || _options$transformCoo === void 0 ? void 0 : _options$transformCoo.call(options, ...point)) || point);
98
87
  }
99
88
  return points;
100
89
  }
101
90
  function parsePosList(xml, options, context) {
102
- var childContext = createChildContext(xml, options, context);
103
- var coords = textOf(xml);
91
+ const childContext = createChildContext(xml, options, context);
92
+ const coords = textOf(xml);
104
93
  if (!coords) {
105
94
  throw new Error('invalid gml:posList element');
106
95
  }
107
96
  return parseCoords(coords, options, childContext);
108
97
  }
109
98
  function parsePos(xml, options, context) {
110
- var childContext = createChildContext(xml, options, context);
111
- var coords = textOf(xml);
99
+ const childContext = createChildContext(xml, options, context);
100
+ const coords = textOf(xml);
112
101
  if (!coords) {
113
102
  throw new Error('invalid gml:pos element');
114
103
  }
115
- var points = parseCoords(coords, options, childContext);
104
+ const points = parseCoords(coords, options, childContext);
116
105
  if (points.length !== 1) {
117
106
  throw new Error('gml:pos must have 1 point');
118
107
  }
119
108
  return points[0];
120
109
  }
121
110
  function parsePoint(xml, options, context) {
122
- var childContext = createChildContext(xml, options, context);
123
- var pos = findIn(xml, 'gml:pos');
111
+ const childContext = createChildContext(xml, options, context);
112
+ const pos = findIn(xml, 'gml:pos');
124
113
  if (!pos) {
125
114
  throw new Error('invalid gml:Point element, expected a gml:pos subelement');
126
115
  }
127
116
  return parsePos(pos, options, childContext);
128
117
  }
129
118
  function parseLinearRingOrLineString(xml, options, context) {
130
- var childContext = createChildContext(xml, options, context);
131
- var points = [];
132
- var posList = findIn(xml, 'gml:posList');
119
+ const childContext = createChildContext(xml, options, context);
120
+ let points = [];
121
+ const posList = findIn(xml, 'gml:posList');
133
122
  if (posList) {
134
123
  points = parsePosList(posList, options, childContext);
135
124
  } else {
136
- for (var _i = 0, _Object$entries = Object.entries(xml); _i < _Object$entries.length; _i++) {
137
- var _Object$entries$_i = (0, _slicedToArray2.default)(_Object$entries[_i], 2),
138
- childName = _Object$entries$_i[0],
139
- childXML = _Object$entries$_i[1];
125
+ for (const [childName, childXML] of Object.entries(xml)) {
140
126
  switch (childName) {
141
127
  case 'gml:Point':
142
128
  points.push(parsePoint(childXML, options, childContext));
@@ -155,20 +141,17 @@ function parseLinearRingOrLineString(xml, options, context) {
155
141
  return points;
156
142
  }
157
143
  function parseCurveSegments(xml, options, context) {
158
- var points = [];
159
- for (var _i2 = 0, _Object$entries2 = Object.entries(xml); _i2 < _Object$entries2.length; _i2++) {
160
- var _Object$entries2$_i = (0, _slicedToArray2.default)(_Object$entries2[_i2], 2),
161
- childName = _Object$entries2$_i[0],
162
- childXML = _Object$entries2$_i[1];
144
+ const points = [];
145
+ for (const [childName, childXML] of Object.entries(xml)) {
163
146
  switch (childName) {
164
147
  case 'gml:LineStringSegment':
165
- var points2 = parseLinearRingOrLineString(childXML, options, context);
166
- var end = points[points.length - 1];
167
- var start = points2[0];
148
+ const points2 = parseLinearRingOrLineString(childXML, options, context);
149
+ const end = points[points.length - 1];
150
+ const start = points2[0];
168
151
  if (end && start && (0, _deepStrictEqual.deepStrictEqual)(end, start)) {
169
152
  points2.shift();
170
153
  }
171
- points.push.apply(points, (0, _toConsumableArray2.default)(points2));
154
+ points.push(...points2);
172
155
  break;
173
156
  default:
174
157
  continue;
@@ -180,31 +163,28 @@ function parseCurveSegments(xml, options, context) {
180
163
  return points;
181
164
  }
182
165
  function parseRing(xml, options, context) {
183
- var childContext = createChildContext(xml, options, context);
184
- var points = [];
185
- for (var _i3 = 0, _Object$entries3 = Object.entries(xml); _i3 < _Object$entries3.length; _i3++) {
186
- var _Object$entries3$_i = (0, _slicedToArray2.default)(_Object$entries3[_i3], 2),
187
- childName = _Object$entries3$_i[0],
188
- childXML = _Object$entries3$_i[1];
166
+ const childContext = createChildContext(xml, options, context);
167
+ const points = [];
168
+ for (const [childName, childXML] of Object.entries(xml)) {
189
169
  switch (childName) {
190
170
  case 'gml:curveMember':
191
- var points2 = void 0;
192
- var lineString = findIn(childXML, 'gml:LineString');
171
+ let points2;
172
+ const lineString = findIn(childXML, 'gml:LineString');
193
173
  if (lineString) {
194
174
  points2 = parseLinearRingOrLineString(lineString, options, childContext);
195
175
  } else {
196
- var segments = findIn(childXML, 'gml:Curve', 'gml:segments');
176
+ const segments = findIn(childXML, 'gml:Curve', 'gml:segments');
197
177
  if (!segments) {
198
178
  throw new Error("invalid ".concat(childName, " element"));
199
179
  }
200
180
  points2 = parseCurveSegments(segments, options, childContext);
201
181
  }
202
- var end = points[points.length - 1];
203
- var start = points2[0];
182
+ const end = points[points.length - 1];
183
+ const start = points2[0];
204
184
  if (end && start && (0, _deepStrictEqual.deepStrictEqual)(end, start)) {
205
185
  points2.shift();
206
186
  }
207
- points.push.apply(points, (0, _toConsumableArray2.default)(points2));
187
+ points.push(...points2);
208
188
  break;
209
189
  }
210
190
  }
@@ -214,27 +194,24 @@ function parseRing(xml, options, context) {
214
194
  return points;
215
195
  }
216
196
  function parseExteriorOrInterior(xml, options, context) {
217
- var linearRing = findIn(xml, 'gml:LinearRing');
197
+ const linearRing = findIn(xml, 'gml:LinearRing');
218
198
  if (linearRing) {
219
199
  return parseLinearRingOrLineString(linearRing, options, context);
220
200
  }
221
- var ring = findIn(xml, 'gml:Ring');
201
+ const ring = findIn(xml, 'gml:Ring');
222
202
  if (!ring) {
223
203
  throw new Error("invalid ".concat(xml.name, " element"));
224
204
  }
225
205
  return parseRing(ring, options, context);
226
206
  }
227
207
  function parsePolygonOrRectangle(xml, options, context) {
228
- var childContext = createChildContext(xml, options, context);
229
- var exterior = findIn(xml, 'gml:exterior');
208
+ const childContext = createChildContext(xml, options, context);
209
+ const exterior = findIn(xml, 'gml:exterior');
230
210
  if (!exterior) {
231
211
  throw new Error("invalid ".concat(xml.name, " element"));
232
212
  }
233
- var pointLists = [parseExteriorOrInterior(exterior, options, childContext)];
234
- for (var _i4 = 0, _Object$entries4 = Object.entries(xml); _i4 < _Object$entries4.length; _i4++) {
235
- var _Object$entries4$_i = (0, _slicedToArray2.default)(_Object$entries4[_i4], 2),
236
- childName = _Object$entries4$_i[0],
237
- childXML = _Object$entries4$_i[1];
213
+ const pointLists = [parseExteriorOrInterior(exterior, options, childContext)];
214
+ for (const [childName, childXML] of Object.entries(xml)) {
238
215
  switch (childName) {
239
216
  case 'gml:interior':
240
217
  pointLists.push(parseExteriorOrInterior(childXML, options, childContext));
@@ -244,16 +221,13 @@ function parsePolygonOrRectangle(xml, options, context) {
244
221
  return pointLists;
245
222
  }
246
223
  function parseSurface(xml, options, context) {
247
- var childContext = createChildContext(xml, options, context);
248
- var patches = findIn(xml, 'gml:patches');
224
+ const childContext = createChildContext(xml, options, context);
225
+ const patches = findIn(xml, 'gml:patches');
249
226
  if (!patches) {
250
227
  throw new Error("invalid ".concat(xml.name, " element"));
251
228
  }
252
- var polygons = [];
253
- for (var _i5 = 0, _Object$entries5 = Object.entries(xml); _i5 < _Object$entries5.length; _i5++) {
254
- var _Object$entries5$_i = (0, _slicedToArray2.default)(_Object$entries5[_i5], 2),
255
- childName = _Object$entries5$_i[0],
256
- childXML = _Object$entries5$_i[1];
229
+ const polygons = [];
230
+ for (const [childName, childXML] of Object.entries(xml)) {
257
231
  switch (childName) {
258
232
  case 'gml:PolygonPatch':
259
233
  case 'gml:Rectangle':
@@ -269,22 +243,16 @@ function parseSurface(xml, options, context) {
269
243
  return polygons;
270
244
  }
271
245
  function parseCompositeSurface(xml, options, context) {
272
- var childContext = createChildContext(xml, options, context);
273
- var polygons = [];
274
- for (var _i6 = 0, _Object$entries6 = Object.entries(xml); _i6 < _Object$entries6.length; _i6++) {
275
- var _Object$entries6$_i = (0, _slicedToArray2.default)(_Object$entries6[_i6], 2),
276
- childName = _Object$entries6$_i[0],
277
- childXML = _Object$entries6$_i[1];
246
+ const childContext = createChildContext(xml, options, context);
247
+ const polygons = [];
248
+ for (const [childName, childXML] of Object.entries(xml)) {
278
249
  switch (childName) {
279
250
  case 'gml:surfaceMember':
280
251
  case 'gml:surfaceMembers':
281
- var _getFirstKeyValue3 = getFirstKeyValue(childXML),
282
- _getFirstKeyValue4 = (0, _slicedToArray2.default)(_getFirstKeyValue3, 2),
283
- c2Name = _getFirstKeyValue4[0],
284
- c2Xml = _getFirstKeyValue4[1];
252
+ const [c2Name, c2Xml] = getFirstKeyValue(childXML);
285
253
  switch (c2Name) {
286
254
  case 'gml:Surface':
287
- polygons.push.apply(polygons, (0, _toConsumableArray2.default)(parseSurface(c2Xml, options, childContext)));
255
+ polygons.push(...parseSurface(c2Xml, options, childContext));
288
256
  break;
289
257
  case 'gml:Polygon':
290
258
  polygons.push(parsePolygonOrRectangle(c2Xml, options, childContext));
@@ -299,39 +267,27 @@ function parseCompositeSurface(xml, options, context) {
299
267
  return polygons;
300
268
  }
301
269
  function parseMultiSurface(xml, options, context) {
302
- var el = xml;
303
- var surfaceMembers = findIn(xml, 'gml:LinearRing');
270
+ let el = xml;
271
+ const surfaceMembers = findIn(xml, 'gml:LinearRing');
304
272
  if (surfaceMembers) {
305
273
  el = surfaceMembers;
306
274
  }
307
- var polygons = [];
308
- for (var _i7 = 0, _Object$entries7 = Object.entries(el); _i7 < _Object$entries7.length; _i7++) {
309
- var _Object$entries7$_i = (0, _slicedToArray2.default)(_Object$entries7[_i7], 2),
310
- childName = _Object$entries7$_i[0],
311
- childXML = _Object$entries7$_i[1];
275
+ const polygons = [];
276
+ for (const [childName, childXML] of Object.entries(el)) {
312
277
  switch (childName) {
313
278
  case 'gml:Surface':
314
- var polygons2 = parseSurface(childXML, options, context);
315
- polygons.push.apply(polygons, (0, _toConsumableArray2.default)(polygons2));
279
+ const polygons2 = parseSurface(childXML, options, context);
280
+ polygons.push(...polygons2);
316
281
  break;
317
282
  case 'gml:surfaceMember':
318
- var polygons3 = parseSurfaceMember(childXML, options, context);
319
- polygons.push.apply(polygons, polygons3);
283
+ const polygons3 = parseSurfaceMember(childXML, options, context);
284
+ polygons.push(...polygons3);
320
285
  break;
321
286
  case 'gml:surfaceMembers':
322
- var polygonXML = findIn(childXML, 'gml:Polygon');
323
- var _iterator = _createForOfIteratorHelper(polygonXML),
324
- _step;
325
- try {
326
- for (_iterator.s(); !(_step = _iterator.n()).done;) {
327
- var surfaceMemberXML = _step.value;
328
- var _polygons = parseSurfaceMember(surfaceMemberXML, options, context);
329
- polygons.push.apply(polygons, _polygons);
330
- }
331
- } catch (err) {
332
- _iterator.e(err);
333
- } finally {
334
- _iterator.f();
287
+ const polygonXML = findIn(childXML, 'gml:Polygon');
288
+ for (const surfaceMemberXML of polygonXML) {
289
+ const polygons3 = parseSurfaceMember(surfaceMemberXML, options, context);
290
+ polygons.push(...polygons3);
335
291
  }
336
292
  break;
337
293
  }
@@ -342,10 +298,7 @@ function parseMultiSurface(xml, options, context) {
342
298
  return polygons;
343
299
  }
344
300
  function parseSurfaceMember(xml, options, context) {
345
- var _getFirstKeyValue5 = getFirstKeyValue(xml),
346
- _getFirstKeyValue6 = (0, _slicedToArray2.default)(_getFirstKeyValue5, 2),
347
- childName = _getFirstKeyValue6[0],
348
- childXml = _getFirstKeyValue6[1];
301
+ const [childName, childXml] = getFirstKeyValue(xml);
349
302
  switch (childName) {
350
303
  case 'gml:CompositeSurface':
351
304
  return parseCompositeSurface(childXml, options, context);
@@ -363,13 +316,12 @@ function textOf(el) {
363
316
  return el;
364
317
  }
365
318
  function findIn(root) {
366
- var el = root;
319
+ let el = root;
367
320
  for (var _len2 = arguments.length, tags = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
368
321
  tags[_key2 - 1] = arguments[_key2];
369
322
  }
370
- for (var _i8 = 0, _tags = tags; _i8 < _tags.length; _i8++) {
371
- var tag = _tags[_i8];
372
- var child = el[tag];
323
+ for (const tag of tags) {
324
+ const child = el[tag];
373
325
  if (!child) {
374
326
  return null;
375
327
  }
@@ -378,24 +330,21 @@ function findIn(root) {
378
330
  return el;
379
331
  }
380
332
  function getFirstKeyValue(object) {
381
- if (object && (0, _typeof2.default)(object) === 'object') {
382
- for (var _i9 = 0, _Object$entries8 = Object.entries(object); _i9 < _Object$entries8.length; _i9++) {
383
- var _Object$entries8$_i = (0, _slicedToArray2.default)(_Object$entries8[_i9], 2),
384
- _key3 = _Object$entries8$_i[0],
385
- value = _Object$entries8$_i[1];
386
- return [_key3, value];
333
+ if (object && typeof object === 'object') {
334
+ for (const [key, value] of Object.entries(object)) {
335
+ return [key, value];
387
336
  }
388
337
  }
389
338
  return ['', null];
390
339
  }
391
340
  function createChildContext(xml, options, context) {
392
- var srsDimensionAttribute = xml.attributes && xml.attributes.srsDimension;
341
+ const srsDimensionAttribute = xml.attributes && xml.attributes.srsDimension;
393
342
  if (srsDimensionAttribute) {
394
- var srsDimension = parseInt(srsDimensionAttribute);
343
+ const srsDimension = parseInt(srsDimensionAttribute);
395
344
  if (Number.isNaN(srsDimension) || srsDimension <= 0) {
396
345
  throw new Error("invalid srsDimension attribute value \"".concat(srsDimensionAttribute, "\", expected a positive integer"));
397
346
  }
398
- var childContext = Object.create(context);
347
+ const childContext = Object.create(context);
399
348
  childContext.srsDimension = srsDimension;
400
349
  return childContext;
401
350
  }
@@ -1 +1 @@
1
- {"version":3,"file":"parse-gml.js","names":["_xml","require","_deepStrictEqual","_rewind","_interopRequireDefault","_createForOfIteratorHelper","o","allowArrayLike","it","Symbol","iterator","Array","isArray","_unsupportedIterableToArray","length","i","F","s","n","done","value","e","_e","f","TypeError","normalCompletion","didErr","err","call","step","next","_e2","return","minLen","_arrayLikeToArray","Object","prototype","toString","slice","constructor","name","from","test","arr","len","arr2","ownKeys","object","enumerableOnly","keys","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","arguments","source","forEach","key","_defineProperty2","default","getOwnPropertyDescriptors","defineProperties","defineProperty","noTransform","_len","coords","_key","parseGML","text","options","parsedXML","XMLLoader","parseTextSync","transformCoords","stride","context","createChildContext","parseGMLToGeometry","inputXML","childContext","geometry","_getFirstKeyValue","getFirstKeyValue","_getFirstKeyValue2","_slicedToArray2","xml","type","coordinates","parseLinearRingOrLineString","parsePolygonOrRectangle","parseSurface","parseMultiSurface","rewind","mutate","parseCoords","srsDimension","replace","trim","split","Error","concat","points","_options$transformCoo","_options$transformCoo2","point","map","parseFloat","_toConsumableArray2","parsePosList","textOf","parsePos","parsePoint","pos","findIn","posList","_i","_Object$entries","entries","_Object$entries$_i","childName","childXML","parseCurveSegments","_i2","_Object$entries2","_Object$entries2$_i","points2","end","start","deepStrictEqual","shift","parseRing","_i3","_Object$entries3","_Object$entries3$_i","lineString","segments","parseExteriorOrInterior","linearRing","ring","exterior","pointLists","_i4","_Object$entries4","_Object$entries4$_i","patches","polygons","_i5","_Object$entries5","_Object$entries5$_i","parseCompositeSurface","_i6","_Object$entries6","_Object$entries6$_i","_getFirstKeyValue3","_getFirstKeyValue4","c2Name","c2Xml","el","surfaceMembers","_i7","_Object$entries7","_Object$entries7$_i","polygons2","polygons3","parseSurfaceMember","polygonXML","_iterator","_step","surfaceMemberXML","_getFirstKeyValue5","_getFirstKeyValue6","childXml","root","_len2","tags","_key2","_i8","_tags","tag","child","_typeof2","_i9","_Object$entries8","_Object$entries8$_i","srsDimensionAttribute","attributes","parseInt","Number","isNaN","create"],"sources":["../../../../../src/lib/parsers/gml/parse-gml.ts"],"sourcesContent":["// loaders.gl, MIT license\n\n// Forked from https://github.com/derhuerst/parse-gml-polygon/blob/master/index.js\n// under ISC license\n\n/* eslint-disable no-continue, default-case */\n\nimport type {\n // GeoJSON,\n // Feature,\n // FeatureCollection,\n Geometry,\n Position\n // GeoJsonProperties,\n // Point,\n // MultiPoint,\n // LineString,\n // MultiLineString,\n // Polygon,\n // MultiPolygon,\n // GeometryCollection\n} from '@loaders.gl/schema';\n\nimport {XMLLoader} from '@loaders.gl/xml';\nimport {deepStrictEqual} from './deep-strict-equal';\nimport rewind from '@turf/rewind';\n\nfunction noTransform(...coords) {\n return coords;\n}\n\nexport type ParseGMLOptions = {\n transformCoords?: Function;\n stride?: 2 | 3 | 4;\n};\n\nexport type ParseGMLContext = {\n srsDimension?: number;\n [key: string]: any;\n};\n\n/**\n * Parses a typed data structure from raw XML for GML features\n * @note Error handlings is fairly weak\n */\nexport function parseGML(text: string, options) {\n // GeoJSON | null {\n const parsedXML = XMLLoader.parseTextSync(text, options);\n\n options = {transformCoords: noTransform, stride: 2, ...options};\n const context = createChildContext(parsedXML, options, {});\n\n return parseGMLToGeometry(parsedXML, options, context);\n}\n\n/** Parse a GeoJSON geometry from GML XML */\nexport function parseGMLToGeometry(\n inputXML: any,\n options: ParseGMLOptions,\n context: ParseGMLContext\n): Geometry | null {\n const childContext = createChildContext(inputXML, options, context);\n\n let geometry: Geometry | null = null;\n\n const [name, xml] = getFirstKeyValue(inputXML);\n\n switch (name) {\n // case 'gml:MultiPoint':\n // geometry = {\n // type: 'MultiPoint',\n // coordinates: parseMultiPoint(xml, options, childContext)\n // };\n // break;\n\n case 'gml:LineString':\n geometry = {\n type: 'LineString',\n coordinates: parseLinearRingOrLineString(xml, options, childContext)\n };\n break;\n\n // case 'gml:MultiLineString':\n // geometry = {\n // type: 'MultiLineString',\n // coordinates: parseMultiLineString(xml, options, childContext)\n // };\n // break;\n\n case 'gml:Polygon':\n case 'gml:Rectangle':\n geometry = {\n type: 'Polygon',\n coordinates: parsePolygonOrRectangle(xml, options, childContext)\n };\n break;\n case 'gml:Surface':\n geometry = {\n type: 'MultiPolygon',\n coordinates: parseSurface(xml, options, childContext)\n };\n break;\n case 'gml:MultiSurface':\n geometry = {\n type: 'MultiPolygon',\n coordinates: parseMultiSurface(xml, options, childContext)\n };\n break;\n\n default:\n return null;\n }\n\n // todo\n return rewind(geometry, {mutate: true});\n}\n\n/** Parse a list of coordinates from a string */\nfunction parseCoords(s: string, options: ParseGMLOptions, context: ParseGMLContext): Position[] {\n const stride = context.srsDimension || options.stride || 2;\n\n // Handle white space\n const coords = s.replace(/\\s+/g, ' ').trim().split(' ');\n\n if (coords.length === 0 || coords.length % stride !== 0) {\n throw new Error(`invalid coordinates list (stride ${stride})`);\n }\n\n const points: Position[] = [];\n for (let i = 0; i < coords.length - 1; i += stride) {\n const point = coords.slice(i, i + stride).map(parseFloat);\n points.push(options.transformCoords?.(...point) || point);\n }\n\n return points;\n}\n\nexport function parsePosList(xml: any, options: ParseGMLOptions, context: ParseGMLContext) {\n const childContext = createChildContext(xml, options, context);\n\n const coords = textOf(xml);\n if (!coords) {\n throw new Error('invalid gml:posList element');\n }\n\n return parseCoords(coords, options, childContext);\n}\n\nexport function parsePos(xml: any, options: ParseGMLOptions, context: ParseGMLContext): Position {\n const childContext = createChildContext(xml, options, context);\n\n const coords = textOf(xml);\n if (!coords) {\n throw new Error('invalid gml:pos element');\n }\n\n const points = parseCoords(coords, options, childContext);\n if (points.length !== 1) {\n throw new Error('gml:pos must have 1 point');\n }\n return points[0];\n}\n\nexport function parsePoint(xml: any, options: ParseGMLOptions, context: ParseGMLContext): number[] {\n const childContext = createChildContext(xml, options, context);\n\n // TODO AV: Parse other gml:Point options\n const pos = findIn(xml, 'gml:pos');\n if (!pos) {\n throw new Error('invalid gml:Point element, expected a gml:pos subelement');\n }\n return parsePos(pos, options, childContext);\n}\n\nexport function parseLinearRingOrLineString(\n xml: any,\n options: ParseGMLOptions,\n context: ParseGMLContext\n): Position[] {\n // or a LineStringSegment\n const childContext = createChildContext(xml, options, context);\n\n let points: Position[] = [];\n\n const posList = findIn(xml, 'gml:posList');\n if (posList) {\n points = parsePosList(posList, options, childContext);\n } else {\n for (const [childName, childXML] of Object.entries(xml)) {\n switch (childName) {\n case 'gml:Point':\n points.push(parsePoint(childXML, options, childContext));\n break;\n case 'gml:pos':\n points.push(parsePos(childXML, options, childContext));\n break;\n default:\n continue;\n }\n }\n }\n\n if (points.length === 0) {\n throw new Error(`${xml.name} must have > 0 points`);\n }\n return points;\n}\n\nexport function parseCurveSegments(\n xml: any,\n options: ParseGMLOptions,\n context: ParseGMLContext\n): Position[] {\n const points: Position[] = [];\n\n for (const [childName, childXML] of Object.entries(xml)) {\n switch (childName) {\n case 'gml:LineStringSegment':\n const points2 = parseLinearRingOrLineString(childXML, options, context);\n\n // remove overlapping\n const end = points[points.length - 1];\n const start = points2[0];\n if (end && start && deepStrictEqual(end, start)) {\n points2.shift();\n }\n\n points.push(...points2);\n break;\n default:\n continue;\n }\n }\n\n if (points.length === 0) {\n throw new Error('gml:Curve > gml:segments must have > 0 points');\n }\n return points;\n}\n\nexport function parseRing(\n xml: any,\n options: ParseGMLOptions,\n context: ParseGMLContext\n): Position[] {\n const childContext = createChildContext(xml, options, context);\n\n const points: Position[] = [];\n\n for (const [childName, childXML] of Object.entries(xml)) {\n switch (childName) {\n case 'gml:curveMember':\n let points2;\n\n const lineString = findIn(childXML, 'gml:LineString');\n if (lineString) {\n points2 = parseLinearRingOrLineString(lineString, options, childContext);\n } else {\n const segments = findIn(childXML, 'gml:Curve', 'gml:segments');\n if (!segments) {\n throw new Error(`invalid ${childName} element`);\n }\n\n points2 = parseCurveSegments(segments, options, childContext);\n }\n\n // remove overlapping\n const end = points[points.length - 1];\n const start = points2[0];\n if (end && start && deepStrictEqual(end, start)) {\n points2.shift();\n }\n\n points.push(...points2);\n\n break;\n }\n }\n\n if (points.length < 4) {\n throw new Error(`${xml.name} must have >= 4 points`);\n }\n return points;\n}\n\nexport function parseExteriorOrInterior(\n xml: any,\n options: ParseGMLOptions,\n context: ParseGMLContext\n): Position[] {\n const linearRing = findIn(xml, 'gml:LinearRing');\n if (linearRing) {\n return parseLinearRingOrLineString(linearRing, options, context);\n }\n\n const ring = findIn(xml, 'gml:Ring');\n if (!ring) {\n throw new Error(`invalid ${xml.name} element`);\n }\n\n return parseRing(ring, options, context);\n}\n\nexport function parsePolygonOrRectangle(\n xml: any,\n options: ParseGMLOptions,\n context: ParseGMLContext\n): Position[][] {\n // or PolygonPatch\n const childContext = createChildContext(xml, options, context);\n\n const exterior = findIn(xml, 'gml:exterior');\n if (!exterior) {\n throw new Error(`invalid ${xml.name} element`);\n }\n\n const pointLists: Position[][] = [parseExteriorOrInterior(exterior, options, childContext)];\n\n for (const [childName, childXML] of Object.entries(xml)) {\n switch (childName) {\n case 'gml:interior':\n pointLists.push(parseExteriorOrInterior(childXML, options, childContext));\n break;\n }\n }\n\n return pointLists;\n}\n\nexport function parseSurface(\n xml: any,\n options: ParseGMLOptions,\n context: ParseGMLContext\n): Position[][][] {\n const childContext = createChildContext(xml, options, context);\n\n const patches = findIn(xml, 'gml:patches');\n if (!patches) {\n throw new Error(`invalid ${xml.name} element`);\n }\n\n const polygons: Position[][][] = [];\n for (const [childName, childXML] of Object.entries(xml)) {\n switch (childName) {\n case 'gml:PolygonPatch':\n case 'gml:Rectangle':\n polygons.push(parsePolygonOrRectangle(childXML, options, childContext));\n break;\n\n default:\n continue;\n }\n }\n\n if (polygons.length === 0) {\n throw new Error(`${xml.name} must have > 0 polygons`);\n }\n\n return polygons;\n}\n\nexport function parseCompositeSurface(\n xml: any,\n options: ParseGMLOptions,\n context: ParseGMLContext\n): Position[][][] {\n const childContext = createChildContext(xml, options, context);\n\n const polygons: Position[][][] = [];\n for (const [childName, childXML] of Object.entries(xml)) {\n switch (childName) {\n case 'gml:surfaceMember':\n case 'gml:surfaceMembers':\n const [c2Name, c2Xml] = getFirstKeyValue(childXML);\n switch (c2Name) {\n case 'gml:Surface':\n polygons.push(...parseSurface(c2Xml, options, childContext));\n break;\n case 'gml:Polygon':\n polygons.push(parsePolygonOrRectangle(c2Xml, options, childContext));\n break;\n }\n break;\n }\n }\n\n if (polygons.length === 0) {\n throw new Error(`${xml.name} must have > 0 polygons`);\n }\n return polygons;\n}\n\nexport function parseMultiSurface(\n xml: any,\n options: ParseGMLOptions,\n context: ParseGMLContext\n): Position[][][] {\n let el = xml;\n\n const surfaceMembers = findIn(xml, 'gml:LinearRing');\n if (surfaceMembers) {\n el = surfaceMembers;\n }\n\n const polygons: Position[][][] = [];\n for (const [childName, childXML] of Object.entries(el)) {\n switch (childName) {\n case 'gml:Surface':\n const polygons2 = parseSurface(childXML, options, context);\n polygons.push(...polygons2);\n break;\n case 'gml:surfaceMember':\n const polygons3 = parseSurfaceMember(childXML, options, context);\n polygons.push(...polygons3);\n break;\n\n case 'gml:surfaceMembers':\n const polygonXML = findIn(childXML, 'gml:Polygon');\n for (const surfaceMemberXML of polygonXML as []) {\n const polygons3 = parseSurfaceMember(surfaceMemberXML, options, context);\n polygons.push(...polygons3);\n }\n break;\n }\n }\n\n if (polygons.length === 0) {\n throw new Error(`${xml.name} must have > 0 polygons`);\n }\n\n return polygons;\n}\n\nfunction parseSurfaceMember(\n xml: any,\n options: ParseGMLOptions,\n context: ParseGMLContext\n): Position[][][] {\n const [childName, childXml] = getFirstKeyValue(xml);\n switch (childName) {\n case 'gml:CompositeSurface':\n return parseCompositeSurface(childXml, options, context);\n case 'gml:Surface':\n return parseSurface(childXml, options, context);\n case 'gml:Polygon':\n return [parsePolygonOrRectangle(childXml, options, context)];\n }\n throw new Error(`${childName} must have polygons`);\n}\n\n// Helpers\n\nfunction textOf(el: any): string {\n if (typeof el !== 'string') {\n throw new Error('expected string');\n }\n return el;\n}\n\nfunction findIn(root: any, ...tags: string[]): any {\n let el = root;\n for (const tag of tags) {\n const child = el[tag];\n if (!child) {\n return null;\n }\n el = child;\n }\n return el;\n}\n\n/** @returns the first [key, value] pair in an object, or ['', null] if empty object */\nfunction getFirstKeyValue(object: any): [string, any] {\n if (object && typeof object === 'object') {\n for (const [key, value] of Object.entries(object)) {\n return [key, value];\n }\n }\n return ['', null];\n}\n\n/** A bit heavyweight for just tracking dimension? */\nfunction createChildContext(xml, options, context): ParseGMLContext {\n const srsDimensionAttribute = xml.attributes && xml.attributes.srsDimension;\n\n if (srsDimensionAttribute) {\n const srsDimension = parseInt(srsDimensionAttribute);\n if (Number.isNaN(srsDimension) || srsDimension <= 0) {\n throw new Error(\n `invalid srsDimension attribute value \"${srsDimensionAttribute}\", expected a positive integer`\n );\n }\n\n const childContext = Object.create(context);\n childContext.srsDimension = srsDimension;\n return childContext;\n }\n\n return context;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"parse-gml.js","names":["_xml","require","_deepStrictEqual","_rewind","_interopRequireDefault","noTransform","_len","arguments","length","coords","Array","_key","parseGML","text","options","parsedXML","XMLLoader","parseTextSync","transformCoords","stride","context","createChildContext","parseGMLToGeometry","inputXML","childContext","geometry","name","xml","getFirstKeyValue","type","coordinates","parseLinearRingOrLineString","parsePolygonOrRectangle","parseSurface","parseMultiSurface","rewind","mutate","parseCoords","s","srsDimension","replace","trim","split","Error","concat","points","i","_options$transformCoo","point","slice","map","parseFloat","push","call","parsePosList","textOf","parsePos","parsePoint","pos","findIn","posList","childName","childXML","Object","entries","parseCurveSegments","points2","end","start","deepStrictEqual","shift","parseRing","lineString","segments","parseExteriorOrInterior","linearRing","ring","exterior","pointLists","patches","polygons","parseCompositeSurface","c2Name","c2Xml","el","surfaceMembers","polygons2","polygons3","parseSurfaceMember","polygonXML","surfaceMemberXML","childXml","root","_len2","tags","_key2","tag","child","object","key","value","srsDimensionAttribute","attributes","parseInt","Number","isNaN","create"],"sources":["../../../../../src/lib/parsers/gml/parse-gml.ts"],"sourcesContent":["// loaders.gl, MIT license\n\n// Forked from https://github.com/derhuerst/parse-gml-polygon/blob/master/index.js\n// under ISC license\n\n/* eslint-disable no-continue, default-case */\n\nimport type {\n // GeoJSON,\n // Feature,\n // FeatureCollection,\n Geometry,\n Position\n // GeoJsonProperties,\n // Point,\n // MultiPoint,\n // LineString,\n // MultiLineString,\n // Polygon,\n // MultiPolygon,\n // GeometryCollection\n} from '@loaders.gl/schema';\n\nimport {XMLLoader} from '@loaders.gl/xml';\nimport {deepStrictEqual} from './deep-strict-equal';\nimport rewind from '@turf/rewind';\n\nfunction noTransform(...coords) {\n return coords;\n}\n\nexport type ParseGMLOptions = {\n transformCoords?: Function;\n stride?: 2 | 3 | 4;\n};\n\nexport type ParseGMLContext = {\n srsDimension?: number;\n [key: string]: any;\n};\n\n/**\n * Parses a typed data structure from raw XML for GML features\n * @note Error handlings is fairly weak\n */\nexport function parseGML(text: string, options) {\n // GeoJSON | null {\n const parsedXML = XMLLoader.parseTextSync(text, options);\n\n options = {transformCoords: noTransform, stride: 2, ...options};\n const context = createChildContext(parsedXML, options, {});\n\n return parseGMLToGeometry(parsedXML, options, context);\n}\n\n/** Parse a GeoJSON geometry from GML XML */\nexport function parseGMLToGeometry(\n inputXML: any,\n options: ParseGMLOptions,\n context: ParseGMLContext\n): Geometry | null {\n const childContext = createChildContext(inputXML, options, context);\n\n let geometry: Geometry | null = null;\n\n const [name, xml] = getFirstKeyValue(inputXML);\n\n switch (name) {\n // case 'gml:MultiPoint':\n // geometry = {\n // type: 'MultiPoint',\n // coordinates: parseMultiPoint(xml, options, childContext)\n // };\n // break;\n\n case 'gml:LineString':\n geometry = {\n type: 'LineString',\n coordinates: parseLinearRingOrLineString(xml, options, childContext)\n };\n break;\n\n // case 'gml:MultiLineString':\n // geometry = {\n // type: 'MultiLineString',\n // coordinates: parseMultiLineString(xml, options, childContext)\n // };\n // break;\n\n case 'gml:Polygon':\n case 'gml:Rectangle':\n geometry = {\n type: 'Polygon',\n coordinates: parsePolygonOrRectangle(xml, options, childContext)\n };\n break;\n case 'gml:Surface':\n geometry = {\n type: 'MultiPolygon',\n coordinates: parseSurface(xml, options, childContext)\n };\n break;\n case 'gml:MultiSurface':\n geometry = {\n type: 'MultiPolygon',\n coordinates: parseMultiSurface(xml, options, childContext)\n };\n break;\n\n default:\n return null;\n }\n\n // todo\n return rewind(geometry, {mutate: true});\n}\n\n/** Parse a list of coordinates from a string */\nfunction parseCoords(s: string, options: ParseGMLOptions, context: ParseGMLContext): Position[] {\n const stride = context.srsDimension || options.stride || 2;\n\n // Handle white space\n const coords = s.replace(/\\s+/g, ' ').trim().split(' ');\n\n if (coords.length === 0 || coords.length % stride !== 0) {\n throw new Error(`invalid coordinates list (stride ${stride})`);\n }\n\n const points: Position[] = [];\n for (let i = 0; i < coords.length - 1; i += stride) {\n const point = coords.slice(i, i + stride).map(parseFloat);\n points.push(options.transformCoords?.(...point) || point);\n }\n\n return points;\n}\n\nexport function parsePosList(xml: any, options: ParseGMLOptions, context: ParseGMLContext) {\n const childContext = createChildContext(xml, options, context);\n\n const coords = textOf(xml);\n if (!coords) {\n throw new Error('invalid gml:posList element');\n }\n\n return parseCoords(coords, options, childContext);\n}\n\nexport function parsePos(xml: any, options: ParseGMLOptions, context: ParseGMLContext): Position {\n const childContext = createChildContext(xml, options, context);\n\n const coords = textOf(xml);\n if (!coords) {\n throw new Error('invalid gml:pos element');\n }\n\n const points = parseCoords(coords, options, childContext);\n if (points.length !== 1) {\n throw new Error('gml:pos must have 1 point');\n }\n return points[0];\n}\n\nexport function parsePoint(xml: any, options: ParseGMLOptions, context: ParseGMLContext): number[] {\n const childContext = createChildContext(xml, options, context);\n\n // TODO AV: Parse other gml:Point options\n const pos = findIn(xml, 'gml:pos');\n if (!pos) {\n throw new Error('invalid gml:Point element, expected a gml:pos subelement');\n }\n return parsePos(pos, options, childContext);\n}\n\nexport function parseLinearRingOrLineString(\n xml: any,\n options: ParseGMLOptions,\n context: ParseGMLContext\n): Position[] {\n // or a LineStringSegment\n const childContext = createChildContext(xml, options, context);\n\n let points: Position[] = [];\n\n const posList = findIn(xml, 'gml:posList');\n if (posList) {\n points = parsePosList(posList, options, childContext);\n } else {\n for (const [childName, childXML] of Object.entries(xml)) {\n switch (childName) {\n case 'gml:Point':\n points.push(parsePoint(childXML, options, childContext));\n break;\n case 'gml:pos':\n points.push(parsePos(childXML, options, childContext));\n break;\n default:\n continue;\n }\n }\n }\n\n if (points.length === 0) {\n throw new Error(`${xml.name} must have > 0 points`);\n }\n return points;\n}\n\nexport function parseCurveSegments(\n xml: any,\n options: ParseGMLOptions,\n context: ParseGMLContext\n): Position[] {\n const points: Position[] = [];\n\n for (const [childName, childXML] of Object.entries(xml)) {\n switch (childName) {\n case 'gml:LineStringSegment':\n const points2 = parseLinearRingOrLineString(childXML, options, context);\n\n // remove overlapping\n const end = points[points.length - 1];\n const start = points2[0];\n if (end && start && deepStrictEqual(end, start)) {\n points2.shift();\n }\n\n points.push(...points2);\n break;\n default:\n continue;\n }\n }\n\n if (points.length === 0) {\n throw new Error('gml:Curve > gml:segments must have > 0 points');\n }\n return points;\n}\n\nexport function parseRing(\n xml: any,\n options: ParseGMLOptions,\n context: ParseGMLContext\n): Position[] {\n const childContext = createChildContext(xml, options, context);\n\n const points: Position[] = [];\n\n for (const [childName, childXML] of Object.entries(xml)) {\n switch (childName) {\n case 'gml:curveMember':\n let points2;\n\n const lineString = findIn(childXML, 'gml:LineString');\n if (lineString) {\n points2 = parseLinearRingOrLineString(lineString, options, childContext);\n } else {\n const segments = findIn(childXML, 'gml:Curve', 'gml:segments');\n if (!segments) {\n throw new Error(`invalid ${childName} element`);\n }\n\n points2 = parseCurveSegments(segments, options, childContext);\n }\n\n // remove overlapping\n const end = points[points.length - 1];\n const start = points2[0];\n if (end && start && deepStrictEqual(end, start)) {\n points2.shift();\n }\n\n points.push(...points2);\n\n break;\n }\n }\n\n if (points.length < 4) {\n throw new Error(`${xml.name} must have >= 4 points`);\n }\n return points;\n}\n\nexport function parseExteriorOrInterior(\n xml: any,\n options: ParseGMLOptions,\n context: ParseGMLContext\n): Position[] {\n const linearRing = findIn(xml, 'gml:LinearRing');\n if (linearRing) {\n return parseLinearRingOrLineString(linearRing, options, context);\n }\n\n const ring = findIn(xml, 'gml:Ring');\n if (!ring) {\n throw new Error(`invalid ${xml.name} element`);\n }\n\n return parseRing(ring, options, context);\n}\n\nexport function parsePolygonOrRectangle(\n xml: any,\n options: ParseGMLOptions,\n context: ParseGMLContext\n): Position[][] {\n // or PolygonPatch\n const childContext = createChildContext(xml, options, context);\n\n const exterior = findIn(xml, 'gml:exterior');\n if (!exterior) {\n throw new Error(`invalid ${xml.name} element`);\n }\n\n const pointLists: Position[][] = [parseExteriorOrInterior(exterior, options, childContext)];\n\n for (const [childName, childXML] of Object.entries(xml)) {\n switch (childName) {\n case 'gml:interior':\n pointLists.push(parseExteriorOrInterior(childXML, options, childContext));\n break;\n }\n }\n\n return pointLists;\n}\n\nexport function parseSurface(\n xml: any,\n options: ParseGMLOptions,\n context: ParseGMLContext\n): Position[][][] {\n const childContext = createChildContext(xml, options, context);\n\n const patches = findIn(xml, 'gml:patches');\n if (!patches) {\n throw new Error(`invalid ${xml.name} element`);\n }\n\n const polygons: Position[][][] = [];\n for (const [childName, childXML] of Object.entries(xml)) {\n switch (childName) {\n case 'gml:PolygonPatch':\n case 'gml:Rectangle':\n polygons.push(parsePolygonOrRectangle(childXML, options, childContext));\n break;\n\n default:\n continue;\n }\n }\n\n if (polygons.length === 0) {\n throw new Error(`${xml.name} must have > 0 polygons`);\n }\n\n return polygons;\n}\n\nexport function parseCompositeSurface(\n xml: any,\n options: ParseGMLOptions,\n context: ParseGMLContext\n): Position[][][] {\n const childContext = createChildContext(xml, options, context);\n\n const polygons: Position[][][] = [];\n for (const [childName, childXML] of Object.entries(xml)) {\n switch (childName) {\n case 'gml:surfaceMember':\n case 'gml:surfaceMembers':\n const [c2Name, c2Xml] = getFirstKeyValue(childXML);\n switch (c2Name) {\n case 'gml:Surface':\n polygons.push(...parseSurface(c2Xml, options, childContext));\n break;\n case 'gml:Polygon':\n polygons.push(parsePolygonOrRectangle(c2Xml, options, childContext));\n break;\n }\n break;\n }\n }\n\n if (polygons.length === 0) {\n throw new Error(`${xml.name} must have > 0 polygons`);\n }\n return polygons;\n}\n\nexport function parseMultiSurface(\n xml: any,\n options: ParseGMLOptions,\n context: ParseGMLContext\n): Position[][][] {\n let el = xml;\n\n const surfaceMembers = findIn(xml, 'gml:LinearRing');\n if (surfaceMembers) {\n el = surfaceMembers;\n }\n\n const polygons: Position[][][] = [];\n for (const [childName, childXML] of Object.entries(el)) {\n switch (childName) {\n case 'gml:Surface':\n const polygons2 = parseSurface(childXML, options, context);\n polygons.push(...polygons2);\n break;\n case 'gml:surfaceMember':\n const polygons3 = parseSurfaceMember(childXML, options, context);\n polygons.push(...polygons3);\n break;\n\n case 'gml:surfaceMembers':\n const polygonXML = findIn(childXML, 'gml:Polygon');\n for (const surfaceMemberXML of polygonXML as []) {\n const polygons3 = parseSurfaceMember(surfaceMemberXML, options, context);\n polygons.push(...polygons3);\n }\n break;\n }\n }\n\n if (polygons.length === 0) {\n throw new Error(`${xml.name} must have > 0 polygons`);\n }\n\n return polygons;\n}\n\nfunction parseSurfaceMember(\n xml: any,\n options: ParseGMLOptions,\n context: ParseGMLContext\n): Position[][][] {\n const [childName, childXml] = getFirstKeyValue(xml);\n switch (childName) {\n case 'gml:CompositeSurface':\n return parseCompositeSurface(childXml, options, context);\n case 'gml:Surface':\n return parseSurface(childXml, options, context);\n case 'gml:Polygon':\n return [parsePolygonOrRectangle(childXml, options, context)];\n }\n throw new Error(`${childName} must have polygons`);\n}\n\n// Helpers\n\nfunction textOf(el: any): string {\n if (typeof el !== 'string') {\n throw new Error('expected string');\n }\n return el;\n}\n\nfunction findIn(root: any, ...tags: string[]): any {\n let el = root;\n for (const tag of tags) {\n const child = el[tag];\n if (!child) {\n return null;\n }\n el = child;\n }\n return el;\n}\n\n/** @returns the first [key, value] pair in an object, or ['', null] if empty object */\nfunction getFirstKeyValue(object: any): [string, any] {\n if (object && typeof object === 'object') {\n for (const [key, value] of Object.entries(object)) {\n return [key, value];\n }\n }\n return ['', null];\n}\n\n/** A bit heavyweight for just tracking dimension? */\nfunction createChildContext(xml, options, context): ParseGMLContext {\n const srsDimensionAttribute = xml.attributes && xml.attributes.srsDimension;\n\n if (srsDimensionAttribute) {\n const srsDimension = parseInt(srsDimensionAttribute);\n if (Number.isNaN(srsDimension) || srsDimension <= 0) {\n throw new Error(\n `invalid srsDimension attribute value \"${srsDimensionAttribute}\", expected a positive integer`\n );\n }\n\n const childContext = Object.create(context);\n childContext.srsDimension = srsDimension;\n return childContext;\n }\n\n return context;\n}\n"],"mappings":"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"}