@loaders.gl/wms 3.4.14 → 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.
- package/dist/es5/bundle.js +1 -1
- package/dist/es5/bundle.js.map +1 -1
- package/dist/es5/csw-capabilities-loader.js +5 -26
- package/dist/es5/csw-capabilities-loader.js.map +1 -1
- package/dist/es5/csw-domain-loader.js +5 -26
- package/dist/es5/csw-domain-loader.js.map +1 -1
- package/dist/es5/csw-records-loader.js +4 -25
- package/dist/es5/csw-records-loader.js.map +1 -1
- package/dist/es5/gml-loader.js +5 -26
- package/dist/es5/gml-loader.js.map +1 -1
- package/dist/es5/index.js +16 -16
- package/dist/es5/lerc-loader.js +10 -47
- package/dist/es5/lerc-loader.js.map +1 -1
- package/dist/es5/lib/create-image-source.js +8 -19
- package/dist/es5/lib/create-image-source.js.map +1 -1
- package/dist/es5/lib/parsers/csw/parse-csw-capabilities.js +7 -9
- package/dist/es5/lib/parsers/csw/parse-csw-capabilities.js.map +1 -1
- package/dist/es5/lib/parsers/csw/parse-csw-domain.js +11 -25
- package/dist/es5/lib/parsers/csw/parse-csw-domain.js.map +1 -1
- package/dist/es5/lib/parsers/csw/parse-csw-records.js +21 -47
- package/dist/es5/lib/parsers/csw/parse-csw-records.js.map +1 -1
- package/dist/es5/lib/parsers/csw/parse-exception-report.js +2 -2
- package/dist/es5/lib/parsers/csw/parse-exception-report.js.map +1 -1
- package/dist/es5/lib/parsers/gml/deep-strict-equal.js +9 -11
- package/dist/es5/lib/parsers/gml/deep-strict-equal.js.map +1 -1
- package/dist/es5/lib/parsers/gml/parse-gml.js +79 -130
- package/dist/es5/lib/parsers/gml/parse-gml.js.map +1 -1
- package/dist/es5/lib/parsers/wms/parse-wms-capabilities.js +69 -126
- package/dist/es5/lib/parsers/wms/parse-wms-capabilities.js.map +1 -1
- package/dist/es5/lib/parsers/wms/parse-wms-error.js +3 -3
- package/dist/es5/lib/parsers/wms/parse-wms-error.js.map +1 -1
- package/dist/es5/lib/parsers/wms/parse-wms-features.js +5 -7
- package/dist/es5/lib/parsers/wms/parse-wms-features.js.map +1 -1
- package/dist/es5/lib/parsers/wms/parse-wms-layer-description.js +1 -1
- package/dist/es5/lib/parsers/wms/parse-wms-layer-description.js.map +1 -1
- package/dist/es5/lib/parsers/xml/parse-xml-helpers.js +6 -10
- package/dist/es5/lib/parsers/xml/parse-xml-helpers.js.map +1 -1
- package/dist/es5/lib/services/arcgis/arcgis-image-service.js +48 -146
- package/dist/es5/lib/services/arcgis/arcgis-image-service.js.map +1 -1
- package/dist/es5/lib/services/arcgis/arcgis-server.js +26 -98
- package/dist/es5/lib/services/arcgis/arcgis-server.js.map +1 -1
- package/dist/es5/lib/services/generic/image-service.js +32 -103
- package/dist/es5/lib/services/generic/image-service.js.map +1 -1
- package/dist/es5/lib/services/ogc/csw-service.js +134 -334
- package/dist/es5/lib/services/ogc/csw-service.js.map +1 -1
- package/dist/es5/lib/services/ogc/wms-service.js +218 -493
- package/dist/es5/lib/services/ogc/wms-service.js.map +1 -1
- package/dist/es5/lib/sources/data-source.js +28 -43
- package/dist/es5/lib/sources/data-source.js.map +1 -1
- package/dist/es5/lib/sources/image-source.js +1 -17
- package/dist/es5/lib/sources/image-source.js.map +1 -1
- package/dist/es5/lib/sources/tile-source.js +1 -17
- package/dist/es5/lib/sources/tile-source.js.map +1 -1
- package/dist/es5/lib/sources/utils/utils.js +11 -19
- package/dist/es5/lib/sources/utils/utils.js.map +1 -1
- package/dist/es5/wip/arcgis-feature-service.js +16 -23
- package/dist/es5/wip/arcgis-feature-service.js.map +1 -1
- package/dist/es5/wip/lib/wcs/parse-wcs-capabilities.js +7 -9
- package/dist/es5/wip/lib/wcs/parse-wcs-capabilities.js.map +1 -1
- package/dist/es5/wip/lib/wfs/parse-wfs-capabilities.js +7 -9
- package/dist/es5/wip/lib/wfs/parse-wfs-capabilities.js.map +1 -1
- package/dist/es5/wip/lib/wmts/parse-wmts-capabilities.js +7 -9
- package/dist/es5/wip/lib/wmts/parse-wmts-capabilities.js.map +1 -1
- package/dist/es5/wip/wcs-capabilities-loader.js +5 -26
- package/dist/es5/wip/wcs-capabilities-loader.js.map +1 -1
- package/dist/es5/wip/wfs-capabilities-loader.js +5 -26
- package/dist/es5/wip/wfs-capabilities-loader.js.map +1 -1
- package/dist/es5/wip/wms-feature-info-loader.js +6 -29
- package/dist/es5/wip/wms-feature-info-loader.js.map +1 -1
- package/dist/es5/wip/wms-layer-description-loader.js +6 -29
- package/dist/es5/wip/wms-layer-description-loader.js.map +1 -1
- package/dist/es5/wip/wmts-capabilities-loader.js +5 -26
- package/dist/es5/wip/wmts-capabilities-loader.js.map +1 -1
- package/dist/es5/wms-capabilities-loader.js +5 -26
- package/dist/es5/wms-capabilities-loader.js.map +1 -1
- package/dist/es5/wms-error-loader.js +13 -36
- package/dist/es5/wms-error-loader.js.map +1 -1
- package/dist/esm/csw-capabilities-loader.js +1 -1
- package/dist/esm/csw-domain-loader.js +1 -1
- package/dist/esm/csw-records-loader.js +1 -1
- package/dist/esm/gml-loader.js +1 -1
- package/dist/esm/lerc-loader.js +1 -1
- package/dist/esm/wip/wcs-capabilities-loader.js +1 -1
- package/dist/esm/wip/wfs-capabilities-loader.js +1 -1
- package/dist/esm/wip/wmts-capabilities-loader.js +1 -1
- package/dist/esm/wms-capabilities-loader.js +1 -1
- package/dist/esm/wms-error-loader.js +1 -1
- package/package.json +6 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"image-service.js","names":["_images","require","_imageSource","
|
|
1
|
+
{"version":3,"file":"image-service.js","names":["_images","require","_imageSource","ImageService","ImageSource","constructor","props","getMetadata","Error","getImage","parameters","granularParameters","getGranularParameters","url","getURLFromTemplate","response","fetch","arrayBuffer","ImageLoader","parse","east","north","west","south","bbox","key","value","Object","entries","replace","concat","String","exports","_defineProperty2","default","toLowerCase","includes"],"sources":["../../../../../src/lib/services/generic/image-service.ts"],"sourcesContent":["// loaders.gl, MIT license\n\nimport {LoaderOptions} from '@loaders.gl/loader-utils';\nimport type {ImageType} from '@loaders.gl/images';\nimport {ImageLoader} from '@loaders.gl/images';\n\nimport type {ImageSourceMetadata, GetImageParameters} from '../../sources/image-source';\nimport {ImageSource} from '../../sources/image-source';\n\n/** Template URL string should contain `${width}` etc which will be substituted. */\nexport type ImageServiceProps = {\n /** Base URL to the service */\n url: string;\n /** Any load options to the loaders.gl Loaders used by the WMSService methods */\n loadOptions?: LoaderOptions;\n};\n\n/**\n * Quickly connect to \"ad hoc\" image sources without subclassing ImageSource.\n * ImageSource allows template url strings to be used to ad hoc connect to arbitrary image data sources\n * Accepts a template url string and builds requests URLs\n */\nexport class ImageService<PropsT extends ImageServiceProps> extends ImageSource<PropsT> {\n static type: 'template' = 'template';\n static testURL = (url: string): boolean => url.toLowerCase().includes('{');\n\n constructor(props: PropsT) {\n super(props);\n }\n\n // IMAGE SOURCE API\n\n async getMetadata(): Promise<ImageSourceMetadata> {\n throw new Error('ImageSource.getMetadata not implemented');\n }\n\n async getImage(parameters: GetImageParameters): Promise<ImageType> {\n const granularParameters = this.getGranularParameters(parameters);\n const url = this.getURLFromTemplate(granularParameters);\n const response = await this.fetch(url);\n const arrayBuffer = await response.arrayBuffer();\n return await ImageLoader.parse(arrayBuffer);\n }\n\n // HELPERS\n\n /** Break up bounding box in east, north, south, west */\n protected getGranularParameters(parameters: GetImageParameters): Record<string, unknown> {\n const [east, north, west, south] = parameters.bbox;\n return {...parameters, east, north, south, west};\n }\n\n /** Supports both ${} and {} notations */\n protected getURLFromTemplate(parameters: Record<string, unknown>): string {\n let url = this.props.url;\n for (const [key, value] of Object.entries(parameters)) {\n // TODO - parameter could be repeated\n // const regex = new RegExp(`\\${${key}}`, 'g');\n url = url.replace(`\\${${key}}`, String(value));\n url = url.replace(`{${key}}`, String(value));\n }\n return url;\n }\n}\n"],"mappings":";;;;;;;;AAIA,IAAAA,OAAA,GAAAC,OAAA;AAGA,IAAAC,YAAA,GAAAD,OAAA;AAeO,MAAME,YAAY,SAA2CC,wBAAW,CAAS;EAItFC,WAAWA,CAACC,KAAa,EAAE;IACzB,KAAK,CAACA,KAAK,CAAC;EACd;EAIA,MAAMC,WAAWA,CAAA,EAAiC;IAChD,MAAM,IAAIC,KAAK,CAAC,yCAAyC,CAAC;EAC5D;EAEA,MAAMC,QAAQA,CAACC,UAA8B,EAAsB;IACjE,MAAMC,kBAAkB,GAAG,IAAI,CAACC,qBAAqB,CAACF,UAAU,CAAC;IACjE,MAAMG,GAAG,GAAG,IAAI,CAACC,kBAAkB,CAACH,kBAAkB,CAAC;IACvD,MAAMI,QAAQ,GAAG,MAAM,IAAI,CAACC,KAAK,CAACH,GAAG,CAAC;IACtC,MAAMI,WAAW,GAAG,MAAMF,QAAQ,CAACE,WAAW,CAAC,CAAC;IAChD,OAAO,MAAMC,mBAAW,CAACC,KAAK,CAACF,WAAW,CAAC;EAC7C;EAKUL,qBAAqBA,CAACF,UAA8B,EAA2B;IACvF,MAAM,CAACU,IAAI,EAAEC,KAAK,EAAEC,IAAI,EAAEC,KAAK,CAAC,GAAGb,UAAU,CAACc,IAAI;IAClD,OAAO;MAAC,GAAGd,UAAU;MAAEU,IAAI;MAAEC,KAAK;MAAEE,KAAK;MAAED;IAAI,CAAC;EAClD;EAGUR,kBAAkBA,CAACJ,UAAmC,EAAU;IACxE,IAAIG,GAAG,GAAG,IAAI,CAACP,KAAK,CAACO,GAAG;IACxB,KAAK,MAAM,CAACY,GAAG,EAAEC,KAAK,CAAC,IAAIC,MAAM,CAACC,OAAO,CAAClB,UAAU,CAAC,EAAE;MAGrDG,GAAG,GAAGA,GAAG,CAACgB,OAAO,MAAAC,MAAA,CAAOL,GAAG,QAAKM,MAAM,CAACL,KAAK,CAAC,CAAC;MAC9Cb,GAAG,GAAGA,GAAG,CAACgB,OAAO,KAAAC,MAAA,CAAKL,GAAG,QAAKM,MAAM,CAACL,KAAK,CAAC,CAAC;IAC9C;IACA,OAAOb,GAAG;EACZ;AACF;AAACmB,OAAA,CAAA7B,YAAA,GAAAA,YAAA;AAAA,IAAA8B,gBAAA,CAAAC,OAAA,EAzCY/B,YAAY,UACG,UAAU;AAAA,IAAA8B,gBAAA,CAAAC,OAAA,EADzB/B,YAAY,aAELU,GAAW,IAAcA,GAAG,CAACsB,WAAW,CAAC,CAAC,CAACC,QAAQ,CAAC,GAAG,CAAC"}
|
|
@@ -5,353 +5,153 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
7
|
exports.CSWService = void 0;
|
|
8
|
-
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
9
|
-
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
10
|
-
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
11
|
-
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
12
|
-
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
13
|
-
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
|
|
14
|
-
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
15
|
-
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
16
|
-
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
17
8
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
18
9
|
var _dataSource = require("../../sources/data-source");
|
|
19
10
|
var _cswCapabilitiesLoader = require("../../../csw-capabilities-loader");
|
|
20
11
|
var _cswRecordsLoader = require("../../../csw-records-loader");
|
|
21
12
|
var _cswDomainLoader = require("../../../csw-domain-loader");
|
|
22
13
|
var _wmsErrorLoader = require("../../../wms-error-loader");
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
|
|
29
|
-
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
30
|
-
var CSWService = function (_DataSource) {
|
|
31
|
-
(0, _inherits2.default)(CSWService, _DataSource);
|
|
32
|
-
var _super = _createSuper(CSWService);
|
|
33
|
-
function CSWService(props) {
|
|
34
|
-
var _this;
|
|
35
|
-
(0, _classCallCheck2.default)(this, CSWService);
|
|
36
|
-
_this = _super.call(this, props);
|
|
37
|
-
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "capabilities", null);
|
|
38
|
-
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "loaders", [_wmsErrorLoader.WMSErrorLoader, _cswCapabilitiesLoader.CSWCapabilitiesLoader]);
|
|
39
|
-
return _this;
|
|
14
|
+
class CSWService extends _dataSource.DataSource {
|
|
15
|
+
constructor(props) {
|
|
16
|
+
super(props);
|
|
17
|
+
(0, _defineProperty2.default)(this, "capabilities", null);
|
|
18
|
+
(0, _defineProperty2.default)(this, "loaders", [_wmsErrorLoader.WMSErrorLoader, _cswCapabilitiesLoader.CSWCapabilitiesLoader]);
|
|
40
19
|
}
|
|
41
|
-
(
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
_iterator = _createForOfIteratorHelper(records.records);
|
|
85
|
-
_context2.prev = 6;
|
|
86
|
-
_iterator.s();
|
|
87
|
-
case 8:
|
|
88
|
-
if ((_step = _iterator.n()).done) {
|
|
89
|
-
_context2.next = 38;
|
|
90
|
-
break;
|
|
91
|
-
}
|
|
92
|
-
record = _step.value;
|
|
93
|
-
_iterator2 = _createForOfIteratorHelper(record.references);
|
|
94
|
-
_context2.prev = 11;
|
|
95
|
-
_iterator2.s();
|
|
96
|
-
case 13:
|
|
97
|
-
if ((_step2 = _iterator2.n()).done) {
|
|
98
|
-
_context2.next = 28;
|
|
99
|
-
break;
|
|
100
|
-
}
|
|
101
|
-
reference = _step2.value;
|
|
102
|
-
url = reference.value;
|
|
103
|
-
_context2.t0 = reference.scheme;
|
|
104
|
-
_context2.next = _context2.t0 === 'OGC:WMS' ? 19 : _context2.t0 === 'OGC:WMTS' ? 21 : _context2.t0 === 'OGC:WFS' ? 23 : 25;
|
|
105
|
-
break;
|
|
106
|
-
case 19:
|
|
107
|
-
services.push(_objectSpread({
|
|
108
|
-
name: record.title,
|
|
109
|
-
type: 'ogc-wms-service'
|
|
110
|
-
}, this._parseOGCUrl(url)));
|
|
111
|
-
return _context2.abrupt("break", 26);
|
|
112
|
-
case 21:
|
|
113
|
-
services.push(_objectSpread({
|
|
114
|
-
name: record.title,
|
|
115
|
-
type: 'ogc-wmts-service'
|
|
116
|
-
}, this._parseOGCUrl(url)));
|
|
117
|
-
return _context2.abrupt("break", 26);
|
|
118
|
-
case 23:
|
|
119
|
-
services.push(_objectSpread({
|
|
120
|
-
name: record.title,
|
|
121
|
-
type: 'ogc-wfs-service'
|
|
122
|
-
}, this._parseOGCUrl(url)));
|
|
123
|
-
return _context2.abrupt("break", 26);
|
|
124
|
-
case 25:
|
|
125
|
-
unknownServices.push({
|
|
126
|
-
name: record.title,
|
|
127
|
-
type: 'unknown',
|
|
128
|
-
url: reference.value,
|
|
129
|
-
scheme: reference.scheme
|
|
130
|
-
});
|
|
131
|
-
case 26:
|
|
132
|
-
_context2.next = 13;
|
|
133
|
-
break;
|
|
134
|
-
case 28:
|
|
135
|
-
_context2.next = 33;
|
|
136
|
-
break;
|
|
137
|
-
case 30:
|
|
138
|
-
_context2.prev = 30;
|
|
139
|
-
_context2.t1 = _context2["catch"](11);
|
|
140
|
-
_iterator2.e(_context2.t1);
|
|
141
|
-
case 33:
|
|
142
|
-
_context2.prev = 33;
|
|
143
|
-
_iterator2.f();
|
|
144
|
-
return _context2.finish(33);
|
|
145
|
-
case 36:
|
|
146
|
-
_context2.next = 8;
|
|
147
|
-
break;
|
|
148
|
-
case 38:
|
|
149
|
-
_context2.next = 43;
|
|
150
|
-
break;
|
|
151
|
-
case 40:
|
|
152
|
-
_context2.prev = 40;
|
|
153
|
-
_context2.t2 = _context2["catch"](6);
|
|
154
|
-
_iterator.e(_context2.t2);
|
|
155
|
-
case 43:
|
|
156
|
-
_context2.prev = 43;
|
|
157
|
-
_iterator.f();
|
|
158
|
-
return _context2.finish(43);
|
|
159
|
-
case 46:
|
|
160
|
-
return _context2.abrupt("return", options !== null && options !== void 0 && options.includeUnknown ? services.concat(unknownServices) : services);
|
|
161
|
-
case 47:
|
|
162
|
-
case "end":
|
|
163
|
-
return _context2.stop();
|
|
164
|
-
}
|
|
165
|
-
}, _callee2, this, [[6, 40, 43, 46], [11, 30, 33, 36]]);
|
|
166
|
-
}));
|
|
167
|
-
function getServiceDirectory(_x) {
|
|
168
|
-
return _getServiceDirectory.apply(this, arguments);
|
|
169
|
-
}
|
|
170
|
-
return getServiceDirectory;
|
|
171
|
-
}()
|
|
172
|
-
}, {
|
|
173
|
-
key: "_parseOGCUrl",
|
|
174
|
-
value: function _parseOGCUrl(url) {
|
|
175
|
-
var parts = url.split('?');
|
|
176
|
-
return {
|
|
177
|
-
url: parts[0],
|
|
178
|
-
params: parts[1] || ''
|
|
179
|
-
};
|
|
180
|
-
}
|
|
181
|
-
}, {
|
|
182
|
-
key: "getCapabilities",
|
|
183
|
-
value: function () {
|
|
184
|
-
var _getCapabilities = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee3(wmsParameters, vendorParameters) {
|
|
185
|
-
var url, response, arrayBuffer, capabilities;
|
|
186
|
-
return _regenerator.default.wrap(function _callee3$(_context3) {
|
|
187
|
-
while (1) switch (_context3.prev = _context3.next) {
|
|
188
|
-
case 0:
|
|
189
|
-
url = this.getCapabilitiesURL(wmsParameters, vendorParameters);
|
|
190
|
-
_context3.next = 3;
|
|
191
|
-
return this.fetch(url);
|
|
192
|
-
case 3:
|
|
193
|
-
response = _context3.sent;
|
|
194
|
-
_context3.next = 6;
|
|
195
|
-
return response.arrayBuffer();
|
|
196
|
-
case 6:
|
|
197
|
-
arrayBuffer = _context3.sent;
|
|
198
|
-
this._checkResponse(response, arrayBuffer);
|
|
199
|
-
_context3.next = 10;
|
|
200
|
-
return _cswCapabilitiesLoader.CSWCapabilitiesLoader.parse(arrayBuffer, this.props.loadOptions);
|
|
201
|
-
case 10:
|
|
202
|
-
capabilities = _context3.sent;
|
|
203
|
-
return _context3.abrupt("return", capabilities);
|
|
204
|
-
case 12:
|
|
205
|
-
case "end":
|
|
206
|
-
return _context3.stop();
|
|
207
|
-
}
|
|
208
|
-
}, _callee3, this);
|
|
209
|
-
}));
|
|
210
|
-
function getCapabilities(_x2, _x3) {
|
|
211
|
-
return _getCapabilities.apply(this, arguments);
|
|
212
|
-
}
|
|
213
|
-
return getCapabilities;
|
|
214
|
-
}()
|
|
215
|
-
}, {
|
|
216
|
-
key: "getRecords",
|
|
217
|
-
value: function () {
|
|
218
|
-
var _getRecords = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee4(wmsParameters, vendorParameters) {
|
|
219
|
-
var url, response, arrayBuffer;
|
|
220
|
-
return _regenerator.default.wrap(function _callee4$(_context4) {
|
|
221
|
-
while (1) switch (_context4.prev = _context4.next) {
|
|
222
|
-
case 0:
|
|
223
|
-
url = this.getRecordsURL(wmsParameters, vendorParameters);
|
|
224
|
-
_context4.next = 3;
|
|
225
|
-
return this.fetch(url);
|
|
226
|
-
case 3:
|
|
227
|
-
response = _context4.sent;
|
|
228
|
-
_context4.next = 6;
|
|
229
|
-
return response.arrayBuffer();
|
|
230
|
-
case 6:
|
|
231
|
-
arrayBuffer = _context4.sent;
|
|
232
|
-
this._checkResponse(response, arrayBuffer);
|
|
233
|
-
_context4.next = 10;
|
|
234
|
-
return _cswRecordsLoader.CSWRecordsLoader.parse(arrayBuffer, this.props.loadOptions);
|
|
235
|
-
case 10:
|
|
236
|
-
return _context4.abrupt("return", _context4.sent);
|
|
237
|
-
case 11:
|
|
238
|
-
case "end":
|
|
239
|
-
return _context4.stop();
|
|
240
|
-
}
|
|
241
|
-
}, _callee4, this);
|
|
242
|
-
}));
|
|
243
|
-
function getRecords(_x4, _x5) {
|
|
244
|
-
return _getRecords.apply(this, arguments);
|
|
245
|
-
}
|
|
246
|
-
return getRecords;
|
|
247
|
-
}()
|
|
248
|
-
}, {
|
|
249
|
-
key: "getDomain",
|
|
250
|
-
value: function () {
|
|
251
|
-
var _getDomain = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee5(wmsParameters, vendorParameters) {
|
|
252
|
-
var url, response, arrayBuffer;
|
|
253
|
-
return _regenerator.default.wrap(function _callee5$(_context5) {
|
|
254
|
-
while (1) switch (_context5.prev = _context5.next) {
|
|
255
|
-
case 0:
|
|
256
|
-
url = this.getDomainURL(wmsParameters, vendorParameters);
|
|
257
|
-
_context5.next = 3;
|
|
258
|
-
return this.fetch(url);
|
|
259
|
-
case 3:
|
|
260
|
-
response = _context5.sent;
|
|
261
|
-
_context5.next = 6;
|
|
262
|
-
return response.arrayBuffer();
|
|
263
|
-
case 6:
|
|
264
|
-
arrayBuffer = _context5.sent;
|
|
265
|
-
this._checkResponse(response, arrayBuffer);
|
|
266
|
-
_context5.next = 10;
|
|
267
|
-
return _cswDomainLoader.CSWDomainLoader.parse(arrayBuffer, this.props.loadOptions);
|
|
268
|
-
case 10:
|
|
269
|
-
return _context5.abrupt("return", _context5.sent);
|
|
270
|
-
case 11:
|
|
271
|
-
case "end":
|
|
272
|
-
return _context5.stop();
|
|
273
|
-
}
|
|
274
|
-
}, _callee5, this);
|
|
275
|
-
}));
|
|
276
|
-
function getDomain(_x6, _x7) {
|
|
277
|
-
return _getDomain.apply(this, arguments);
|
|
278
|
-
}
|
|
279
|
-
return getDomain;
|
|
280
|
-
}()
|
|
281
|
-
}, {
|
|
282
|
-
key: "getCapabilitiesURL",
|
|
283
|
-
value: function getCapabilitiesURL(wmsParameters, vendorParameters) {
|
|
284
|
-
var options = _objectSpread(_objectSpread(_objectSpread({
|
|
285
|
-
version: '3.0.0'
|
|
286
|
-
}, wmsParameters), vendorParameters), {}, {
|
|
287
|
-
service: 'CSW',
|
|
288
|
-
request: 'GetCapabilities'
|
|
289
|
-
});
|
|
290
|
-
return this._getCSWUrl(options, vendorParameters);
|
|
291
|
-
}
|
|
292
|
-
}, {
|
|
293
|
-
key: "getRecordsURL",
|
|
294
|
-
value: function getRecordsURL(wmsParameters, vendorParameters) {
|
|
295
|
-
var options = _objectSpread(_objectSpread(_objectSpread({
|
|
296
|
-
version: '3.0.0',
|
|
297
|
-
typenames: 'csw:Record'
|
|
298
|
-
}, wmsParameters), vendorParameters), {}, {
|
|
299
|
-
service: 'CSW',
|
|
300
|
-
request: 'GetRecords'
|
|
301
|
-
});
|
|
302
|
-
return this._getCSWUrl(options, vendorParameters);
|
|
303
|
-
}
|
|
304
|
-
}, {
|
|
305
|
-
key: "getDomainURL",
|
|
306
|
-
value: function getDomainURL(wmsParameters, vendorParameters) {
|
|
307
|
-
var options = _objectSpread(_objectSpread(_objectSpread({
|
|
308
|
-
version: '3.0.0'
|
|
309
|
-
}, wmsParameters), vendorParameters), {}, {
|
|
310
|
-
service: 'CSW',
|
|
311
|
-
request: 'GetDomain'
|
|
312
|
-
});
|
|
313
|
-
return this._getCSWUrl(options, vendorParameters);
|
|
314
|
-
}
|
|
315
|
-
}, {
|
|
316
|
-
key: "_getCSWUrl",
|
|
317
|
-
value: function _getCSWUrl(options, vendorParameters) {
|
|
318
|
-
var url = this.props.url;
|
|
319
|
-
var first = true;
|
|
320
|
-
for (var _i = 0, _Object$entries = Object.entries(options); _i < _Object$entries.length; _i++) {
|
|
321
|
-
var _Object$entries$_i = (0, _slicedToArray2.default)(_Object$entries[_i], 2),
|
|
322
|
-
key = _Object$entries$_i[0],
|
|
323
|
-
value = _Object$entries$_i[1];
|
|
324
|
-
url += first ? '?' : '&';
|
|
325
|
-
first = false;
|
|
326
|
-
if (Array.isArray(value)) {
|
|
327
|
-
url += "".concat(key.toUpperCase(), "=").concat(value.join(','));
|
|
328
|
-
} else {
|
|
329
|
-
url += "".concat(key.toUpperCase(), "=").concat(value ? String(value) : '');
|
|
20
|
+
async getMetadata() {
|
|
21
|
+
const capabilities = await this.getCapabilities();
|
|
22
|
+
return this.normalizeMetadata(capabilities);
|
|
23
|
+
}
|
|
24
|
+
normalizeMetadata(capabilities) {
|
|
25
|
+
return capabilities;
|
|
26
|
+
}
|
|
27
|
+
async getServiceDirectory(options) {
|
|
28
|
+
const services = [];
|
|
29
|
+
const unknownServices = [];
|
|
30
|
+
const records = await this.getRecords();
|
|
31
|
+
for (const record of records.records) {
|
|
32
|
+
for (const reference of record.references) {
|
|
33
|
+
const url = reference.value;
|
|
34
|
+
switch (reference.scheme) {
|
|
35
|
+
case 'OGC:WMS':
|
|
36
|
+
services.push({
|
|
37
|
+
name: record.title,
|
|
38
|
+
type: 'ogc-wms-service',
|
|
39
|
+
...this._parseOGCUrl(url)
|
|
40
|
+
});
|
|
41
|
+
break;
|
|
42
|
+
case 'OGC:WMTS':
|
|
43
|
+
services.push({
|
|
44
|
+
name: record.title,
|
|
45
|
+
type: 'ogc-wmts-service',
|
|
46
|
+
...this._parseOGCUrl(url)
|
|
47
|
+
});
|
|
48
|
+
break;
|
|
49
|
+
case 'OGC:WFS':
|
|
50
|
+
services.push({
|
|
51
|
+
name: record.title,
|
|
52
|
+
type: 'ogc-wfs-service',
|
|
53
|
+
...this._parseOGCUrl(url)
|
|
54
|
+
});
|
|
55
|
+
break;
|
|
56
|
+
default:
|
|
57
|
+
unknownServices.push({
|
|
58
|
+
name: record.title,
|
|
59
|
+
type: 'unknown',
|
|
60
|
+
url: reference.value,
|
|
61
|
+
scheme: reference.scheme
|
|
62
|
+
});
|
|
330
63
|
}
|
|
331
64
|
}
|
|
332
|
-
return encodeURI(url);
|
|
333
65
|
}
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
66
|
+
return options !== null && options !== void 0 && options.includeUnknown ? services.concat(unknownServices) : services;
|
|
67
|
+
}
|
|
68
|
+
_parseOGCUrl(url) {
|
|
69
|
+
const parts = url.split('?');
|
|
70
|
+
return {
|
|
71
|
+
url: parts[0],
|
|
72
|
+
params: parts[1] || ''
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
async getCapabilities(wmsParameters, vendorParameters) {
|
|
76
|
+
const url = this.getCapabilitiesURL(wmsParameters, vendorParameters);
|
|
77
|
+
const response = await this.fetch(url);
|
|
78
|
+
const arrayBuffer = await response.arrayBuffer();
|
|
79
|
+
this._checkResponse(response, arrayBuffer);
|
|
80
|
+
const capabilities = await _cswCapabilitiesLoader.CSWCapabilitiesLoader.parse(arrayBuffer, this.props.loadOptions);
|
|
81
|
+
return capabilities;
|
|
82
|
+
}
|
|
83
|
+
async getRecords(wmsParameters, vendorParameters) {
|
|
84
|
+
const url = this.getRecordsURL(wmsParameters, vendorParameters);
|
|
85
|
+
const response = await this.fetch(url);
|
|
86
|
+
const arrayBuffer = await response.arrayBuffer();
|
|
87
|
+
this._checkResponse(response, arrayBuffer);
|
|
88
|
+
return await _cswRecordsLoader.CSWRecordsLoader.parse(arrayBuffer, this.props.loadOptions);
|
|
89
|
+
}
|
|
90
|
+
async getDomain(wmsParameters, vendorParameters) {
|
|
91
|
+
const url = this.getDomainURL(wmsParameters, vendorParameters);
|
|
92
|
+
const response = await this.fetch(url);
|
|
93
|
+
const arrayBuffer = await response.arrayBuffer();
|
|
94
|
+
this._checkResponse(response, arrayBuffer);
|
|
95
|
+
return await _cswDomainLoader.CSWDomainLoader.parse(arrayBuffer, this.props.loadOptions);
|
|
96
|
+
}
|
|
97
|
+
getCapabilitiesURL(wmsParameters, vendorParameters) {
|
|
98
|
+
const options = {
|
|
99
|
+
version: '3.0.0',
|
|
100
|
+
...wmsParameters,
|
|
101
|
+
...vendorParameters,
|
|
102
|
+
service: 'CSW',
|
|
103
|
+
request: 'GetCapabilities'
|
|
104
|
+
};
|
|
105
|
+
return this._getCSWUrl(options, vendorParameters);
|
|
106
|
+
}
|
|
107
|
+
getRecordsURL(wmsParameters, vendorParameters) {
|
|
108
|
+
const options = {
|
|
109
|
+
version: '3.0.0',
|
|
110
|
+
typenames: 'csw:Record',
|
|
111
|
+
...wmsParameters,
|
|
112
|
+
...vendorParameters,
|
|
113
|
+
service: 'CSW',
|
|
114
|
+
request: 'GetRecords'
|
|
115
|
+
};
|
|
116
|
+
return this._getCSWUrl(options, vendorParameters);
|
|
117
|
+
}
|
|
118
|
+
getDomainURL(wmsParameters, vendorParameters) {
|
|
119
|
+
const options = {
|
|
120
|
+
version: '3.0.0',
|
|
121
|
+
...wmsParameters,
|
|
122
|
+
...vendorParameters,
|
|
123
|
+
service: 'CSW',
|
|
124
|
+
request: 'GetDomain'
|
|
125
|
+
};
|
|
126
|
+
return this._getCSWUrl(options, vendorParameters);
|
|
127
|
+
}
|
|
128
|
+
_getCSWUrl(options, vendorParameters) {
|
|
129
|
+
let url = this.props.url;
|
|
130
|
+
let first = true;
|
|
131
|
+
for (const [key, value] of Object.entries(options)) {
|
|
132
|
+
url += first ? '?' : '&';
|
|
133
|
+
first = false;
|
|
134
|
+
if (Array.isArray(value)) {
|
|
135
|
+
url += "".concat(key.toUpperCase(), "=").concat(value.join(','));
|
|
136
|
+
} else {
|
|
137
|
+
url += "".concat(key.toUpperCase(), "=").concat(value ? String(value) : '');
|
|
341
138
|
}
|
|
342
139
|
}
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
140
|
+
return encodeURI(url);
|
|
141
|
+
}
|
|
142
|
+
_checkResponse(response, arrayBuffer) {
|
|
143
|
+
const contentType = response.headers['content-type'];
|
|
144
|
+
if (!response.ok || _wmsErrorLoader.WMSErrorLoader.mimeTypes.includes(contentType)) {
|
|
145
|
+
const error = _wmsErrorLoader.WMSErrorLoader.parseSync(arrayBuffer, this.props.loadOptions);
|
|
146
|
+
throw new Error(error);
|
|
348
147
|
}
|
|
349
|
-
}
|
|
350
|
-
|
|
351
|
-
|
|
148
|
+
}
|
|
149
|
+
_parseError(arrayBuffer) {
|
|
150
|
+
const error = _wmsErrorLoader.WMSErrorLoader.parseSync(arrayBuffer, this.props.loadOptions);
|
|
151
|
+
return new Error(error);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
352
154
|
exports.CSWService = CSWService;
|
|
353
155
|
(0, _defineProperty2.default)(CSWService, "type", 'csw');
|
|
354
|
-
(0, _defineProperty2.default)(CSWService, "testURL",
|
|
355
|
-
return url.toLowerCase().includes('csw');
|
|
356
|
-
});
|
|
156
|
+
(0, _defineProperty2.default)(CSWService, "testURL", url => url.toLowerCase().includes('csw'));
|
|
357
157
|
//# sourceMappingURL=csw-service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"csw-service.js","names":["_dataSource","require","_cswCapabilitiesLoader","_cswRecordsLoader","_cswDomainLoader","_wmsErrorLoader","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","key","_defineProperty2","default","getOwnPropertyDescriptors","defineProperties","defineProperty","_createForOfIteratorHelper","o","allowArrayLike","it","Symbol","iterator","Array","isArray","_unsupportedIterableToArray","F","s","n","done","value","e","_e","f","TypeError","normalCompletion","didErr","err","call","step","next","_e2","return","minLen","_arrayLikeToArray","prototype","toString","slice","constructor","name","from","test","arr","len","arr2","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","_createSuperInternal","Super","_getPrototypeOf2","result","NewTarget","Reflect","construct","_possibleConstructorReturn2","sham","Proxy","Boolean","valueOf","CSWService","_DataSource","_inherits2","_super","props","_this","_classCallCheck2","_assertThisInitialized2","CSWErrorLoader","CSWCapabilitiesLoader","_createClass2","_getMetadata","_asyncToGenerator2","_regenerator","mark","_callee","capabilities","wrap","_callee$","_context","prev","getCapabilities","sent","abrupt","normalizeMetadata","stop","getMetadata","_getServiceDirectory","_callee2","options","services","unknownServices","records","_iterator","_step","record","_iterator2","_step2","reference","url","_callee2$","_context2","getRecords","references","t0","scheme","title","type","_parseOGCUrl","t1","finish","t2","includeUnknown","concat","getServiceDirectory","_x","parts","split","params","_getCapabilities","_callee3","wmsParameters","vendorParameters","response","arrayBuffer","_callee3$","_context3","getCapabilitiesURL","fetch","_checkResponse","parse","loadOptions","_x2","_x3","_getRecords","_callee4","_callee4$","_context4","getRecordsURL","CSWRecordsLoader","_x4","_x5","_getDomain","_callee5","_callee5$","_context5","getDomainURL","CSWDomainLoader","getDomain","_x6","_x7","version","service","request","_getCSWUrl","typenames","first","_i","_Object$entries","entries","_Object$entries$_i","_slicedToArray2","toUpperCase","join","String","encodeURI","contentType","headers","ok","mimeTypes","includes","error","parseSync","Error","_parseError","DataSource","exports","toLowerCase"],"sources":["../../../../../src/lib/services/ogc/csw-service.ts"],"sourcesContent":["// loaders.gl, MIT license\n\n/* eslint-disable camelcase */\n\nimport type {DataSourceProps} from '../../sources/data-source';\nimport {DataSource} from '../../sources/data-source';\n\nimport type {CSWCapabilities} from '../../../csw-capabilities-loader';\nimport {CSWCapabilitiesLoader} from '../../../csw-capabilities-loader';\n\nimport type {CSWRecords} from '../../../csw-records-loader';\nimport {CSWRecordsLoader} from '../../../csw-records-loader';\n\nimport type {CSWDomain} from '../../../csw-domain-loader';\nimport {CSWDomainLoader} from '../../../csw-domain-loader';\n\nimport {WMSErrorLoader as CSWErrorLoader} from '../../../wms-error-loader';\n\ntype CSWCommonParameters = {\n /** In case the endpoint supports multiple services */\n service?: 'CSW';\n /** In case the endpoint supports multiple CSW versions */\n version?: '1.1.1' | '2.0.0' | '2.0.1' | '3.0.0';\n};\n\nexport type CSWGetCapabilitiesParameters = CSWCommonParameters & {\n /** Request type */\n request?: 'GetCapabilities';\n};\n\nexport type CSWGetRecordsParameters = CSWCommonParameters & {\n /** Request type */\n request?: 'GetRecords';\n /** type of records */\n typenames: 'csw:Record';\n};\n\nexport type CSWGetDomainParameters = CSWCommonParameters & {\n /** Request type */\n request?: 'GetDomain';\n // TBA\n};\n\n/** Describes a service or resource exposed by the catalog */\nexport type Service = {\n /** name of service or resource */\n name: string;\n /** type of service or resource */\n type: string;\n url: string;\n params?: string;\n scheme?: string;\n};\n\nexport type CSWServiceProps = DataSourceProps & {\n url: string;\n};\n\n/**\n * The CSWService class\n * - provides type safe methods to form URLs to a CSW service\n * - provides type safe methods to query and parse results (and errors) from a CSW service\n * @note Only the URL parameter conversion is supported. XML posts are not supported.\n */\nexport class CSWService extends DataSource<CSWServiceProps> {\n static type: 'csw' = 'csw';\n static testURL = (url: string): boolean => url.toLowerCase().includes('csw');\n\n capabilities: CSWCapabilities | null = null;\n\n /** A list of loaders used by the CSWService methods */\n readonly loaders = [CSWErrorLoader, CSWCapabilitiesLoader];\n\n /** Create a CSWService */\n constructor(props: CSWServiceProps) {\n super(props);\n }\n\n async getMetadata(): Promise<CSWCapabilities> {\n const capabilities = await this.getCapabilities();\n return this.normalizeMetadata(capabilities);\n }\n\n normalizeMetadata(capabilities: CSWCapabilities): CSWCapabilities {\n return capabilities;\n }\n\n async getServiceDirectory(options?: {includeUnknown?: boolean}): Promise<Service[]> {\n const services: Service[] = [];\n const unknownServices: Service[] = [];\n\n const records = await this.getRecords();\n for (const record of records.records) {\n for (const reference of record.references) {\n const url = reference.value;\n switch (reference.scheme) {\n case 'OGC:WMS':\n services.push({name: record.title, type: 'ogc-wms-service', ...this._parseOGCUrl(url)});\n break;\n case 'OGC:WMTS':\n services.push({\n name: record.title,\n type: 'ogc-wmts-service',\n ...this._parseOGCUrl(url)\n });\n break;\n case 'OGC:WFS':\n services.push({name: record.title, type: 'ogc-wfs-service', ...this._parseOGCUrl(url)});\n break;\n default:\n unknownServices.push({\n name: record.title,\n type: 'unknown',\n url: reference.value,\n scheme: reference.scheme\n });\n }\n }\n }\n\n return options?.includeUnknown ? services.concat(unknownServices) : services;\n }\n\n _parseOGCUrl(url: string): {url: string; params: string} {\n const parts = url.split('?');\n return {\n url: parts[0],\n params: parts[1] || ''\n };\n }\n\n // CSW Service API Stubs\n\n /** Get Capabilities */\n async getCapabilities(\n wmsParameters?: CSWGetCapabilitiesParameters,\n vendorParameters?: Record<string, unknown>\n ): Promise<CSWCapabilities> {\n const url = this.getCapabilitiesURL(wmsParameters, vendorParameters);\n const response = await this.fetch(url);\n const arrayBuffer = await response.arrayBuffer();\n this._checkResponse(response, arrayBuffer);\n const capabilities = await CSWCapabilitiesLoader.parse(arrayBuffer, this.props.loadOptions);\n return capabilities;\n }\n\n /** Get Records */\n async getRecords(\n wmsParameters?: CSWGetRecordsParameters,\n vendorParameters?: Record<string, unknown>\n ): Promise<CSWRecords> {\n const url = this.getRecordsURL(wmsParameters, vendorParameters);\n const response = await this.fetch(url);\n const arrayBuffer = await response.arrayBuffer();\n this._checkResponse(response, arrayBuffer);\n return await CSWRecordsLoader.parse(arrayBuffer, this.props.loadOptions);\n }\n\n /** Get Domain */\n async getDomain(\n wmsParameters?: CSWGetDomainParameters,\n vendorParameters?: Record<string, unknown>\n ): Promise<CSWDomain> {\n const url = this.getDomainURL(wmsParameters, vendorParameters);\n const response = await this.fetch(url);\n const arrayBuffer = await response.arrayBuffer();\n this._checkResponse(response, arrayBuffer);\n return await CSWDomainLoader.parse(arrayBuffer, this.props.loadOptions);\n }\n\n // Typed URL creators\n // For applications that want full control of fetching and parsing\n\n /** Generate a URL for the GetCapabilities request */\n getCapabilitiesURL(\n wmsParameters?: CSWGetCapabilitiesParameters,\n vendorParameters?: Record<string, unknown>\n ): string {\n const options: Required<CSWGetCapabilitiesParameters> = {\n version: '3.0.0',\n ...wmsParameters,\n ...vendorParameters,\n service: 'CSW',\n request: 'GetCapabilities'\n };\n return this._getCSWUrl(options, vendorParameters);\n }\n\n /** Generate a URL for the GetCapabilities request */\n getRecordsURL(\n wmsParameters?: CSWGetRecordsParameters,\n vendorParameters?: Record<string, unknown>\n ): string {\n const options: Required<CSWGetRecordsParameters> = {\n version: '3.0.0',\n typenames: 'csw:Record',\n ...wmsParameters,\n ...vendorParameters,\n service: 'CSW',\n request: 'GetRecords'\n };\n return this._getCSWUrl(options, vendorParameters);\n }\n\n /** Generate a URL for the GetCapabilities request */\n getDomainURL(\n wmsParameters?: CSWGetDomainParameters,\n vendorParameters?: Record<string, unknown>\n ): string {\n const options: Required<CSWGetDomainParameters> = {\n version: '3.0.0',\n ...wmsParameters,\n ...vendorParameters,\n service: 'CSW',\n request: 'GetDomain'\n };\n return this._getCSWUrl(options, vendorParameters);\n }\n\n // INTERNAL METHODS\n\n /**\n * @note case _getCSWUrl may need to be overridden to handle certain backends?\n * */\n protected _getCSWUrl(\n options: Record<string, unknown>,\n vendorParameters?: Record<string, unknown>\n ): string {\n let url = this.props.url;\n let first = true;\n for (const [key, value] of Object.entries(options)) {\n url += first ? '?' : '&';\n first = false;\n if (Array.isArray(value)) {\n url += `${key.toUpperCase()}=${value.join(',')}`;\n } else {\n url += `${key.toUpperCase()}=${value ? String(value) : ''}`;\n }\n }\n return encodeURI(url);\n }\n\n /** Checks for and parses a CSW XML formatted ServiceError and throws an exception */\n protected _checkResponse(response: Response, arrayBuffer: ArrayBuffer): void {\n const contentType = response.headers['content-type'];\n if (!response.ok || CSWErrorLoader.mimeTypes.includes(contentType)) {\n const error = CSWErrorLoader.parseSync(arrayBuffer, this.props.loadOptions);\n throw new Error(error);\n }\n }\n\n /** Error situation detected */\n protected _parseError(arrayBuffer: ArrayBuffer): Error {\n const error = CSWErrorLoader.parseSync(arrayBuffer, this.props.loadOptions);\n return new Error(error);\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AAKA,IAAAA,WAAA,GAAAC,OAAA;AAGA,IAAAC,sBAAA,GAAAD,OAAA;AAGA,IAAAE,iBAAA,GAAAF,OAAA;AAGA,IAAAG,gBAAA,GAAAH,OAAA;AAEA,IAAAI,eAAA,GAAAJ,OAAA;AAA2E,SAAAK,QAAAC,MAAA,EAAAC,cAAA,QAAAC,IAAA,GAAAC,MAAA,CAAAD,IAAA,CAAAF,MAAA,OAAAG,MAAA,CAAAC,qBAAA,QAAAC,OAAA,GAAAF,MAAA,CAAAC,qBAAA,CAAAJ,MAAA,GAAAC,cAAA,KAAAI,OAAA,GAAAA,OAAA,CAAAC,MAAA,WAAAC,GAAA,WAAAJ,MAAA,CAAAK,wBAAA,CAAAR,MAAA,EAAAO,GAAA,EAAAE,UAAA,OAAAP,IAAA,CAAAQ,IAAA,CAAAC,KAAA,CAAAT,IAAA,EAAAG,OAAA,YAAAH,IAAA;AAAA,SAAAU,cAAAC,MAAA,aAAAC,CAAA,MAAAA,CAAA,GAAAC,SAAA,CAAAC,MAAA,EAAAF,CAAA,UAAAG,MAAA,WAAAF,SAAA,CAAAD,CAAA,IAAAC,SAAA,CAAAD,CAAA,QAAAA,CAAA,OAAAf,OAAA,CAAAI,MAAA,CAAAc,MAAA,OAAAC,OAAA,WAAAC,GAAA,QAAAC,gBAAA,CAAAC,OAAA,EAAAR,MAAA,EAAAM,GAAA,EAAAF,MAAA,CAAAE,GAAA,SAAAhB,MAAA,CAAAmB,yBAAA,GAAAnB,MAAA,CAAAoB,gBAAA,CAAAV,MAAA,EAAAV,MAAA,CAAAmB,yBAAA,CAAAL,MAAA,KAAAlB,OAAA,CAAAI,MAAA,CAAAc,MAAA,GAAAC,OAAA,WAAAC,GAAA,IAAAhB,MAAA,CAAAqB,cAAA,CAAAX,MAAA,EAAAM,GAAA,EAAAhB,MAAA,CAAAK,wBAAA,CAAAS,MAAA,EAAAE,GAAA,iBAAAN,MAAA;AAAA,SAAAY,2BAAAC,CAAA,EAAAC,cAAA,QAAAC,EAAA,UAAAC,MAAA,oBAAAH,CAAA,CAAAG,MAAA,CAAAC,QAAA,KAAAJ,CAAA,qBAAAE,EAAA,QAAAG,KAAA,CAAAC,OAAA,CAAAN,CAAA,MAAAE,EAAA,GAAAK,2BAAA,CAAAP,CAAA,MAAAC,cAAA,IAAAD,CAAA,WAAAA,CAAA,CAAAV,MAAA,qBAAAY,EAAA,EAAAF,CAAA,GAAAE,EAAA,MAAAd,CAAA,UAAAoB,CAAA,YAAAA,EAAA,eAAAC,CAAA,EAAAD,CAAA,EAAAE,CAAA,WAAAA,EAAA,QAAAtB,CAAA,IAAAY,CAAA,CAAAV,MAAA,WAAAqB,IAAA,mBAAAA,IAAA,SAAAC,KAAA,EAAAZ,CAAA,CAAAZ,CAAA,UAAAyB,CAAA,WAAAA,EAAAC,EAAA,UAAAA,EAAA,KAAAC,CAAA,EAAAP,CAAA,gBAAAQ,SAAA,iJAAAC,gBAAA,SAAAC,MAAA,UAAAC,GAAA,WAAAV,CAAA,WAAAA,EAAA,IAAAP,EAAA,GAAAA,EAAA,CAAAkB,IAAA,CAAApB,CAAA,MAAAU,CAAA,WAAAA,EAAA,QAAAW,IAAA,GAAAnB,EAAA,CAAAoB,IAAA,IAAAL,gBAAA,GAAAI,IAAA,CAAAV,IAAA,SAAAU,IAAA,KAAAR,CAAA,WAAAA,EAAAU,GAAA,IAAAL,MAAA,SAAAC,GAAA,GAAAI,GAAA,KAAAR,CAAA,WAAAA,EAAA,eAAAE,gBAAA,IAAAf,EAAA,CAAAsB,MAAA,UAAAtB,EAAA,CAAAsB,MAAA,oBAAAN,MAAA,QAAAC,GAAA;AAAA,SAAAZ,4BAAAP,CAAA,EAAAyB,MAAA,SAAAzB,CAAA,qBAAAA,CAAA,sBAAA0B,iBAAA,CAAA1B,CAAA,EAAAyB,MAAA,OAAAf,CAAA,GAAAjC,MAAA,CAAAkD,SAAA,CAAAC,QAAA,CAAAR,IAAA,CAAApB,CAAA,EAAA6B,KAAA,aAAAnB,CAAA,iBAAAV,CAAA,CAAA8B,WAAA,EAAApB,CAAA,GAAAV,CAAA,CAAA8B,WAAA,CAAAC,IAAA,MAAArB,CAAA,cAAAA,CAAA,mBAAAL,KAAA,CAAA2B,IAAA,CAAAhC,CAAA,OAAAU,CAAA,+DAAAuB,IAAA,CAAAvB,CAAA,UAAAgB,iBAAA,CAAA1B,CAAA,EAAAyB,MAAA;AAAA,SAAAC,kBAAAQ,GAAA,EAAAC,GAAA,QAAAA,GAAA,YAAAA,GAAA,GAAAD,GAAA,CAAA5C,MAAA,EAAA6C,GAAA,GAAAD,GAAA,CAAA5C,MAAA,WAAAF,CAAA,MAAAgD,IAAA,OAAA/B,KAAA,CAAA8B,GAAA,GAAA/C,CAAA,GAAA+C,GAAA,EAAA/C,CAAA,IAAAgD,IAAA,CAAAhD,CAAA,IAAA8C,GAAA,CAAA9C,CAAA,UAAAgD,IAAA;AAAA,SAAAC,aAAAC,OAAA,QAAAC,yBAAA,GAAAC,yBAAA,oBAAAC,qBAAA,QAAAC,KAAA,OAAAC,gBAAA,CAAAhD,OAAA,EAAA2C,OAAA,GAAAM,MAAA,MAAAL,yBAAA,QAAAM,SAAA,OAAAF,gBAAA,CAAAhD,OAAA,QAAAmC,WAAA,EAAAc,MAAA,GAAAE,OAAA,CAAAC,SAAA,CAAAL,KAAA,EAAArD,SAAA,EAAAwD,SAAA,YAAAD,MAAA,GAAAF,KAAA,CAAAzD,KAAA,OAAAI,SAAA,gBAAA2D,2BAAA,CAAArD,OAAA,QAAAiD,MAAA;AAAA,SAAAJ,0BAAA,eAAAM,OAAA,qBAAAA,OAAA,CAAAC,SAAA,oBAAAD,OAAA,CAAAC,SAAA,CAAAE,IAAA,2BAAAC,KAAA,oCAAAC,OAAA,CAAAxB,SAAA,CAAAyB,OAAA,CAAAhC,IAAA,CAAA0B,OAAA,CAAAC,SAAA,CAAAI,OAAA,8CAAAtC,CAAA;AAAA,IAgD9DwC,UAAU,aAAAC,WAAA;EAAA,IAAAC,UAAA,CAAA5D,OAAA,EAAA0D,UAAA,EAAAC,WAAA;EAAA,IAAAE,MAAA,GAAAnB,YAAA,CAAAgB,UAAA;EAUrB,SAAAA,WAAYI,KAAsB,EAAE;IAAA,IAAAC,KAAA;IAAA,IAAAC,gBAAA,CAAAhE,OAAA,QAAA0D,UAAA;IAClCK,KAAA,GAAAF,MAAA,CAAApC,IAAA,OAAMqC,KAAK;IAAE,IAAA/D,gBAAA,CAAAC,OAAA,MAAAiE,uBAAA,CAAAjE,OAAA,EAAA+D,KAAA,mBAPwB,IAAI;IAAA,IAAAhE,gBAAA,CAAAC,OAAA,MAAAiE,uBAAA,CAAAjE,OAAA,EAAA+D,KAAA,cAGxB,CAACG,8BAAc,EAAEC,4CAAqB,CAAC;IAAA,OAAAJ,KAAA;EAK1D;EAAC,IAAAK,aAAA,CAAApE,OAAA,EAAA0D,UAAA;IAAA5D,GAAA;IAAAmB,KAAA;MAAA,IAAAoD,YAAA,OAAAC,kBAAA,CAAAtE,OAAA,EAAAuE,YAAA,CAAAvE,OAAA,CAAAwE,IAAA,CAED,SAAAC,QAAA;QAAA,IAAAC,YAAA;QAAA,OAAAH,YAAA,CAAAvE,OAAA,CAAA2E,IAAA,UAAAC,SAAAC,QAAA;UAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAlD,IAAA;YAAA;cAAAkD,QAAA,CAAAlD,IAAA;cAAA,OAC6B,IAAI,CAACoD,eAAe,CAAC,CAAC;YAAA;cAA3CL,YAAY,GAAAG,QAAA,CAAAG,IAAA;cAAA,OAAAH,QAAA,CAAAI,MAAA,WACX,IAAI,CAACC,iBAAiB,CAACR,YAAY,CAAC;YAAA;YAAA;cAAA,OAAAG,QAAA,CAAAM,IAAA;UAAA;QAAA,GAAAV,OAAA;MAAA,CAC5C;MAAA,SAAAW,YAAA;QAAA,OAAAf,YAAA,CAAA/E,KAAA,OAAAI,SAAA;MAAA;MAAA,OAAA0F,WAAA;IAAA;EAAA;IAAAtF,GAAA;IAAAmB,KAAA,EAED,SAAAiE,kBAAkBR,YAA6B,EAAmB;MAChE,OAAOA,YAAY;IACrB;EAAC;IAAA5E,GAAA;IAAAmB,KAAA;MAAA,IAAAoE,oBAAA,OAAAf,kBAAA,CAAAtE,OAAA,EAAAuE,YAAA,CAAAvE,OAAA,CAAAwE,IAAA,CAED,SAAAc,SAA0BC,OAAoC;QAAA,IAAAC,QAAA,EAAAC,eAAA,EAAAC,OAAA,EAAAC,SAAA,EAAAC,KAAA,EAAAC,MAAA,EAAAC,UAAA,EAAAC,MAAA,EAAAC,SAAA,EAAAC,GAAA;QAAA,OAAA1B,YAAA,CAAAvE,OAAA,CAAA2E,IAAA,UAAAuB,UAAAC,SAAA;UAAA,kBAAAA,SAAA,CAAArB,IAAA,GAAAqB,SAAA,CAAAxE,IAAA;YAAA;cACtD6D,QAAmB,GAAG,EAAE;cACxBC,eAA0B,GAAG,EAAE;cAAAU,SAAA,CAAAxE,IAAA;cAAA,OAEf,IAAI,CAACyE,UAAU,CAAC,CAAC;YAAA;cAAjCV,OAAO,GAAAS,SAAA,CAAAnB,IAAA;cAAAW,SAAA,GAAAvF,0BAAA,CACQsF,OAAO,CAACA,OAAO;cAAAS,SAAA,CAAArB,IAAA;cAAAa,SAAA,CAAA7E,CAAA;YAAA;cAAA,KAAA8E,KAAA,GAAAD,SAAA,CAAA5E,CAAA,IAAAC,IAAA;gBAAAmF,SAAA,CAAAxE,IAAA;gBAAA;cAAA;cAAzBkE,MAAM,GAAAD,KAAA,CAAA3E,KAAA;cAAA6E,UAAA,GAAA1F,0BAAA,CACSyF,MAAM,CAACQ,UAAU;cAAAF,SAAA,CAAArB,IAAA;cAAAgB,UAAA,CAAAhF,CAAA;YAAA;cAAA,KAAAiF,MAAA,GAAAD,UAAA,CAAA/E,CAAA,IAAAC,IAAA;gBAAAmF,SAAA,CAAAxE,IAAA;gBAAA;cAAA;cAA9BqE,SAAS,GAAAD,MAAA,CAAA9E,KAAA;cACZgF,GAAG,GAAGD,SAAS,CAAC/E,KAAK;cAAAkF,SAAA,CAAAG,EAAA,GACnBN,SAAS,CAACO,MAAM;cAAAJ,SAAA,CAAAxE,IAAA,GAAAwE,SAAA,CAAAG,EAAA,KACjB,SAAS,QAAAH,SAAA,CAAAG,EAAA,KAGT,UAAU,QAAAH,SAAA,CAAAG,EAAA,KAOV,SAAS;cAAA;YAAA;cATZd,QAAQ,CAACnG,IAAI,CAAAE,aAAA;gBAAE6C,IAAI,EAAEyD,MAAM,CAACW,KAAK;gBAAEC,IAAI,EAAE;cAAiB,GAAK,IAAI,CAACC,YAAY,CAACT,GAAG,CAAC,CAAC,CAAC;cAAC,OAAAE,SAAA,CAAAlB,MAAA;YAAA;cAGxFO,QAAQ,CAACnG,IAAI,CAAAE,aAAA;gBACX6C,IAAI,EAAEyD,MAAM,CAACW,KAAK;gBAClBC,IAAI,EAAE;cAAkB,GACrB,IAAI,CAACC,YAAY,CAACT,GAAG,CAAC,CAC1B,CAAC;cAAC,OAAAE,SAAA,CAAAlB,MAAA;YAAA;cAGHO,QAAQ,CAACnG,IAAI,CAAAE,aAAA;gBAAE6C,IAAI,EAAEyD,MAAM,CAACW,KAAK;gBAAEC,IAAI,EAAE;cAAiB,GAAK,IAAI,CAACC,YAAY,CAACT,GAAG,CAAC,CAAC,CAAC;cAAC,OAAAE,SAAA,CAAAlB,MAAA;YAAA;cAGxFQ,eAAe,CAACpG,IAAI,CAAC;gBACnB+C,IAAI,EAAEyD,MAAM,CAACW,KAAK;gBAClBC,IAAI,EAAE,SAAS;gBACfR,GAAG,EAAED,SAAS,CAAC/E,KAAK;gBACpBsF,MAAM,EAAEP,SAAS,CAACO;cACpB,CAAC,CAAC;YAAC;cAAAJ,SAAA,CAAAxE,IAAA;cAAA;YAAA;cAAAwE,SAAA,CAAAxE,IAAA;cAAA;YAAA;cAAAwE,SAAA,CAAArB,IAAA;cAAAqB,SAAA,CAAAQ,EAAA,GAAAR,SAAA;cAAAL,UAAA,CAAA5E,CAAA,CAAAiF,SAAA,CAAAQ,EAAA;YAAA;cAAAR,SAAA,CAAArB,IAAA;cAAAgB,UAAA,CAAA1E,CAAA;cAAA,OAAA+E,SAAA,CAAAS,MAAA;YAAA;cAAAT,SAAA,CAAAxE,IAAA;cAAA;YAAA;cAAAwE,SAAA,CAAAxE,IAAA;cAAA;YAAA;cAAAwE,SAAA,CAAArB,IAAA;cAAAqB,SAAA,CAAAU,EAAA,GAAAV,SAAA;cAAAR,SAAA,CAAAzE,CAAA,CAAAiF,SAAA,CAAAU,EAAA;YAAA;cAAAV,SAAA,CAAArB,IAAA;cAAAa,SAAA,CAAAvE,CAAA;cAAA,OAAA+E,SAAA,CAAAS,MAAA;YAAA;cAAA,OAAAT,SAAA,CAAAlB,MAAA,WAKJM,OAAO,aAAPA,OAAO,eAAPA,OAAO,CAAEuB,cAAc,GAAGtB,QAAQ,CAACuB,MAAM,CAACtB,eAAe,CAAC,GAAGD,QAAQ;YAAA;YAAA;cAAA,OAAAW,SAAA,CAAAhB,IAAA;UAAA;QAAA,GAAAG,QAAA;MAAA,CAC7E;MAAA,SAAA0B,oBAAAC,EAAA;QAAA,OAAA5B,oBAAA,CAAA/F,KAAA,OAAAI,SAAA;MAAA;MAAA,OAAAsH,mBAAA;IAAA;EAAA;IAAAlH,GAAA;IAAAmB,KAAA,EAED,SAAAyF,aAAaT,GAAW,EAAiC;MACvD,IAAMiB,KAAK,GAAGjB,GAAG,CAACkB,KAAK,CAAC,GAAG,CAAC;MAC5B,OAAO;QACLlB,GAAG,EAAEiB,KAAK,CAAC,CAAC,CAAC;QACbE,MAAM,EAAEF,KAAK,CAAC,CAAC,CAAC,IAAI;MACtB,CAAC;IACH;EAAC;IAAApH,GAAA;IAAAmB,KAAA;MAAA,IAAAoG,gBAAA,OAAA/C,kBAAA,CAAAtE,OAAA,EAAAuE,YAAA,CAAAvE,OAAA,CAAAwE,IAAA,CAKD,SAAA8C,SACEC,aAA4C,EAC5CC,gBAA0C;QAAA,IAAAvB,GAAA,EAAAwB,QAAA,EAAAC,WAAA,EAAAhD,YAAA;QAAA,OAAAH,YAAA,CAAAvE,OAAA,CAAA2E,IAAA,UAAAgD,UAAAC,SAAA;UAAA,kBAAAA,SAAA,CAAA9C,IAAA,GAAA8C,SAAA,CAAAjG,IAAA;YAAA;cAEpCsE,GAAG,GAAG,IAAI,CAAC4B,kBAAkB,CAACN,aAAa,EAAEC,gBAAgB,CAAC;cAAAI,SAAA,CAAAjG,IAAA;cAAA,OAC7C,IAAI,CAACmG,KAAK,CAAC7B,GAAG,CAAC;YAAA;cAAhCwB,QAAQ,GAAAG,SAAA,CAAA5C,IAAA;cAAA4C,SAAA,CAAAjG,IAAA;cAAA,OACY8F,QAAQ,CAACC,WAAW,CAAC,CAAC;YAAA;cAA1CA,WAAW,GAAAE,SAAA,CAAA5C,IAAA;cACjB,IAAI,CAAC+C,cAAc,CAACN,QAAQ,EAAEC,WAAW,CAAC;cAACE,SAAA,CAAAjG,IAAA;cAAA,OAChBwC,4CAAqB,CAAC6D,KAAK,CAACN,WAAW,EAAE,IAAI,CAAC5D,KAAK,CAACmE,WAAW,CAAC;YAAA;cAArFvD,YAAY,GAAAkD,SAAA,CAAA5C,IAAA;cAAA,OAAA4C,SAAA,CAAA3C,MAAA,WACXP,YAAY;YAAA;YAAA;cAAA,OAAAkD,SAAA,CAAAzC,IAAA;UAAA;QAAA,GAAAmC,QAAA;MAAA,CACpB;MAAA,SAAAvC,gBAAAmD,GAAA,EAAAC,GAAA;QAAA,OAAAd,gBAAA,CAAA/H,KAAA,OAAAI,SAAA;MAAA;MAAA,OAAAqF,eAAA;IAAA;EAAA;IAAAjF,GAAA;IAAAmB,KAAA;MAAA,IAAAmH,WAAA,OAAA9D,kBAAA,CAAAtE,OAAA,EAAAuE,YAAA,CAAAvE,OAAA,CAAAwE,IAAA,CAGD,SAAA6D,SACEd,aAAuC,EACvCC,gBAA0C;QAAA,IAAAvB,GAAA,EAAAwB,QAAA,EAAAC,WAAA;QAAA,OAAAnD,YAAA,CAAAvE,OAAA,CAAA2E,IAAA,UAAA2D,UAAAC,SAAA;UAAA,kBAAAA,SAAA,CAAAzD,IAAA,GAAAyD,SAAA,CAAA5G,IAAA;YAAA;cAEpCsE,GAAG,GAAG,IAAI,CAACuC,aAAa,CAACjB,aAAa,EAAEC,gBAAgB,CAAC;cAAAe,SAAA,CAAA5G,IAAA;cAAA,OACxC,IAAI,CAACmG,KAAK,CAAC7B,GAAG,CAAC;YAAA;cAAhCwB,QAAQ,GAAAc,SAAA,CAAAvD,IAAA;cAAAuD,SAAA,CAAA5G,IAAA;cAAA,OACY8F,QAAQ,CAACC,WAAW,CAAC,CAAC;YAAA;cAA1CA,WAAW,GAAAa,SAAA,CAAAvD,IAAA;cACjB,IAAI,CAAC+C,cAAc,CAACN,QAAQ,EAAEC,WAAW,CAAC;cAACa,SAAA,CAAA5G,IAAA;cAAA,OAC9B8G,kCAAgB,CAACT,KAAK,CAACN,WAAW,EAAE,IAAI,CAAC5D,KAAK,CAACmE,WAAW,CAAC;YAAA;cAAA,OAAAM,SAAA,CAAAtD,MAAA,WAAAsD,SAAA,CAAAvD,IAAA;YAAA;YAAA;cAAA,OAAAuD,SAAA,CAAApD,IAAA;UAAA;QAAA,GAAAkD,QAAA;MAAA,CACzE;MAAA,SAAAjC,WAAAsC,GAAA,EAAAC,GAAA;QAAA,OAAAP,WAAA,CAAA9I,KAAA,OAAAI,SAAA;MAAA;MAAA,OAAA0G,UAAA;IAAA;EAAA;IAAAtG,GAAA;IAAAmB,KAAA;MAAA,IAAA2H,UAAA,OAAAtE,kBAAA,CAAAtE,OAAA,EAAAuE,YAAA,CAAAvE,OAAA,CAAAwE,IAAA,CAGD,SAAAqE,SACEtB,aAAsC,EACtCC,gBAA0C;QAAA,IAAAvB,GAAA,EAAAwB,QAAA,EAAAC,WAAA;QAAA,OAAAnD,YAAA,CAAAvE,OAAA,CAAA2E,IAAA,UAAAmE,UAAAC,SAAA;UAAA,kBAAAA,SAAA,CAAAjE,IAAA,GAAAiE,SAAA,CAAApH,IAAA;YAAA;cAEpCsE,GAAG,GAAG,IAAI,CAAC+C,YAAY,CAACzB,aAAa,EAAEC,gBAAgB,CAAC;cAAAuB,SAAA,CAAApH,IAAA;cAAA,OACvC,IAAI,CAACmG,KAAK,CAAC7B,GAAG,CAAC;YAAA;cAAhCwB,QAAQ,GAAAsB,SAAA,CAAA/D,IAAA;cAAA+D,SAAA,CAAApH,IAAA;cAAA,OACY8F,QAAQ,CAACC,WAAW,CAAC,CAAC;YAAA;cAA1CA,WAAW,GAAAqB,SAAA,CAAA/D,IAAA;cACjB,IAAI,CAAC+C,cAAc,CAACN,QAAQ,EAAEC,WAAW,CAAC;cAACqB,SAAA,CAAApH,IAAA;cAAA,OAC9BsH,gCAAe,CAACjB,KAAK,CAACN,WAAW,EAAE,IAAI,CAAC5D,KAAK,CAACmE,WAAW,CAAC;YAAA;cAAA,OAAAc,SAAA,CAAA9D,MAAA,WAAA8D,SAAA,CAAA/D,IAAA;YAAA;YAAA;cAAA,OAAA+D,SAAA,CAAA5D,IAAA;UAAA;QAAA,GAAA0D,QAAA;MAAA,CACxE;MAAA,SAAAK,UAAAC,GAAA,EAAAC,GAAA;QAAA,OAAAR,UAAA,CAAAtJ,KAAA,OAAAI,SAAA;MAAA;MAAA,OAAAwJ,SAAA;IAAA;EAAA;IAAApJ,GAAA;IAAAmB,KAAA,EAMD,SAAA4G,mBACEN,aAA4C,EAC5CC,gBAA0C,EAClC;MACR,IAAMjC,OAA+C,GAAAhG,aAAA,CAAAA,aAAA,CAAAA,aAAA;QACnD8J,OAAO,EAAE;MAAO,GACb9B,aAAa,GACbC,gBAAgB;QACnB8B,OAAO,EAAE,KAAK;QACdC,OAAO,EAAE;MAAiB,EAC3B;MACD,OAAO,IAAI,CAACC,UAAU,CAACjE,OAAO,EAAEiC,gBAAgB,CAAC;IACnD;EAAC;IAAA1H,GAAA;IAAAmB,KAAA,EAGD,SAAAuH,cACEjB,aAAuC,EACvCC,gBAA0C,EAClC;MACR,IAAMjC,OAA0C,GAAAhG,aAAA,CAAAA,aAAA,CAAAA,aAAA;QAC9C8J,OAAO,EAAE,OAAO;QAChBI,SAAS,EAAE;MAAY,GACpBlC,aAAa,GACbC,gBAAgB;QACnB8B,OAAO,EAAE,KAAK;QACdC,OAAO,EAAE;MAAY,EACtB;MACD,OAAO,IAAI,CAACC,UAAU,CAACjE,OAAO,EAAEiC,gBAAgB,CAAC;IACnD;EAAC;IAAA1H,GAAA;IAAAmB,KAAA,EAGD,SAAA+H,aACEzB,aAAsC,EACtCC,gBAA0C,EAClC;MACR,IAAMjC,OAAyC,GAAAhG,aAAA,CAAAA,aAAA,CAAAA,aAAA;QAC7C8J,OAAO,EAAE;MAAO,GACb9B,aAAa,GACbC,gBAAgB;QACnB8B,OAAO,EAAE,KAAK;QACdC,OAAO,EAAE;MAAW,EACrB;MACD,OAAO,IAAI,CAACC,UAAU,CAACjE,OAAO,EAAEiC,gBAAgB,CAAC;IACnD;EAAC;IAAA1H,GAAA;IAAAmB,KAAA,EAOD,SAAAuI,WACEjE,OAAgC,EAChCiC,gBAA0C,EAClC;MACR,IAAIvB,GAAG,GAAG,IAAI,CAACnC,KAAK,CAACmC,GAAG;MACxB,IAAIyD,KAAK,GAAG,IAAI;MAChB,SAAAC,EAAA,MAAAC,eAAA,GAA2B9K,MAAM,CAAC+K,OAAO,CAACtE,OAAO,CAAC,EAAAoE,EAAA,GAAAC,eAAA,CAAAjK,MAAA,EAAAgK,EAAA,IAAE;QAA/C,IAAAG,kBAAA,OAAAC,eAAA,CAAA/J,OAAA,EAAA4J,eAAA,CAAAD,EAAA;UAAO7J,GAAG,GAAAgK,kBAAA;UAAE7I,KAAK,GAAA6I,kBAAA;QACpB7D,GAAG,IAAIyD,KAAK,GAAG,GAAG,GAAG,GAAG;QACxBA,KAAK,GAAG,KAAK;QACb,IAAIhJ,KAAK,CAACC,OAAO,CAACM,KAAK,CAAC,EAAE;UACxBgF,GAAG,OAAAc,MAAA,CAAOjH,GAAG,CAACkK,WAAW,CAAC,CAAC,OAAAjD,MAAA,CAAI9F,KAAK,CAACgJ,IAAI,CAAC,GAAG,CAAC,CAAE;QAClD,CAAC,MAAM;UACLhE,GAAG,OAAAc,MAAA,CAAOjH,GAAG,CAACkK,WAAW,CAAC,CAAC,OAAAjD,MAAA,CAAI9F,KAAK,GAAGiJ,MAAM,CAACjJ,KAAK,CAAC,GAAG,EAAE,CAAE;QAC7D;MACF;MACA,OAAOkJ,SAAS,CAAClE,GAAG,CAAC;IACvB;EAAC;IAAAnG,GAAA;IAAAmB,KAAA,EAGD,SAAA8G,eAAyBN,QAAkB,EAAEC,WAAwB,EAAQ;MAC3E,IAAM0C,WAAW,GAAG3C,QAAQ,CAAC4C,OAAO,CAAC,cAAc,CAAC;MACpD,IAAI,CAAC5C,QAAQ,CAAC6C,EAAE,IAAIpG,8BAAc,CAACqG,SAAS,CAACC,QAAQ,CAACJ,WAAW,CAAC,EAAE;QAClE,IAAMK,KAAK,GAAGvG,8BAAc,CAACwG,SAAS,CAAChD,WAAW,EAAE,IAAI,CAAC5D,KAAK,CAACmE,WAAW,CAAC;QAC3E,MAAM,IAAI0C,KAAK,CAACF,KAAK,CAAC;MACxB;IACF;EAAC;IAAA3K,GAAA;IAAAmB,KAAA,EAGD,SAAA2J,YAAsBlD,WAAwB,EAAS;MACrD,IAAM+C,KAAK,GAAGvG,8BAAc,CAACwG,SAAS,CAAChD,WAAW,EAAE,IAAI,CAAC5D,KAAK,CAACmE,WAAW,CAAC;MAC3E,OAAO,IAAI0C,KAAK,CAACF,KAAK,CAAC;IACzB;EAAC;EAAA,OAAA/G,UAAA;AAAA,EA/L6BmH,sBAAU;AAAAC,OAAA,CAAApH,UAAA,GAAAA,UAAA;AAAA,IAAA3D,gBAAA,CAAAC,OAAA,EAA7B0D,UAAU,UACA,KAAK;AAAA,IAAA3D,gBAAA,CAAAC,OAAA,EADf0D,UAAU,aAEJ,UAACuC,GAAW;EAAA,OAAcA,GAAG,CAAC8E,WAAW,CAAC,CAAC,CAACP,QAAQ,CAAC,KAAK,CAAC;AAAA"}
|
|
1
|
+
{"version":3,"file":"csw-service.js","names":["_dataSource","require","_cswCapabilitiesLoader","_cswRecordsLoader","_cswDomainLoader","_wmsErrorLoader","CSWService","DataSource","constructor","props","_defineProperty2","default","CSWErrorLoader","CSWCapabilitiesLoader","getMetadata","capabilities","getCapabilities","normalizeMetadata","getServiceDirectory","options","services","unknownServices","records","getRecords","record","reference","references","url","value","scheme","push","name","title","type","_parseOGCUrl","includeUnknown","concat","parts","split","params","wmsParameters","vendorParameters","getCapabilitiesURL","response","fetch","arrayBuffer","_checkResponse","parse","loadOptions","getRecordsURL","CSWRecordsLoader","getDomain","getDomainURL","CSWDomainLoader","version","service","request","_getCSWUrl","typenames","first","key","Object","entries","Array","isArray","toUpperCase","join","String","encodeURI","contentType","headers","ok","mimeTypes","includes","error","parseSync","Error","_parseError","exports","toLowerCase"],"sources":["../../../../../src/lib/services/ogc/csw-service.ts"],"sourcesContent":["// loaders.gl, MIT license\n\n/* eslint-disable camelcase */\n\nimport type {DataSourceProps} from '../../sources/data-source';\nimport {DataSource} from '../../sources/data-source';\n\nimport type {CSWCapabilities} from '../../../csw-capabilities-loader';\nimport {CSWCapabilitiesLoader} from '../../../csw-capabilities-loader';\n\nimport type {CSWRecords} from '../../../csw-records-loader';\nimport {CSWRecordsLoader} from '../../../csw-records-loader';\n\nimport type {CSWDomain} from '../../../csw-domain-loader';\nimport {CSWDomainLoader} from '../../../csw-domain-loader';\n\nimport {WMSErrorLoader as CSWErrorLoader} from '../../../wms-error-loader';\n\ntype CSWCommonParameters = {\n /** In case the endpoint supports multiple services */\n service?: 'CSW';\n /** In case the endpoint supports multiple CSW versions */\n version?: '1.1.1' | '2.0.0' | '2.0.1' | '3.0.0';\n};\n\nexport type CSWGetCapabilitiesParameters = CSWCommonParameters & {\n /** Request type */\n request?: 'GetCapabilities';\n};\n\nexport type CSWGetRecordsParameters = CSWCommonParameters & {\n /** Request type */\n request?: 'GetRecords';\n /** type of records */\n typenames: 'csw:Record';\n};\n\nexport type CSWGetDomainParameters = CSWCommonParameters & {\n /** Request type */\n request?: 'GetDomain';\n // TBA\n};\n\n/** Describes a service or resource exposed by the catalog */\nexport type Service = {\n /** name of service or resource */\n name: string;\n /** type of service or resource */\n type: string;\n url: string;\n params?: string;\n scheme?: string;\n};\n\nexport type CSWServiceProps = DataSourceProps & {\n url: string;\n};\n\n/**\n * The CSWService class\n * - provides type safe methods to form URLs to a CSW service\n * - provides type safe methods to query and parse results (and errors) from a CSW service\n * @note Only the URL parameter conversion is supported. XML posts are not supported.\n */\nexport class CSWService extends DataSource<CSWServiceProps> {\n static type: 'csw' = 'csw';\n static testURL = (url: string): boolean => url.toLowerCase().includes('csw');\n\n capabilities: CSWCapabilities | null = null;\n\n /** A list of loaders used by the CSWService methods */\n readonly loaders = [CSWErrorLoader, CSWCapabilitiesLoader];\n\n /** Create a CSWService */\n constructor(props: CSWServiceProps) {\n super(props);\n }\n\n async getMetadata(): Promise<CSWCapabilities> {\n const capabilities = await this.getCapabilities();\n return this.normalizeMetadata(capabilities);\n }\n\n normalizeMetadata(capabilities: CSWCapabilities): CSWCapabilities {\n return capabilities;\n }\n\n async getServiceDirectory(options?: {includeUnknown?: boolean}): Promise<Service[]> {\n const services: Service[] = [];\n const unknownServices: Service[] = [];\n\n const records = await this.getRecords();\n for (const record of records.records) {\n for (const reference of record.references) {\n const url = reference.value;\n switch (reference.scheme) {\n case 'OGC:WMS':\n services.push({name: record.title, type: 'ogc-wms-service', ...this._parseOGCUrl(url)});\n break;\n case 'OGC:WMTS':\n services.push({\n name: record.title,\n type: 'ogc-wmts-service',\n ...this._parseOGCUrl(url)\n });\n break;\n case 'OGC:WFS':\n services.push({name: record.title, type: 'ogc-wfs-service', ...this._parseOGCUrl(url)});\n break;\n default:\n unknownServices.push({\n name: record.title,\n type: 'unknown',\n url: reference.value,\n scheme: reference.scheme\n });\n }\n }\n }\n\n return options?.includeUnknown ? services.concat(unknownServices) : services;\n }\n\n _parseOGCUrl(url: string): {url: string; params: string} {\n const parts = url.split('?');\n return {\n url: parts[0],\n params: parts[1] || ''\n };\n }\n\n // CSW Service API Stubs\n\n /** Get Capabilities */\n async getCapabilities(\n wmsParameters?: CSWGetCapabilitiesParameters,\n vendorParameters?: Record<string, unknown>\n ): Promise<CSWCapabilities> {\n const url = this.getCapabilitiesURL(wmsParameters, vendorParameters);\n const response = await this.fetch(url);\n const arrayBuffer = await response.arrayBuffer();\n this._checkResponse(response, arrayBuffer);\n const capabilities = await CSWCapabilitiesLoader.parse(arrayBuffer, this.props.loadOptions);\n return capabilities;\n }\n\n /** Get Records */\n async getRecords(\n wmsParameters?: CSWGetRecordsParameters,\n vendorParameters?: Record<string, unknown>\n ): Promise<CSWRecords> {\n const url = this.getRecordsURL(wmsParameters, vendorParameters);\n const response = await this.fetch(url);\n const arrayBuffer = await response.arrayBuffer();\n this._checkResponse(response, arrayBuffer);\n return await CSWRecordsLoader.parse(arrayBuffer, this.props.loadOptions);\n }\n\n /** Get Domain */\n async getDomain(\n wmsParameters?: CSWGetDomainParameters,\n vendorParameters?: Record<string, unknown>\n ): Promise<CSWDomain> {\n const url = this.getDomainURL(wmsParameters, vendorParameters);\n const response = await this.fetch(url);\n const arrayBuffer = await response.arrayBuffer();\n this._checkResponse(response, arrayBuffer);\n return await CSWDomainLoader.parse(arrayBuffer, this.props.loadOptions);\n }\n\n // Typed URL creators\n // For applications that want full control of fetching and parsing\n\n /** Generate a URL for the GetCapabilities request */\n getCapabilitiesURL(\n wmsParameters?: CSWGetCapabilitiesParameters,\n vendorParameters?: Record<string, unknown>\n ): string {\n const options: Required<CSWGetCapabilitiesParameters> = {\n version: '3.0.0',\n ...wmsParameters,\n ...vendorParameters,\n service: 'CSW',\n request: 'GetCapabilities'\n };\n return this._getCSWUrl(options, vendorParameters);\n }\n\n /** Generate a URL for the GetCapabilities request */\n getRecordsURL(\n wmsParameters?: CSWGetRecordsParameters,\n vendorParameters?: Record<string, unknown>\n ): string {\n const options: Required<CSWGetRecordsParameters> = {\n version: '3.0.0',\n typenames: 'csw:Record',\n ...wmsParameters,\n ...vendorParameters,\n service: 'CSW',\n request: 'GetRecords'\n };\n return this._getCSWUrl(options, vendorParameters);\n }\n\n /** Generate a URL for the GetCapabilities request */\n getDomainURL(\n wmsParameters?: CSWGetDomainParameters,\n vendorParameters?: Record<string, unknown>\n ): string {\n const options: Required<CSWGetDomainParameters> = {\n version: '3.0.0',\n ...wmsParameters,\n ...vendorParameters,\n service: 'CSW',\n request: 'GetDomain'\n };\n return this._getCSWUrl(options, vendorParameters);\n }\n\n // INTERNAL METHODS\n\n /**\n * @note case _getCSWUrl may need to be overridden to handle certain backends?\n * */\n protected _getCSWUrl(\n options: Record<string, unknown>,\n vendorParameters?: Record<string, unknown>\n ): string {\n let url = this.props.url;\n let first = true;\n for (const [key, value] of Object.entries(options)) {\n url += first ? '?' : '&';\n first = false;\n if (Array.isArray(value)) {\n url += `${key.toUpperCase()}=${value.join(',')}`;\n } else {\n url += `${key.toUpperCase()}=${value ? String(value) : ''}`;\n }\n }\n return encodeURI(url);\n }\n\n /** Checks for and parses a CSW XML formatted ServiceError and throws an exception */\n protected _checkResponse(response: Response, arrayBuffer: ArrayBuffer): void {\n const contentType = response.headers['content-type'];\n if (!response.ok || CSWErrorLoader.mimeTypes.includes(contentType)) {\n const error = CSWErrorLoader.parseSync(arrayBuffer, this.props.loadOptions);\n throw new Error(error);\n }\n }\n\n /** Error situation detected */\n protected _parseError(arrayBuffer: ArrayBuffer): Error {\n const error = CSWErrorLoader.parseSync(arrayBuffer, this.props.loadOptions);\n return new Error(error);\n }\n}\n"],"mappings":"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"}
|