@sapui5/sap.ui.export 1.96.2 → 1.97.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/sap/ui/export/.library +1 -1
- package/src/sap/ui/export/ExportBase.js +1 -1
- package/src/sap/ui/export/ExportUtils.js +39 -17
- package/src/sap/ui/export/PortableDocument.js +105 -18
- package/src/sap/ui/export/Spreadsheet.js +4 -3
- package/src/sap/ui/export/SpreadsheetExport.js +136 -148
- package/src/sap/ui/export/js/SpreadsheetWorker.js +0 -1
- package/src/sap/ui/export/library.js +2 -2
- package/src/sap/ui/export/messagebundle_en_US_saprigi.properties +0 -2
- package/src/sap/ui/export/provider/DataProviderBase.js +29 -30
- package/ui5.yaml +4 -1
- package/src/sap/ui/export/js/libs/uri.all.min.js +0 -3
- package/src/sap/ui/export/js/libs/uri.all.min.js.map +0 -1
package/package.json
CHANGED
|
@@ -15,7 +15,7 @@ sap.ui.define([
|
|
|
15
15
|
* @constructor The <code>sap.ui.export.ExportBase</code> class allows you to export table data from a UI5 application to a Portable Document Format (*.PDF) file.
|
|
16
16
|
*
|
|
17
17
|
* @author SAP SE
|
|
18
|
-
* @version 1.
|
|
18
|
+
* @version 1.97.0
|
|
19
19
|
*
|
|
20
20
|
* @since 1.96
|
|
21
21
|
* @name sap.ui.export.ExportBase
|
|
@@ -25,7 +25,8 @@ sap.ui.define([
|
|
|
25
25
|
], function(coreLibrary, mLibrary, library, Core, Log, uid, Item, syncStyleClass, JSONModel, Button, CheckBox, Dialog, Input, Label, Select, Text, VBox, VersionInfo, openWindow) {
|
|
26
26
|
'use strict';
|
|
27
27
|
|
|
28
|
-
|
|
28
|
+
// eslint-disable-next-line
|
|
29
|
+
/* global Blob, MouseEvent, FileReader, URL */
|
|
29
30
|
|
|
30
31
|
// Shortcuts
|
|
31
32
|
var ButtonType = mLibrary.ButtonType;
|
|
@@ -93,7 +94,7 @@ sap.ui.define([
|
|
|
93
94
|
* Utilities related to export to enable reuse in integration scenarios (e.g. tables).
|
|
94
95
|
*
|
|
95
96
|
* @author SAP SE
|
|
96
|
-
* @version 1.
|
|
97
|
+
* @version 1.97.0
|
|
97
98
|
*
|
|
98
99
|
* @since 1.59
|
|
99
100
|
* @name sap.ui.export.ExportUtils
|
|
@@ -130,6 +131,17 @@ sap.ui.define([
|
|
|
130
131
|
return sUrl;
|
|
131
132
|
},
|
|
132
133
|
|
|
134
|
+
/**
|
|
135
|
+
* Ensures that the URL is absolute, so that it can
|
|
136
|
+
* be used within a Web Worker.
|
|
137
|
+
*
|
|
138
|
+
* @param {string} url Relative URL that needs to be processed for Web Worker usage
|
|
139
|
+
* @returns {string|any} Returns the absolute URL or the original value in case there is no URL provided
|
|
140
|
+
*/
|
|
141
|
+
normalizeUrl: function(url) {
|
|
142
|
+
return url ? new URL(url, document.baseURI).toString() : url;
|
|
143
|
+
},
|
|
144
|
+
|
|
133
145
|
/**
|
|
134
146
|
* Creates the Export settings dialog that can be used for configuring the spreadsheet before exporting.
|
|
135
147
|
*
|
|
@@ -198,6 +210,8 @@ sap.ui.define([
|
|
|
198
210
|
labelFor: sDialogId + '-fileType',
|
|
199
211
|
visible: !!bDevMode
|
|
200
212
|
}),
|
|
213
|
+
// sap.m.Select control disabled as there is only 1 option for now
|
|
214
|
+
// control must be enabled when more file types are supported
|
|
201
215
|
new Select({
|
|
202
216
|
id: sDialogId + '-fileType',
|
|
203
217
|
width: '100%',
|
|
@@ -276,7 +290,7 @@ sap.ui.define([
|
|
|
276
290
|
* Combines the filter operator with the value and
|
|
277
291
|
* creates a textual representation.
|
|
278
292
|
*
|
|
279
|
-
* @param
|
|
293
|
+
* @param {Object} oFilter A single filter object according to ListBinding#getFilterInfo
|
|
280
294
|
* @returns {string} Textual representation of the filter operation and value
|
|
281
295
|
* @private
|
|
282
296
|
*/
|
|
@@ -306,7 +320,7 @@ sap.ui.define([
|
|
|
306
320
|
/**
|
|
307
321
|
* Parse filter tree recursively.
|
|
308
322
|
*
|
|
309
|
-
* @param
|
|
323
|
+
* @param {Object} oFilter Filter configuration according to ListBinding#getFilterInfo
|
|
310
324
|
* @returns {Array} Array of filter entries
|
|
311
325
|
* @private
|
|
312
326
|
*/
|
|
@@ -329,7 +343,7 @@ sap.ui.define([
|
|
|
329
343
|
* Parses a logical filter and concatenates all
|
|
330
344
|
* subsequent filters.
|
|
331
345
|
*
|
|
332
|
-
* @param
|
|
346
|
+
* @param {Object} oLogicalFilter Filter object according to ListBinding#getFilterInfo
|
|
333
347
|
* @returns {Array} Array containing all filter settings
|
|
334
348
|
* @private
|
|
335
349
|
*/
|
|
@@ -370,7 +384,7 @@ sap.ui.define([
|
|
|
370
384
|
* Parses a binary filter and returns an Array that
|
|
371
385
|
* contains this explicit filter item.
|
|
372
386
|
*
|
|
373
|
-
* @param
|
|
387
|
+
* @param {Object} oBinaryFilter Filter object according to ListBinding#getFilterInfo
|
|
374
388
|
* @returns {Array} Array containing this explicit filter setting
|
|
375
389
|
* @private
|
|
376
390
|
*/
|
|
@@ -390,7 +404,7 @@ sap.ui.define([
|
|
|
390
404
|
* Parses an unary filter and returns a modified
|
|
391
405
|
* subsequent filter.
|
|
392
406
|
*
|
|
393
|
-
* @param
|
|
407
|
+
* @param {Object} oUnaryFilter Filter object according to ListBinding#getFilterInfo
|
|
394
408
|
* @returns {Array} Array containing the modified subsequent filter
|
|
395
409
|
* @private
|
|
396
410
|
*/
|
|
@@ -411,7 +425,7 @@ sap.ui.define([
|
|
|
411
425
|
* Parses an call filter and returns an Array containing
|
|
412
426
|
* this particular filter configuration.
|
|
413
427
|
*
|
|
414
|
-
* @param
|
|
428
|
+
* @param {Object} oCallFilter Filter object according to ListBinding#getFilterInfo
|
|
415
429
|
* @returns {Array} Array containing this explicit filter setting
|
|
416
430
|
* @private
|
|
417
431
|
*/
|
|
@@ -432,11 +446,8 @@ sap.ui.define([
|
|
|
432
446
|
* configuration in a format that can be attached to
|
|
433
447
|
* a sap.ui.export.Spreadsheet instance.
|
|
434
448
|
*
|
|
435
|
-
* @param
|
|
436
|
-
*
|
|
437
|
-
*
|
|
438
|
-
* @param fnCallback {function}
|
|
439
|
-
* Callback function that is used to resolve the columns names according to their property.
|
|
449
|
+
* @param {sap.ui.model.ListBinding | sap.ui.model.TreeBinding} oBinding ListBinding or TreeBinding instance
|
|
450
|
+
* @param {function} fnCallback Callback function that is used to resolve the columns names according to their property
|
|
440
451
|
*
|
|
441
452
|
* @returns {Promise}
|
|
442
453
|
* Promise, which resolves with an object containing a name
|
|
@@ -653,8 +664,19 @@ sap.ui.define([
|
|
|
653
664
|
mDataSource.count = mDataSource.data.length;
|
|
654
665
|
}
|
|
655
666
|
|
|
656
|
-
if (mDataSource.type === 'odata'
|
|
657
|
-
|
|
667
|
+
if (mDataSource.type === 'odata') {
|
|
668
|
+
if (typeof mDataSource.dataUrl !== 'string' || mDataSource.dataUrl.length === 0) {
|
|
669
|
+
throw new Error(CLASS_NAME + ': Unable to export data. No dataUrl provided.');
|
|
670
|
+
}
|
|
671
|
+
|
|
672
|
+
// Ensure absolute URLs for dataUrl and serviceUrl
|
|
673
|
+
if (mDataSource.dataUrl) {
|
|
674
|
+
mDataSource.dataUrl = Utils.normalizeUrl(mDataSource.dataUrl);
|
|
675
|
+
}
|
|
676
|
+
|
|
677
|
+
if (mDataSource.serviceUrl) {
|
|
678
|
+
mDataSource.serviceUrl = Utils.normalizeUrl(mDataSource.serviceUrl);
|
|
679
|
+
}
|
|
658
680
|
}
|
|
659
681
|
|
|
660
682
|
if (typeof mDataSource.count !== 'number' || mDataSource.count < 0 || isNaN(mDataSource.count) || mDataSource.count % 1 !== 0) {
|
|
@@ -889,7 +911,7 @@ sap.ui.define([
|
|
|
889
911
|
*
|
|
890
912
|
* @param {Object} oContext Context object
|
|
891
913
|
* @param {string} [oContext.application] Name of the application (default: "SAP UI5")
|
|
892
|
-
* @param {string} [oContext.version] Application version (default: "1.
|
|
914
|
+
* @param {string} [oContext.version] Application version (default: "1.97.0")
|
|
893
915
|
* @param {string} [oContext.title] Title that will be written to the file (NOT the filename)
|
|
894
916
|
* @param {string} [oContext.modifiedBy] Optional user context that will be written to the file
|
|
895
917
|
* @param {string} [oContext.sheetName] Name of the data sheet - Maximum length of 31 characters
|
|
@@ -993,7 +1015,7 @@ sap.ui.define([
|
|
|
993
1015
|
* @param {Object} oCustomizing General export customizing
|
|
994
1016
|
* @param {Object} oCustomizing.currency Currency specific customizing
|
|
995
1017
|
* @param {Object} oCustomizing.unit Unit of measure specific customizing
|
|
996
|
-
* @param {string} sProperty
|
|
1018
|
+
* @param {string} sProperty Key property of the specific customizing setting
|
|
997
1019
|
* @private
|
|
998
1020
|
*/
|
|
999
1021
|
_validateScaleCustomizing: function(oCustomizing, sProperty) {
|
|
@@ -16,7 +16,7 @@ sap.ui.define([
|
|
|
16
16
|
* @constructor The <code>sap.ui.export.PortableDocument</code> class allows you to export table data from a UI5 application to a Portable Document Format (*.PDF) file.
|
|
17
17
|
*
|
|
18
18
|
* @author SAP SE
|
|
19
|
-
* @version 1.
|
|
19
|
+
* @version 1.97.0
|
|
20
20
|
*
|
|
21
21
|
* @since 1.96
|
|
22
22
|
* @name sap.ui.export.PortableDocument
|
|
@@ -96,19 +96,27 @@ sap.ui.define([
|
|
|
96
96
|
*/
|
|
97
97
|
if (typeof oBinding.getDownloadUrl === 'function') {
|
|
98
98
|
var oModel = oBinding.getModel(),
|
|
99
|
-
sDataUrl = ExportUtils.interceptUrl(oBinding.getDownloadUrl('
|
|
99
|
+
sDataUrl = ExportUtils.interceptUrl(oBinding.getDownloadUrl('pdf')),
|
|
100
100
|
sServiceUrl = ExportUtils.interceptUrl(oModel.sServiceUrl),
|
|
101
101
|
bV4ODataModel = oModel.isA('sap.ui.model.odata.v4.ODataModel');
|
|
102
102
|
|
|
103
103
|
var oDataUrl = new URL(sDataUrl, document.baseURI);
|
|
104
104
|
oDataUrl.hash = '';
|
|
105
|
-
|
|
105
|
+
|
|
106
|
+
// Reference the Model for later use
|
|
107
|
+
this._oModel = oModel;
|
|
108
|
+
this._oModel.setUseBatch(false);
|
|
109
|
+
|
|
110
|
+
/* Remove $format system query option because it would overwrite the "Accept" header */
|
|
111
|
+
oDataUrl.search = oDataUrl.search.split('&').filter(function(val) {
|
|
112
|
+
return val.indexOf('$format') == -1;
|
|
113
|
+
}).join('&');
|
|
106
114
|
|
|
107
115
|
oDataSource = {
|
|
108
116
|
type: 'odata',
|
|
109
117
|
version: bV4ODataModel ? 4 : 2,
|
|
110
118
|
dataUrl: oDataUrl.toString(),
|
|
111
|
-
serviceUrl: sServiceUrl.split('/').slice(0, -
|
|
119
|
+
serviceUrl: sServiceUrl.split('/').slice(0, -5).join('/') + '/default/iwbep/common/0001/', // Requires the serviceUrl to end with a /
|
|
112
120
|
headers: bV4ODataModel ? oModel.getHttpHeaders(true) : oModel.getHeaders()
|
|
113
121
|
};
|
|
114
122
|
}
|
|
@@ -134,6 +142,10 @@ sap.ui.define([
|
|
|
134
142
|
"Orientation": "LANDSCAPE",
|
|
135
143
|
"FontSize": 12
|
|
136
144
|
},
|
|
145
|
+
"Signature": {
|
|
146
|
+
"DoSign": true,
|
|
147
|
+
"Reason": ""
|
|
148
|
+
},
|
|
137
149
|
"CoverPage": [],
|
|
138
150
|
"TableColumns": []
|
|
139
151
|
};
|
|
@@ -161,7 +173,7 @@ sap.ui.define([
|
|
|
161
173
|
/* Add columns */
|
|
162
174
|
oWorkbook.columns.forEach(function(oColumn){
|
|
163
175
|
oDocumentDescription["TableColumns"].push({
|
|
164
|
-
"Name": oColumn.property,
|
|
176
|
+
"Name": Array.isArray(oColumn.property) ? oColumn.property[0] : oColumn.property,
|
|
165
177
|
"Header": oColumn.label
|
|
166
178
|
});
|
|
167
179
|
});
|
|
@@ -169,6 +181,33 @@ sap.ui.define([
|
|
|
169
181
|
return oDocumentDescription;
|
|
170
182
|
};
|
|
171
183
|
|
|
184
|
+
/**
|
|
185
|
+
* Returns the name of the EntitySet that is being used with the given OData version.
|
|
186
|
+
*
|
|
187
|
+
* @param {Object} mDataSource DataSource object containing information about OData version
|
|
188
|
+
* @returns {string} Name of the EntitySet according to the OData version
|
|
189
|
+
*/
|
|
190
|
+
PortableDocument.prototype._getEntitySetName = function(mDataSource) {
|
|
191
|
+
var version = mDataSource && mDataSource.version || 2; // Use OData V2 by default
|
|
192
|
+
|
|
193
|
+
return version == 4 ? 'MyDocumentDescriptions' : 'SAP__MyDocumentDescriptions';
|
|
194
|
+
};
|
|
195
|
+
|
|
196
|
+
/**
|
|
197
|
+
* Returns the specific ODataModel that is being used for binding to the DocumentDescription EntitySet
|
|
198
|
+
*
|
|
199
|
+
* @param {Object} oDataSource DataSource settings of the export configuration
|
|
200
|
+
* @returns {ODataModel} ODataModel, either V2 or V4.
|
|
201
|
+
*/
|
|
202
|
+
PortableDocument.prototype._getModel = function(oDataSource) {
|
|
203
|
+
var version = oDataSource.version || 2;
|
|
204
|
+
|
|
205
|
+
return version === 4 ? new ODataModel({
|
|
206
|
+
serviceUrl: oDataSource.serviceUrl,
|
|
207
|
+
synchronizationMode: 'None'
|
|
208
|
+
}) : this._oModel;
|
|
209
|
+
};
|
|
210
|
+
|
|
172
211
|
/**
|
|
173
212
|
* Applies default settings to the export configuration.
|
|
174
213
|
*
|
|
@@ -191,31 +230,65 @@ sap.ui.define([
|
|
|
191
230
|
});
|
|
192
231
|
};
|
|
193
232
|
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
233
|
+
/**
|
|
234
|
+
* Sends a POST request to the GW service which creates the
|
|
235
|
+
* DocumentDescription. The corresponding Id is assigned by
|
|
236
|
+
* the backend and passed to the event handler functions.
|
|
237
|
+
*
|
|
238
|
+
* @param {Object} oDocumentDescription DocumentDescription instance that is being created
|
|
239
|
+
* @param {Object} oDataSource DataSource settings of the export configuration
|
|
240
|
+
* @param {function} fnSuccess Success handler function
|
|
241
|
+
* @param {function} fnError Error handler function
|
|
242
|
+
*/
|
|
243
|
+
PortableDocument.prototype.postDocumentDescription = function(oDocumentDescription, oDataSource, fnSuccess, fnError) {
|
|
244
|
+
var oBinding, oModel, sPath;
|
|
198
245
|
|
|
199
|
-
|
|
246
|
+
oModel = this._getModel(oDataSource);
|
|
247
|
+
sPath = '/' + this._getEntitySetName(oDataSource);
|
|
200
248
|
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
249
|
+
if (!oModel || !oModel.isA(['sap.ui.model.odata.v4.ODataModel', 'sap.ui.model.odata.v2.ODataModel'])) {
|
|
250
|
+
fnError('Unsupported Model');
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
if (oModel.isA('sap.ui.model.odata.v4.ODataModel')) {
|
|
254
|
+
oBinding = oModel.bindList(sPath);
|
|
206
255
|
|
|
207
|
-
oBinding = oModel.bindList('/MyDocumentDescriptions');
|
|
208
256
|
oBinding.attachCreateCompleted(function(oEvent) {
|
|
209
257
|
var success = oEvent.getParameter('success');
|
|
210
258
|
|
|
211
259
|
if (success) {
|
|
212
|
-
|
|
260
|
+
fnSuccess(oEvent.getParameter('context').getObject()['Id']);
|
|
213
261
|
} else {
|
|
214
|
-
|
|
262
|
+
fnError();
|
|
215
263
|
}
|
|
216
264
|
});
|
|
217
265
|
|
|
218
266
|
oBinding.create(oDocumentDescription);
|
|
267
|
+
} else {
|
|
268
|
+
oModel.create(sPath, oDocumentDescription, {
|
|
269
|
+
success: function(oData) {
|
|
270
|
+
fnSuccess(oData['Id']);
|
|
271
|
+
},
|
|
272
|
+
error: fnError
|
|
273
|
+
});
|
|
274
|
+
}
|
|
275
|
+
};
|
|
276
|
+
|
|
277
|
+
/**
|
|
278
|
+
* Triggers the export process and returns a Promise the
|
|
279
|
+
* gets resolved as soon as the export is finished.
|
|
280
|
+
*
|
|
281
|
+
* @param {Object} mSettings Export settings
|
|
282
|
+
* @returns {Promise} Promise that is being resolved as soon as the PDF export is finished
|
|
283
|
+
*/
|
|
284
|
+
PortableDocument.prototype.createBuildPromise = function(mSettings) {
|
|
285
|
+
var that = this;
|
|
286
|
+
|
|
287
|
+
return new Promise(function(fnResolve, fnReject) {
|
|
288
|
+
var oDocumentDescription;
|
|
289
|
+
|
|
290
|
+
oDocumentDescription = that._createDocumentDescription(mSettings.workbook);
|
|
291
|
+
that.postDocumentDescription(oDocumentDescription, mSettings.dataSource, fnResolve, fnReject);
|
|
219
292
|
|
|
220
293
|
}).then(function(sDocumentDescriptionId) {
|
|
221
294
|
return that.sendRequest(mSettings.dataSource.dataUrl, sDocumentDescriptionId).then(function(response) {
|
|
@@ -280,5 +353,19 @@ sap.ui.define([
|
|
|
280
353
|
}
|
|
281
354
|
};
|
|
282
355
|
|
|
356
|
+
/**
|
|
357
|
+
* Cleans up the internal structures and removes all event handlers.
|
|
358
|
+
*
|
|
359
|
+
* The object must not be used anymore after destroy was called.
|
|
360
|
+
*
|
|
361
|
+
* @see sap.ui.export.ExportBase#destroy
|
|
362
|
+
* @public
|
|
363
|
+
*/
|
|
364
|
+
PortableDocument.prototype.destroy = function() {
|
|
365
|
+
ExportBase.prototype.destroy.apply(this, arguments);
|
|
366
|
+
|
|
367
|
+
this._oModel = null;
|
|
368
|
+
};
|
|
369
|
+
|
|
283
370
|
return PortableDocument;
|
|
284
371
|
});
|
|
@@ -15,6 +15,7 @@ sap.ui.define([
|
|
|
15
15
|
function(Core, ExportDialog, ExportBase, Device, SpreadsheetExport, Log, ExportUtils) {
|
|
16
16
|
'use strict';
|
|
17
17
|
|
|
18
|
+
// eslint-disable-next-line
|
|
18
19
|
/* global Blob */
|
|
19
20
|
|
|
20
21
|
var CLASS_NAME = 'sap.ui.export.Spreadsheet';
|
|
@@ -82,7 +83,7 @@ sap.ui.define([
|
|
|
82
83
|
* <li><code>workbook.context</code> - Context object that will be applied to the generated file. It may contain the following fields:</li>
|
|
83
84
|
* <ul>
|
|
84
85
|
* <li><code>application</code> (string) - The application that creates the XLSX document (default: "SAP UI5")</li>
|
|
85
|
-
* <li><code>version</code> (string) - Application version that creates the XLSX document (default: "1.
|
|
86
|
+
* <li><code>version</code> (string) - Application version that creates the XLSX document (default: "1.97.0")</li>
|
|
86
87
|
* <li><code>title</code> (string) - Title of the XLSX document (NOT the filename)</li>
|
|
87
88
|
* <li><code>modifiedBy</code> (string) - User context for the XLSX document</li>
|
|
88
89
|
* <li><code>sheetName</code> (string) - The label of the data sheet</li>
|
|
@@ -165,7 +166,7 @@ sap.ui.define([
|
|
|
165
166
|
* columns: aColumns,
|
|
166
167
|
* context: {
|
|
167
168
|
* application: 'Debug Test Application',
|
|
168
|
-
* version: '1.
|
|
169
|
+
* version: '1.97.0',
|
|
169
170
|
* title: 'Some random title',
|
|
170
171
|
* modifiedBy: 'John Doe',
|
|
171
172
|
* metaSheetName: 'Custom metadata',
|
|
@@ -277,7 +278,7 @@ sap.ui.define([
|
|
|
277
278
|
* @constructor The <code>sap.ui.export.Spreadsheet</code> class allows you to export table data from a UI5 application to a spreadsheet file.
|
|
278
279
|
*
|
|
279
280
|
* @author SAP SE
|
|
280
|
-
* @version 1.
|
|
281
|
+
* @version 1.97.0
|
|
281
282
|
*
|
|
282
283
|
* @since 1.50
|
|
283
284
|
* @name sap.ui.export.Spreadsheet
|
|
@@ -7,8 +7,10 @@
|
|
|
7
7
|
* Spreadsheet export utility
|
|
8
8
|
* @private
|
|
9
9
|
*/
|
|
10
|
-
sap.ui.define(['
|
|
10
|
+
sap.ui.define(['sap/base/Log', 'sap/ui/export/ExportUtils'], function(Log, ExportUtils) {
|
|
11
11
|
'use strict';
|
|
12
|
+
|
|
13
|
+
// eslint-disable-next-line
|
|
12
14
|
/* global Blob, URL, Worker, MessageEvent */
|
|
13
15
|
|
|
14
16
|
var LIB_PROVIDER = 'sap/ui/export/provider/DataProviderBase',
|
|
@@ -20,204 +22,190 @@ sap.ui.define(['jquery.sap.global', 'sap/base/Log', 'sap/ui/Device'], function(j
|
|
|
20
22
|
*
|
|
21
23
|
* @class Utility class to perform spreadsheet export
|
|
22
24
|
* @author SAP SE
|
|
23
|
-
* @version 1.
|
|
25
|
+
* @version 1.97.0
|
|
24
26
|
* @static
|
|
25
27
|
*
|
|
26
28
|
* @private
|
|
27
29
|
* @since 1.50.0
|
|
28
30
|
*/
|
|
31
|
+
var SpreadsheetExport = {
|
|
29
32
|
|
|
30
|
-
|
|
33
|
+
execute: function(mParams, fnCallback) {
|
|
31
34
|
|
|
32
|
-
|
|
35
|
+
function postMessage(oMessage) {
|
|
33
36
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
return fnCallback && fnCallback(oMessage);
|
|
39
|
-
}
|
|
37
|
+
// Harmonize message handling between worker and in process export
|
|
38
|
+
if (oMessage instanceof MessageEvent && oMessage.data) {
|
|
39
|
+
oMessage = oMessage.data;
|
|
40
|
+
}
|
|
40
41
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
total: iTotal || 0
|
|
46
|
-
});
|
|
47
|
-
}
|
|
42
|
+
if (typeof fnCallback === 'function') {
|
|
43
|
+
fnCallback(oMessage);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
48
46
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
47
|
+
function onProgress(iFetched, iTotal) {
|
|
48
|
+
postMessage({
|
|
49
|
+
progress: true,
|
|
50
|
+
fetched: iFetched || 0,
|
|
51
|
+
total: iTotal || 0
|
|
52
|
+
});
|
|
53
|
+
}
|
|
52
54
|
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
55
|
+
function onError(error) {
|
|
56
|
+
postMessage({ error: error.message || error });
|
|
57
|
+
}
|
|
56
58
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
function exportArray() {
|
|
60
|
-
var oSpreadsheet;
|
|
61
|
-
var fnConvertData;
|
|
62
|
-
|
|
63
|
-
function start(DataProvider, XLSXBuilder) {
|
|
64
|
-
fnConvertData = DataProvider.getDataConverter(mParams);
|
|
65
|
-
oSpreadsheet =
|
|
66
|
-
new XLSXBuilder(mParams.workbook.columns, mParams.workbook.context, mParams.workbook.hierarchyLevel, mParams.customizing);
|
|
67
|
-
|
|
68
|
-
var aData = mParams.dataSource.data || [];
|
|
69
|
-
var iCount = aData.length;
|
|
70
|
-
var aRows = fnConvertData(aData.slice());
|
|
71
|
-
oSpreadsheet.append(aRows);
|
|
72
|
-
onProgress(iCount, iCount);
|
|
73
|
-
oSpreadsheet.build().then(onFinish);
|
|
59
|
+
function onFinish(oArrayBuffer) {
|
|
60
|
+
postMessage({ finished: true, spreadsheet: oArrayBuffer });
|
|
74
61
|
}
|
|
75
62
|
|
|
76
|
-
//
|
|
77
|
-
|
|
63
|
+
// Export directly from an array in memory.
|
|
64
|
+
// TBD: convert dates as in exportUtils
|
|
65
|
+
function exportArray() {
|
|
66
|
+
var oSpreadsheet;
|
|
67
|
+
var fnConvertData;
|
|
68
|
+
|
|
69
|
+
function start(DataProvider, XLSXBuilder) {
|
|
70
|
+
fnConvertData = DataProvider.getDataConverter(mParams);
|
|
71
|
+
oSpreadsheet =
|
|
72
|
+
new XLSXBuilder(mParams.workbook.columns, mParams.workbook.context, mParams.workbook.hierarchyLevel, mParams.customizing);
|
|
73
|
+
|
|
74
|
+
var aData = mParams.dataSource.data || [];
|
|
75
|
+
var iCount = aData.length;
|
|
76
|
+
var aRows = fnConvertData(aData.slice());
|
|
77
|
+
oSpreadsheet.append(aRows);
|
|
78
|
+
onProgress(iCount, iCount);
|
|
79
|
+
oSpreadsheet.build().then(onFinish);
|
|
80
|
+
}
|
|
78
81
|
|
|
79
|
-
|
|
80
|
-
|
|
82
|
+
// Load libraries and start export
|
|
83
|
+
sap.ui.require([LIB_PROVIDER, LIB_BUILDER, LIB_JSZIP3], start);
|
|
81
84
|
|
|
82
|
-
|
|
83
|
-
function normalizeUrl(url) {
|
|
84
|
-
if (!url) {
|
|
85
|
-
return url;
|
|
85
|
+
return {cancel: onFinish};
|
|
86
86
|
}
|
|
87
87
|
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
} catch (error) {
|
|
91
|
-
// Fallback solution if native URL class is not supported
|
|
92
|
-
return window.URI(url).absoluteTo(document.baseURI).toString();
|
|
93
|
-
}
|
|
94
|
-
}
|
|
88
|
+
function exportInProcess() {
|
|
89
|
+
var oSpreadsheet, oRequest;
|
|
95
90
|
|
|
96
|
-
|
|
97
|
-
|
|
91
|
+
function start(DataProvider, XLSXBuilder) {
|
|
92
|
+
var provider = new DataProvider(mParams);
|
|
98
93
|
|
|
99
|
-
|
|
100
|
-
|
|
94
|
+
oSpreadsheet =
|
|
95
|
+
new XLSXBuilder(mParams.workbook.columns, mParams.workbook.context, mParams.workbook.hierarchyLevel, mParams.customizing);
|
|
96
|
+
oRequest = provider.requestData(processCallback);
|
|
97
|
+
}
|
|
101
98
|
|
|
102
|
-
|
|
103
|
-
new XLSXBuilder(mParams.workbook.columns, mParams.workbook.context, mParams.workbook.hierarchyLevel, mParams.customizing);
|
|
104
|
-
oRequest = provider.requestData(processCallback);
|
|
105
|
-
}
|
|
99
|
+
function processCallback(oMessage) {
|
|
106
100
|
|
|
107
|
-
|
|
101
|
+
if (oMessage.error || typeof oMessage.error === 'string') {
|
|
102
|
+
onError(oMessage.error);
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
108
105
|
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
}
|
|
106
|
+
oSpreadsheet.append(oMessage.rows);
|
|
107
|
+
onProgress(oMessage.fetched, oMessage.total);
|
|
112
108
|
|
|
113
|
-
|
|
114
|
-
|
|
109
|
+
if (oMessage.finished) {
|
|
110
|
+
oSpreadsheet.build().then(onFinish);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
115
113
|
|
|
116
|
-
|
|
117
|
-
|
|
114
|
+
function cancel() {
|
|
115
|
+
oRequest.cancel();
|
|
116
|
+
onFinish();
|
|
118
117
|
}
|
|
119
|
-
}
|
|
120
118
|
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
119
|
+
// Load libraries and start export
|
|
120
|
+
sap.ui.require([LIB_PROVIDER, LIB_BUILDER, LIB_JSZIP3], start);
|
|
121
|
+
|
|
122
|
+
return {cancel: cancel};
|
|
124
123
|
}
|
|
125
124
|
|
|
126
|
-
|
|
127
|
-
|
|
125
|
+
function exportInWorker() {
|
|
126
|
+
var spreadsheetWorker;
|
|
127
|
+
var workerParams = {};
|
|
128
128
|
|
|
129
|
-
|
|
130
|
-
|
|
129
|
+
var fnCancel = function() {
|
|
130
|
+
spreadsheetWorker.postMessage({ cancel: true });
|
|
131
|
+
onFinish();
|
|
132
|
+
};
|
|
131
133
|
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
var workerParams = typeof params.worker === 'object' ? params.worker : {};
|
|
134
|
+
function createWorker(url) {
|
|
135
|
+
var worker = new Worker(url);
|
|
136
|
+
worker.onmessage = postMessage;
|
|
136
137
|
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
138
|
+
// Skips error handling if fired in Firefox with cross origin
|
|
139
|
+
if (navigator.userAgent.indexOf("Firefox") === -1 || isSameOrigin(url)) {
|
|
140
|
+
worker.onerror = onError;
|
|
141
|
+
}
|
|
141
142
|
|
|
142
|
-
|
|
143
|
-
var worker = new Worker(url);
|
|
144
|
-
worker.onmessage = postMessage;
|
|
143
|
+
worker.postMessage(mParams);
|
|
145
144
|
|
|
146
|
-
|
|
147
|
-
if (navigator.userAgent.indexOf("Firefox") === -1 || isSameOrigin(url)) {
|
|
148
|
-
worker.onerror = onError;
|
|
145
|
+
return worker;
|
|
149
146
|
}
|
|
150
147
|
|
|
151
|
-
|
|
148
|
+
function isSameOrigin(url) {
|
|
149
|
+
return url.indexOf(window.location.host) > 0
|
|
150
|
+
|| /^[^/]+\/[^/].*$|^\/[^/].*$/i.test(url); //check for relative address
|
|
151
|
+
}
|
|
152
152
|
|
|
153
|
-
|
|
154
|
-
|
|
153
|
+
function blobWorker() {
|
|
154
|
+
var sBlobCode, oBlobURL;
|
|
155
155
|
|
|
156
|
-
|
|
157
|
-
return url.indexOf(window.location.host) > 0
|
|
158
|
-
|| /^[^/]+\/[^/].*$|^\/[^/].*$/i.test(url); //check for relative address
|
|
159
|
-
}
|
|
156
|
+
Log.warning('Direct worker is not allowed. Load the worker via blob.');
|
|
160
157
|
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
var baseUrl = window.URI(workerParams.base).absoluteTo("").search("").hash("").toString();
|
|
164
|
-
workerParams.src = baseUrl + workerParams.ref;
|
|
165
|
-
var blobCode = 'self.origin = "' + baseUrl + '"; ' + 'importScripts("' + workerParams.src + '")';
|
|
166
|
-
var blob = new Blob([blobCode]);
|
|
167
|
-
var blobUrl = window.URL.createObjectURL(blob);
|
|
158
|
+
sBlobCode = 'self.origin = "' + workerParams.base + '"; ' + 'importScripts("' + workerParams.src + '")';
|
|
159
|
+
oBlobURL = window.URL.createObjectURL(new Blob([sBlobCode]));
|
|
168
160
|
|
|
169
|
-
|
|
170
|
-
|
|
161
|
+
return createWorker(oBlobURL);
|
|
162
|
+
}
|
|
171
163
|
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
164
|
+
function noWorker() {
|
|
165
|
+
Log.warning('Blob worker is not allowed. Use in-process export.');
|
|
166
|
+
fnCancel = exportInProcess(mParams).cancel;
|
|
167
|
+
}
|
|
176
168
|
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
169
|
+
function start() {
|
|
170
|
+
try {
|
|
171
|
+
spreadsheetWorker = createWorker(workerParams.src);
|
|
172
|
+
spreadsheetWorker.addEventListener('error', function (e) { // Firefox fires an error event instead of a security exception
|
|
173
|
+
spreadsheetWorker = blobWorker();
|
|
174
|
+
spreadsheetWorker.addEventListener('error', function (e) {
|
|
175
|
+
noWorker();
|
|
176
|
+
e.preventDefault();
|
|
177
|
+
});
|
|
184
178
|
e.preventDefault();
|
|
185
179
|
});
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
noWorker();
|
|
180
|
+
} catch (err1) {
|
|
181
|
+
try {
|
|
182
|
+
spreadsheetWorker = blobWorker();
|
|
183
|
+
} catch (err2) {
|
|
184
|
+
noWorker();
|
|
185
|
+
}
|
|
193
186
|
}
|
|
194
187
|
}
|
|
195
|
-
}
|
|
196
|
-
|
|
197
|
-
// with workers, the download url must be absolute
|
|
198
|
-
params.dataSource.dataUrl = normalizeUrl(params.dataSource.dataUrl);
|
|
199
|
-
params.dataSource.serviceUrl = normalizeUrl(params.dataSource.serviceUrl);
|
|
200
188
|
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
workerParams.src = workerParams.base + workerParams.ref;
|
|
189
|
+
// worker settings
|
|
190
|
+
workerParams.base = ExportUtils.normalizeUrl(sap.ui.require.toUrl('sap/ui/export/js/'));
|
|
191
|
+
workerParams.src = workerParams.base + 'SpreadsheetWorker.js';
|
|
205
192
|
|
|
206
|
-
|
|
193
|
+
start();
|
|
207
194
|
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
195
|
+
// fnCancel may be overwritten asynchronously after return, therefore it should be wrapped into a closure
|
|
196
|
+
return {cancel: function() {fnCancel();}};
|
|
197
|
+
}
|
|
211
198
|
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
199
|
+
if (mParams.dataSource.type === 'array') {
|
|
200
|
+
return exportArray();
|
|
201
|
+
} else if (mParams.worker === false || sap.ui.disableExportWorkers === true) {
|
|
202
|
+
return exportInProcess();
|
|
203
|
+
} else {
|
|
204
|
+
return exportInWorker();
|
|
205
|
+
}
|
|
218
206
|
}
|
|
219
|
-
}
|
|
207
|
+
};
|
|
220
208
|
|
|
221
|
-
return
|
|
209
|
+
return SpreadsheetExport;
|
|
222
210
|
|
|
223
211
|
}, /* bExport= */ true);
|
|
@@ -8,7 +8,6 @@ var origin = self.origin || "";
|
|
|
8
8
|
|
|
9
9
|
/* global XLSXBuilder, importScripts, DataProviderBase */
|
|
10
10
|
|
|
11
|
-
importScripts(origin + 'libs/uri.all.min.js');
|
|
12
11
|
importScripts(origin + 'XLSXBuilder.js');
|
|
13
12
|
importScripts(origin + '../provider/DataProviderBase.js');
|
|
14
13
|
importScripts(origin + 'libs/JSZip3.js');
|
|
@@ -17,7 +17,7 @@ sap.ui.define([
|
|
|
17
17
|
* @namespace
|
|
18
18
|
* @name sap.ui.export
|
|
19
19
|
* @author SAP SE
|
|
20
|
-
* @version 1.
|
|
20
|
+
* @version 1.97.0
|
|
21
21
|
* @public
|
|
22
22
|
*/
|
|
23
23
|
|
|
@@ -33,7 +33,7 @@ sap.ui.define([
|
|
|
33
33
|
interfaces: [],
|
|
34
34
|
controls: [],
|
|
35
35
|
elements: [],
|
|
36
|
-
version: "1.
|
|
36
|
+
version: "1.97.0"
|
|
37
37
|
});
|
|
38
38
|
|
|
39
39
|
|
|
@@ -46,5 +46,3 @@ NO_COUNT_WARNING_MSG=\u206A\u206A\u206A\u200C\u200B\u200B\u200C\u200C\u200D\u200
|
|
|
46
46
|
XLSX_DEFAULT_TITLE=\u206A\u206A\u206A\u200D\u200C\u200D\u200D\u200B\u200D\u200B\u200C\u200B\u200C\u200B\u200D\u200C\u200C\u200B\u200C\u200C\u200D\u200B\u200B\u200B\u200D\u200B\u200D\u200D\u200D\u200B\u200B\u200C\u200B\u200B\u200D\u200B\u200B\u200D\u200C\u200D\u200B\u200B\u200C\u206ASAPUI5 Export\u206A\u206A
|
|
47
47
|
|
|
48
48
|
XLSX_DEFAULT_SHEETNAME=\u206A\u206A\u206A\u200C\u200D\u200B\u200D\u200D\u200C\u200C\u200D\u200D\u200B\u200D\u200C\u200C\u200D\u200B\u200D\u200B\u200B\u200C\u200D\u200B\u200B\u200D\u200B\u200C\u200B\u200D\u200B\u200C\u200C\u200B\u200C\u200D\u200B\u200B\u200C\u200C\u200D\u200D\u200D\u206ASAPUI5 Export\u206A\u206A
|
|
49
|
-
|
|
50
|
-
PDF_FILETYPE=\u206A\u206A\u206A\u200C\u200C\u200C\u200C\u200B\u200D\u200B\u200D\u200B\u200D\u200B\u200D\u200D\u200D\u200D\u200B\u200B\u200D\u200D\u200B\u200C\u200D\u200D\u200B\u200D\u200D\u200C\u200C\u200B\u200B\u200C\u200B\u200C\u200B\u200B\u200C\u200D\u200C\u200C\u200B\u200B\u206APortable Document Format (*.pdf)\u206A\u206A
|
|
@@ -16,19 +16,22 @@
|
|
|
16
16
|
} else if (typeof self !== "undefined") {
|
|
17
17
|
oContext = self;
|
|
18
18
|
} else {
|
|
19
|
+
// eslint-disable-next-line consistent-this
|
|
19
20
|
oContext = this;
|
|
20
21
|
}
|
|
21
22
|
oContext.DataProviderBase = fClass();
|
|
22
23
|
}
|
|
23
24
|
})(function() {
|
|
24
25
|
'use strict';
|
|
25
|
-
|
|
26
|
+
|
|
27
|
+
// eslint-disable-next-line
|
|
28
|
+
/* global URL, XMLHttpRequest */
|
|
26
29
|
|
|
27
30
|
/**
|
|
28
31
|
* Default DataProviderBase implementation that is capable to handle
|
|
29
32
|
* OData V2 as well as OData V4.
|
|
30
33
|
*
|
|
31
|
-
* @param mSettings
|
|
34
|
+
* @param {Object} mSettings Data service related part of the export configuration
|
|
32
35
|
* @constructor
|
|
33
36
|
* @class DataProviderBase
|
|
34
37
|
* @since 1.77
|
|
@@ -105,7 +108,7 @@
|
|
|
105
108
|
/**
|
|
106
109
|
* The function returns a conversion function for raw data.
|
|
107
110
|
*
|
|
108
|
-
* @param mSettings Export settings that are used to create the the converter function
|
|
111
|
+
* @param {Object} mSettings Export settings that are used to create the the converter function
|
|
109
112
|
* @returns {function} Conversion function
|
|
110
113
|
*
|
|
111
114
|
* @public
|
|
@@ -259,29 +262,24 @@
|
|
|
259
262
|
/**
|
|
260
263
|
* Nested function to remove not used information from the URL
|
|
261
264
|
*
|
|
262
|
-
* @param {string}
|
|
265
|
+
* @param {string} sUrl - A URL that may contain a path, hash and request parameters
|
|
263
266
|
* @returns {string} - A clean URL
|
|
264
267
|
*
|
|
265
268
|
* @private
|
|
266
269
|
*/
|
|
267
|
-
DataProviderBase.prototype._cleanUrl = function(
|
|
268
|
-
var
|
|
270
|
+
DataProviderBase.prototype._cleanUrl = function(sUrl) {
|
|
271
|
+
var oURL;
|
|
269
272
|
|
|
270
|
-
if (!
|
|
273
|
+
if (!sUrl) {
|
|
271
274
|
return '';
|
|
272
275
|
}
|
|
273
276
|
|
|
274
|
-
|
|
277
|
+
oURL = new URL(sUrl);
|
|
275
278
|
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
mUri.path = mUri.path + '/';
|
|
279
|
-
}
|
|
280
|
-
delete mUri.query;
|
|
281
|
-
delete mUri.hash;
|
|
282
|
-
delete mUri.fragment;
|
|
279
|
+
oURL.hash = oURL.search = '';
|
|
280
|
+
oURL.pathname += oURL.pathname.endsWith('/') ? '' : '/';
|
|
283
281
|
|
|
284
|
-
return
|
|
282
|
+
return oURL.toString();
|
|
285
283
|
};
|
|
286
284
|
|
|
287
285
|
/**
|
|
@@ -294,24 +292,24 @@
|
|
|
294
292
|
var mDataUrl, reSkip = /\$skip\=[0-9]+/, reTop = /\$top\=[0-9]+/;
|
|
295
293
|
|
|
296
294
|
if (!mDataSource.dataUrl) {
|
|
297
|
-
|
|
295
|
+
throw 'Unable to load data - no URL provided.';
|
|
298
296
|
}
|
|
299
297
|
|
|
300
|
-
mDataUrl =
|
|
301
|
-
mDataUrl.
|
|
298
|
+
mDataUrl = new URL(mDataSource.dataUrl);
|
|
299
|
+
mDataUrl.search = mDataUrl.search || '';
|
|
302
300
|
|
|
303
301
|
// Add missing $skip if needed
|
|
304
|
-
if (!reSkip.test(mDataUrl.
|
|
302
|
+
if (!reSkip.test(mDataUrl.search)) {
|
|
305
303
|
// Apply $skip with some numeric dummy value that matches the regexp in DataProviderBase#_getUrl
|
|
306
|
-
mDataUrl.
|
|
304
|
+
mDataUrl.search += (mDataUrl.search.length ? '&$skip=' : '$skip=') + 0;
|
|
307
305
|
}
|
|
308
306
|
// Add missing $top if needed
|
|
309
|
-
if (!reTop.test(mDataUrl.
|
|
307
|
+
if (!reTop.test(mDataUrl.search)) {
|
|
310
308
|
// Apply $top with some numeric dummy value that matches the regexp in DataProviderBase#_getUrl
|
|
311
|
-
mDataUrl.
|
|
309
|
+
mDataUrl.search += '&$top=' + 0;
|
|
312
310
|
}
|
|
313
311
|
|
|
314
|
-
this.mSettings.dataSource.dataUrl =
|
|
312
|
+
this.mSettings.dataSource.dataUrl = mDataUrl.toString();
|
|
315
313
|
};
|
|
316
314
|
|
|
317
315
|
/**
|
|
@@ -323,9 +321,9 @@
|
|
|
323
321
|
* @returns {string} - The URL for the next query
|
|
324
322
|
*/
|
|
325
323
|
DataProviderBase.prototype._getUrl = function(iSkip, iTop, sNextUrl) {
|
|
326
|
-
var
|
|
324
|
+
var oDataUrl, oNextUrl;
|
|
327
325
|
|
|
328
|
-
|
|
326
|
+
oDataUrl = new URL(this.mSettings.dataSource.dataUrl);
|
|
329
327
|
|
|
330
328
|
/*
|
|
331
329
|
* Use $skiptoken from response to query the next items.
|
|
@@ -335,15 +333,16 @@
|
|
|
335
333
|
* between OData V4 and V2
|
|
336
334
|
*/
|
|
337
335
|
if (sNextUrl) {
|
|
338
|
-
|
|
339
|
-
|
|
336
|
+
// sNextUrl can be relative, therefore we need to apply a base even though it is not used
|
|
337
|
+
oNextUrl = new URL(sNextUrl, oDataUrl.origin);
|
|
338
|
+
oDataUrl.search = oNextUrl.search;
|
|
340
339
|
} else { // Use $skip and $top
|
|
341
|
-
|
|
340
|
+
oDataUrl.search = (oDataUrl.search || '')
|
|
342
341
|
.replace(/\$skip\=[0-9]+/g, '$skip=' + iSkip)
|
|
343
342
|
.replace(/\$top\=[0-9]+/g, '$top=' + iTop);
|
|
344
343
|
}
|
|
345
344
|
|
|
346
|
-
return
|
|
345
|
+
return oDataUrl.toString();
|
|
347
346
|
};
|
|
348
347
|
|
|
349
348
|
/**
|
package/ui5.yaml
CHANGED
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
/** @license URI.js v3.0.1 (c) 2011 Gary Court. License: http://github.com/garycourt/uri-js */
|
|
2
|
-
!function(e,r){"object"==typeof exports&&"undefined"!=typeof module?r(exports):"function"==typeof define&&define.amd?define(["exports"],r):r(e.URI=e.URI||{})}(this,function(e){"use strict";function r(){for(var e=arguments.length,r=Array(e),t=0;t<e;t++)r[t]=arguments[t];if(r.length>1){r[0]=r[0].slice(0,-1);for(var n=r.length-1,o=1;o<n;++o)r[o]=r[o].slice(1,-1);return r[n]=r[n].slice(1),r.join("")}return r[0]}function t(e){return"(?:"+e+")"}function n(e){return e===undefined?"undefined":null===e?"null":Object.prototype.toString.call(e).split(" ").pop().split("]").shift().toLowerCase()}function o(e){return e.toUpperCase()}function a(e){return e!==undefined&&null!==e?e instanceof Array?e:"number"!=typeof e.length||e.split||e.setInterval||e.call?[e]:Array.prototype.slice.call(e):[]}function i(e){var n=r("[0-9]","[A-Fa-f]"),o=t(t("%[EFef]"+n+"%"+n+n+"%"+n+n)+"|"+t("%[89A-Fa-f]"+n+"%"+n+n)+"|"+t("%"+n+n)),a="[\\!\\$\\&\\'\\(\\)\\*\\+\\,\\;\\=]",i=r("[\\:\\/\\?\\#\\[\\]\\@]",a),u=e?"[\\xA0-\\u200D\\u2010-\\u2029\\u202F-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]":"[]",s=e?"[\\uE000-\\uF8FF]":"[]",p=r("[A-Za-z]","[0-9]","[\\-\\.\\_\\~]",u),f=t(t("25[0-5]")+"|"+t("2[0-4][0-9]")+"|"+t("1[0-9][0-9]")+"|"+t("[1-9][0-9]")+"|[0-9]"),c=t(f+"\\."+f+"\\."+f+"\\."+f),h=t(n+"{1,4}"),d=t(t(h+"\\:"+h)+"|"+c),l=t(t(h+"\\:")+"{6}"+d),g=t("\\:\\:"+t(h+"\\:")+"{5}"+d),m=t(t(h)+"?\\:\\:"+t(h+"\\:")+"{4}"+d),v=t(t(t(h+"\\:")+"{0,1}"+h)+"?\\:\\:"+t(h+"\\:")+"{3}"+d),E=t(t(t(h+"\\:")+"{0,2}"+h)+"?\\:\\:"+t(h+"\\:")+"{2}"+d),C=t(t(t(h+"\\:")+"{0,3}"+h)+"?\\:\\:"+h+"\\:"+d),y=t(t(t(h+"\\:")+"{0,4}"+h)+"?\\:\\:"+d),S=t(t(t(h+"\\:")+"{0,5}"+h)+"?\\:\\:"+h),A=t(t(t(h+"\\:")+"{0,6}"+h)+"?\\:\\:"),D=t([l,g,m,v,E,C,y,S,A].join("|"));return{NOT_SCHEME:new RegExp(r("[^]","[A-Za-z]","[0-9]","[\\+\\-\\.]"),"g"),NOT_USERINFO:new RegExp(r("[^\\%\\:]",p,a),"g"),NOT_HOST:new RegExp(r("[^\\%\\[\\]\\:]",p,a),"g"),NOT_PATH:new RegExp(r("[^\\%\\/\\:\\@]",p,a),"g"),NOT_PATH_NOSCHEME:new RegExp(r("[^\\%\\/\\@]",p,a),"g"),NOT_QUERY:new RegExp(r("[^\\%]",p,a,"[\\:\\@\\/\\?]",s),"g"),NOT_FRAGMENT:new RegExp(r("[^\\%]",p,a,"[\\:\\@\\/\\?]"),"g"),ESCAPE:new RegExp(r("[^]",p,a),"g"),UNRESERVED:new RegExp(p,"g"),OTHER_CHARS:new RegExp(r("[^\\%]",p,i),"g"),PCT_ENCODED:new RegExp(o,"g"),IPV6ADDRESS:new RegExp("\\[?("+D+")\\]?","g")}}function u(e){throw new RangeError(R[e])}function s(e,r){for(var t=[],n=e.length;n--;)t[n]=r(e[n]);return t}function p(e,r){var t=e.split("@"),n="";return t.length>1&&(n=t[0]+"@",e=t[1]),e=e.replace(T,"."),n+s(e.split("."),r).join(".")}function f(e){for(var r=[],t=0,n=e.length;t<n;){var o=e.charCodeAt(t++);if(o>=55296&&o<=56319&&t<n){var a=e.charCodeAt(t++);56320==(64512&a)?r.push(((1023&o)<<10)+(1023&a)+65536):(r.push(o),t--)}else r.push(o)}return r}function c(e){var r=e.charCodeAt(0);return r<16?"%0"+r.toString(16).toUpperCase():r<128?"%"+r.toString(16).toUpperCase():r<2048?"%"+(r>>6|192).toString(16).toUpperCase()+"%"+(63&r|128).toString(16).toUpperCase():"%"+(r>>12|224).toString(16).toUpperCase()+"%"+(r>>6&63|128).toString(16).toUpperCase()+"%"+(63&r|128).toString(16).toUpperCase()}function h(e){for(var r="",t=0,n=e.length;t<n;){var o=parseInt(e.substr(t+1,2),16);if(o<128)r+=String.fromCharCode(o),t+=3;else if(o>=194&&o<224){if(n-t>=6){var a=parseInt(e.substr(t+4,2),16);r+=String.fromCharCode((31&o)<<6|63&a)}else r+=e.substr(t,6);t+=6}else if(o>=224){if(n-t>=9){var i=parseInt(e.substr(t+4,2),16),u=parseInt(e.substr(t+7,2),16);r+=String.fromCharCode((15&o)<<12|(63&i)<<6|63&u)}else r+=e.substr(t,9);t+=9}else r+=e.substr(t,3),t+=3}return r}function d(e,r){function t(e){var t=h(e);return t.match(r.UNRESERVED)?t:e}return e.scheme&&(e.scheme=String(e.scheme).replace(r.PCT_ENCODED,t).toLowerCase().replace(r.NOT_SCHEME,"")),e.userinfo!==undefined&&(e.userinfo=String(e.userinfo).replace(r.PCT_ENCODED,t).replace(r.NOT_USERINFO,c).replace(r.PCT_ENCODED,o)),e.host!==undefined&&(e.host=String(e.host).replace(r.PCT_ENCODED,t).toLowerCase().replace(r.NOT_HOST,c).replace(r.PCT_ENCODED,o)),e.path!==undefined&&(e.path=String(e.path).replace(r.PCT_ENCODED,t).replace(e.scheme?r.NOT_PATH:r.NOT_PATH_NOSCHEME,c).replace(r.PCT_ENCODED,o)),e.query!==undefined&&(e.query=String(e.query).replace(r.PCT_ENCODED,t).replace(r.NOT_QUERY,c).replace(r.PCT_ENCODED,o)),e.fragment!==undefined&&(e.fragment=String(e.fragment).replace(r.PCT_ENCODED,t).replace(r.NOT_FRAGMENT,c).replace(r.PCT_ENCODED,o)),e}function l(e){var r=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{},t={},n=r.iri!==!1?w:x;"suffix"===r.reference&&(e=(r.scheme?r.scheme+":":"")+"//"+e);var o=e.match(k);if(o){G?(t.scheme=o[1],t.userinfo=o[3],t.host=o[4],t.port=parseInt(o[5],10),t.path=o[6]||"",t.query=o[7],t.fragment=o[8],isNaN(t.port)&&(t.port=o[5])):(t.scheme=o[1]||undefined,t.userinfo=e.indexOf("@")!==-1?o[3]:undefined,t.host=e.indexOf("//")!==-1?o[4]:undefined,t.port=parseInt(o[5],10),t.path=o[6]||"",t.query=e.indexOf("?")!==-1?o[7]:undefined,t.fragment=e.indexOf("#")!==-1?o[8]:undefined,isNaN(t.port)&&(t.port=e.match(/\/\/(?:.|\n)*\:(?:\/|\?|\#|$)/)?o[4]:undefined)),t.host&&(t.host=t.host.replace(n.IPV6ADDRESS,"$1")),t.scheme!==undefined||t.userinfo!==undefined||t.host!==undefined||t.port!==undefined||t.path||t.query!==undefined?t.scheme===undefined?t.reference="relative":t.fragment===undefined?t.reference="absolute":t.reference="uri":t.reference="same-document",r.reference&&"suffix"!==r.reference&&r.reference!==t.reference&&(t.error=t.error||"URI is not a "+r.reference+" reference.");var a=V[(r.scheme||t.scheme||"").toLowerCase()];if(r.unicodeSupport||a&&a.unicodeSupport)d(t,n);else{if(t.host&&(r.domainHost||a&&a.domainHost))try{t.host=Z.toASCII(t.host.replace(n.PCT_ENCODED,h).toLowerCase())}catch(i){t.error=t.error||"Host's domain name can not be converted to ASCII via punycode: "+i}d(t,x)}a&&a.parse&&a.parse(t,r)}else t.error=t.error||"URI can not be parsed.";return t}function g(e,r){var t=r.iri!==!1?w:x,n=[];return e.userinfo!==undefined&&(n.push(e.userinfo),n.push("@")),e.host!==undefined&&n.push(String(e.host).replace(t.IPV6ADDRESS,"[$1]")),"number"==typeof e.port&&(n.push(":"),n.push(e.port.toString(10))),n.length?n.join(""):undefined}function m(e){for(var r=[];e.length;)if(e.match(Q))e=e.replace(Q,"");else if(e.match(Y))e=e.replace(Y,"/");else if(e.match(B))e=e.replace(B,"/"),r.pop();else if("."===e||".."===e)e="";else{var t=e.match(J);if(!t)throw new Error("Unexpected dot segment condition");var n=t[0];e=e.slice(n.length),r.push(n)}return r.join("")}function v(e){var r=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{},t=r.iri?w:x,n=[],o=V[(r.scheme||e.scheme||"").toLowerCase()];if(o&&o.serialize&&o.serialize(e,r),e.host)if(t.IPV6ADDRESS.test(e.host));else if(r.domainHost||o&&o.domainHost)try{e.host=r.iri?Z.toUnicode(e.host):Z.toASCII(e.host.replace(t.PCT_ENCODED,h).toLowerCase())}catch(u){e.error=e.error||"Host's domain name can not be converted to "+(r.iri?"Unicode":"ASCII")+" via punycode: "+u}d(e,t),"suffix"!==r.reference&&e.scheme&&(n.push(e.scheme),n.push(":"));var a=g(e,r);if(a!==undefined&&("suffix"!==r.reference&&n.push("//"),n.push(a),e.path&&"/"!==e.path.charAt(0)&&n.push("/")),e.path!==undefined){var i=e.path;r.absolutePath||o&&o.absolutePath||(i=m(i)),a===undefined&&(i=i.replace(/^\/\//,"/%2F")),n.push(i)}return e.query!==undefined&&(n.push("?"),n.push(e.query)),e.fragment!==undefined&&(n.push("#"),n.push(e.fragment)),n.join("")}function E(e,r){var t=arguments.length>2&&arguments[2]!==undefined?arguments[2]:{},n=arguments[3],o={};return n||(e=l(v(e,t),t),r=l(v(r,t),t)),t=t||{},!t.tolerant&&r.scheme?(o.scheme=r.scheme,o.userinfo=r.userinfo,o.host=r.host,o.port=r.port,o.path=m(r.path||""),o.query=r.query):(r.userinfo!==undefined||r.host!==undefined||r.port!==undefined?(o.userinfo=r.userinfo,o.host=r.host,o.port=r.port,o.path=m(r.path||""),o.query=r.query):(r.path?("/"===r.path.charAt(0)?o.path=m(r.path):(e.userinfo===undefined&&e.host===undefined&&e.port===undefined||e.path?e.path?o.path=e.path.slice(0,e.path.lastIndexOf("/")+1)+r.path:o.path=r.path:o.path="/"+r.path,o.path=m(o.path)),o.query=r.query):(o.path=e.path,r.query!==undefined?o.query=r.query:o.query=e.query),o.userinfo=e.userinfo,o.host=e.host,o.port=e.port),o.scheme=e.scheme),o.fragment=r.fragment,o}function C(e,r,t){return v(E(l(e,t),l(r,t),t,!0),t)}function y(e,r){return"string"==typeof e?e=v(l(e,r),r):"object"===n(e)&&(e=l(v(e,r),r)),e}function S(e,r,t){return"string"==typeof e?e=v(l(e,t),t):"object"===n(e)&&(e=v(e,t)),"string"==typeof r?r=v(l(r,t),t):"object"===n(r)&&(r=v(r,t)),e===r}function A(e,r){return e&&e.toString().replace(r&&r.iri?w.ESCAPE:x.ESCAPE,c)}function D(e,r){return e&&e.toString().replace(r&&r.iri?w.PCT_ENCODED:x.PCT_ENCODED,h)}function F(e){var r=h(e);return r.match(oe)?r:e}var x=i(!1),w=i(!0),O=function(e){if(Array.isArray(e)){for(var r=0,t=Array(e.length);r<e.length;r++)t[r]=e[r];return t}return Array.from(e)},b=2147483647,N=/^xn--/,I=/[^\0-\x7E]/,T=/[\x2E\u3002\uFF0E\uFF61]/g,R={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},_=Math.floor,P=String.fromCharCode,U=function(e){return String.fromCodePoint.apply(String,O(e))},q=function(e){return e-48<10?e-22:e-65<26?e-65:e-97<26?e-97:36},H=function(e,r){return e+22+75*(e<26)-((0!=r)<<5)},j=function(e,r,t){var n=0;for(e=t?_(e/700):e>>1,e+=_(e/r);e>455;n+=36)e=_(e/35);return _(n+36*e/(e+38))},z=function(e){var r=[],t=e.length,n=0,o=128,a=72,i=e.lastIndexOf("-");i<0&&(i=0);for(var s=0;s<i;++s)e.charCodeAt(s)>=128&&u("not-basic"),r.push(e.charCodeAt(s));for(var p=i>0?i+1:0;p<t;){for(var f=n,c=1,h=36;;h+=36){p>=t&&u("invalid-input");var d=q(e.charCodeAt(p++));(d>=36||d>_((b-n)/c))&&u("overflow"),n+=d*c;var l=h<=a?1:h>=a+26?26:h-a;if(d<l)break;var g=36-l;c>_(b/g)&&u("overflow"),c*=g}var m=r.length+1;a=j(n-f,m,0==f),_(n/m)>b-o&&u("overflow"),o+=_(n/m),n%=m,r.splice(n++,0,o)}return String.fromCodePoint.apply(String,r)},L=function(e){var r=[];e=f(e);var t=e.length,n=128,o=0,a=72,i=!0,s=!1,p=undefined;try{for(var c,h=e[Symbol.iterator]();!(i=(c=h.next()).done);i=!0){var d=c.value;d<128&&r.push(P(d))}}catch(L){s=!0,p=L}finally{try{!i&&h["return"]&&h["return"]()}finally{if(s)throw p}}var l=r.length,g=l;for(l&&r.push("-");g<t;){var m=b,v=!0,E=!1,C=undefined;try{for(var y,S=e[Symbol.iterator]();!(v=(y=S.next()).done);v=!0){var A=y.value;A>=n&&A<m&&(m=A)}}catch(L){E=!0,C=L}finally{try{!v&&S["return"]&&S["return"]()}finally{if(E)throw C}}var D=g+1;m-n>_((b-o)/D)&&u("overflow"),o+=(m-n)*D,n=m;var F=!0,x=!1,w=undefined;try{for(var O,N=e[Symbol.iterator]();!(F=(O=N.next()).done);F=!0){var I=O.value;if(I<n&&++o>b&&u("overflow"),I==n){for(var T=o,R=36;;R+=36){var U=R<=a?1:R>=a+26?26:R-a;if(T<U)break;var q=T-U,z=36-U;r.push(P(H(U+q%z,0))),T=_(q/z)}r.push(P(H(T,0))),a=j(o,D,g==l),o=0,++g}}}catch(L){x=!0,w=L}finally{try{!F&&N["return"]&&N["return"]()}finally{if(x)throw w}}++o,++n}return r.join("")},$=function(e){return p(e,function(e){return N.test(e)?z(e.slice(4).toLowerCase()):e})},M=function(e){return p(e,function(e){return I.test(e)?"xn--"+L(e):e})},Z={version:"2.1.0",ucs2:{decode:f,encode:U},decode:z,encode:L,toASCII:M,toUnicode:$},V={},k=/^(?:([^:\/?#]+):)?(?:\/\/((?:([^\/?#@]*)@)?(\[[\dA-F:.]+\]|[^\/?#:]*)(?:\:(\d*))?))?([^?#]*)(?:\?([^#]*))?(?:#((?:.|\n|\r)*))?/i,G="".match(/(){0}/)[1]===undefined,Q=/^\.\.?\//,Y=/^\/\.(\/|$)/,B=/^\/\.\.(\/|$)/,J=/^\/?(?:.|\n)*?(?=\/|$)/,K={scheme:"http",domainHost:!0,parse:function(e,r){return e.host||(e.error=e.error||"HTTP URIs must have a host."),e},serialize:function(e,r){return e.port!==("https"!==String(e.scheme).toLowerCase()?80:443)&&""!==e.port||(e.port=undefined),e.path||(e.path="/"),e}},W={scheme:"https",domainHost:K.domainHost,parse:K.parse,serialize:K.serialize},X={},ee="[A-Za-z0-9\\-\\.\\_\\~\\xA0-\\u200D\\u2010-\\u2029\\u202F-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]",re="[0-9A-Fa-f]",te=t(t("%[EFef][0-9A-Fa-f]%"+re+re+"%"+re+re)+"|"+t("%[89A-Fa-f][0-9A-Fa-f]%"+re+re)+"|"+t("%"+re+re)),ne=r("[\\!\\$\\%\\'\\(\\)\\*\\+\\,\\-\\.0-9\\<\\>A-Z\\x5E-\\x7E]",'[\\"\\\\]'),oe=new RegExp(ee,"g"),ae=new RegExp(te,"g"),ie=new RegExp(r("[^]","[A-Za-z0-9\\!\\$\\%\\'\\*\\+\\-\\^\\_\\`\\{\\|\\}\\~]","[\\.]",'[\\"]',ne),"g"),ue=new RegExp(r("[^]",ee,"[\\!\\$\\'\\(\\)\\*\\+\\,\\;\\:\\@]"),"g"),se=ue,pe={scheme:"mailto",parse:function(e,r){var t=e.to=e.path?e.path.split(","):[];if(e.path=undefined,e.query){for(var n=!1,o={},a=e.query.split("&"),i=0,u=a.length;i<u;++i){var s=a[i].split("=");switch(s[0]){case"to":for(var p=s[1].split(","),f=0,c=p.length;f<c;++f)t.push(p[f]);break;case"subject":e.subject=D(s[1],r);break;case"body":e.body=D(s[1],r);break;default:n=!0,o[D(s[0],r)]=D(s[1],r)}}n&&(e.headers=o)}e.query=undefined;for(var h=0,d=t.length;h<d;++h){var l=t[h].split("@");if(l[0]=D(l[0]),r.unicodeSupport)l[1]=D(l[1],r).toLowerCase();else try{l[1]=Z.toASCII(D(l[1],r).toLowerCase())}catch(g){e.error=e.error||"Email address's domain name can not be converted to ASCII via punycode: "+g}t[h]=l.join("@")}return e},serialize:function(e,r){var t=a(e.to);if(t){for(var n=0,i=t.length;n<i;++n){var u=String(t[n]),s=u.lastIndexOf("@"),p=u.slice(0,s).replace(ae,F).replace(ae,o).replace(ie,c),f=u.slice(s+1);try{f=r.iri?Z.toUnicode(f):Z.toASCII(D(f,r).toLowerCase())}catch(g){e.error=e.error||"Email address's domain name can not be converted to "+(r.iri?"Unicode":"ASCII")+" via punycode: "+g}t[n]=p+"@"+f}e.path=t.join(",")}var h=e.headers=e.headers||{};e.subject&&(h.subject=e.subject),e.body&&(h.body=e.body);var d=[];for(var l in h)h[l]!==X[l]&&d.push(l.replace(ae,F).replace(ae,o).replace(ue,c)+"="+h[l].replace(ae,F).replace(ae,o).replace(se,c));return d.length&&(e.query=d.join("&")),e}},fe=new RegExp("^urn\\:((?:[0-9A-Za-z][0-9A-Za-z\\-]{1,31}))$"),ce={scheme:"urn",parse:function(e,r){var t=e.path&&e.path.match(/^([^\:]+)\:(.*)/);if(t){var n="urn:"+t[1].toLowerCase(),o=V[n];o||(o=V[n]={scheme:n,parse:function(e,r){return e},serialize:V.urn.serialize}),e.scheme=n,e.path=t[2],e=o.parse(e,r)}else e.error=e.error||"URN can not be parsed.";return e},serialize:function(e,r){var t=e.scheme||r.scheme;if(t&&"urn"!==t){var n=t.match(fe)||["urn:"+t,t];e.scheme="urn",e.path=n[1]+":"+(e.path?e.path.replace(/[\x00-\x20\\\"\&\<\>\[\]\^\`\{\|\}\~\x7F-\xFF]/g,c):"")}return e}},he=/^[0-9A-Fa-f]{8}(?:\-[0-9A-Fa-f]{4}){3}\-[0-9A-Fa-f]{12}$/,de={scheme:"urn:uuid",parse:function(e,r){return r.tolerant||e.path&&e.path.match(he)||(e.error=e.error||"UUID is not valid."),e},serialize:function(e,r){return r.tolerant||e.path&&e.path.match(he)?e.path=(e.path||"").toLowerCase():e.scheme=undefined,V.urn.serialize(e,r)}};V.http=K,V.https=W,V.mailto=pe,V.urn=ce,V["urn:uuid"]=de,e.SCHEMES=V,e.pctEncChar=c,e.pctDecChars=h,e.parse=l,e.removeDotSegments=m,e.serialize=v,e.resolveComponents=E,e.resolve=C,e.normalize=y,e.equal=S,e.escapeComponent=A,e.unescapeComponent=D,Object.defineProperty(e,"__esModule",{value:!0})});
|
|
3
|
-
//# sourceMappingURL=uri.all.min.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/util.ts","../../src/regexps-uri.ts","../../node_modules/punycode/punycode.es6.js","../../src/uri.ts","../../src/schemes/mailto.ts","../../src/regexps-iri.ts","../../src/schemes/http.ts","../../src/schemes/https.ts","../../src/schemes/urn.ts","../../src/schemes/urn-uuid.ts","../../src/index.ts"],"names":["merge","sets","Array","_len","_key","arguments","length","slice","xl","x","join","subexp","str","typeOf","o","undefined","Object","prototype","toString","call","split","pop","shift","toLowerCase","toUpperCase","toArray","obj","setInterval","buildExps","isIRI","HEXDIG$$","PCT_ENCODED$","SUB_DELIMS$$","RESERVED$$","UCSCHAR$$","DEC_OCTET$","IPV4ADDRESS$","H16$","LS32$","IPV6ADDRESS1$","IPV6ADDRESS2$","IPV6ADDRESS3$","IPV6ADDRESS4$","IPV6ADDRESS5$","IPV6ADDRESS6$","IPV6ADDRESS7$","IPV6ADDRESS8$","IPV6ADDRESS9$","RegExp","UNRESERVED$$","IPRIVATE$$","IPV6ADDRESS$","error","type","RangeError","errors","map","array","fn","result","mapDomain","string","parts","replace","regexSeparators","ucs2decode","output","counter","value","charCodeAt","extra","push","pctEncChar","chr","c","pctDecChars","newStr","i","il","parseInt","substr","String","fromCharCode","c2","c3","_normalizeComponentEncoding","components","protocol","decodeUnreserved","decStr","match","UNRESERVED","scheme","PCT_ENCODED","NOT_SCHEME","userinfo","NOT_USERINFO","host","NOT_HOST","path","NOT_PATH","NOT_PATH_NOSCHEME","query","NOT_QUERY","fragment","NOT_FRAGMENT","parse","uriString","options","iri","IRI_PROTOCOL","URI_PROTOCOL","reference","matches","URI_PARSE","NO_MATCH_IS_UNDEFINED","port","isNaN","indexOf","IPV6ADDRESS","schemeHandler","SCHEMES","unicodeSupport","domainHost","punycode","toASCII","e","_recomposeAuthority","uriTokens","removeDotSegments","input","RDS1","RDS2","RDS3","im","RDS5","Error","s","serialize","test","toUnicode","authority","charAt","absolutePath","resolveComponents","base","relative","skipNormalization","target","tolerant","lastIndexOf","resolve","baseURI","relativeURI","normalize","uri","equal","uriA","uriB","escapeComponent","ESCAPE","unescapeComponent","maxInt","regexPunycode","regexNonASCII","floor","Math","stringFromCharCode","ucs2encode","fromCodePoint","apply","toConsumableArray","basicToDigit","codePoint","digitToBasic","digit","flag","adapt","delta","numPoints","firstTime","k","baseMinusTMin","decode","inputLength","n","bias","basic","j","index","oldi","w","t","baseMinusT","out","splice","encode","_step","Symbol","iterator","_iteratorNormalCompletion","_iterator","next","done","currentValue","basicLength","handledCPCount","m","_step2","_iteratorNormalCompletion2","_iterator2","handledCPCountPlusOne","_step3","_iteratorNormalCompletion3","_iterator3","q","qMinusT","http","https","O","VCHAR$$","NOT_LOCAL_PART","NOT_HFNAME","NOT_HFVALUE","mailto","to","unknownHeaders","headers","hfields","hfield","toAddrs","subject","body","addr","toAddr","atIdx","localPart","domain","fields","name","URN_SCHEME","urn","UUID","uuid"],"mappings":"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","file":"dist/es5/uri.all.min.js","sourcesContent":["export function merge(...sets:Array<string>):string {\n\tif (sets.length > 1) {\n\t\tsets[0] = sets[0].slice(0, -1);\n\t\tconst xl = sets.length - 1;\n\t\tfor (let x = 1; x < xl; ++x) {\n\t\t\tsets[x] = sets[x].slice(1, -1);\n\t\t}\n\t\tsets[xl] = sets[xl].slice(1);\n\t\treturn sets.join('');\n\t} else {\n\t\treturn sets[0];\n\t}\n}\n\nexport function subexp(str:string):string {\n\treturn \"(?:\" + str + \")\";\n}\n\nexport function typeOf(o:any):string {\n\treturn o === undefined ? \"undefined\" : (o === null ? \"null\" : Object.prototype.toString.call(o).split(\" \").pop().split(\"]\").shift().toLowerCase());\n}\n\nexport function toUpperCase(str:string):string {\n\treturn str.toUpperCase();\n}\n\nexport function toArray(obj:any):Array<any> {\n\treturn obj !== undefined && obj !== null ? (obj instanceof Array ? obj : (typeof obj.length !== \"number\" || obj.split || obj.setInterval || obj.call ? [obj] : Array.prototype.slice.call(obj))) : [];\n}\n","import { URIRegExps } from \"./uri\";\nimport { merge, subexp } from \"./util\";\n\nexport function buildExps(isIRI:boolean):URIRegExps {\n\tconst\n\t\tALPHA$$ = \"[A-Za-z]\",\n\t\tCR$ = \"[\\\\x0D]\",\n\t\tDIGIT$$ = \"[0-9]\",\n\t\tDQUOTE$$ = \"[\\\\x22]\",\n\t\tHEXDIG$$ = merge(DIGIT$$, \"[A-Fa-f]\"), //case-insensitive\n\t\tLF$$ = \"[\\\\x0A]\",\n\t\tSP$$ = \"[\\\\x20]\",\n\t\tPCT_ENCODED$ = subexp(subexp(\"%[EFef]\" + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$) + \"|\" + subexp(\"%[89A-Fa-f]\" + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$) + \"|\" + subexp(\"%\" + HEXDIG$$ + HEXDIG$$)), //expanded\n\t\tGEN_DELIMS$$ = \"[\\\\:\\\\/\\\\?\\\\#\\\\[\\\\]\\\\@]\",\n\t\tSUB_DELIMS$$ = \"[\\\\!\\\\$\\\\&\\\\'\\\\(\\\\)\\\\*\\\\+\\\\,\\\\;\\\\=]\",\n\t\tRESERVED$$ = merge(GEN_DELIMS$$, SUB_DELIMS$$),\n\t\tUCSCHAR$$ = isIRI ? \"[\\\\xA0-\\\\u200D\\\\u2010-\\\\u2029\\\\u202F-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFEF]\" : \"[]\", //subset, excludes bidi control characters\n\t\tIPRIVATE$$ = isIRI ? \"[\\\\uE000-\\\\uF8FF]\" : \"[]\", //subset\n\t\tUNRESERVED$$ = merge(ALPHA$$, DIGIT$$, \"[\\\\-\\\\.\\\\_\\\\~]\", UCSCHAR$$),\n\t\tSCHEME$ = subexp(ALPHA$$ + merge(ALPHA$$, DIGIT$$, \"[\\\\+\\\\-\\\\.]\") + \"*\"),\n\t\tUSERINFO$ = subexp(subexp(PCT_ENCODED$ + \"|\" + merge(UNRESERVED$$, SUB_DELIMS$$, \"[\\\\:]\")) + \"*\"),\n\t\tDEC_OCTET$ = subexp(subexp(\"25[0-5]\") + \"|\" + subexp(\"2[0-4]\" + DIGIT$$) + \"|\" + subexp(\"1\" + DIGIT$$ + DIGIT$$) + \"|\" + subexp(\"[1-9]\" + DIGIT$$) + \"|\" + DIGIT$$),\n\t\tIPV4ADDRESS$ = subexp(DEC_OCTET$ + \"\\\\.\" + DEC_OCTET$ + \"\\\\.\" + DEC_OCTET$ + \"\\\\.\" + DEC_OCTET$),\n\t\tH16$ = subexp(HEXDIG$$ + \"{1,4}\"),\n\t\tLS32$ = subexp(subexp(H16$ + \"\\\\:\" + H16$) + \"|\" + IPV4ADDRESS$),\n\t\tIPV6ADDRESS1$ = subexp( subexp(H16$ + \"\\\\:\") + \"{6}\" + LS32$), // 6( h16 \":\" ) ls32\n\t\tIPV6ADDRESS2$ = subexp( \"\\\\:\\\\:\" + subexp(H16$ + \"\\\\:\") + \"{5}\" + LS32$), // \"::\" 5( h16 \":\" ) ls32\n\t\tIPV6ADDRESS3$ = subexp(subexp( H16$) + \"?\\\\:\\\\:\" + subexp(H16$ + \"\\\\:\") + \"{4}\" + LS32$), //[ h16 ] \"::\" 4( h16 \":\" ) ls32\n\t\tIPV6ADDRESS4$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,1}\" + H16$) + \"?\\\\:\\\\:\" + subexp(H16$ + \"\\\\:\") + \"{3}\" + LS32$), //[ *1( h16 \":\" ) h16 ] \"::\" 3( h16 \":\" ) ls32\n\t\tIPV6ADDRESS5$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,2}\" + H16$) + \"?\\\\:\\\\:\" + subexp(H16$ + \"\\\\:\") + \"{2}\" + LS32$), //[ *2( h16 \":\" ) h16 ] \"::\" 2( h16 \":\" ) ls32\n\t\tIPV6ADDRESS6$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,3}\" + H16$) + \"?\\\\:\\\\:\" + H16$ + \"\\\\:\" + LS32$), //[ *3( h16 \":\" ) h16 ] \"::\" h16 \":\" ls32\n\t\tIPV6ADDRESS7$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,4}\" + H16$) + \"?\\\\:\\\\:\" + LS32$), //[ *4( h16 \":\" ) h16 ] \"::\" ls32\n\t\tIPV6ADDRESS8$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,5}\" + H16$) + \"?\\\\:\\\\:\" + H16$ ), //[ *5( h16 \":\" ) h16 ] \"::\" h16\n\t\tIPV6ADDRESS9$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,6}\" + H16$) + \"?\\\\:\\\\:\" ), //[ *6( h16 \":\" ) h16 ] \"::\"\n\t\tIPV6ADDRESS$ = subexp([IPV6ADDRESS1$, IPV6ADDRESS2$, IPV6ADDRESS3$, IPV6ADDRESS4$, IPV6ADDRESS5$, IPV6ADDRESS6$, IPV6ADDRESS7$, IPV6ADDRESS8$, IPV6ADDRESS9$].join(\"|\")),\n\t\tIPVFUTURE$ = subexp(\"[vV]\" + HEXDIG$$ + \"+\\\\.\" + merge(UNRESERVED$$, SUB_DELIMS$$, \"[\\\\:]\") + \"+\"),\n\t\tIP_LITERAL$ = subexp(\"\\\\[\" + subexp(IPV6ADDRESS$ + \"|\" + IPVFUTURE$) + \"\\\\]\"),\n\t\tREG_NAME$ = subexp(subexp(PCT_ENCODED$ + \"|\" + merge(UNRESERVED$$, SUB_DELIMS$$)) + \"*\"),\n\t\tHOST$ = subexp(IP_LITERAL$ + \"|\" + IPV4ADDRESS$ + \"(?!\" + REG_NAME$ + \")\" + \"|\" + REG_NAME$),\n\t\tPORT$ = subexp(DIGIT$$ + \"*\"),\n\t\tAUTHORITY$ = subexp(subexp(USERINFO$ + \"@\") + \"?\" + HOST$ + subexp(\"\\\\:\" + PORT$) + \"?\"),\n\t\tPCHAR$ = subexp(PCT_ENCODED$ + \"|\" + merge(UNRESERVED$$, SUB_DELIMS$$, \"[\\\\:\\\\@]\")),\n\t\tSEGMENT$ = subexp(PCHAR$ + \"*\"),\n\t\tSEGMENT_NZ$ = subexp(PCHAR$ + \"+\"),\n\t\tSEGMENT_NZ_NC$ = subexp(subexp(PCT_ENCODED$ + \"|\" + merge(UNRESERVED$$, SUB_DELIMS$$, \"[\\\\@]\")) + \"+\"),\n\t\tPATH_ABEMPTY$ = subexp(subexp(\"\\\\/\" + SEGMENT$) + \"*\"),\n\t\tPATH_ABSOLUTE$ = subexp(\"\\\\/\" + subexp(SEGMENT_NZ$ + PATH_ABEMPTY$) + \"?\"), //simplified\n\t\tPATH_NOSCHEME$ = subexp(SEGMENT_NZ_NC$ + PATH_ABEMPTY$), //simplified\n\t\tPATH_ROOTLESS$ = subexp(SEGMENT_NZ$ + PATH_ABEMPTY$), //simplified\n\t\tPATH_EMPTY$ = \"(?!\" + PCHAR$ + \")\",\n\t\tPATH$ = subexp(PATH_ABEMPTY$ + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_NOSCHEME$ + \"|\" + PATH_ROOTLESS$ + \"|\" + PATH_EMPTY$),\n\t\tQUERY$ = subexp(subexp(PCHAR$ + \"|\" + merge(\"[\\\\/\\\\?]\", IPRIVATE$$)) + \"*\"),\n\t\tFRAGMENT$ = subexp(subexp(PCHAR$ + \"|[\\\\/\\\\?]\") + \"*\"),\n\t\tHIER_PART$ = subexp(subexp(\"\\\\/\\\\/\" + AUTHORITY$ + PATH_ABEMPTY$) + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_ROOTLESS$ + \"|\" + PATH_EMPTY$),\n\t\tURI$ = subexp(SCHEME$ + \"\\\\:\" + HIER_PART$ + subexp(\"\\\\?\" + QUERY$) + \"?\" + subexp(\"\\\\#\" + FRAGMENT$) + \"?\"),\n\t\tRELATIVE_PART$ = subexp(subexp(\"\\\\/\\\\/\" + AUTHORITY$ + PATH_ABEMPTY$) + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_NOSCHEME$ + \"|\" + PATH_EMPTY$),\n\t\tRELATIVE$ = subexp(RELATIVE_PART$ + subexp(\"\\\\?\" + QUERY$) + \"?\" + subexp(\"\\\\#\" + FRAGMENT$) + \"?\"),\n\t\tURI_REFERENCE$ = subexp(URI$ + \"|\" + RELATIVE$),\n\t\tABSOLUTE_URI$ = subexp(SCHEME$ + \"\\\\:\" + HIER_PART$ + subexp(\"\\\\?\" + QUERY$) + \"?\"),\n\n\t\tGENERIC_REF$ = \"^(\" + SCHEME$ + \")\\\\:\" + subexp(subexp(\"\\\\/\\\\/(\" + subexp(\"(\" + USERINFO$ + \")@\") + \"?(\" + HOST$ + \")\" + subexp(\"\\\\:(\" + PORT$ + \")\") + \"?)\") + \"?(\" + PATH_ABEMPTY$ + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_ROOTLESS$ + \"|\" + PATH_EMPTY$ + \")\") + subexp(\"\\\\?(\" + QUERY$ + \")\") + \"?\" + subexp(\"\\\\#(\" + FRAGMENT$ + \")\") + \"?$\",\n\t\tRELATIVE_REF$ = \"^(){0}\" + subexp(subexp(\"\\\\/\\\\/(\" + subexp(\"(\" + USERINFO$ + \")@\") + \"?(\" + HOST$ + \")\" + subexp(\"\\\\:(\" + PORT$ + \")\") + \"?)\") + \"?(\" + PATH_ABEMPTY$ + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_NOSCHEME$ + \"|\" + PATH_EMPTY$ + \")\") + subexp(\"\\\\?(\" + QUERY$ + \")\") + \"?\" + subexp(\"\\\\#(\" + FRAGMENT$ + \")\") + \"?$\",\n\t\tABSOLUTE_REF$ = \"^(\" + SCHEME$ + \")\\\\:\" + subexp(subexp(\"\\\\/\\\\/(\" + subexp(\"(\" + USERINFO$ + \")@\") + \"?(\" + HOST$ + \")\" + subexp(\"\\\\:(\" + PORT$ + \")\") + \"?)\") + \"?(\" + PATH_ABEMPTY$ + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_ROOTLESS$ + \"|\" + PATH_EMPTY$ + \")\") + subexp(\"\\\\?(\" + QUERY$ + \")\") + \"?$\",\n\t\tSAMEDOC_REF$ = \"^\" + subexp(\"\\\\#(\" + FRAGMENT$ + \")\") + \"?$\",\n\t\tAUTHORITY_REF$ = \"^\" + subexp(\"(\" + USERINFO$ + \")@\") + \"?(\" + HOST$ + \")\" + subexp(\"\\\\:(\" + PORT$ + \")\") + \"?$\"\n\t;\n\n\treturn {\n\t\tNOT_SCHEME : new RegExp(merge(\"[^]\", ALPHA$$, DIGIT$$, \"[\\\\+\\\\-\\\\.]\"), \"g\"),\n\t\tNOT_USERINFO : new RegExp(merge(\"[^\\\\%\\\\:]\", UNRESERVED$$, SUB_DELIMS$$), \"g\"),\n\t\tNOT_HOST : new RegExp(merge(\"[^\\\\%\\\\[\\\\]\\\\:]\", UNRESERVED$$, SUB_DELIMS$$), \"g\"),\n\t\tNOT_PATH : new RegExp(merge(\"[^\\\\%\\\\/\\\\:\\\\@]\", UNRESERVED$$, SUB_DELIMS$$), \"g\"),\n\t\tNOT_PATH_NOSCHEME : new RegExp(merge(\"[^\\\\%\\\\/\\\\@]\", UNRESERVED$$, SUB_DELIMS$$), \"g\"),\n\t\tNOT_QUERY : new RegExp(merge(\"[^\\\\%]\", UNRESERVED$$, SUB_DELIMS$$, \"[\\\\:\\\\@\\\\/\\\\?]\", IPRIVATE$$), \"g\"),\n\t\tNOT_FRAGMENT : new RegExp(merge(\"[^\\\\%]\", UNRESERVED$$, SUB_DELIMS$$, \"[\\\\:\\\\@\\\\/\\\\?]\"), \"g\"),\n\t\tESCAPE : new RegExp(merge(\"[^]\", UNRESERVED$$, SUB_DELIMS$$), \"g\"),\n\t\tUNRESERVED : new RegExp(UNRESERVED$$, \"g\"),\n\t\tOTHER_CHARS : new RegExp(merge(\"[^\\\\%]\", UNRESERVED$$, RESERVED$$), \"g\"),\n\t\tPCT_ENCODED : new RegExp(PCT_ENCODED$, \"g\"),\n\t\tIPV6ADDRESS : new RegExp(\"\\\\[?(\" + IPV6ADDRESS$ + \")\\\\]?\", \"g\")\n\t};\n}\n\nexport default buildExps(false);\n","'use strict';\n\n/** Highest positive signed 32-bit float value */\nconst maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1\n\n/** Bootstring parameters */\nconst base = 36;\nconst tMin = 1;\nconst tMax = 26;\nconst skew = 38;\nconst damp = 700;\nconst initialBias = 72;\nconst initialN = 128; // 0x80\nconst delimiter = '-'; // '\\x2D'\n\n/** Regular expressions */\nconst regexPunycode = /^xn--/;\nconst regexNonASCII = /[^\\0-\\x7E]/; // non-ASCII chars\nconst regexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g; // RFC 3490 separators\n\n/** Error messages */\nconst errors = {\n\t'overflow': 'Overflow: input needs wider integers to process',\n\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t'invalid-input': 'Invalid input'\n};\n\n/** Convenience shortcuts */\nconst baseMinusTMin = base - tMin;\nconst floor = Math.floor;\nconst stringFromCharCode = String.fromCharCode;\n\n/*--------------------------------------------------------------------------*/\n\n/**\n * A generic error utility function.\n * @private\n * @param {String} type The error type.\n * @returns {Error} Throws a `RangeError` with the applicable error message.\n */\nfunction error(type) {\n\tthrow new RangeError(errors[type]);\n}\n\n/**\n * A generic `Array#map` utility function.\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} callback The function that gets called for every array\n * item.\n * @returns {Array} A new array of values returned by the callback function.\n */\nfunction map(array, fn) {\n\tconst result = [];\n\tlet length = array.length;\n\twhile (length--) {\n\t\tresult[length] = fn(array[length]);\n\t}\n\treturn result;\n}\n\n/**\n * A simple `Array#map`-like wrapper to work with domain name strings or email\n * addresses.\n * @private\n * @param {String} domain The domain name or email address.\n * @param {Function} callback The function that gets called for every\n * character.\n * @returns {Array} A new string of characters returned by the callback\n * function.\n */\nfunction mapDomain(string, fn) {\n\tconst parts = string.split('@');\n\tlet result = '';\n\tif (parts.length > 1) {\n\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t// the local part (i.e. everything up to `@`) intact.\n\t\tresult = parts[0] + '@';\n\t\tstring = parts[1];\n\t}\n\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\tstring = string.replace(regexSeparators, '\\x2E');\n\tconst labels = string.split('.');\n\tconst encoded = map(labels, fn).join('.');\n\treturn result + encoded;\n}\n\n/**\n * Creates an array containing the numeric code points of each Unicode\n * character in the string. While JavaScript uses UCS-2 internally,\n * this function will convert a pair of surrogate halves (each of which\n * UCS-2 exposes as separate characters) into a single code point,\n * matching UTF-16.\n * @see `punycode.ucs2.encode`\n * @see <https://mathiasbynens.be/notes/javascript-encoding>\n * @memberOf punycode.ucs2\n * @name decode\n * @param {String} string The Unicode input string (UCS-2).\n * @returns {Array} The new array of code points.\n */\nfunction ucs2decode(string) {\n\tconst output = [];\n\tlet counter = 0;\n\tconst length = string.length;\n\twhile (counter < length) {\n\t\tconst value = string.charCodeAt(counter++);\n\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t// It's a high surrogate, and there is a next character.\n\t\t\tconst extra = string.charCodeAt(counter++);\n\t\t\tif ((extra & 0xFC00) == 0xDC00) { // Low surrogate.\n\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t} else {\n\t\t\t\t// It's an unmatched surrogate; only append this code unit, in case the\n\t\t\t\t// next code unit is the high surrogate of a surrogate pair.\n\t\t\t\toutput.push(value);\n\t\t\t\tcounter--;\n\t\t\t}\n\t\t} else {\n\t\t\toutput.push(value);\n\t\t}\n\t}\n\treturn output;\n}\n\n/**\n * Creates a string based on an array of numeric code points.\n * @see `punycode.ucs2.decode`\n * @memberOf punycode.ucs2\n * @name encode\n * @param {Array} codePoints The array of numeric code points.\n * @returns {String} The new Unicode string (UCS-2).\n */\nconst ucs2encode = array => String.fromCodePoint(...array);\n\n/**\n * Converts a basic code point into a digit/integer.\n * @see `digitToBasic()`\n * @private\n * @param {Number} codePoint The basic numeric code point value.\n * @returns {Number} The numeric value of a basic code point (for use in\n * representing integers) in the range `0` to `base - 1`, or `base` if\n * the code point does not represent a value.\n */\nconst basicToDigit = function(codePoint) {\n\tif (codePoint - 0x30 < 0x0A) {\n\t\treturn codePoint - 0x16;\n\t}\n\tif (codePoint - 0x41 < 0x1A) {\n\t\treturn codePoint - 0x41;\n\t}\n\tif (codePoint - 0x61 < 0x1A) {\n\t\treturn codePoint - 0x61;\n\t}\n\treturn base;\n};\n\n/**\n * Converts a digit/integer into a basic code point.\n * @see `basicToDigit()`\n * @private\n * @param {Number} digit The numeric value of a basic code point.\n * @returns {Number} The basic code point whose value (when used for\n * representing integers) is `digit`, which needs to be in the range\n * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n * used; else, the lowercase form is used. The behavior is undefined\n * if `flag` is non-zero and `digit` has no uppercase form.\n */\nconst digitToBasic = function(digit, flag) {\n\t// 0..25 map to ASCII a..z or A..Z\n\t// 26..35 map to ASCII 0..9\n\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n};\n\n/**\n * Bias adaptation function as per section 3.4 of RFC 3492.\n * https://tools.ietf.org/html/rfc3492#section-3.4\n * @private\n */\nconst adapt = function(delta, numPoints, firstTime) {\n\tlet k = 0;\n\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\tdelta += floor(delta / numPoints);\n\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\tdelta = floor(delta / baseMinusTMin);\n\t}\n\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n};\n\n/**\n * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n * symbols.\n * @memberOf punycode\n * @param {String} input The Punycode string of ASCII-only symbols.\n * @returns {String} The resulting string of Unicode symbols.\n */\nconst decode = function(input) {\n\t// Don't use UCS-2.\n\tconst output = [];\n\tconst inputLength = input.length;\n\tlet i = 0;\n\tlet n = initialN;\n\tlet bias = initialBias;\n\n\t// Handle the basic code points: let `basic` be the number of input code\n\t// points before the last delimiter, or `0` if there is none, then copy\n\t// the first basic code points to the output.\n\n\tlet basic = input.lastIndexOf(delimiter);\n\tif (basic < 0) {\n\t\tbasic = 0;\n\t}\n\n\tfor (let j = 0; j < basic; ++j) {\n\t\t// if it's not a basic code point\n\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\terror('not-basic');\n\t\t}\n\t\toutput.push(input.charCodeAt(j));\n\t}\n\n\t// Main decoding loop: start just after the last delimiter if any basic code\n\t// points were copied; start at the beginning otherwise.\n\n\tfor (let index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t// `index` is the index of the next character to be consumed.\n\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t// which gets added to `i`. The overflow checking is easier\n\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t// value at the end to obtain `delta`.\n\t\tlet oldi = i;\n\t\tfor (let w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\tif (index >= inputLength) {\n\t\t\t\terror('invalid-input');\n\t\t\t}\n\n\t\t\tconst digit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\ti += digit * w;\n\t\t\tconst t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\tif (digit < t) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tconst baseMinusT = base - t;\n\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tw *= baseMinusT;\n\n\t\t}\n\n\t\tconst out = output.length + 1;\n\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t// incrementing `n` each time, so we'll fix that now:\n\t\tif (floor(i / out) > maxInt - n) {\n\t\t\terror('overflow');\n\t\t}\n\n\t\tn += floor(i / out);\n\t\ti %= out;\n\n\t\t// Insert `n` at position `i` of the output.\n\t\toutput.splice(i++, 0, n);\n\n\t}\n\n\treturn String.fromCodePoint(...output);\n};\n\n/**\n * Converts a string of Unicode symbols (e.g. a domain name label) to a\n * Punycode string of ASCII-only symbols.\n * @memberOf punycode\n * @param {String} input The string of Unicode symbols.\n * @returns {String} The resulting Punycode string of ASCII-only symbols.\n */\nconst encode = function(input) {\n\tconst output = [];\n\n\t// Convert the input in UCS-2 to an array of Unicode code points.\n\tinput = ucs2decode(input);\n\n\t// Cache the length.\n\tlet inputLength = input.length;\n\n\t// Initialize the state.\n\tlet n = initialN;\n\tlet delta = 0;\n\tlet bias = initialBias;\n\n\t// Handle the basic code points.\n\tfor (const currentValue of input) {\n\t\tif (currentValue < 0x80) {\n\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t}\n\t}\n\n\tlet basicLength = output.length;\n\tlet handledCPCount = basicLength;\n\n\t// `handledCPCount` is the number of code points that have been handled;\n\t// `basicLength` is the number of basic code points.\n\n\t// Finish the basic string with a delimiter unless it's empty.\n\tif (basicLength) {\n\t\toutput.push(delimiter);\n\t}\n\n\t// Main encoding loop:\n\twhile (handledCPCount < inputLength) {\n\n\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t// larger one:\n\t\tlet m = maxInt;\n\t\tfor (const currentValue of input) {\n\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\tm = currentValue;\n\t\t\t}\n\t\t}\n\n\t\t// Increase `delta` enough to advance the decoder's <n,i> state to <m,0>,\n\t\t// but guard against overflow.\n\t\tconst handledCPCountPlusOne = handledCPCount + 1;\n\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\terror('overflow');\n\t\t}\n\n\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\tn = m;\n\n\t\tfor (const currentValue of input) {\n\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\t\t\tif (currentValue == n) {\n\t\t\t\t// Represent delta as a generalized variable-length integer.\n\t\t\t\tlet q = delta;\n\t\t\t\tfor (let k = base; /* no condition */; k += base) {\n\t\t\t\t\tconst t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tconst qMinusT = q - t;\n\t\t\t\t\tconst baseMinusT = base - t;\n\t\t\t\t\toutput.push(\n\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t);\n\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t}\n\n\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t\t\t\tdelta = 0;\n\t\t\t\t++handledCPCount;\n\t\t\t}\n\t\t}\n\n\t\t++delta;\n\t\t++n;\n\n\t}\n\treturn output.join('');\n};\n\n/**\n * Converts a Punycode string representing a domain name or an email address\n * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n * it doesn't matter if you call it on a string that has already been\n * converted to Unicode.\n * @memberOf punycode\n * @param {String} input The Punycoded domain name or email address to\n * convert to Unicode.\n * @returns {String} The Unicode representation of the given Punycode\n * string.\n */\nconst toUnicode = function(input) {\n\treturn mapDomain(input, function(string) {\n\t\treturn regexPunycode.test(string)\n\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t: string;\n\t});\n};\n\n/**\n * Converts a Unicode string representing a domain name or an email address to\n * Punycode. Only the non-ASCII parts of the domain name will be converted,\n * i.e. it doesn't matter if you call it with a domain that's already in\n * ASCII.\n * @memberOf punycode\n * @param {String} input The domain name or email address to convert, as a\n * Unicode string.\n * @returns {String} The Punycode representation of the given domain name or\n * email address.\n */\nconst toASCII = function(input) {\n\treturn mapDomain(input, function(string) {\n\t\treturn regexNonASCII.test(string)\n\t\t\t? 'xn--' + encode(string)\n\t\t\t: string;\n\t});\n};\n\n/*--------------------------------------------------------------------------*/\n\n/** Define the public API */\nconst punycode = {\n\t/**\n\t * A string representing the current Punycode.js version number.\n\t * @memberOf punycode\n\t * @type String\n\t */\n\t'version': '2.1.0',\n\t/**\n\t * An object of methods to convert from JavaScript's internal character\n\t * representation (UCS-2) to Unicode code points, and back.\n\t * @see <https://mathiasbynens.be/notes/javascript-encoding>\n\t * @memberOf punycode\n\t * @type Object\n\t */\n\t'ucs2': {\n\t\t'decode': ucs2decode,\n\t\t'encode': ucs2encode\n\t},\n\t'decode': decode,\n\t'encode': encode,\n\t'toASCII': toASCII,\n\t'toUnicode': toUnicode\n};\n\nexport default punycode;\n","/**\n * URI.js\n *\n * @fileoverview An RFC 3986 compliant, scheme extendable URI parsing/validating/resolving library for JavaScript.\n * @author <a href=\"mailto:gary.court@gmail.com\">Gary Court</a>\n * @see http://github.com/garycourt/uri-js\n */\n\n/**\n * Copyright 2011 Gary Court. All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification, are\n * permitted provided that the following conditions are met:\n *\n * 1. Redistributions of source code must retain the above copyright notice, this list of\n * conditions and the following disclaimer.\n *\n * 2. Redistributions in binary form must reproduce the above copyright notice, this list\n * of conditions and the following disclaimer in the documentation and/or other materials\n * provided with the distribution.\n *\n * THIS SOFTWARE IS PROVIDED BY GARY COURT ``AS IS'' AND ANY EXPRESS OR IMPLIED\n * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND\n * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GARY COURT OR\n * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON\n * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF\n * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n * The views and conclusions contained in the software and documentation are those of the\n * authors and should not be interpreted as representing official policies, either expressed\n * or implied, of Gary Court.\n */\n\nimport URI_PROTOCOL from \"./regexps-uri\";\nimport IRI_PROTOCOL from \"./regexps-iri\";\nimport punycode from \"punycode\";\nimport { toUpperCase, typeOf } from \"./util\";\n\nexport interface URIComponents {\n\tscheme?:string,\n\tuserinfo?:string,\n\thost?:string,\n\tport?:number|string,\n\tpath?:string,\n\tquery?:string,\n\tfragment?:string,\n\treference?:string,\n\terror?:string\n}\n\nexport interface URIOptions {\n\tscheme?:string,\n\treference?:string,\n\ttolerant?:boolean,\n\tabsolutePath?:boolean,\n\tiri?:boolean,\n\tunicodeSupport?:boolean,\n\tdomainHost?:boolean\n}\n\nexport interface URISchemeHandler {\n\tscheme:string,\n\tparse(components:URIComponents, options:URIOptions):URIComponents,\n\tserialize(components:URIComponents, options:URIOptions):URIComponents,\n\tunicodeSupport?:boolean,\n\tdomainHost?:boolean,\n\tabsolutePath?:boolean\n}\n\nexport interface URIRegExps {\n\tNOT_SCHEME : RegExp,\n\tNOT_USERINFO : RegExp,\n\tNOT_HOST : RegExp,\n\tNOT_PATH : RegExp,\n\tNOT_PATH_NOSCHEME : RegExp,\n\tNOT_QUERY : RegExp,\n\tNOT_FRAGMENT : RegExp,\n\tESCAPE : RegExp,\n\tUNRESERVED : RegExp,\n\tOTHER_CHARS : RegExp,\n\tPCT_ENCODED : RegExp,\n\tIPV6ADDRESS : RegExp\n}\n\nexport const SCHEMES:{[scheme:string]:URISchemeHandler} = {};\n\nexport function pctEncChar(chr:string):string {\n\tconst c = chr.charCodeAt(0);\n\tlet e:string;\n\n\tif (c < 16) e = \"%0\" + c.toString(16).toUpperCase();\n\telse if (c < 128) e = \"%\" + c.toString(16).toUpperCase();\n\telse if (c < 2048) e = \"%\" + ((c >> 6) | 192).toString(16).toUpperCase() + \"%\" + ((c & 63) | 128).toString(16).toUpperCase();\n\telse e = \"%\" + ((c >> 12) | 224).toString(16).toUpperCase() + \"%\" + (((c >> 6) & 63) | 128).toString(16).toUpperCase() + \"%\" + ((c & 63) | 128).toString(16).toUpperCase();\n\n\treturn e;\n}\n\nexport function pctDecChars(str:string):string {\n\tlet newStr = \"\";\n\tlet i = 0;\n\tconst il = str.length;\n\n\twhile (i < il) {\n\t\tconst c = parseInt(str.substr(i + 1, 2), 16);\n\n\t\tif (c < 128) {\n\t\t\tnewStr += String.fromCharCode(c);\n\t\t\ti += 3;\n\t\t}\n\t\telse if (c >= 194 && c < 224) {\n\t\t\tif ((il - i) >= 6) {\n\t\t\t\tconst c2 = parseInt(str.substr(i + 4, 2), 16);\n\t\t\t\tnewStr += String.fromCharCode(((c & 31) << 6) | (c2 & 63));\n\t\t\t} else {\n\t\t\t\tnewStr += str.substr(i, 6);\n\t\t\t}\n\t\t\ti += 6;\n\t\t}\n\t\telse if (c >= 224) {\n\t\t\tif ((il - i) >= 9) {\n\t\t\t\tconst c2 = parseInt(str.substr(i + 4, 2), 16);\n\t\t\t\tconst c3 = parseInt(str.substr(i + 7, 2), 16);\n\t\t\t\tnewStr += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));\n\t\t\t} else {\n\t\t\t\tnewStr += str.substr(i, 9);\n\t\t\t}\n\t\t\ti += 9;\n\t\t}\n\t\telse {\n\t\t\tnewStr += str.substr(i, 3);\n\t\t\ti += 3;\n\t\t}\n\t}\n\n\treturn newStr;\n}\n\nfunction _normalizeComponentEncoding(components:URIComponents, protocol:URIRegExps) {\n\tfunction decodeUnreserved(str:string):string {\n\t\tconst decStr = pctDecChars(str);\n\t\treturn (!decStr.match(protocol.UNRESERVED) ? str : decStr);\n\t}\n\n\tif (components.scheme) components.scheme = String(components.scheme).replace(protocol.PCT_ENCODED, decodeUnreserved).toLowerCase().replace(protocol.NOT_SCHEME, \"\");\n\tif (components.userinfo !== undefined) components.userinfo = String(components.userinfo).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(protocol.NOT_USERINFO, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);\n\tif (components.host !== undefined) components.host = String(components.host).replace(protocol.PCT_ENCODED, decodeUnreserved).toLowerCase().replace(protocol.NOT_HOST, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);\n\tif (components.path !== undefined) components.path = String(components.path).replace(protocol.PCT_ENCODED, decodeUnreserved).replace((components.scheme ? protocol.NOT_PATH : protocol.NOT_PATH_NOSCHEME), pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);\n\tif (components.query !== undefined) components.query = String(components.query).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(protocol.NOT_QUERY, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);\n\tif (components.fragment !== undefined) components.fragment = String(components.fragment).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(protocol.NOT_FRAGMENT, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);\n\n\treturn components;\n};\n\nconst URI_PARSE = /^(?:([^:\\/?#]+):)?(?:\\/\\/((?:([^\\/?#@]*)@)?(\\[[\\dA-F:.]+\\]|[^\\/?#:]*)(?:\\:(\\d*))?))?([^?#]*)(?:\\?([^#]*))?(?:#((?:.|\\n|\\r)*))?/i;\nconst NO_MATCH_IS_UNDEFINED = (<RegExpMatchArray>(\"\").match(/(){0}/))[1] === undefined;\n\nexport function parse(uriString:string, options:URIOptions = {}):URIComponents {\n\tconst components:URIComponents = {};\n\tconst protocol = (options.iri !== false ? IRI_PROTOCOL : URI_PROTOCOL);\n\n\tif (options.reference === \"suffix\") uriString = (options.scheme ? options.scheme + \":\" : \"\") + \"//\" + uriString;\n\n\tconst matches = uriString.match(URI_PARSE);\n\n\tif (matches) {\n\t\tif (NO_MATCH_IS_UNDEFINED) {\n\t\t\t//store each component\n\t\t\tcomponents.scheme = matches[1];\n\t\t\tcomponents.userinfo = matches[3];\n\t\t\tcomponents.host = matches[4];\n\t\t\tcomponents.port = parseInt(matches[5], 10);\n\t\t\tcomponents.path = matches[6] || \"\";\n\t\t\tcomponents.query = matches[7];\n\t\t\tcomponents.fragment = matches[8];\n\n\t\t\t//fix port number\n\t\t\tif (isNaN(components.port)) {\n\t\t\t\tcomponents.port = matches[5];\n\t\t\t}\n\t\t} else { //IE FIX for improper RegExp matching\n\t\t\t//store each component\n\t\t\tcomponents.scheme = matches[1] || undefined;\n\t\t\tcomponents.userinfo = (uriString.indexOf(\"@\") !== -1 ? matches[3] : undefined);\n\t\t\tcomponents.host = (uriString.indexOf(\"//\") !== -1 ? matches[4] : undefined);\n\t\t\tcomponents.port = parseInt(matches[5], 10);\n\t\t\tcomponents.path = matches[6] || \"\";\n\t\t\tcomponents.query = (uriString.indexOf(\"?\") !== -1 ? matches[7] : undefined);\n\t\t\tcomponents.fragment = (uriString.indexOf(\"#\") !== -1 ? matches[8] : undefined);\n\n\t\t\t//fix port number\n\t\t\tif (isNaN(components.port)) {\n\t\t\t\tcomponents.port = (uriString.match(/\\/\\/(?:.|\\n)*\\:(?:\\/|\\?|\\#|$)/) ? matches[4] : undefined);\n\t\t\t}\n\t\t}\n\n\t\t//strip brackets from IPv6 hosts\n\t\tif (components.host) {\n\t\t\tcomponents.host = components.host.replace(protocol.IPV6ADDRESS, \"$1\");\n\t\t}\n\n\t\t//determine reference type\n\t\tif (components.scheme === undefined && components.userinfo === undefined && components.host === undefined && components.port === undefined && !components.path && components.query === undefined) {\n\t\t\tcomponents.reference = \"same-document\";\n\t\t} else if (components.scheme === undefined) {\n\t\t\tcomponents.reference = \"relative\";\n\t\t} else if (components.fragment === undefined) {\n\t\t\tcomponents.reference = \"absolute\";\n\t\t} else {\n\t\t\tcomponents.reference = \"uri\";\n\t\t}\n\n\t\t//check for reference errors\n\t\tif (options.reference && options.reference !== \"suffix\" && options.reference !== components.reference) {\n\t\t\tcomponents.error = components.error || \"URI is not a \" + options.reference + \" reference.\";\n\t\t}\n\n\t\t//find scheme handler\n\t\tconst schemeHandler = SCHEMES[(options.scheme || components.scheme || \"\").toLowerCase()];\n\n\t\t//check if scheme can't handle IRIs\n\t\tif (!options.unicodeSupport && (!schemeHandler || !schemeHandler.unicodeSupport)) {\n\t\t\t//if host component is a domain name\n\t\t\tif (components.host && (options.domainHost || (schemeHandler && schemeHandler.domainHost))) {\n\t\t\t\t//convert Unicode IDN -> ASCII IDN\n\t\t\t\ttry {\n\t\t\t\t\tcomponents.host = punycode.toASCII(components.host.replace(protocol.PCT_ENCODED, pctDecChars).toLowerCase());\n\t\t\t\t} catch (e) {\n\t\t\t\t\tcomponents.error = components.error || \"Host's domain name can not be converted to ASCII via punycode: \" + e;\n\t\t\t\t}\n\t\t\t}\n\t\t\t//convert IRI -> URI\n\t\t\t_normalizeComponentEncoding(components, URI_PROTOCOL);\n\t\t} else {\n\t\t\t//normalize encodings\n\t\t\t_normalizeComponentEncoding(components, protocol);\n\t\t}\n\n\t\t//perform scheme specific parsing\n\t\tif (schemeHandler && schemeHandler.parse) {\n\t\t\tschemeHandler.parse(components, options);\n\t\t}\n\t} else {\n\t\tcomponents.error = components.error || \"URI can not be parsed.\";\n\t}\n\n\treturn components;\n};\n\nfunction _recomposeAuthority(components:URIComponents, options:URIOptions):string|undefined {\n\tconst protocol = (options.iri !== false ? IRI_PROTOCOL : URI_PROTOCOL);\n\tconst uriTokens:Array<string> = [];\n\n\tif (components.userinfo !== undefined) {\n\t\turiTokens.push(components.userinfo);\n\t\turiTokens.push(\"@\");\n\t}\n\n\tif (components.host !== undefined) {\n\t\t//ensure IPv6 addresses are bracketed\n\t\turiTokens.push(String(components.host).replace(protocol.IPV6ADDRESS, \"[$1]\"));\n\t}\n\n\tif (typeof components.port === \"number\") {\n\t\turiTokens.push(\":\");\n\t\turiTokens.push(components.port.toString(10));\n\t}\n\n\treturn uriTokens.length ? uriTokens.join(\"\") : undefined;\n};\n\nconst RDS1 = /^\\.\\.?\\//;\nconst RDS2 = /^\\/\\.(\\/|$)/;\nconst RDS3 = /^\\/\\.\\.(\\/|$)/;\nconst RDS4 = /^\\.\\.?$/;\nconst RDS5 = /^\\/?(?:.|\\n)*?(?=\\/|$)/;\n\nexport function removeDotSegments(input:string):string {\n\tconst output:Array<string> = [];\n\n\twhile (input.length) {\n\t\tif (input.match(RDS1)) {\n\t\t\tinput = input.replace(RDS1, \"\");\n\t\t} else if (input.match(RDS2)) {\n\t\t\tinput = input.replace(RDS2, \"/\");\n\t\t} else if (input.match(RDS3)) {\n\t\t\tinput = input.replace(RDS3, \"/\");\n\t\t\toutput.pop();\n\t\t} else if (input === \".\" || input === \"..\") {\n\t\t\tinput = \"\";\n\t\t} else {\n\t\t\tconst im = input.match(RDS5);\n\t\t\tif (im) {\n\t\t\t\tconst s = im[0];\n\t\t\t\tinput = input.slice(s.length);\n\t\t\t\toutput.push(s);\n\t\t\t} else {\n\t\t\t\tthrow new Error(\"Unexpected dot segment condition\");\n\t\t\t}\n\t\t}\n\t}\n\n\treturn output.join(\"\");\n};\n\nexport function serialize(components:URIComponents, options:URIOptions = {}):string {\n\tconst protocol = (options.iri ? IRI_PROTOCOL : URI_PROTOCOL);\n\tconst uriTokens:Array<string> = [];\n\n\t//find scheme handler\n\tconst schemeHandler = SCHEMES[(options.scheme || components.scheme || \"\").toLowerCase()];\n\n\t//perform scheme specific serialization\n\tif (schemeHandler && schemeHandler.serialize) schemeHandler.serialize(components, options);\n\n\tif (components.host) {\n\t\t//if host component is an IPv6 address\n\t\tif (protocol.IPV6ADDRESS.test(components.host)) {\n\t\t\t//TODO: normalize IPv6 address as per RFC 5952\n\t\t}\n\n\t\t//if host component is a domain name\n\t\telse if (options.domainHost || (schemeHandler && schemeHandler.domainHost)) {\n\t\t\t//convert IDN via punycode\n\t\t\ttry {\n\t\t\t\tcomponents.host = (!options.iri ? punycode.toASCII(components.host.replace(protocol.PCT_ENCODED, pctDecChars).toLowerCase()) : punycode.toUnicode(components.host));\n\t\t\t} catch (e) {\n\t\t\t\tcomponents.error = components.error || \"Host's domain name can not be converted to \" + (!options.iri ? \"ASCII\" : \"Unicode\") + \" via punycode: \" + e;\n\t\t\t}\n\t\t}\n\t}\n\n\t//normalize encoding\n\t_normalizeComponentEncoding(components, protocol);\n\n\tif (options.reference !== \"suffix\" && components.scheme) {\n\t\turiTokens.push(components.scheme);\n\t\turiTokens.push(\":\");\n\t}\n\n\tconst authority = _recomposeAuthority(components, options);\n\tif (authority !== undefined) {\n\t\tif (options.reference !== \"suffix\") {\n\t\t\turiTokens.push(\"//\");\n\t\t}\n\n\t\turiTokens.push(authority);\n\n\t\tif (components.path && components.path.charAt(0) !== \"/\") {\n\t\t\turiTokens.push(\"/\");\n\t\t}\n\t}\n\n\tif (components.path !== undefined) {\n\t\tlet s = components.path;\n\n\t\tif (!options.absolutePath && (!schemeHandler || !schemeHandler.absolutePath)) {\n\t\t\ts = removeDotSegments(s);\n\t\t}\n\n\t\tif (authority === undefined) {\n\t\t\ts = s.replace(/^\\/\\//, \"/%2F\"); //don't allow the path to start with \"//\"\n\t\t}\n\n\t\turiTokens.push(s);\n\t}\n\n\tif (components.query !== undefined) {\n\t\turiTokens.push(\"?\");\n\t\turiTokens.push(components.query);\n\t}\n\n\tif (components.fragment !== undefined) {\n\t\turiTokens.push(\"#\");\n\t\turiTokens.push(components.fragment);\n\t}\n\n\treturn uriTokens.join(\"\"); //merge tokens into a string\n};\n\nexport function resolveComponents(base:URIComponents, relative:URIComponents, options:URIOptions = {}, skipNormalization?:boolean):URIComponents {\n\tconst target:URIComponents = {};\n\n\tif (!skipNormalization) {\n\t\tbase = parse(serialize(base, options), options); //normalize base components\n\t\trelative = parse(serialize(relative, options), options); //normalize relative components\n\t}\n\toptions = options || {};\n\n\tif (!options.tolerant && relative.scheme) {\n\t\ttarget.scheme = relative.scheme;\n\t\t//target.authority = relative.authority;\n\t\ttarget.userinfo = relative.userinfo;\n\t\ttarget.host = relative.host;\n\t\ttarget.port = relative.port;\n\t\ttarget.path = removeDotSegments(relative.path || \"\");\n\t\ttarget.query = relative.query;\n\t} else {\n\t\tif (relative.userinfo !== undefined || relative.host !== undefined || relative.port !== undefined) {\n\t\t\t//target.authority = relative.authority;\n\t\t\ttarget.userinfo = relative.userinfo;\n\t\t\ttarget.host = relative.host;\n\t\t\ttarget.port = relative.port;\n\t\t\ttarget.path = removeDotSegments(relative.path || \"\");\n\t\t\ttarget.query = relative.query;\n\t\t} else {\n\t\t\tif (!relative.path) {\n\t\t\t\ttarget.path = base.path;\n\t\t\t\tif (relative.query !== undefined) {\n\t\t\t\t\ttarget.query = relative.query;\n\t\t\t\t} else {\n\t\t\t\t\ttarget.query = base.query;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (relative.path.charAt(0) === \"/\") {\n\t\t\t\t\ttarget.path = removeDotSegments(relative.path);\n\t\t\t\t} else {\n\t\t\t\t\tif ((base.userinfo !== undefined || base.host !== undefined || base.port !== undefined) && !base.path) {\n\t\t\t\t\t\ttarget.path = \"/\" + relative.path;\n\t\t\t\t\t} else if (!base.path) {\n\t\t\t\t\t\ttarget.path = relative.path;\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttarget.path = base.path.slice(0, base.path.lastIndexOf(\"/\") + 1) + relative.path;\n\t\t\t\t\t}\n\t\t\t\t\ttarget.path = removeDotSegments(target.path);\n\t\t\t\t}\n\t\t\t\ttarget.query = relative.query;\n\t\t\t}\n\t\t\t//target.authority = base.authority;\n\t\t\ttarget.userinfo = base.userinfo;\n\t\t\ttarget.host = base.host;\n\t\t\ttarget.port = base.port;\n\t\t}\n\t\ttarget.scheme = base.scheme;\n\t}\n\n\ttarget.fragment = relative.fragment;\n\n\treturn target;\n};\n\nexport function resolve(baseURI:string, relativeURI:string, options?:URIOptions):string {\n\treturn serialize(resolveComponents(parse(baseURI, options), parse(relativeURI, options), options, true), options);\n};\n\nexport function normalize(uri:string, options?:URIOptions):string;\nexport function normalize(uri:URIComponents, options?:URIOptions):URIComponents;\nexport function normalize(uri:any, options?:URIOptions):any {\n\tif (typeof uri === \"string\") {\n\t\turi = serialize(parse(uri, options), options);\n\t} else if (typeOf(uri) === \"object\") {\n\t\turi = parse(serialize(<URIComponents>uri, options), options);\n\t}\n\n\treturn uri;\n};\n\nexport function equal(uriA:string, uriB:string, options?: URIOptions):boolean;\nexport function equal(uriA:URIComponents, uriB:URIComponents, options?:URIOptions):boolean;\nexport function equal(uriA:any, uriB:any, options?:URIOptions):boolean {\n\tif (typeof uriA === \"string\") {\n\t\turiA = serialize(parse(uriA, options), options);\n\t} else if (typeOf(uriA) === \"object\") {\n\t\turiA = serialize(<URIComponents>uriA, options);\n\t}\n\n\tif (typeof uriB === \"string\") {\n\t\turiB = serialize(parse(uriB, options), options);\n\t} else if (typeOf(uriB) === \"object\") {\n\t\turiB = serialize(<URIComponents>uriB, options);\n\t}\n\n\treturn uriA === uriB;\n};\n\nexport function escapeComponent(str:string, options?:URIOptions):string {\n\treturn str && str.toString().replace((!options || !options.iri ? URI_PROTOCOL.ESCAPE : IRI_PROTOCOL.ESCAPE), pctEncChar);\n};\n\nexport function unescapeComponent(str:string, options?:URIOptions):string {\n\treturn str && str.toString().replace((!options || !options.iri ? URI_PROTOCOL.PCT_ENCODED : IRI_PROTOCOL.PCT_ENCODED), pctDecChars);\n};\n","import { URIComponents, URIOptions } from \"../uri\";\nimport { pctEncChar, pctDecChars, unescapeComponent } from \"../uri\";\nimport punycode from \"punycode\";\nimport { merge, subexp, toUpperCase, toArray } from \"../util\";\n\nexport interface MailtoHeaders {\n\t[hfname:string]:string\n}\n\nexport interface MailtoComponents extends URIComponents {\n\tto:Array<string>,\n\theaders?:MailtoHeaders,\n\tsubject?:string,\n\tbody?:string\n}\n\nconst O:MailtoHeaders = {};\nconst isIRI = true;\n\n//RFC 3986\nconst UNRESERVED$$ = \"[A-Za-z0-9\\\\-\\\\.\\\\_\\\\~\" + (isIRI ? \"\\\\xA0-\\\\u200D\\\\u2010-\\\\u2029\\\\u202F-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFEF\" : \"\") + \"]\";\nconst HEXDIG$$ = \"[0-9A-Fa-f]\"; //case-insensitive\nconst PCT_ENCODED$ = subexp(subexp(\"%[EFef]\" + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$) + \"|\" + subexp(\"%[89A-Fa-f]\" + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$) + \"|\" + subexp(\"%\" + HEXDIG$$ + HEXDIG$$)); //expanded\n\n//RFC 5322, except these symbols as per RFC 6068: @ : / ? # [ ] & ; =\n//const ATEXT$$ = \"[A-Za-z0-9\\\\!\\\\#\\\\$\\\\%\\\\&\\\\'\\\\*\\\\+\\\\-\\\\/\\\\=\\\\?\\\\^\\\\_\\\\`\\\\{\\\\|\\\\}\\\\~]\";\n//const WSP$$ = \"[\\\\x20\\\\x09]\";\n//const OBS_QTEXT$$ = \"[\\\\x01-\\\\x08\\\\x0B\\\\x0C\\\\x0E-\\\\x1F\\\\x7F]\"; //(%d1-8 / %d11-12 / %d14-31 / %d127)\n//const QTEXT$$ = merge(\"[\\\\x21\\\\x23-\\\\x5B\\\\x5D-\\\\x7E]\", OBS_QTEXT$$); //%d33 / %d35-91 / %d93-126 / obs-qtext\n//const VCHAR$$ = \"[\\\\x21-\\\\x7E]\";\n//const WSP$$ = \"[\\\\x20\\\\x09]\";\n//const OBS_QP$ = subexp(\"\\\\\\\\\" + merge(\"[\\\\x00\\\\x0D\\\\x0A]\", OBS_QTEXT$$)); //%d0 / CR / LF / obs-qtext\n//const FWS$ = subexp(subexp(WSP$$ + \"*\" + \"\\\\x0D\\\\x0A\") + \"?\" + WSP$$ + \"+\");\n//const QUOTED_PAIR$ = subexp(subexp(\"\\\\\\\\\" + subexp(VCHAR$$ + \"|\" + WSP$$)) + \"|\" + OBS_QP$);\n//const QUOTED_STRING$ = subexp('\\\\\"' + subexp(FWS$ + \"?\" + QCONTENT$) + \"*\" + FWS$ + \"?\" + '\\\\\"');\nconst ATEXT$$ = \"[A-Za-z0-9\\\\!\\\\$\\\\%\\\\'\\\\*\\\\+\\\\-\\\\^\\\\_\\\\`\\\\{\\\\|\\\\}\\\\~]\";\nconst QTEXT$$ = \"[\\\\!\\\\$\\\\%\\\\'\\\\(\\\\)\\\\*\\\\+\\\\,\\\\-\\\\.0-9\\\\<\\\\>A-Z\\\\x5E-\\\\x7E]\";\nconst VCHAR$$ = merge(QTEXT$$, \"[\\\\\\\"\\\\\\\\]\");\nconst DOT_ATOM_TEXT$ = subexp(ATEXT$$ + \"+\" + subexp(\"\\\\.\" + ATEXT$$ + \"+\") + \"*\");\nconst QUOTED_PAIR$ = subexp(\"\\\\\\\\\" + VCHAR$$);\nconst QCONTENT$ = subexp(QTEXT$$ + \"|\" + QUOTED_PAIR$);\nconst QUOTED_STRING$ = subexp('\\\\\"' + QCONTENT$ + \"*\" + '\\\\\"');\n\n//RFC 6068\nconst DTEXT_NO_OBS$$ = \"[\\\\x21-\\\\x5A\\\\x5E-\\\\x7E]\"; //%d33-90 / %d94-126\nconst SOME_DELIMS$$ = \"[\\\\!\\\\$\\\\'\\\\(\\\\)\\\\*\\\\+\\\\,\\\\;\\\\:\\\\@]\";\nconst QCHAR$ = subexp(UNRESERVED$$ + \"|\" + PCT_ENCODED$ + \"|\" + SOME_DELIMS$$);\nconst DOMAIN$ = subexp(DOT_ATOM_TEXT$ + \"|\" + \"\\\\[\" + DTEXT_NO_OBS$$ + \"*\" + \"\\\\]\");\nconst LOCAL_PART$ = subexp(DOT_ATOM_TEXT$ + \"|\" + QUOTED_STRING$);\nconst ADDR_SPEC$ = subexp(LOCAL_PART$ + \"\\\\@\" + DOMAIN$);\nconst TO$ = subexp(ADDR_SPEC$ + subexp(\"\\\\,\" + ADDR_SPEC$) + \"*\");\nconst HFNAME$ = subexp(QCHAR$ + \"*\");\nconst HFVALUE$ = HFNAME$;\nconst HFIELD$ = subexp(HFNAME$ + \"\\\\=\" + HFVALUE$);\nconst HFIELDS2$ = subexp(HFIELD$ + subexp(\"\\\\&\" + HFIELD$) + \"*\");\nconst HFIELDS$ = subexp(\"\\\\?\" + HFIELDS2$);\nconst MAILTO_URI = new RegExp(\"^mailto\\\\:\" + TO$ + \"?\" + HFIELDS$ + \"?$\");\n\nconst UNRESERVED = new RegExp(UNRESERVED$$, \"g\");\nconst PCT_ENCODED = new RegExp(PCT_ENCODED$, \"g\");\nconst NOT_LOCAL_PART = new RegExp(merge(\"[^]\", ATEXT$$, \"[\\\\.]\", '[\\\\\"]', VCHAR$$), \"g\");\nconst NOT_DOMAIN = new RegExp(merge(\"[^]\", ATEXT$$, \"[\\\\.]\", \"[\\\\[]\", DTEXT_NO_OBS$$, \"[\\\\]]\"), \"g\");\nconst NOT_HFNAME = new RegExp(merge(\"[^]\", UNRESERVED$$, SOME_DELIMS$$), \"g\");\nconst NOT_HFVALUE = NOT_HFNAME;\nconst TO = new RegExp(\"^\" + TO$ + \"$\");\nconst HFIELDS = new RegExp(\"^\" + HFIELDS2$ + \"$\");\n\nfunction decodeUnreserved(str:string):string {\n\tconst decStr = pctDecChars(str);\n\treturn (!decStr.match(UNRESERVED) ? str : decStr);\n}\n\nexport default {\n\tscheme : \"mailto\",\n\n\tparse : function (components:MailtoComponents, options:URIOptions):MailtoComponents {\n\t\tconst to = components.to = (components.path ? components.path.split(\",\") : []);\n\t\tcomponents.path = undefined;\n\n\t\tif (components.query) {\n\t\t\tlet unknownHeaders = false\n\t\t\tconst headers:MailtoHeaders = {};\n\t\t\tconst hfields = components.query.split(\"&\");\n\n\t\t\tfor (let x = 0, xl = hfields.length; x < xl; ++x) {\n\t\t\t\tconst hfield = hfields[x].split(\"=\");\n\n\t\t\t\tswitch (hfield[0]) {\n\t\t\t\t\tcase \"to\":\n\t\t\t\t\t\tconst toAddrs = hfield[1].split(\",\");\n\t\t\t\t\t\tfor (let x = 0, xl = toAddrs.length; x < xl; ++x) {\n\t\t\t\t\t\t\tto.push(toAddrs[x]);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"subject\":\n\t\t\t\t\t\tcomponents.subject = unescapeComponent(hfield[1], options);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"body\":\n\t\t\t\t\t\tcomponents.body = unescapeComponent(hfield[1], options);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tunknownHeaders = true;\n\t\t\t\t\t\theaders[unescapeComponent(hfield[0], options)] = unescapeComponent(hfield[1], options);\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (unknownHeaders) components.headers = headers;\n\t\t}\n\n\t\tcomponents.query = undefined;\n\n\t\tfor (let x = 0, xl = to.length; x < xl; ++x) {\n\t\t\tconst addr = to[x].split(\"@\");\n\n\t\t\taddr[0] = unescapeComponent(addr[0]);\n\n\t\t\tif (!options.unicodeSupport) {\n\t\t\t\t//convert Unicode IDN -> ASCII IDN\n\t\t\t\ttry {\n\t\t\t\t\taddr[1] = punycode.toASCII(unescapeComponent(addr[1], options).toLowerCase());\n\t\t\t\t} catch (e) {\n\t\t\t\t\tcomponents.error = components.error || \"Email address's domain name can not be converted to ASCII via punycode: \" + e;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\taddr[1] = unescapeComponent(addr[1], options).toLowerCase();\n\t\t\t}\n\n\t\t\tto[x] = addr.join(\"@\");\n\t\t}\n\n\t\treturn components;\n\t},\n\n\tserialize : function (components:MailtoComponents, options:URIOptions):URIComponents {\n\t\tconst to = toArray(components.to);\n\t\tif (to) {\n\t\t\tfor (let x = 0, xl = to.length; x < xl; ++x) {\n\t\t\t\tconst toAddr = String(to[x]);\n\t\t\t\tconst atIdx = toAddr.lastIndexOf(\"@\");\n\t\t\t\tconst localPart = (toAddr.slice(0, atIdx)).replace(PCT_ENCODED, decodeUnreserved).replace(PCT_ENCODED, toUpperCase).replace(NOT_LOCAL_PART, pctEncChar);\n\t\t\t\tlet domain = toAddr.slice(atIdx + 1);\n\n\t\t\t\t//convert IDN via punycode\n\t\t\t\ttry {\n\t\t\t\t\tdomain = (!options.iri ? punycode.toASCII(unescapeComponent(domain, options).toLowerCase()) : punycode.toUnicode(domain));\n\t\t\t\t} catch (e) {\n\t\t\t\t\tcomponents.error = components.error || \"Email address's domain name can not be converted to \" + (!options.iri ? \"ASCII\" : \"Unicode\") + \" via punycode: \" + e;\n\t\t\t\t}\n\n\t\t\t\tto[x] = localPart + \"@\" + domain;\n\t\t\t}\n\n\t\t\tcomponents.path = to.join(\",\");\n\t\t}\n\n\t\tconst headers = components.headers = components.headers || {};\n\n\t\tif (components.subject) headers[\"subject\"] = components.subject;\n\t\tif (components.body) headers[\"body\"] = components.body;\n\n\t\tconst fields = [];\n\t\tfor (const name in headers) {\n\t\t\tif (headers[name] !== O[name]) {\n\t\t\t\tfields.push(\n\t\t\t\t\tname.replace(PCT_ENCODED, decodeUnreserved).replace(PCT_ENCODED, toUpperCase).replace(NOT_HFNAME, pctEncChar) +\n\t\t\t\t\t\"=\" +\n\t\t\t\t\theaders[name].replace(PCT_ENCODED, decodeUnreserved).replace(PCT_ENCODED, toUpperCase).replace(NOT_HFVALUE, pctEncChar)\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\tif (fields.length) {\n\t\t\tcomponents.query = fields.join(\"&\");\n\t\t}\n\n\t\treturn components;\n\t}\n}\n","import { URIRegExps } from \"./uri\";\nimport { buildExps } from \"./regexps-uri\";\n\nexport default buildExps(true);\n","import { URIComponents, URIOptions } from \"../uri\";\n\nexport default {\n\tscheme : \"http\",\n\n\tdomainHost : true,\n\n\tparse : function (components:URIComponents, options:URIOptions):URIComponents {\n\t\t//report missing host\n\t\tif (!components.host) {\n\t\t\tcomponents.error = components.error || \"HTTP URIs must have a host.\";\n\t\t}\n\n\t\treturn components;\n\t},\n\n\tserialize : function (components:URIComponents, options:URIOptions):URIComponents {\n\t\t//normalize the default port\n\t\tif (components.port === (String(components.scheme).toLowerCase() !== \"https\" ? 80 : 443) || components.port === \"\") {\n\t\t\tcomponents.port = undefined;\n\t\t}\n\t\t\n\t\t//normalize the empty path\n\t\tif (!components.path) {\n\t\t\tcomponents.path = \"/\";\n\t\t}\n\n\t\t//NOTE: We do not parse query strings for HTTP URIs\n\t\t//as WWW Form Url Encoded query strings are part of the HTML4+ spec,\n\t\t//and not the HTTP spec.\n\n\t\treturn components;\n\t}\n};\n","import { URIComponents, URIOptions } from \"../uri\";\nimport http from \"./http\";\n\nexport default {\n\tscheme : \"https\",\n\tdomainHost : http.domainHost,\n\tparse : http.parse,\n\tserialize : http.serialize\n}\n","import { URIComponents, URIOptions } from \"../uri\";\nimport { pctEncChar, SCHEMES } from \"../uri\";\n\nconst NID$ = \"(?:[0-9A-Za-z][0-9A-Za-z\\\\-]{1,31})\";\nconst PCT_ENCODED$ = \"(?:\\\\%[0-9A-Fa-f]{2})\";\nconst TRANS$$ = \"[0-9A-Za-z\\\\(\\\\)\\\\+\\\\,\\\\-\\\\.\\\\:\\\\=\\\\@\\\\;\\\\$\\\\_\\\\!\\\\*\\\\'\\\\/\\\\?\\\\#]\";\nconst NSS$ = \"(?:(?:\" + PCT_ENCODED$ + \"|\" + TRANS$$ + \")+)\";\nconst URN_SCHEME = new RegExp(\"^urn\\\\:(\" + NID$ + \")$\");\nconst URN_PATH = new RegExp(\"^(\" + NID$ + \")\\\\:(\" + NSS$ + \")$\");\nconst URN_PARSE = /^([^\\:]+)\\:(.*)/;\nconst URN_EXCLUDED = /[\\x00-\\x20\\\\\\\"\\&\\<\\>\\[\\]\\^\\`\\{\\|\\}\\~\\x7F-\\xFF]/g;\n\n//RFC 2141\nexport default {\n\tscheme : \"urn\",\n\n\tparse : function (components:URIComponents, options:URIOptions):URIComponents {\n\t\tconst matches = components.path && components.path.match(URN_PARSE);\n\n\t\tif (matches) {\n\t\t\tconst scheme = \"urn:\" + matches[1].toLowerCase();\n\t\t\tlet schemeHandler = SCHEMES[scheme];\n\n\t\t\t//in order to serialize properly,\n\t\t\t//every URN must have a serializer that calls the URN serializer\n\t\t\tif (!schemeHandler) {\n\t\t\t\t//create fake scheme handler\n\t\t\t\tschemeHandler = SCHEMES[scheme] = {\n\t\t\t\t\tscheme : scheme,\n\t\t\t\t\tparse : function (components:URIComponents, options:URIOptions):URIComponents {\n\t\t\t\t\t\treturn components;\n\t\t\t\t\t},\n\t\t\t\t\tserialize : SCHEMES[\"urn\"].serialize\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tcomponents.scheme = scheme;\n\t\t\tcomponents.path = matches[2];\n\n\t\t\tcomponents = schemeHandler.parse(components, options);\n\t\t} else {\n\t\t\tcomponents.error = components.error || \"URN can not be parsed.\";\n\t\t}\n\n\t\treturn components;\n\t},\n\n\tserialize : function (components:URIComponents, options:URIOptions):URIComponents {\n\t\tconst scheme = components.scheme || options.scheme;\n\n\t\tif (scheme && scheme !== \"urn\") {\n\t\t\tconst matches = scheme.match(URN_SCHEME) || [\"urn:\" + scheme, scheme];\n\t\t\tcomponents.scheme = \"urn\";\n\t\t\tcomponents.path = matches[1] + \":\" + (components.path ? components.path.replace(URN_EXCLUDED, pctEncChar) : \"\");\n\t\t}\n\n\t\treturn components;\n\t}\n};\n","import { URIComponents, URIOptions } from \"../uri\";\nimport { SCHEMES } from \"../uri\";\n\nconst UUID = /^[0-9A-Fa-f]{8}(?:\\-[0-9A-Fa-f]{4}){3}\\-[0-9A-Fa-f]{12}$/;\n\n//RFC 4122\nexport default {\n\tscheme : \"urn:uuid\",\n\n\tparse : function (components:URIComponents, options:URIOptions):URIComponents {\n\t\tif (!options.tolerant && (!components.path || !components.path.match(UUID))) {\n\t\t\tcomponents.error = components.error || \"UUID is not valid.\";\n\t\t}\n\t\treturn components;\n\t},\n\n\tserialize : function (components:URIComponents, options:URIOptions):URIComponents {\n\t\t//ensure UUID is valid\n\t\tif (!options.tolerant && (!components.path || !components.path.match(UUID))) {\n\t\t\t//invalid UUIDs can not have this scheme\n\t\t\tcomponents.scheme = undefined;\n\t\t} else {\n\t\t\t//normalize UUID\n\t\t\tcomponents.path = (components.path || \"\").toLowerCase();\n\t\t}\n\n\t\treturn SCHEMES[\"urn\"].serialize(components, options);\n\t}\n};\n","import { SCHEMES } from \"./uri\";\n\nimport http from \"./schemes/http\";\nSCHEMES[\"http\"] = http;\n\nimport https from \"./schemes/https\";\nSCHEMES[\"https\"] = https;\n\nimport mailto from \"./schemes/mailto\";\nSCHEMES[\"mailto\"] = mailto;\n\nimport urn from \"./schemes/urn\";\nSCHEMES[\"urn\"] = urn;\n\nimport uuid from \"./schemes/urn-uuid\";\nSCHEMES[\"urn:uuid\"] = uuid;\n\nexport * from \"./uri\";\n"]}
|