@kepler.gl/utils 3.0.0-alpha.1 → 3.0.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/dist/aggregate-utils.js +1 -21
- package/dist/arrow-data-container.d.ts +54 -0
- package/dist/arrow-data-container.js +360 -0
- package/dist/color-utils.d.ts +4 -0
- package/dist/color-utils.js +12 -21
- package/dist/data-container-interface.d.ts +18 -0
- package/dist/data-container-interface.js +0 -20
- package/dist/data-container-utils.d.ts +1 -0
- package/dist/data-container-utils.js +10 -22
- package/dist/data-row.js +7 -22
- package/dist/data-scale-utils.js +7 -22
- package/dist/data-utils.js +3 -21
- package/dist/dataset-utils.d.ts +2 -2
- package/dist/dataset-utils.js +15 -28
- package/dist/dom-to-image.js +7 -22
- package/dist/dom-utils.js +6 -22
- package/dist/effect-utils.d.ts +12 -2
- package/dist/effect-utils.js +122 -55
- package/dist/export-map-html.js +7 -23
- package/dist/export-utils.js +1 -21
- package/dist/filter-utils.js +6 -21
- package/dist/format.js +6 -22
- package/dist/gl-utils.js +1 -21
- package/dist/h3-utils.js +6 -22
- package/dist/index.d.ts +4 -3
- package/dist/index.js +43 -26
- package/dist/indexed-data-container.js +1 -21
- package/dist/locale-utils.js +1 -21
- package/dist/map-info-utils.js +6 -22
- package/dist/map-style-utils/mapbox-gl-style-editor.js +1 -21
- package/dist/map-style-utils/mapbox-utils.js +7 -22
- package/dist/map-utils.js +1 -21
- package/dist/mapbox-utils.js +7 -22
- package/dist/noop.js +3 -21
- package/dist/notifications-utils.js +1 -21
- package/dist/observe-dimensions.d.ts +1 -1
- package/dist/observe-dimensions.js +5 -25
- package/dist/plot.js +7 -22
- package/dist/projection-utils.js +6 -22
- package/dist/row-data-container.js +1 -21
- package/dist/searcher-utils.js +7 -22
- package/dist/split-map-utils.js +1 -21
- package/dist/time.js +6 -22
- package/dist/utils.d.ts +6 -0
- package/dist/utils.js +28 -22
- package/package.json +10 -9
@@ -1,23 +1,3 @@
|
|
1
|
-
// Copyright (c) 2023 Uber Technologies, Inc.
|
2
|
-
//
|
3
|
-
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
4
|
-
// of this software and associated documentation files (the "Software"), to deal
|
5
|
-
// in the Software without restriction, including without limitation the rights
|
6
|
-
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
7
|
-
// copies of the Software, and to permit persons to whom the Software is
|
8
|
-
// furnished to do so, subject to the following conditions:
|
9
|
-
//
|
10
|
-
// The above copyright notice and this permission notice shall be included in
|
11
|
-
// all copies or substantial portions of the Software.
|
12
|
-
//
|
13
|
-
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
14
|
-
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
15
|
-
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
16
|
-
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
17
|
-
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
18
|
-
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
19
|
-
// THE SOFTWARE.
|
20
|
-
|
21
1
|
"use strict";
|
22
2
|
|
23
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
@@ -32,6 +12,8 @@ exports.DataForm = void 0;
|
|
32
12
|
|
33
13
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
34
14
|
|
15
|
+
var _arrowDataContainer = require("./arrow-data-container");
|
16
|
+
|
35
17
|
var _rowDataContainer = require("./row-data-container");
|
36
18
|
|
37
19
|
var _indexedDataContainer = require("./indexed-data-container");
|
@@ -41,7 +23,8 @@ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (O
|
|
41
23
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
42
24
|
|
43
25
|
var DataForm = {
|
44
|
-
ROWS_ARRAY: 'ROWS_ARRAY'
|
26
|
+
ROWS_ARRAY: 'ROWS_ARRAY',
|
27
|
+
COLS_ARRAY: 'COLS_ARRAY'
|
45
28
|
};
|
46
29
|
exports.DataForm = DataForm;
|
47
30
|
var defaultOptions = {
|
@@ -63,6 +46,11 @@ function createDataContainer(data) {
|
|
63
46
|
rows: data,
|
64
47
|
fields: options.fields
|
65
48
|
});
|
49
|
+
} else if (options.inputDataFormat === DataForm.COLS_ARRAY) {
|
50
|
+
return new _arrowDataContainer.ArrowDataContainer({
|
51
|
+
cols: data,
|
52
|
+
fields: options.fields
|
53
|
+
});
|
66
54
|
}
|
67
55
|
|
68
56
|
throw Error('Failed to create a data container: not implemented format');
|
@@ -97,4 +85,4 @@ function getSampleData(dataContainer) {
|
|
97
85
|
|
98
86
|
return createIndexedDataContainer(dataContainer, indices);
|
99
87
|
}
|
100
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
88
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9kYXRhLWNvbnRhaW5lci11dGlscy50cyJdLCJuYW1lcyI6WyJEYXRhRm9ybSIsIlJPV1NfQVJSQVkiLCJDT0xTX0FSUkFZIiwiZGVmYXVsdE9wdGlvbnMiLCJpbnB1dERhdGFGb3JtYXQiLCJjcmVhdGVEYXRhQ29udGFpbmVyIiwiZGF0YSIsIm9wdGlvbnMiLCJSb3dEYXRhQ29udGFpbmVyIiwicm93cyIsImZpZWxkcyIsIkFycm93RGF0YUNvbnRhaW5lciIsImNvbHMiLCJFcnJvciIsImNyZWF0ZUluZGV4ZWREYXRhQ29udGFpbmVyIiwiZGF0YUNvbnRhaW5lciIsImluZGljZXMiLCJJbmRleGVkRGF0YUNvbnRhaW5lciIsImdldFNhbXBsZURhdGEiLCJzYW1wbGVTaXplIiwibnVtYmVyT2ZSb3dzIiwibnVtUm93cyIsInNhbXBsZVN0ZXAiLCJNYXRoIiwibWF4IiwiZmxvb3IiLCJpIiwicHVzaCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFHQTs7QUFDQTs7QUFDQTs7Ozs7O0FBVU8sSUFBTUEsUUFBUSxHQUFHO0FBQ3RCQyxFQUFBQSxVQUFVLEVBQUUsWUFEVTtBQUV0QkMsRUFBQUEsVUFBVSxFQUFFO0FBRlUsQ0FBakI7O0FBS1AsSUFBTUMsY0FBb0MsR0FBRztBQUMzQ0MsRUFBQUEsZUFBZSxFQUFFSixRQUFRLENBQUNDO0FBRGlCLENBQTdDO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUNPLFNBQVNJLG1CQUFULENBQ0xDLElBREssRUFHbUI7QUFBQSxNQUR4QkMsT0FDd0IsdUVBRFFKLGNBQ1I7QUFDeEJJLEVBQUFBLE9BQU8sbUNBQU9KLGNBQVAsR0FBMEJJLE9BQTFCLENBQVA7O0FBRUEsTUFBSUEsT0FBTyxDQUFDSCxlQUFSLEtBQTRCSixRQUFRLENBQUNDLFVBQXpDLEVBQXFEO0FBQ25ELFdBQU8sSUFBSU8sa0NBQUosQ0FBcUI7QUFBQ0MsTUFBQUEsSUFBSSxFQUFFSCxJQUFQO0FBQWFJLE1BQUFBLE1BQU0sRUFBRUgsT0FBTyxDQUFDRztBQUE3QixLQUFyQixDQUFQO0FBQ0QsR0FGRCxNQUVPLElBQUlILE9BQU8sQ0FBQ0gsZUFBUixLQUE0QkosUUFBUSxDQUFDRSxVQUF6QyxFQUFxRDtBQUMxRCxXQUFPLElBQUlTLHNDQUFKLENBQXVCO0FBQUNDLE1BQUFBLElBQUksRUFBRU4sSUFBUDtBQUFhSSxNQUFBQSxNQUFNLEVBQUVILE9BQU8sQ0FBQ0c7QUFBN0IsS0FBdkIsQ0FBUDtBQUNEOztBQUVELFFBQU1HLEtBQUssQ0FBQywyREFBRCxDQUFYO0FBQ0Q7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDTyxTQUFTQywwQkFBVCxDQUNMQyxhQURLLEVBRUxDLE9BRkssRUFHbUI7QUFDeEIsU0FBTyxJQUFJQywwQ0FBSixDQUF5QkYsYUFBekIsRUFBd0NDLE9BQXhDLENBQVA7QUFDRDtBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ08sU0FBU0UsYUFBVCxDQUNMSCxhQURLLEVBR21CO0FBQUEsTUFEeEJJLFVBQ3dCLHVFQURYLEdBQ1c7QUFDeEIsTUFBTUMsWUFBWSxHQUFHTCxhQUFhLENBQUNNLE9BQWQsRUFBckI7QUFDQSxNQUFNQyxVQUFVLEdBQUdDLElBQUksQ0FBQ0MsR0FBTCxDQUFTRCxJQUFJLENBQUNFLEtBQUwsQ0FBV0wsWUFBWSxHQUFHRCxVQUExQixDQUFULEVBQWdELENBQWhELENBQW5CO0FBRUEsTUFBTUgsT0FBaUIsR0FBRyxFQUExQjs7QUFDQSxPQUFLLElBQUlVLENBQUMsR0FBRyxDQUFiLEVBQWdCQSxDQUFDLEdBQUdOLFlBQXBCLEVBQWtDTSxDQUFDLElBQUlKLFVBQXZDLEVBQW1EO0FBQ2pETixJQUFBQSxPQUFPLENBQUNXLElBQVIsQ0FBYUQsQ0FBYjtBQUNEOztBQUVELFNBQU9aLDBCQUEwQixDQUFDQyxhQUFELEVBQWdCQyxPQUFoQixDQUFqQztBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IHtBcnJvd0RhdGFDb250YWluZXJ9IGZyb20gJy4vYXJyb3ctZGF0YS1jb250YWluZXInO1xuaW1wb3J0IHtSb3dEYXRhQ29udGFpbmVyfSBmcm9tICcuL3Jvdy1kYXRhLWNvbnRhaW5lcic7XG5pbXBvcnQge0luZGV4ZWREYXRhQ29udGFpbmVyfSBmcm9tICcuL2luZGV4ZWQtZGF0YS1jb250YWluZXInO1xuXG5pbXBvcnQge0RhdGFDb250YWluZXJJbnRlcmZhY2V9IGZyb20gJy4vZGF0YS1jb250YWluZXItaW50ZXJmYWNlJztcbmltcG9ydCB7RmllbGR9IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuXG5leHBvcnQgdHlwZSBEYXRhQ29udGFpbmVyT3B0aW9ucyA9IHtcbiAgaW5wdXREYXRhRm9ybWF0Pzogc3RyaW5nOyAvLyBvbmUgb2YgRGF0YUZvcm1cbiAgZmllbGRzPzogRmllbGRbXTtcbn07XG5cbmV4cG9ydCBjb25zdCBEYXRhRm9ybSA9IHtcbiAgUk9XU19BUlJBWTogJ1JPV1NfQVJSQVknLFxuICBDT0xTX0FSUkFZOiAnQ09MU19BUlJBWSdcbn07XG5cbmNvbnN0IGRlZmF1bHRPcHRpb25zOiBEYXRhQ29udGFpbmVyT3B0aW9ucyA9IHtcbiAgaW5wdXREYXRhRm9ybWF0OiBEYXRhRm9ybS5ST1dTX0FSUkFZXG59O1xuXG4vKipcbiAqIENyZWF0ZXMgYSBkYXRhIGNvbnRhaW5lciB3cmFwcGVyIGZvciB0aGUgZGF0YS5cbiAqIEBwYXJhbSBkYXRhIERhdGEuXG4gKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25zLlxuICogQHJldHVybnMgQSBkYXRhIGNvbnRhaW5lciBvYmplY3Qgd2hpY2ggaXMgYmFzZWQgb24gZGF0YSBhbmQgb3B0aW9ucy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZURhdGFDb250YWluZXIoXG4gIGRhdGE6IGFueVtdLFxuICBvcHRpb25zOiBEYXRhQ29udGFpbmVyT3B0aW9ucyA9IGRlZmF1bHRPcHRpb25zXG4pOiBEYXRhQ29udGFpbmVySW50ZXJmYWNlIHtcbiAgb3B0aW9ucyA9IHsuLi5kZWZhdWx0T3B0aW9ucywgLi4ub3B0aW9uc307XG5cbiAgaWYgKG9wdGlvbnMuaW5wdXREYXRhRm9ybWF0ID09PSBEYXRhRm9ybS5ST1dTX0FSUkFZKSB7XG4gICAgcmV0dXJuIG5ldyBSb3dEYXRhQ29udGFpbmVyKHtyb3dzOiBkYXRhLCBmaWVsZHM6IG9wdGlvbnMuZmllbGRzfSk7XG4gIH0gZWxzZSBpZiAob3B0aW9ucy5pbnB1dERhdGFGb3JtYXQgPT09IERhdGFGb3JtLkNPTFNfQVJSQVkpIHtcbiAgICByZXR1cm4gbmV3IEFycm93RGF0YUNvbnRhaW5lcih7Y29sczogZGF0YSwgZmllbGRzOiBvcHRpb25zLmZpZWxkc30pO1xuICB9XG5cbiAgdGhyb3cgRXJyb3IoJ0ZhaWxlZCB0byBjcmVhdGUgYSBkYXRhIGNvbnRhaW5lcjogbm90IGltcGxlbWVudGVkIGZvcm1hdCcpO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBkYXRhIGNvbnRhaW5lciB3cmFwcGVyIGFyb3VuZCBhbm90aGVyIGRhdGEgY29udGFpbmVyLlxuICogQHBhcmFtIGRhdGFDb250YWluZXIgUGFyZW50IGRhdGEgY29udGFpbmVyLlxuICogQHBhcmFtIGluZGljZXMgQW4gYXJyYXkgb2Ygcm93IGluZGljZXMgaW4gdGhlIHBhcmVudCBkYXRhIGNvbnRhaW5lci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUluZGV4ZWREYXRhQ29udGFpbmVyKFxuICBkYXRhQ29udGFpbmVyOiBEYXRhQ29udGFpbmVySW50ZXJmYWNlLFxuICBpbmRpY2VzOiBudW1iZXJbXVxuKTogRGF0YUNvbnRhaW5lckludGVyZmFjZSB7XG4gIHJldHVybiBuZXcgSW5kZXhlZERhdGFDb250YWluZXIoZGF0YUNvbnRhaW5lciwgaW5kaWNlcyk7XG59XG5cbi8qKlxuICogR2V0IGEgc2FtcGxlIG9mIHJvd3MgZnJvbSBhIGRhdGEgY29udGFpbmVyLlxuICogQHBhcmFtIGRhdGFDb250YWluZXIgRGF0YSBjb250YWluZXIgdG8gZ2V0IHNhbXBsZXMgZnJvbS5cbiAqIEBwYXJhbSBzYW1wbGVTaXplIE1heCBudW1iZXIgb2Ygc2FtcGxlcy5cbiAqIEByZXR1cm5zIEEgZGF0YSBjb250YWluZXIgd2hpY2ggY29udGFpbnMgc2FtcGxlcyBmcm9tIHRoZSBvcmlnaW5hbCBkYXRhIGNvbnRhaW5lci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFNhbXBsZURhdGEoXG4gIGRhdGFDb250YWluZXI6IERhdGFDb250YWluZXJJbnRlcmZhY2UsXG4gIHNhbXBsZVNpemUgPSA1MDBcbik6IERhdGFDb250YWluZXJJbnRlcmZhY2Uge1xuICBjb25zdCBudW1iZXJPZlJvd3MgPSBkYXRhQ29udGFpbmVyLm51bVJvd3MoKTtcbiAgY29uc3Qgc2FtcGxlU3RlcCA9IE1hdGgubWF4KE1hdGguZmxvb3IobnVtYmVyT2ZSb3dzIC8gc2FtcGxlU2l6ZSksIDEpO1xuXG4gIGNvbnN0IGluZGljZXM6IG51bWJlcltdID0gW107XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbnVtYmVyT2ZSb3dzOyBpICs9IHNhbXBsZVN0ZXApIHtcbiAgICBpbmRpY2VzLnB1c2goaSk7XG4gIH1cblxuICByZXR1cm4gY3JlYXRlSW5kZXhlZERhdGFDb250YWluZXIoZGF0YUNvbnRhaW5lciwgaW5kaWNlcyk7XG59XG4iXX0=
|
package/dist/data-row.js
CHANGED
@@ -1,23 +1,3 @@
|
|
1
|
-
// Copyright (c) 2023 Uber Technologies, Inc.
|
2
|
-
//
|
3
|
-
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
4
|
-
// of this software and associated documentation files (the "Software"), to deal
|
5
|
-
// in the Software without restriction, including without limitation the rights
|
6
|
-
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
7
|
-
// copies of the Software, and to permit persons to whom the Software is
|
8
|
-
// furnished to do so, subject to the following conditions:
|
9
|
-
//
|
10
|
-
// The above copyright notice and this permission notice shall be included in
|
11
|
-
// all copies or substantial portions of the Software.
|
12
|
-
//
|
13
|
-
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
14
|
-
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
15
|
-
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
16
|
-
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
17
|
-
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
18
|
-
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
19
|
-
// THE SOFTWARE.
|
20
|
-
|
21
1
|
"use strict";
|
22
2
|
|
23
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
@@ -31,7 +11,12 @@ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/cl
|
|
31
11
|
|
32
12
|
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
33
13
|
|
34
|
-
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"))
|
14
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
15
|
+
|
16
|
+
// SPDX-License-Identifier: MIT
|
17
|
+
// Copyright contributors to the kepler.gl project
|
18
|
+
|
19
|
+
/**
|
35
20
|
* Setting for shared row optimization.
|
36
21
|
* - False/undefined indicates that unique row objects should be used (default).
|
37
22
|
* - True indicates that a single temporary row object should be created and used without extra allocations.
|
@@ -138,4 +123,4 @@ var DataRow = /*#__PURE__*/function () {
|
|
138
123
|
}();
|
139
124
|
|
140
125
|
exports.DataRow = DataRow;
|
141
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
126
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9kYXRhLXJvdy50cyJdLCJuYW1lcyI6WyJEYXRhUm93IiwiZGF0YUNvbnRhaW5lciIsInJvd0luZGV4IiwiX2RhdGFDb250YWluZXIiLCJfcm93SW5kZXgiLCJjb2x1bW5JbmRleCIsInZhbHVlQXQiLCJyb3dBc0FycmF5IiwiaGFuZGxlciIsIm51bUNvbHVtbnMiLCJvdXQiLCJjb2x1bW4iLCJzaGFyZWRSb3dEZXNjIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBOztBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7SUFHYUEsTztBQUtYO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDRSxtQkFBWUMsYUFBWixFQUEwREMsUUFBMUQsRUFBNEU7QUFBQTtBQUFBO0FBQUE7QUFDMUUsU0FBS0MsY0FBTCxHQUFzQkYsYUFBdEI7QUFDQSxTQUFLRyxTQUFMLEdBQWlCRixRQUFqQjtBQUNEO0FBRUQ7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7OztBQVFFO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDRSxxQkFBUUcsV0FBUixFQUFrQztBQUFBOztBQUNoQyxxQ0FBTyxLQUFLRixjQUFaLHlEQUFPLHFCQUFxQkcsT0FBckIsQ0FBNkIsS0FBS0YsU0FBbEMsRUFBNkNDLFdBQTdDLENBQVA7QUFDRDtBQUVEO0FBQ0Y7QUFDQTtBQUNBOzs7O1dBQ0Usa0JBQWdCO0FBQ2QsYUFBTyxLQUFLRixjQUFMLEdBQXNCLEtBQUtBLGNBQUwsQ0FBb0JJLFVBQXBCLENBQStCLEtBQUtILFNBQXBDLENBQXRCLEdBQXVFLEVBQTlFO0FBQ0Q7QUFFRDtBQUNGO0FBQ0E7QUFDQTtBQUNBOzs7O1dBQ0UsbUJBQVVILGFBQVYsRUFBaURDLFFBQWpELEVBQXlFO0FBQ3ZFLFdBQUtDLGNBQUwsR0FBc0JGLGFBQXRCO0FBQ0EsV0FBS0csU0FBTCxHQUFpQkYsUUFBakI7QUFDRDtBQUVEO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7V0FDRSxhQUFJTSxPQUFKLEVBQXVEO0FBQUE7O0FBQ3JELFVBQU1DLFVBQVUsR0FBRywrQkFBS04sY0FBTCxnRkFBcUJNLFVBQXJCLE9BQXFDLENBQXhEO0FBQ0EsVUFBTUMsR0FBVSxHQUFHLEVBQW5COztBQUNBLFdBQUssSUFBSUMsTUFBTSxHQUFHLENBQWxCLEVBQXFCQSxNQUFNLEdBQUdGLFVBQTlCLEVBQTBDLEVBQUVFLE1BQTVDLEVBQW9EO0FBQ2xERCxRQUFBQSxHQUFHLENBQUNDLE1BQUQsQ0FBSCxHQUFjSCxPQUFPLENBQUMsS0FBS0YsT0FBTCxDQUFhSyxNQUFiLENBQUQsRUFBdUJBLE1BQXZCLENBQXJCO0FBQ0Q7O0FBQ0QsYUFBT0QsR0FBUDtBQUNEOzs7V0FqREQseUJBQXVCRSxhQUF2QixFQUFnRjtBQUM5RSxVQUFJQSxhQUFhLEtBQUssSUFBdEIsRUFBNEI7QUFDMUIsZUFBTyxJQUFJWixPQUFKLENBQVksSUFBWixFQUFrQixDQUFsQixDQUFQO0FBQ0Q7O0FBQ0QsYUFBT1ksYUFBUDtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IHtEYXRhQ29udGFpbmVySW50ZXJmYWNlfSBmcm9tICcuL2RhdGEtY29udGFpbmVyLWludGVyZmFjZSc7XG5cbi8qKlxuICogU2V0dGluZyBmb3Igc2hhcmVkIHJvdyBvcHRpbWl6YXRpb24uXG4gKiAtIEZhbHNlL3VuZGVmaW5lZCBpbmRpY2F0ZXMgdGhhdCB1bmlxdWUgcm93IG9iamVjdHMgc2hvdWxkIGJlIHVzZWQgKGRlZmF1bHQpLlxuICogLSBUcnVlIGluZGljYXRlcyB0aGF0IGEgc2luZ2xlIHRlbXBvcmFyeSByb3cgb2JqZWN0IHNob3VsZCBiZSBjcmVhdGVkIGFuZCB1c2VkIHdpdGhvdXQgZXh0cmEgYWxsb2NhdGlvbnMuXG4gKiAtIEEgRGF0YVJvdyBvYmplY3QgaW5kaWNhdGVzIHRoYXQgdGhlIHJvdyBzaG91bGQgYmUgdXNlZCBhcyBhIHRlbXBvcmFyeSBzaGFyZWQgcm93LlxuICogV2hlbiB1c2VkLCB0aGUgY29udGVudCBvZiB0aGUgc2hhcmVkIHJvdyBpc24ndCBwcmVzZXJ2ZWQgYmV0d2VlbiBjYWxscy5cbiAqL1xuZXhwb3J0IHR5cGUgU2hhcmVkUm93T3B0aW9ucyA9IERhdGFSb3cgfCBib29sZWFuIHwgdW5kZWZpbmVkO1xuLyoqXG4gKiBSZXR1cm4gdHlwZSBmb3IgY3JlYXRlU2hhcmVkUm93OlxuICogLSBEYXRhUm93IG9iamVjdCB0aGF0IHNob3VsZCBiZSB1c2VkIGFzIHNoYXJlZCByb3cuXG4gKiAtIEZhbHN5IHZhbHVlcyBpbmRpY2F0ZSB0aGF0IHNoYXJlZCByb3cgb2JqZWN0IHNob3VsZG4ndCBiZSB1c2VkLlxuICovXG5leHBvcnQgdHlwZSBTaGFyZWRSb3dPcHRpb25zUmVzdWx0ID0gRGF0YVJvdyB8IGZhbHNlIHwgdW5kZWZpbmVkO1xuXG5leHBvcnQgY2xhc3MgRGF0YVJvdyB7XG4gIF9kYXRhQ29udGFpbmVyOiBEYXRhQ29udGFpbmVySW50ZXJmYWNlIHwgbnVsbDtcblxuICBfcm93SW5kZXg6IG51bWJlcjtcblxuICAvKipcbiAgICogQ3JlYXRlcyBuZXcgRGF0YVJvdy5cbiAgICogQHBhcmFtIGRhdGFDb250YWluZXIgRGF0YSBjb250YWluZXIgd2hlcmUgZGF0YSBpcyBzdG9yZWQuIENhbiBiZSBpbml0aWFsaXplZCB3aXRoIG51bGwgZm9yIHNoYXJlZCByb3dzLlxuICAgKiBAcGFyYW0gcm93SW5kZXggSW5kZXggb2YgYSByb3cgaW4gdGhlIGRhdGEgY29udGFpbmVyLlxuICAgKi9cbiAgY29uc3RydWN0b3IoZGF0YUNvbnRhaW5lcjogRGF0YUNvbnRhaW5lckludGVyZmFjZSB8IG51bGwsIHJvd0luZGV4OiBudW1iZXIpIHtcbiAgICB0aGlzLl9kYXRhQ29udGFpbmVyID0gZGF0YUNvbnRhaW5lcjtcbiAgICB0aGlzLl9yb3dJbmRleCA9IHJvd0luZGV4O1xuICB9XG5cbiAgLyoqXG4gICAqIENvbmRpdGlvbmFsbHkgY3JlYXRlcyBhIERhdGFSb3cgb2JqZWN0LlxuICAgKiBAcGFyYW0gc2hhcmVkUm93RGVzYyBBY2NlcHRzIGZvcmxsb3dpbmcgb3B0aW9uczpcbiAgICogLSB0cnVlIGluZGljYXRlcyB0aGF0IG5ldyBEYXRhUm93IHNob3VsZCBiZSBjcmVhdGVkLlxuICAgKiAtIGZhbHN5IHZhbHVlIG9yIGEgRGF0YVJvdyBvYmplY3QgaXMgcGFzc2VkIHRocm91Z2ggd2l0aG91dCBhbnkgY2hhbmdlLlxuICAgKiBAcmV0dXJucyBBIG5ldyBEYXRhUm93IG9iamVjdCBvciB1bmNoYW5nZWQgaW5wdXQgYXJndW1lbnQuXG4gICAqL1xuICBzdGF0aWMgY3JlYXRlU2hhcmVkUm93KHNoYXJlZFJvd0Rlc2M6IFNoYXJlZFJvd09wdGlvbnMpOiBTaGFyZWRSb3dPcHRpb25zUmVzdWx0IHtcbiAgICBpZiAoc2hhcmVkUm93RGVzYyA9PT0gdHJ1ZSkge1xuICAgICAgcmV0dXJuIG5ldyBEYXRhUm93KG51bGwsIDApO1xuICAgIH1cbiAgICByZXR1cm4gc2hhcmVkUm93RGVzYztcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSB2YWx1ZSBzdG9yZWQgYXQgdGhlIHNwZWNpZmllZCBpbmRleCBpbiB0aGUgcm93LlxuICAgKiBAcGFyYW0gY29sdW1uSW5kZXggSW5kZXggb2YgdGhlIHJlcXVlc3RlZCBmaWVsZCBpbiB0aGUgcm93LlxuICAgKiBAcmV0dXJucyBWYWx1ZSBhdCB0aGUgaW5kZXguXG4gICAqL1xuICB2YWx1ZUF0KGNvbHVtbkluZGV4OiBudW1iZXIpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLl9kYXRhQ29udGFpbmVyPy52YWx1ZUF0KHRoaXMuX3Jvd0luZGV4LCBjb2x1bW5JbmRleCk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgcm93IHJlcHJlc2VudGVkIGFzIGFuIGFycmF5LlxuICAgKiBAcmV0dXJucyBUaGUgcm93IHJlcHJlc2VudGVkIGFzIGFuIGFycmF5LlxuICAgKi9cbiAgdmFsdWVzKCk6IGFueVtdIHtcbiAgICByZXR1cm4gdGhpcy5fZGF0YUNvbnRhaW5lciA/IHRoaXMuX2RhdGFDb250YWluZXIucm93QXNBcnJheSh0aGlzLl9yb3dJbmRleCkgOiBbXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXR1cCBhIHJvdyBvYmplY3QuIFRoZSBtZXRob2QgaXMgdXNlZCBieSBzaGFyZWQgcm93cyB0byBwcmV2ZW50IGV4Y2Vzc2l2ZSBhbGxvY2F0aW9ucy5cbiAgICogQHBhcmFtIGRhdGFDb250YWluZXIgRGF0YSBjb250YWluZXIuXG4gICAqIEBwYXJhbSByb3dJbmRleCBJbmRleCBvZiBhIHJvdyBpbiB0aGUgZGF0YSBjb250YWluZXIuXG4gICAqL1xuICBzZXRTb3VyY2UoZGF0YUNvbnRhaW5lcjogRGF0YUNvbnRhaW5lckludGVyZmFjZSwgcm93SW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuX2RhdGFDb250YWluZXIgPSBkYXRhQ29udGFpbmVyO1xuICAgIHRoaXMuX3Jvd0luZGV4ID0gcm93SW5kZXg7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBhcnJheSBwb3B1bGF0ZWQgd2l0aCB0aGUgcmVzdWx0cyBvZiBjYWxsaW5nIHRoZSBwcm92aWRlZCBmdW5jdGlvblxuICAgKiBvbiBldmVyeSBlbGVtZW50IG9mIHRoZSByb3cuXG4gICAqIEBwYXJhbSBoYW5kbGVyIFRoZSBjYWxsYmFjayBpcyBjYWxsZWQgd2l0aCB0aGUgZm9sbG93aW5nIGFyZ3VtZW50czpcbiAgICogLSBlbGVtOiBUaGUgY3VycmVudCBlbGVtZW50IGJlaW5nIHByb2Nlc3NlZCBpbiB0aGUgcm93LlxuICAgKiAtIGluZGV4OiBUaGUgaW5kZXggb2YgdGhlIGN1cnJlbnQgZWxlbWVudCBiZWluZyBwcm9jZXNzZWQgaW4gdGhlIHJvdy5cbiAgICogQHJldHVybnMgQSBuZXcgYXJyYXkgd2l0aCBlYWNoIGVsZW1lbnQgYmVpbmcgdGhlIHJlc3VsdCBvZiB0aGUgZnVuYyBjYWxsYmFjay5cbiAgICovXG4gIG1hcChoYW5kbGVyOiAoZWxlbTogYW55LCBpbmRleDogbnVtYmVyKSA9PiBhbnkpOiBhbnlbXSB7XG4gICAgY29uc3QgbnVtQ29sdW1ucyA9IHRoaXMuX2RhdGFDb250YWluZXI/Lm51bUNvbHVtbnMoKSB8fCAwO1xuICAgIGNvbnN0IG91dDogYW55W10gPSBbXTtcbiAgICBmb3IgKGxldCBjb2x1bW4gPSAwOyBjb2x1bW4gPCBudW1Db2x1bW5zOyArK2NvbHVtbikge1xuICAgICAgb3V0W2NvbHVtbl0gPSBoYW5kbGVyKHRoaXMudmFsdWVBdChjb2x1bW4pLCBjb2x1bW4pO1xuICAgIH1cbiAgICByZXR1cm4gb3V0O1xuICB9XG59XG4iXX0=
|
package/dist/data-scale-utils.js
CHANGED
@@ -1,23 +1,3 @@
|
|
1
|
-
// Copyright (c) 2023 Uber Technologies, Inc.
|
2
|
-
//
|
3
|
-
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
4
|
-
// of this software and associated documentation files (the "Software"), to deal
|
5
|
-
// in the Software without restriction, including without limitation the rights
|
6
|
-
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
7
|
-
// copies of the Software, and to permit persons to whom the Software is
|
8
|
-
// furnished to do so, subject to the following conditions:
|
9
|
-
//
|
10
|
-
// The above copyright notice and this permission notice shall be included in
|
11
|
-
// all copies or substantial portions of the Software.
|
12
|
-
//
|
13
|
-
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
14
|
-
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
15
|
-
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
16
|
-
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
17
|
-
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
18
|
-
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
19
|
-
// THE SOFTWARE.
|
20
|
-
|
21
1
|
"use strict";
|
22
2
|
|
23
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
@@ -34,7 +14,12 @@ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/sli
|
|
34
14
|
|
35
15
|
var _d3Array = require("d3-array");
|
36
16
|
|
37
|
-
var _dataUtils = require("./data-utils")
|
17
|
+
var _dataUtils = require("./data-utils");
|
18
|
+
|
19
|
+
// SPDX-License-Identifier: MIT
|
20
|
+
// Copyright contributors to the kepler.gl project
|
21
|
+
|
22
|
+
/**
|
38
23
|
* return quantile domain for an array of data
|
39
24
|
*/
|
40
25
|
function getQuantileDomain(data, valueAccessor, sortFunc) {
|
@@ -74,4 +59,4 @@ function getLogDomain(data, valueAccessor) {
|
|
74
59
|
|
75
60
|
return [d0 === 0 ? 1e-5 : d0, d1];
|
76
61
|
}
|
77
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
62
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9kYXRhLXNjYWxlLXV0aWxzLnRzIl0sIm5hbWVzIjpbImdldFF1YW50aWxlRG9tYWluIiwiZGF0YSIsInZhbHVlQWNjZXNzb3IiLCJzb3J0RnVuYyIsInZhbHVlcyIsIm1hcCIsImZpbHRlciIsIm5vdE51bGxvclVuZGVmaW5lZCIsInNvcnQiLCJnZXRPcmRpbmFsRG9tYWluIiwiZGF0YUNvbnRhaW5lciIsIm1hcEluZGV4IiwiZ2V0TGluZWFyRG9tYWluIiwicmFuZ2UiLCJkIiwiaSIsInVuZGVmaW5lZCIsImdldExvZ0RvbWFpbiIsImQwIiwiZDEiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0FBR0E7O0FBRUE7O0FBTEE7QUFDQTs7QUFVQTtBQUNBO0FBQ0E7QUFDTyxTQUFTQSxpQkFBVCxDQUNMQyxJQURLLEVBRUxDLGFBRkssRUFHTEMsUUFISyxFQUlLO0FBQ1YsTUFBTUMsTUFBTSxHQUFHLE9BQU9GLGFBQVAsS0FBeUIsVUFBekIsR0FBc0NELElBQUksQ0FBQ0ksR0FBTCxDQUFTSCxhQUFULENBQXRDLEdBQWdFRCxJQUEvRTtBQUVBLFNBQU9HLE1BQU0sQ0FBQ0UsTUFBUCxDQUFjQyw2QkFBZCxFQUFrQ0MsSUFBbEMsQ0FBdUNMLFFBQXZDLENBQVA7QUFDRDtBQUVEO0FBQ0E7QUFDQTs7O0FBQ08sU0FBU00sZ0JBQVQsQ0FDTEMsYUFESyxFQUVMUixhQUZLLEVBR0s7QUFDVixNQUFNRSxNQUFNLEdBQUdNLGFBQWEsQ0FBQ0MsUUFBZCxDQUF1QlQsYUFBdkIsQ0FBZjtBQUVBLFNBQU8sdUJBQU9FLE1BQVAsRUFDSkUsTUFESSxDQUNHQyw2QkFESCxFQUVKQyxJQUZJLEVBQVA7QUFHRDtBQUVEO0FBQ0E7QUFDQTs7O0FBQ08sU0FBU0ksZUFBVCxDQUNMWCxJQURLLEVBRUxDLGFBRkssRUFHYTtBQUNsQixNQUFNVyxLQUFLLEdBQUcsT0FBT1gsYUFBUCxLQUF5QixVQUF6QixHQUFzQyxxQkFBT0QsSUFBUCxFQUFhQyxhQUFiLENBQXRDLEdBQW9FLHFCQUFPRCxJQUFQLENBQWxGO0FBQ0EsU0FBT1ksS0FBSyxDQUFDUixHQUFOLENBQVUsVUFBQ1MsQ0FBRCxFQUF3QkMsQ0FBeEI7QUFBQSxXQUF1Q0QsQ0FBQyxLQUFLRSxTQUFOLEdBQWtCRCxDQUFsQixHQUFzQkQsQ0FBN0Q7QUFBQSxHQUFWLENBQVA7QUFJRDtBQUVEO0FBQ0E7QUFDQTs7O0FBQ08sU0FBU0csWUFBVCxDQUFzQmhCLElBQXRCLEVBQW1DQyxhQUFuQyxFQUF1RjtBQUFBLHlCQUMzRVUsZUFBZSxDQUFDWCxJQUFELEVBQU9DLGFBQVAsQ0FENEQ7QUFBQTtBQUFBLE1BQ3JGZ0IsRUFEcUY7QUFBQSxNQUNqRkMsRUFEaUY7O0FBRTVGLFNBQU8sQ0FBQ0QsRUFBRSxLQUFLLENBQVAsR0FBVyxJQUFYLEdBQWtCQSxFQUFuQixFQUF1QkMsRUFBdkIsQ0FBUDtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IHtleHRlbnR9IGZyb20gJ2QzLWFycmF5JztcblxuaW1wb3J0IHtub3ROdWxsb3JVbmRlZmluZWQsIHVuaXF1ZX0gZnJvbSAnLi9kYXRhLXV0aWxzJztcbmltcG9ydCB7RGF0YUNvbnRhaW5lckludGVyZmFjZX0gZnJvbSAnLi9kYXRhLWNvbnRhaW5lci1pbnRlcmZhY2UnO1xuXG50eXBlIGRhdGFWYWx1ZUFjY2Vzc29yID0gPFQ+KHBhcmFtOiBUKSA9PiBUO1xudHlwZSBkYXRhQ29udGFpbmVyVmFsdWVBY2Nlc3NvciA9IChkOiB7aW5kZXg6IG51bWJlcn0sIGRjOiBEYXRhQ29udGFpbmVySW50ZXJmYWNlKSA9PiBhbnk7XG50eXBlIHNvcnQgPSAoYTogYW55LCBiOiBhbnkpID0+IGFueTtcbi8qKlxuICogcmV0dXJuIHF1YW50aWxlIGRvbWFpbiBmb3IgYW4gYXJyYXkgb2YgZGF0YVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0UXVhbnRpbGVEb21haW4oXG4gIGRhdGE6IGFueVtdLFxuICB2YWx1ZUFjY2Vzc29yPzogZGF0YVZhbHVlQWNjZXNzb3IsXG4gIHNvcnRGdW5jPzogc29ydFxuKTogbnVtYmVyW10ge1xuICBjb25zdCB2YWx1ZXMgPSB0eXBlb2YgdmFsdWVBY2Nlc3NvciA9PT0gJ2Z1bmN0aW9uJyA/IGRhdGEubWFwKHZhbHVlQWNjZXNzb3IpIDogZGF0YTtcblxuICByZXR1cm4gdmFsdWVzLmZpbHRlcihub3ROdWxsb3JVbmRlZmluZWQpLnNvcnQoc29ydEZ1bmMpO1xufVxuXG4vKipcbiAqIHJldHVybiBvcmRpbmFsIGRvbWFpbiBmb3IgYSBkYXRhIGNvbnRhaW5lclxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0T3JkaW5hbERvbWFpbihcbiAgZGF0YUNvbnRhaW5lcjogRGF0YUNvbnRhaW5lckludGVyZmFjZSxcbiAgdmFsdWVBY2Nlc3NvcjogZGF0YUNvbnRhaW5lclZhbHVlQWNjZXNzb3Jcbik6IHN0cmluZ1tdIHtcbiAgY29uc3QgdmFsdWVzID0gZGF0YUNvbnRhaW5lci5tYXBJbmRleCh2YWx1ZUFjY2Vzc29yKTtcblxuICByZXR1cm4gdW5pcXVlKHZhbHVlcylcbiAgICAuZmlsdGVyKG5vdE51bGxvclVuZGVmaW5lZClcbiAgICAuc29ydCgpO1xufVxuXG4vKipcbiAqIHJldHVybiBsaW5lYXIgZG9tYWluIGZvciBhbiBhcnJheSBvZiBkYXRhXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRMaW5lYXJEb21haW4oXG4gIGRhdGE6IG51bWJlcltdLFxuICB2YWx1ZUFjY2Vzc29yPzogZGF0YVZhbHVlQWNjZXNzb3Jcbik6IFtudW1iZXIsIG51bWJlcl0ge1xuICBjb25zdCByYW5nZSA9IHR5cGVvZiB2YWx1ZUFjY2Vzc29yID09PSAnZnVuY3Rpb24nID8gZXh0ZW50KGRhdGEsIHZhbHVlQWNjZXNzb3IpIDogZXh0ZW50KGRhdGEpO1xuICByZXR1cm4gcmFuZ2UubWFwKChkOiB1bmRlZmluZWQgfCBudW1iZXIsIGk6IG51bWJlcikgPT4gKGQgPT09IHVuZGVmaW5lZCA/IGkgOiBkKSkgYXMgW1xuICAgIG51bWJlcixcbiAgICBudW1iZXJcbiAgXTtcbn1cblxuLyoqXG4gKiByZXR1cm4gbGluZWFyIGRvbWFpbiBmb3IgYW4gYXJyYXkgb2YgZGF0YS4gQSBsb2cgc2NhbGUgZG9tYWluIGNhbm5vdCBjb250YWluIDBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldExvZ0RvbWFpbihkYXRhOiBhbnlbXSwgdmFsdWVBY2Nlc3NvcjogZGF0YVZhbHVlQWNjZXNzb3IpOiBbbnVtYmVyLCBudW1iZXJdIHtcbiAgY29uc3QgW2QwLCBkMV0gPSBnZXRMaW5lYXJEb21haW4oZGF0YSwgdmFsdWVBY2Nlc3Nvcik7XG4gIHJldHVybiBbZDAgPT09IDAgPyAxZS01IDogZDAsIGQxXTtcbn1cbiJdfQ==
|
package/dist/data-utils.js
CHANGED
@@ -1,23 +1,3 @@
|
|
1
|
-
// Copyright (c) 2023 Uber Technologies, Inc.
|
2
|
-
//
|
3
|
-
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
4
|
-
// of this software and associated documentation files (the "Software"), to deal
|
5
|
-
// in the Software without restriction, including without limitation the rights
|
6
|
-
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
7
|
-
// copies of the Software, and to permit persons to whom the Software is
|
8
|
-
// furnished to do so, subject to the following conditions:
|
9
|
-
//
|
10
|
-
// The above copyright notice and this permission notice shall be included in
|
11
|
-
// all copies or substantial portions of the Software.
|
12
|
-
//
|
13
|
-
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
14
|
-
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
15
|
-
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
16
|
-
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
17
|
-
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
18
|
-
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
19
|
-
// THE SOFTWARE.
|
20
|
-
|
21
1
|
"use strict";
|
22
2
|
|
23
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
@@ -307,6 +287,8 @@ var floatFormatter = function floatFormatter(v) {
|
|
307
287
|
exports.floatFormatter = floatFormatter;
|
308
288
|
var FIELD_DISPLAY_FORMAT = (_FIELD_DISPLAY_FORMAT = {}, (0, _defineProperty2["default"])(_FIELD_DISPLAY_FORMAT, _constants.ALL_FIELD_TYPES.string, defaultFormatter), (0, _defineProperty2["default"])(_FIELD_DISPLAY_FORMAT, _constants.ALL_FIELD_TYPES.timestamp, defaultFormatter), (0, _defineProperty2["default"])(_FIELD_DISPLAY_FORMAT, _constants.ALL_FIELD_TYPES.integer, defaultFormatter), (0, _defineProperty2["default"])(_FIELD_DISPLAY_FORMAT, _constants.ALL_FIELD_TYPES.real, defaultFormatter), (0, _defineProperty2["default"])(_FIELD_DISPLAY_FORMAT, _constants.ALL_FIELD_TYPES["boolean"], defaultFormatter), (0, _defineProperty2["default"])(_FIELD_DISPLAY_FORMAT, _constants.ALL_FIELD_TYPES.date, defaultFormatter), (0, _defineProperty2["default"])(_FIELD_DISPLAY_FORMAT, _constants.ALL_FIELD_TYPES.geojson, function (d) {
|
309
289
|
return typeof d === 'string' ? d : (0, _utils.isPlainObject)(d) ? JSON.stringify(d) : Array.isArray(d) ? "[".concat(String(d), "]") : '';
|
290
|
+
}), (0, _defineProperty2["default"])(_FIELD_DISPLAY_FORMAT, _constants.ALL_FIELD_TYPES.geoarrow, function (d) {
|
291
|
+
return d;
|
310
292
|
}), (0, _defineProperty2["default"])(_FIELD_DISPLAY_FORMAT, _constants.ALL_FIELD_TYPES.object, JSON.stringify), (0, _defineProperty2["default"])(_FIELD_DISPLAY_FORMAT, _constants.ALL_FIELD_TYPES.array, JSON.stringify), _FIELD_DISPLAY_FORMAT);
|
311
293
|
/**
|
312
294
|
* Parse field value and type and return a string representation
|
@@ -517,4 +499,4 @@ function datetimeFormatter(timezone) {
|
|
517
499
|
};
|
518
500
|
};
|
519
501
|
}
|
520
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9kYXRhLXV0aWxzLnRzIl0sIm5hbWVzIjpbInVuaXF1ZSIsInZhbHVlcyIsInJlc3VsdHMiLCJ1bmlxdWVTZXQiLCJTZXQiLCJmb3JFYWNoIiwidiIsIm5vdE51bGxvclVuZGVmaW5lZCIsInB1c2giLCJnZXRMYXRMbmdCb3VuZHMiLCJwb2ludHMiLCJpZHgiLCJsaW1pdCIsImxhdHMiLCJtYXAiLCJkIiwiTnVtYmVyIiwiQXJyYXkiLCJpc0FycmF5IiwiZmlsdGVyIiwiaXNGaW5pdGUiLCJzb3J0IiwibnVtYmVyU29ydCIsImxlbmd0aCIsIk1hdGgiLCJtYXgiLCJtaW4iLCJjbGFtcCIsInZhbCIsImdldFNhbXBsZURhdGEiLCJkYXRhIiwic2FtcGxlU2l6ZSIsImdldFZhbHVlIiwic2FtcGxlU3RlcCIsImZsb29yIiwib3V0cHV0IiwiaSIsInRpbWVUb1VuaXhNaWxsaSIsInZhbHVlIiwiZm9ybWF0IiwibW9tZW50IiwidXRjIiwidmFsdWVPZiIsIkRhdGUiLCJ1bmRlZmluZWQiLCJpc051bWJlciIsImhhc093blByb3BlcnR5Iiwib2JqIiwicHJvcCIsImEiLCJiIiwiZ2V0U29ydGluZ0Z1bmN0aW9uIiwiZmllbGRUeXBlIiwiQUxMX0ZJRUxEX1RZUEVTIiwicmVhbCIsImludGVnZXIiLCJ0aW1lc3RhbXAiLCJwcmVjaXNlUm91bmQiLCJudW0iLCJkZWNpbWFscyIsInQiLCJwb3ciLCJyb3VuZCIsInNpZ24iLCJ0b0ZpeGVkIiwicm91bmRUb0ZvdXIiLCJnZXRSb3VuZGluZ0RlY2ltYWxGcm9tU3RlcCIsInN0ZXAiLCJpc05hTiIsInN0ZXBTdHIiLCJ0b1N0cmluZyIsInNwbGl0RXhwb25lbnRpYWwiLCJzcGxpdCIsImNvZWZmWmVybyIsImNvZWZmRGVjaW1hbCIsInBhcnNlSW50Iiwic3BsaXRaZXJvIiwibm9ybWFsaXplU2xpZGVyVmFsdWUiLCJtaW5WYWx1ZSIsIm1hcmtzIiwicm91bmRWYWxUb1N0ZXAiLCJkZWNpbWFsIiwic3RlcHMiLCJyZW1haW4iLCJjbG9zZXN0Iiwicm91bmRlZCIsImRlZmF1bHRGb3JtYXR0ZXIiLCJTdHJpbmciLCJmbG9hdEZvcm1hdHRlciIsIkZJRUxEX0RJU1BMQVlfRk9STUFUIiwic3RyaW5nIiwiZGF0ZSIsImdlb2pzb24iLCJKU09OIiwic3RyaW5naWZ5Iiwib2JqZWN0IiwiYXJyYXkiLCJwYXJzZUZpZWxkVmFsdWUiLCJ0eXBlIiwiYXJyYXlNb3ZlTXV0YXRlIiwiZnJvbSIsInRvIiwic3BsaWNlIiwiYXJyYXlNb3ZlIiwic2xpY2UiLCJnZXRGb3JtYXR0ZXIiLCJmaWVsZCIsInRvb2x0aXBGb3JtYXQiLCJPYmplY3QiLCJUT09MVElQX0ZPUk1BVFMiLCJmaW5kIiwiZiIsIlRPT0xUSVBfS0VZIiwiYXBwbHlEZWZhdWx0Rm9ybWF0IiwiYXBwbHlDdXN0b21Gb3JtYXQiLCJnZXRDb2x1bW5Gb3JtYXR0ZXIiLCJjb2xNZXRhIiwiZGlzcGxheUZvcm1hdCIsImFwcGx5VmFsdWVNYXAiLCJUT09MVElQX0ZPUk1BVF9UWVBFUyIsIkRFQ0lNQUwiLCJEQVRFIiwiREFURV9USU1FIiwiZGF0ZXRpbWVGb3JtYXR0ZXIiLCJQRVJDRU5UQUdFIiwiREVDSU1BTF9ERUNJTUFMX0ZJWEVEXzIiLCJCT09MRUFOIiwiZ2V0Qm9vbGVhbkZvcm1hdHRlciIsImZvcm1hdExhcmdlTnVtYmVyIiwibiIsImZvcm1hdE51bWJlciIsInRpbWV6b25lIiwidHMiLCJ0eiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFvQkE7O0FBQ0E7O0FBQ0E7O0FBRUE7O0FBU0E7O0FBQ0E7Ozs7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyxTQUFTQSxNQUFULENBQW1CQyxNQUFuQixFQUFnQztBQUNyQyxNQUFNQyxPQUFZLEdBQUcsRUFBckI7QUFDQSxNQUFNQyxTQUFTLEdBQUcsSUFBSUMsR0FBSixDQUFRSCxNQUFSLENBQWxCO0FBQ0FFLEVBQUFBLFNBQVMsQ0FBQ0UsT0FB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QUZOLEVBR0c1RixNQUhILENBR1VBLE1BSFYsQ0FEVTtBQUFBLEtBQU47QUFBQSxHQURLLEdBTVg7QUFDQSxZQUFBQSxNQUFNO0FBQUEsV0FBSSxVQUFBNkYsRUFBRTtBQUFBLGFBQUtBLEVBQUUsR0FBRzVGLDJCQUFPQyxHQUFQLENBQVcyRixFQUFYLEVBQWU3RixNQUFmLENBQXNCQSxNQUF0QixDQUFILEdBQW1DLEVBQTFDO0FBQUEsS0FBTjtBQUFBLEdBUFY7QUFRRCIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgMjAyMyBVYmVyIFRlY2hub2xvZ2llcywgSW5jLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbi8vIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbi8vIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbi8vIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbi8vIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbi8vIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4vLyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOXG4vLyBUSEUgU09GVFdBUkUuXG5cbmltcG9ydCBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcbmltcG9ydCB7Zm9ybWF0IGFzIGQzRm9ybWF0fSBmcm9tICdkMy1mb3JtYXQnO1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQtdGltZXpvbmUnO1xuXG5pbXBvcnQge1xuICBBTExfRklFTERfVFlQRVMsXG4gIFRPT0xUSVBfRk9STUFUUyxcbiAgVE9PTFRJUF9GT1JNQVRfVFlQRVMsXG4gIFRPT0xUSVBfS0VZLFxuICBUb29sdGlwRm9ybWF0XG59IGZyb20gJ0BrZXBsZXIuZ2wvY29uc3RhbnRzJztcbmltcG9ydCB7TWlsbGlzZWNvbmQsIEZpZWxkLCBDb2xNZXRhUHJvcHN9IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuXG5pbXBvcnQge3NuYXBUb01hcmtzfSBmcm9tICcuL3Bsb3QnO1xuaW1wb3J0IHtpc1BsYWluT2JqZWN0fSBmcm9tICcuL3V0aWxzJztcblxuZXhwb3J0IHR5cGUgRmllbGRGb3JtYXR0ZXIgPSAodmFsdWU6IGFueSkgPT4gc3RyaW5nO1xuXG4vKipcbiAqIHNpbXBsZSBnZXR0aW5nIHVuaXF1ZSB2YWx1ZXMgb2YgYW4gYXJyYXlcbiAqXG4gKiBAcGFyYW0gdmFsdWVzXG4gKiBAcmV0dXJucyB1bmlxdWUgdmFsdWVzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1bmlxdWU8VD4odmFsdWVzOiBUW10pIHtcbiAgY29uc3QgcmVzdWx0czogVFtdID0gW107XG4gIGNvbnN0IHVuaXF1ZVNldCA9IG5ldyBTZXQodmFsdWVzKTtcbiAgdW5pcXVlU2V0LmZvckVhY2godiA9PiB7XG4gICAgaWYgKG5vdE51bGxvclVuZGVmaW5lZCh2KSkge1xuICAgICAgcmVzdWx0cy5wdXNoKHYpO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiByZXN1bHRzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0TGF0TG5nQm91bmRzKFxuICBwb2ludHM6IG51bWJlcltdW10sXG4gIGlkeDogbnVtYmVyLFxuICBsaW1pdDogW251bWJlciwgbnVtYmVyXVxuKTogW251bWJlciwgbnVtYmVyXSB8IG51bGwge1xuICBjb25zdCBsYXRzID0gcG9pbnRzXG4gICAgLm1hcChkID0+IE51bWJlcihBcnJheS5pc0FycmF5KGQpKSAmJiBkW2lkeF0pXG4gICAgLmZpbHRlcihOdW1iZXIuaXNGaW5pdGUpXG4gICAgLnNvcnQobnVtYmVyU29ydCk7XG5cbiAgaWYgKCFsYXRzLmxlbmd0aCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgLy8gY2xhbXAgdG8gbGltaXRcbiAgcmV0dXJuIFtNYXRoLm1heChsYXRzWzBdLCBsaW1pdFswXSksIE1hdGgubWluKGxhdHNbbGF0cy5sZW5ndGggLSAxXSwgbGltaXRbMV0pXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNsYW1wKFttaW4sIG1heF06IFtudW1iZXIsIG51bWJlcl0sIHZhbDogbnVtYmVyID0gMCk6IG51bWJlciB7XG4gIHJldHVybiB2YWwgPD0gbWluID8gbWluIDogdmFsID49IG1heCA/IG1heCA6IHZhbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNhbXBsZURhdGEoZGF0YSwgc2FtcGxlU2l6ZSA9IDUwMCwgZ2V0VmFsdWUgPSBkID0+IGQpIHtcbiAgY29uc3Qgc2FtcGxlU3RlcCA9IE1hdGgubWF4KE1hdGguZmxvb3IoZGF0YS5sZW5ndGggLyBzYW1wbGVTaXplKSwgMSk7XG4gIGNvbnN0IG91dHB1dDogYW55W10gPSBbXTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBkYXRhLmxlbmd0aDsgaSArPSBzYW1wbGVTdGVwKSB7XG4gICAgb3V0cHV0LnB1c2goZ2V0VmFsdWUoZGF0YVtpXSkpO1xuICB9XG5cbiAgcmV0dXJuIG91dHB1dDtcbn1cblxuLyoqXG4gKiBDb252ZXJ0IGRpZmZlcmVudCB0aW1lIGZvcm1hdCB0byB1bml4IG1pbGxpc2Vjb25kc1xuICovXG5leHBvcnQgZnVuY3Rpb24gdGltZVRvVW5peE1pbGxpKHZhbHVlOiBzdHJpbmcgfCBudW1iZXIgfCBEYXRlLCBmb3JtYXQ6IHN0cmluZyk6IE1pbGxpc2Vjb25kIHwgbnVsbCB7XG4gIGlmIChub3ROdWxsb3JVbmRlZmluZWQodmFsdWUpKSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVybiBtb21lbnQudXRjKHZhbHVlLCBmb3JtYXQpLnZhbHVlT2YoKTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICAgIHJldHVybiBmb3JtYXQgPT09ICd4JyA/IHZhbHVlICogMTAwMCA6IHZhbHVlO1xuICAgIH1cbiAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgICByZXR1cm4gdmFsdWUudmFsdWVPZigpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cblxuLyoqXG4gKiB3aGV0aGVyIG51bGwgb3IgdW5kZWZpbmVkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBub3ROdWxsb3JVbmRlZmluZWQ8VCBleHRlbmRzIE5vbk51bGxhYmxlPGFueT4+KGQ6IFQgfCBudWxsIHwgdW5kZWZpbmVkKTogZCBpcyBUIHtcbiAgcmV0dXJuIGQgIT09IHVuZGVmaW5lZCAmJiBkICE9PSBudWxsO1xufVxuXG4vKipcbiAqIFdoZXRoZXIgZCBpcyBhIG51bWJlciwgdGhpcyBmaWx0ZXJlZCBvdXQgTmFOIGFzIHdlbGxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzTnVtYmVyKGQ6IGFueSk6IGJvb2xlYW4ge1xuICByZXR1cm4gTnVtYmVyLmlzRmluaXRlKGQpO1xufVxuXG4vKipcbiAqIHdoZXRoZXIgb2JqZWN0IGhhcyBwcm9wZXJ0eVxuICogQHBhcmFtIHtzdHJpbmd9IHByb3BcbiAqIEByZXR1cm5zIHtib29sZWFufSAtIHllcyBvciBub1xuICovXG5leHBvcnQgZnVuY3Rpb24gaGFzT3duUHJvcGVydHk8WCBleHRlbmRzIHt9LCBZIGV4dGVuZHMgUHJvcGVydHlLZXk+KFxuICBvYmo6IFgsXG4gIHByb3A6IFlcbik6IG9iaiBpcyBYICYgUmVjb3JkPFksIHVua25vd24+IHtcbiAgcmV0dXJuIG9iai5oYXNPd25Qcm9wZXJ0eShwcm9wKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG51bWJlclNvcnQoYTogbnVtYmVyLCBiOiBudW1iZXIpOiBudW1iZXIge1xuICByZXR1cm4gYSAtIGI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTb3J0aW5nRnVuY3Rpb24oZmllbGRUeXBlOiBzdHJpbmcpOiB0eXBlb2YgbnVtYmVyU29ydCB8IHVuZGVmaW5lZCB7XG4gIHN3aXRjaCAoZmllbGRUeXBlKSB7XG4gICAgY2FzZSBBTExfRklFTERfVFlQRVMucmVhbDpcbiAgICBjYXNlIEFMTF9GSUVMRF9UWVBFUy5pbnRlZ2VyOlxuICAgIGNhc2UgQUxMX0ZJRUxEX1RZUEVTLnRpbWVzdGFtcDpcbiAgICAgIHJldHVybiBudW1iZXJTb3J0O1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG59XG5cbi8qKlxuICogcm91bmQgbnVtYmVyIHdpdGggZXhhY3QgbnVtYmVyIG9mIGRlY2ltYWxzXG4gKiByZXR1cm4gYXMgYSBzdHJpbmdcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByZWNpc2VSb3VuZChudW06IG51bWJlciwgZGVjaW1hbHM6IG51bWJlcik6IHN0cmluZyB7XG4gIGNvbnN0IHQgPSBNYXRoLnBvdygxMCwgZGVjaW1hbHMpO1xuICByZXR1cm4gKFxuICAgIE1hdGgucm91bmQoXG4gICAgICBudW0gKiB0ICsgKGRlY2ltYWxzID4gMCA/IDEgOiAwKSAqIChNYXRoLnNpZ24obnVtKSAqICgxMCAvIE1hdGgucG93KDEwMCwgZGVjaW1hbHMpKSlcbiAgICApIC8gdFxuICApLnRvRml4ZWQoZGVjaW1hbHMpO1xufVxuXG4vKipcbiAqIHJvdW5kIGEgZ2l2aW5nIG51bWJlciBhdCBtb3N0IDQgZGVjaW1hbCBwbGFjZXNcbiAqIGUuZy4gMTAgLT4gMTAsIDEuMTIzNDUgLT4gMS4yMzQ1LCAyLjAgLT4gMlxuICovXG5leHBvcnQgZnVuY3Rpb24gcm91bmRUb0ZvdXIobnVtOiBudW1iZXIpOiBudW1iZXIge1xuICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gIHJldHVybiBOdW1iZXIoYCR7TWF0aC5yb3VuZChgJHtudW19ZSs0YCl9ZS00YCk7XG59XG4vKipcbiAqIGdldCBudW1iZXIgb2YgZGVjaW1hbHMgdG8gcm91bmQgdG8gZm9yIHNsaWRlciBmcm9tIHN0ZXBcbiAqIEBwYXJhbSBzdGVwXG4gKiBAcmV0dXJucy0gbnVtYmVyIG9mIGRlY2ltYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFJvdW5kaW5nRGVjaW1hbEZyb21TdGVwKHN0ZXA6IG51bWJlcik6IG51bWJlciB7XG4gIGlmIChpc05hTihzdGVwKSkge1xuICAgIGFzc2VydCgnc3RlcCBpcyBub3QgYSBudW1iZXInKTtcbiAgICBhc3NlcnQoc3RlcCk7XG4gIH1cblxuICBjb25zdCBzdGVwU3RyID0gc3RlcC50b1N0cmluZygpO1xuXG4gIC8vIGluIGNhc2UgdGhlIHN0ZXAgaXMgYSB2ZXJ5IHNtYWxsIG51bWJlciBlLmcuIDFlLTcsIHJldHVybiBkZWNpbWFsIGUuZy4gNyBkaXJlY3RseVxuICBjb25zdCBzcGxpdEV4cG9uZW50aWFsID0gc3RlcFN0ci5zcGxpdCgnZS0nKTtcbiAgaWYgKHNwbGl0RXhwb25lbnRpYWwubGVuZ3RoID09PSAyKSB7XG4gICAgY29uc3QgY29lZmZaZXJvID0gc3BsaXRFeHBvbmVudGlhbFswXS5zcGxpdCgnLicpO1xuICAgIGNvbnN0IGNvZWZmRGVjaW1hbCA9IGNvZWZmWmVyby5sZW5ndGggPT09IDEgPyAwIDogY29lZmZaZXJvWzFdLmxlbmd0aDtcbiAgICByZXR1cm4gcGFyc2VJbnQoc3BsaXRFeHBvbmVudGlhbFsxXSwgMTApICsgY29lZmZEZWNpbWFsO1xuICB9XG5cbiAgY29uc3Qgc3BsaXRaZXJvID0gc3RlcFN0ci5zcGxpdCgnLicpO1xuICBpZiAoc3BsaXRaZXJvLmxlbmd0aCA9PT0gMSkge1xuICAgIHJldHVybiAwO1xuICB9XG4gIHJldHVybiBzcGxpdFplcm9bMV0ubGVuZ3RoO1xufVxuXG4vKipcbiAqIElmIG1hcmtzIGlzIHByb3ZpZGVkLCBzbmFwIHRvIG1hcmtzLCBpZiBub3Qgbm9ybWFsaXplIHRvIHN0ZXBcbiAqIEBwYXJhbSB2YWxcbiAqIEBwYXJhbSBtaW5WYWx1ZVxuICogQHBhcmFtIHN0ZXBcbiAqIEBwYXJhbSBtYXJrc1xuICovXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplU2xpZGVyVmFsdWUoXG4gIHZhbDogbnVtYmVyLFxuICBtaW5WYWx1ZTogbnVtYmVyLFxuICBzdGVwOiBudW1iZXIsXG4gIG1hcmtzPzogbnVtYmVyW11cbik6IG51bWJlciB7XG4gIGlmIChtYXJrcyAmJiBtYXJrcy5sZW5ndGgpIHtcbiAgICAvLyBVc2UgaW4gc2xpZGVyLCBnaXZlbiBhIG51bWJlciBhbmQgYW4gYXJyYXkgb2YgbnVtYmVycywgcmV0dXJuIHRoZSBuZWFycyBudW1iZXIgZnJvbSB0aGUgYXJyYXlcbiAgICByZXR1cm4gc25hcFRvTWFya3ModmFsLCBtYXJrcyk7XG4gIH1cblxuICByZXR1cm4gcm91bmRWYWxUb1N0ZXAobWluVmFsdWUsIHN0ZXAsIHZhbCk7XG59XG5cbi8qKlxuICogcm91bmQgdGhlIHZhbHVlIHRvIHN0ZXAgZm9yIHRoZSBzbGlkZXJcbiAqIEBwYXJhbSBtaW5WYWx1ZVxuICogQHBhcmFtIHN0ZXBcbiAqIEBwYXJhbSB2YWxcbiAqIEByZXR1cm5zIC0gcm91bmRlZCBudW1iZXJcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJvdW5kVmFsVG9TdGVwKG1pblZhbHVlOiBudW1iZXIsIHN0ZXA6IG51bWJlciwgdmFsOiBudW1iZXIpOiBudW1iZXIge1xuICBpZiAoIWlzTnVtYmVyKHN0ZXApIHx8ICFpc051bWJlcihtaW5WYWx1ZSkpIHtcbiAgICByZXR1cm4gdmFsO1xuICB9XG5cbiAgY29uc3QgZGVjaW1hbCA9IGdldFJvdW5kaW5nRGVjaW1hbEZyb21TdGVwKHN0ZXApO1xuICBjb25zdCBzdGVwcyA9IE1hdGguZmxvb3IoKHZhbCAtIG1pblZhbHVlKSAvIHN0ZXApO1xuICBsZXQgcmVtYWluID0gdmFsIC0gKHN0ZXBzICogc3RlcCArIG1pblZhbHVlKTtcblxuICAvLyBoYXMgdG8gcm91bmQgYmVjYXVzZSBqYXZhc2NyaXB0IHR1cm5zIDAuMSBpbnRvIDAuOTk5OTk5OTk5OTk5OTk4N1xuICByZW1haW4gPSBOdW1iZXIocHJlY2lzZVJvdW5kKHJlbWFpbiwgOCkpO1xuXG4gIGxldCBjbG9zZXN0OiBudW1iZXI7XG4gIGlmIChyZW1haW4gPT09IDApIHtcbiAgICBjbG9zZXN0ID0gdmFsO1xuICB9IGVsc2UgaWYgKHJlbWFpbiA8IHN0ZXAgLyAyKSB7XG4gICAgY2xvc2VzdCA9IHN0ZXBzICogc3RlcCArIG1pblZhbHVlO1xuICB9IGVsc2Uge1xuICAgIGNsb3Nlc3QgPSAoc3RlcHMgKyAxKSAqIHN0ZXAgKyBtaW5WYWx1ZTtcbiAgfVxuXG4gIC8vIHByZWNpc2Ugcm91bmQgcmV0dXJuIGEgc3RyaW5nIHJvdW5kZWQgdG8gdGhlIGRlZmluZWQgZGVjaW1hbFxuICBjb25zdCByb3VuZGVkID0gcHJlY2lzZVJvdW5kKGNsb3Nlc3QsIGRlY2ltYWwpO1xuXG4gIHJldHVybiBOdW1iZXIocm91bmRlZCk7XG59XG5cbi8qKlxuICogR2V0IHRoZSB2YWx1ZSBmb3JtYXQgYmFzZWQgb24gZmllbGQgYW5kIGZvcm1hdCBvcHRpb25zXG4gKiBVc2VkIGluIHJlbmRlciB0b29sdGlwIHZhbHVlXG4gKi9cbmV4cG9ydCBjb25zdCBkZWZhdWx0Rm9ybWF0dGVyOiBGaWVsZEZvcm1hdHRlciA9IHYgPT4gKG5vdE51bGxvclVuZGVmaW5lZCh2KSA/IFN0cmluZyh2KSA6ICcnKTtcblxuZXhwb3J0IGNvbnN0IGZsb2F0Rm9ybWF0dGVyID0gdiA9PiAoaXNOdW1iZXIodikgPyBTdHJpbmcocm91bmRUb0ZvdXIodikpIDogJycpO1xuXG5leHBvcnQgY29uc3QgRklFTERfRElTUExBWV9GT1JNQVQ6IHtcbiAgW2tleTogc3RyaW5nXTogRmllbGRGb3JtYXR0ZXI7XG59ID0ge1xuICBbQUxMX0ZJRUxEX1RZUEVTLnN0cmluZ106IGRlZmF1bHRGb3JtYXR0ZXIsXG4gIFtBTExfRklFTERfVFlQRVMudGltZXN0YW1wXTogZGVmYXVsdEZvcm1hdHRlcixcbiAgW0FMTF9GSUVMRF9UWVBFUy5pbnRlZ2VyXTogZGVmYXVsdEZvcm1hdHRlcixcbiAgW0FMTF9GSUVMRF9UWVBFUy5yZWFsXTogZGVmYXVsdEZvcm1hdHRlcixcbiAgW0FMTF9GSUVMRF9UWVBFUy5ib29sZWFuXTogZGVmYXVsdEZvcm1hdHRlcixcbiAgW0FMTF9GSUVMRF9UWVBFUy5kYXRlXTogZGVmYXVsdEZvcm1hdHRlcixcbiAgW0FMTF9GSUVMRF9UWVBFUy5nZW9qc29uXTogZCA9PlxuICAgIHR5cGVvZiBkID09PSAnc3RyaW5nJ1xuICAgICAgPyBkXG4gICAgICA6IGlzUGxhaW5PYmplY3QoZClcbiAgICAgID8gSlNPTi5zdHJpbmdpZnkoZClcbiAgICAgIDogQXJyYXkuaXNBcnJheShkKVxuICAgICAgPyBgWyR7U3RyaW5nKGQpfV1gXG4gICAgICA6ICcnLFxuICBbQUxMX0ZJRUxEX1RZUEVTLm9iamVjdF06IEpTT04uc3RyaW5naWZ5LFxuICBbQUxMX0ZJRUxEX1RZUEVTLmFycmF5XTogSlNPTi5zdHJpbmdpZnlcbn07XG5cbi8qKlxuICogUGFyc2UgZmllbGQgdmFsdWUgYW5kIHR5cGUgYW5kIHJldHVybiBhIHN0cmluZyByZXByZXNlbnRhdGlvblxuICovXG5leHBvcnQgY29uc3QgcGFyc2VGaWVsZFZhbHVlID0gKHZhbHVlOiBhbnksIHR5cGU6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIGlmICghbm90TnVsbG9yVW5kZWZpbmVkKHZhbHVlKSkge1xuICAgIHJldHVybiAnJztcbiAgfVxuICByZXR1cm4gRklFTERfRElTUExBWV9GT1JNQVRbdHlwZV0gPyBGSUVMRF9ESVNQTEFZX0ZPUk1BVFt0eXBlXSh2YWx1ZSkgOiBTdHJpbmcodmFsdWUpO1xufTtcblxuY29uc3QgYXJyYXlNb3ZlTXV0YXRlID0gPFQ+KGFycmF5OiBUW10sIGZyb206IG51bWJlciwgdG86IG51bWJlcikgPT4ge1xuICBhcnJheS5zcGxpY2UodG8gPCAwID8gYXJyYXkubGVuZ3RoICsgdG8gOiB0bywgMCwgYXJyYXkuc3BsaWNlKGZyb20sIDEpWzBdKTtcbn07XG5cbi8qKlxuICpcbiAqIEBwYXJhbSBhcnJheVxuICogQHBhcmFtIGZyb21cbiAqIEBwYXJhbSB0b1xuICovXG5leHBvcnQgY29uc3QgYXJyYXlNb3ZlID0gPFQ+KGFycmF5OiBUW10sIGZyb206IG51bWJlciwgdG86IG51bWJlcik6IFRbXSA9PiB7XG4gIGFycmF5ID0gYXJyYXkuc2xpY2UoKTtcbiAgYXJyYXlNb3ZlTXV0YXRlKGFycmF5LCBmcm9tLCB0byk7XG4gIHJldHVybiBhcnJheTtcbn07XG5cbi8qKlxuICogR2V0IHRoZSB2YWx1ZSBmb3JtYXQgYmFzZWQgb24gZmllbGQgYW5kIGZvcm1hdCBvcHRpb25zXG4gKiBVc2VkIGluIHJlbmRlciB0b29sdGlwIHZhbHVlXG4gKiBAcGFyYW0gZm9ybWF0XG4gKiBAcGFyYW0gZmllbGRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEZvcm1hdHRlcihcbiAgZm9ybWF0OiBzdHJpbmcgfCBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+LFxuICBmaWVsZD86IEZpZWxkXG4pOiBGaWVsZEZvcm1hdHRlciB7XG4gIGlmICghZm9ybWF0KSB7XG4gICAgcmV0dXJuIGRlZmF1bHRGb3JtYXR0ZXI7XG4gIH1cbiAgY29uc3QgdG9vbHRpcEZvcm1hdCA9IE9iamVjdC52YWx1ZXMoVE9PTFRJUF9GT1JNQVRTKS5maW5kKGYgPT4gZltUT09MVElQX0tFWV0gPT09IGZvcm1hdCk7XG5cbiAgaWYgKHRvb2x0aXBGb3JtYXQpIHtcbiAgICByZXR1cm4gYXBwbHlEZWZhdWx0Rm9ybWF0KHRvb2x0aXBGb3JtYXQgYXMgVG9vbHRpcEZvcm1hdCk7XG4gIH0gZWxzZSBpZiAodHlwZW9mIGZvcm1hdCA9PT0gJ3N0cmluZycgJiYgZmllbGQpIHtcbiAgICByZXR1cm4gYXBwbHlDdXN0b21Gb3JtYXQoZm9ybWF0LCBmaWVsZCk7XG4gIH1cblxuICByZXR1cm4gZGVmYXVsdEZvcm1hdHRlcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldENvbHVtbkZvcm1hdHRlcihjb2xNZXRhOiBDb2xNZXRhUHJvcHMpOiBGaWVsZEZvcm1hdHRlciB7XG4gIGNvbnN0IHtmb3JtYXQsIGRpc3BsYXlGb3JtYXR9ID0gY29sTWV0YTtcblxuICBpZiAoIWZvcm1hdCAmJiAhZGlzcGxheUZvcm1hdCkge1xuICAgIHJldHVybiBGSUVMRF9ESVNQTEFZX0ZPUk1BVFtjb2xNZXRhLnR5cGVdO1xuICB9XG4gIGNvbnN0IHRvb2x0aXBGb3JtYXQgPSBPYmplY3QudmFsdWVzKFRPT0xUSVBfRk9STUFUUykuZmluZChmID0+IGZbVE9PTFRJUF9LRVldID09PSBkaXNwbGF5Rm9ybWF0KTtcblxuICBpZiAodG9vbHRpcEZvcm1hdCkge1xuICAgIHJldHVybiBhcHBseURlZmF1bHRGb3JtYXQodG9vbHRpcEZvcm1hdCk7XG4gIH0gZWxzZSBpZiAodHlwZW9mIGRpc3BsYXlGb3JtYXQgPT09ICdzdHJpbmcnICYmIGNvbE1ldGEpIHtcbiAgICByZXR1cm4gYXBwbHlDdXN0b21Gb3JtYXQoZGlzcGxheUZvcm1hdCwgY29sTWV0YSk7XG4gIH0gZWxzZSBpZiAodHlwZW9mIGRpc3BsYXlGb3JtYXQgPT09ICdvYmplY3QnKSB7XG4gICAgcmV0dXJuIGFwcGx5VmFsdWVNYXAoZGlzcGxheUZvcm1hdCk7XG4gIH1cblxuICByZXR1cm4gZGVmYXVsdEZvcm1hdHRlcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFwcGx5VmFsdWVNYXAoZm9ybWF0KSB7XG4gIHJldHVybiB2ID0+IGZvcm1hdFt2XTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFwcGx5RGVmYXVsdEZvcm1hdCh0b29sdGlwRm9ybWF0OiBUb29sdGlwRm9ybWF0KTogKHY6IGFueSkgPT4gc3RyaW5nIHtcbiAgaWYgKCF0b29sdGlwRm9ybWF0IHx8ICF0b29sdGlwRm9ybWF0LmZvcm1hdCkge1xuICAgIHJldHVybiBkZWZhdWx0Rm9ybWF0dGVyO1xuICB9XG5cbiAgc3dpdGNoICh0b29sdGlwRm9ybWF0LnR5cGUpIHtcbiAgICBjYXNlIFRPT0xUSVBfRk9STUFUX1RZUEVTLkRFQ0lNQUw6XG4gICAgICByZXR1cm4gZDNGb3JtYXQodG9vbHRpcEZvcm1hdC5mb3JtYXQpO1xuICAgIGNhc2UgVE9PTFRJUF9GT1JNQVRfVFlQRVMuREFURTpcbiAgICBjYXNlIFRPT0xUSVBfRk9STUFUX1RZUEVTLkRBVEVfVElNRTpcbiAgICAgIHJldHVybiBkYXRldGltZUZvcm1hdHRlcihudWxsKSh0b29sdGlwRm9ybWF0LmZvcm1hdCk7XG4gICAgY2FzZSBUT09MVElQX0ZPUk1BVF9UWVBFUy5QRVJDRU5UQUdFOlxuICAgICAgcmV0dXJuIHYgPT4gYCR7ZDNGb3JtYXQoVE9PTFRJUF9GT1JNQVRTLkRFQ0lNQUxfREVDSU1BTF9GSVhFRF8yLmZvcm1hdCkodil9JWA7XG4gICAgY2FzZSBUT09MVElQX0ZPUk1BVF9UWVBFUy5CT09MRUFOOlxuICAgICAgcmV0dXJuIGdldEJvb2xlYW5Gb3JtYXR0ZXIodG9vbHRpcEZvcm1hdC5mb3JtYXQpO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gZGVmYXVsdEZvcm1hdHRlcjtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Qm9vbGVhbkZvcm1hdHRlcihmb3JtYXQ6IHN0cmluZyk6IEZpZWxkRm9ybWF0dGVyIHtcbiAgc3dpdGNoIChmb3JtYXQpIHtcbiAgICBjYXNlICcwMSc6XG4gICAgICByZXR1cm4gKHY6IEJvb2xlYW4pID0+ICh2ID8gJzEnIDogJzAnKTtcbiAgICBjYXNlICd5bic6XG4gICAgICByZXR1cm4gKHY6IEJvb2xlYW4pID0+ICh2ID8gJ3llcycgOiAnbm8nKTtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGRlZmF1bHRGb3JtYXR0ZXI7XG4gIH1cbn1cbi8vIEFsbG93IHVzZXIgdG8gc3BlY2lmeSBjdXN0b20gdG9vbHRpcCBmb3JtYXQgdmlhIGNvbmZpZ1xuZXhwb3J0IGZ1bmN0aW9uIGFwcGx5Q3VzdG9tRm9ybWF0KGZvcm1hdCwgZmllbGQpOiBGaWVsZEZvcm1hdHRlciB7XG4gIHN3aXRjaCAoZmllbGQudHlwZSkge1xuICAgIGNhc2UgQUxMX0ZJRUxEX1RZUEVTLnJlYWw6XG4gICAgY2FzZSBBTExfRklFTERfVFlQRVMuaW50ZWdlcjpcbiAgICAgIHJldHVybiBkM0Zvcm1hdChmb3JtYXQpO1xuICAgIGNhc2UgQUxMX0ZJRUxEX1RZUEVTLmRhdGU6XG4gICAgY2FzZSBBTExfRklFTERfVFlQRVMudGltZXN0YW1wOlxuICAgICAgcmV0dXJuIGRhdGV0aW1lRm9ybWF0dGVyKG51bGwpKGZvcm1hdCk7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiB2ID0+IHY7XG4gIH1cbn1cblxuZnVuY3Rpb24gZm9ybWF0TGFyZ2VOdW1iZXIobikge1xuICAvLyBTSS1wcmVmaXggd2l0aCA0IHNpZ25pZmljYW50IGRpZ2l0c1xuICByZXR1cm4gZDNGb3JtYXQoJy40fnMnKShuKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdE51bWJlcihuOiBudW1iZXIsIHR5cGU/OiBzdHJpbmcpOiBzdHJpbmcge1xuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICBjYXNlIEFMTF9GSUVMRF9UWVBFUy5pbnRlZ2VyOlxuICAgICAgaWYgKG4gPCAwKSB7XG4gICAgICAgIHJldHVybiBgLSR7Zm9ybWF0TnVtYmVyKC1uLCAnaW50ZWdlcicpfWA7XG4gICAgICB9XG4gICAgICBpZiAobiA8IDEwMDApIHtcbiAgICAgICAgcmV0dXJuIGAke01hdGgucm91bmQobil9YDtcbiAgICAgIH1cbiAgICAgIGlmIChuIDwgMTAgKiAxMDAwKSB7XG4gICAgICAgIHJldHVybiBkM0Zvcm1hdCgnLCcpKE1hdGgucm91bmQobikpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZvcm1hdExhcmdlTnVtYmVyKG4pO1xuICAgIGNhc2UgQUxMX0ZJRUxEX1RZUEVTLnJlYWw6XG4gICAgICBpZiAobiA8IDApIHtcbiAgICAgICAgcmV0dXJuIGAtJHtmb3JtYXROdW1iZXIoLW4sICdudW1iZXInKX1gO1xuICAgICAgfVxuICAgICAgaWYgKG4gPCAxMDAwKSB7XG4gICAgICAgIHJldHVybiBkM0Zvcm1hdCgnLjR+cicpKG4pO1xuICAgICAgfVxuICAgICAgaWYgKG4gPCAxMCAqIDEwMDApIHtcbiAgICAgICAgcmV0dXJuIGQzRm9ybWF0KCcsLjJ+ZicpKG4pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZvcm1hdExhcmdlTnVtYmVyKG4pO1xuXG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBmb3JtYXROdW1iZXIobiwgJ3JlYWwnKTtcbiAgfVxufVxuXG4vKipcbiAqIEZvcm1hdCBlcG9jaCBtaWxsaXNlY29uZHMgd2l0aCBhIGZvcm1hdCBzdHJpbmdcbiAqIEB0eXBlIHRpbWV6b25lXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkYXRldGltZUZvcm1hdHRlcihcbiAgdGltZXpvbmU/OiBzdHJpbmcgfCBudWxsXG4pOiAoZm9ybWF0Pzogc3RyaW5nKSA9PiAodHM6IG51bWJlcikgPT4gc3RyaW5nIHtcbiAgcmV0dXJuIHRpbWV6b25lXG4gICAgPyBmb3JtYXQgPT4gdHMgPT5cbiAgICAgICAgbW9tZW50XG4gICAgICAgICAgLnV0Yyh0cylcbiAgICAgICAgICAudHoodGltZXpvbmUpXG4gICAgICAgICAgLmZvcm1hdChmb3JtYXQpXG4gICAgOiAvLyByZXR1cm4gZW1wdHkgc3RyaW5nIGluc3RlYWQgb2YgJ0ludmFsaWQgZGF0ZScgaWYgdHMgaXMgdW5kZWZpbmVkL251bGxcbiAgICAgIGZvcm1hdCA9PiB0cyA9PiAodHMgPyBtb21lbnQudXRjKHRzKS5mb3JtYXQoZm9ybWF0KSA6ICcnKTtcbn1cbiJdfQ==
|
502
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9kYXRhLXV0aWxzLnRzIl0sIm5hbWVzIjpbInVuaXF1ZSIsInZhbHVlcyIsInJlc3VsdHMiLCJ1bmlxdWVTZXQiLCJTZXQiLCJmb3JFYWNoIiwidiIsIm5vdE51bGxvclVuZGVmaW5lZCIsInB1c2giLCJnZXRMYXRMbmdCb3VuZHMiLCJwb2ludHMiLCJpZHgiLCJsaW1pdCIsImxhdHMiLCJtYXAiLCJkIiwiTnVtYmVyIiwiQXJyYXkiLCJpc0FycmF5IiwiZmlsdGVyIiwiaXNGaW5pdGUiLCJzb3J0IiwibnVtYmVyU29ydCIsImxlbmd0aCIsIk1hdGgiLCJtYXgiLCJtaW4iLCJjbGFtcCIsInZhbCIsImdldFNhbXBsZURhdGEiLCJkYXRhIiwic2FtcGxlU2l6ZSIsImdldFZhbHVlIiwic2FtcGxlU3RlcCIsImZsb29yIiwib3V0cHV0IiwiaSIsInRpbWVUb1VuaXhNaWxsaSIsInZhbHVlIiwiZm9ybWF0IiwibW9tZW50IiwidXRjIiwidmFsdWVPZiIsIkRhdGUiLCJ1bmRlZmluZWQiLCJpc051bWJlciIsImhhc093blByb3BlcnR5Iiwib2JqIiwicHJvcCIsImEiLCJiIiwiZ2V0U29ydGluZ0Z1bmN0aW9uIiwiZmllbGRUeXBlIiwiQUxMX0ZJRUxEX1RZUEVTIiwicmVhbCIsImludGVnZXIiLCJ0aW1lc3RhbXAiLCJwcmVjaXNlUm91bmQiLCJudW0iLCJkZWNpbWFscyIsInQiLCJwb3ciLCJyb3VuZCIsInNpZ24iLCJ0b0ZpeGVkIiwicm91bmRUb0ZvdXIiLCJnZXRSb3VuZGluZ0RlY2ltYWxGcm9tU3RlcCIsInN0ZXAiLCJpc05hTiIsInN0ZXBTdHIiLCJ0b1N0cmluZyIsInNwbGl0RXhwb25lbnRpYWwiLCJzcGxpdCIsImNvZWZmWmVybyIsImNvZWZmRGVjaW1hbCIsInBhcnNlSW50Iiwic3BsaXRaZXJvIiwibm9ybWFsaXplU2xpZGVyVmFsdWUiLCJtaW5WYWx1ZSIsIm1hcmtzIiwicm91bmRWYWxUb1N0ZXAiLCJkZWNpbWFsIiwic3RlcHMiLCJyZW1haW4iLCJjbG9zZXN0Iiwicm91bmRlZCIsImRlZmF1bHRGb3JtYXR0ZXIiLCJTdHJpbmciLCJmbG9hdEZvcm1hdHRlciIsIkZJRUxEX0RJU1BMQVlfRk9STUFUIiwic3RyaW5nIiwiZGF0ZSIsImdlb2pzb24iLCJKU09OIiwic3RyaW5naWZ5IiwiZ2VvYXJyb3ciLCJvYmplY3QiLCJhcnJheSIsInBhcnNlRmllbGRWYWx1ZSIsInR5cGUiLCJhcnJheU1vdmVNdXRhdGUiLCJmcm9tIiwidG8iLCJzcGxpY2UiLCJhcnJheU1vdmUiLCJzbGljZSIsImdldEZvcm1hdHRlciIsImZpZWxkIiwidG9vbHRpcEZvcm1hdCIsIk9iamVjdCIsIlRPT0xUSVBfRk9STUFUUyIsImZpbmQiLCJmIiwiVE9PTFRJUF9LRVkiLCJhcHBseURlZmF1bHRGb3JtYXQiLCJhcHBseUN1c3RvbUZvcm1hdCIsImdldENvbHVtbkZvcm1hdHRlciIsImNvbE1ldGEiLCJkaXNwbGF5Rm9ybWF0IiwiYXBwbHlWYWx1ZU1hcCIsIlRPT0xUSVBfRk9STUFUX1RZUEVTIiwiREVDSU1BTCIsIkRBVEUiLCJEQVRFX1RJTUUiLCJkYXRldGltZUZvcm1hdHRlciIsIlBFUkNFTlRBR0UiLCJERUNJTUFMX0RFQ0lNQUxfRklYRURfMiIsIkJPT0xFQU4iLCJnZXRCb29sZWFuRm9ybWF0dGVyIiwiZm9ybWF0TGFyZ2VOdW1iZXIiLCJuIiwiZm9ybWF0TnVtYmVyIiwidGltZXpvbmUiLCJ0cyIsInR6Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUdBOztBQUNBOztBQUNBOztBQUVBOztBQVNBOztBQUNBOzs7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sU0FBU0EsTUFBVCxDQUFtQkMsTUFBbkIsRUFBZ0M7QUFDckMsTUFBTUMsT0FBWSxHQUFHLEVBQXJCO0FBQ0EsTUFBTUMsU0FBUyxHQUFHLElBQUlDLEdBQUosQ0FBUUgsTUFBUixDQUFsQjtBQUNBRSxFQUFBQSxTQUFT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LE1BQU07QUFBQSxXQUFJLFVBQUE4RixFQUFFO0FBQUEsYUFDVjdGLDJCQUNHQyxHQURILENBQ080RixFQURQLEVBRUdDLEVBRkgsQ0FFTUYsUUFGTixFQUdHN0YsTUFISCxDQUdVQSxNQUhWLENBRFU7QUFBQSxLQUFOO0FBQUEsR0FESyxHQU1YO0FBQ0EsWUFBQUEsTUFBTTtBQUFBLFdBQUksVUFBQThGLEVBQUU7QUFBQSxhQUFLQSxFQUFFLEdBQUc3RiwyQkFBT0MsR0FBUCxDQUFXNEYsRUFBWCxFQUFlOUYsTUFBZixDQUFzQkEsTUFBdEIsQ0FBSCxHQUFtQyxFQUExQztBQUFBLEtBQU47QUFBQSxHQVBWO0FBUUQiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5pbXBvcnQge2Zvcm1hdCBhcyBkM0Zvcm1hdH0gZnJvbSAnZDMtZm9ybWF0JztcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50LXRpbWV6b25lJztcblxuaW1wb3J0IHtcbiAgQUxMX0ZJRUxEX1RZUEVTLFxuICBUT09MVElQX0ZPUk1BVFMsXG4gIFRPT0xUSVBfRk9STUFUX1RZUEVTLFxuICBUT09MVElQX0tFWSxcbiAgVG9vbHRpcEZvcm1hdFxufSBmcm9tICdAa2VwbGVyLmdsL2NvbnN0YW50cyc7XG5pbXBvcnQge01pbGxpc2Vjb25kLCBGaWVsZCwgQ29sTWV0YVByb3BzfSBmcm9tICdAa2VwbGVyLmdsL3R5cGVzJztcblxuaW1wb3J0IHtzbmFwVG9NYXJrc30gZnJvbSAnLi9wbG90JztcbmltcG9ydCB7aXNQbGFpbk9iamVjdH0gZnJvbSAnLi91dGlscyc7XG5cbmV4cG9ydCB0eXBlIEZpZWxkRm9ybWF0dGVyID0gKHZhbHVlOiBhbnkpID0+IHN0cmluZztcblxuLyoqXG4gKiBzaW1wbGUgZ2V0dGluZyB1bmlxdWUgdmFsdWVzIG9mIGFuIGFycmF5XG4gKlxuICogQHBhcmFtIHZhbHVlc1xuICogQHJldHVybnMgdW5pcXVlIHZhbHVlc1xuICovXG5leHBvcnQgZnVuY3Rpb24gdW5pcXVlPFQ+KHZhbHVlczogVFtdKSB7XG4gIGNvbnN0IHJlc3VsdHM6IFRbXSA9IFtdO1xuICBjb25zdCB1bmlxdWVTZXQgPSBuZXcgU2V0KHZhbHVlcyk7XG4gIHVuaXF1ZVNldC5mb3JFYWNoKHYgPT4ge1xuICAgIGlmIChub3ROdWxsb3JVbmRlZmluZWQodikpIHtcbiAgICAgIHJlc3VsdHMucHVzaCh2KTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gcmVzdWx0cztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldExhdExuZ0JvdW5kcyhcbiAgcG9pbnRzOiBudW1iZXJbXVtdLFxuICBpZHg6IG51bWJlcixcbiAgbGltaXQ6IFtudW1iZXIsIG51bWJlcl1cbik6IFtudW1iZXIsIG51bWJlcl0gfCBudWxsIHtcbiAgY29uc3QgbGF0cyA9IHBvaW50c1xuICAgIC5tYXAoZCA9PiBOdW1iZXIoQXJyYXkuaXNBcnJheShkKSkgJiYgZFtpZHhdKVxuICAgIC5maWx0ZXIoTnVtYmVyLmlzRmluaXRlKVxuICAgIC5zb3J0KG51bWJlclNvcnQpO1xuXG4gIGlmICghbGF0cy5sZW5ndGgpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIC8vIGNsYW1wIHRvIGxpbWl0XG4gIHJldHVybiBbTWF0aC5tYXgobGF0c1swXSwgbGltaXRbMF0pLCBNYXRoLm1pbihsYXRzW2xhdHMubGVuZ3RoIC0gMV0sIGxpbWl0WzFdKV07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjbGFtcChbbWluLCBtYXhdOiBbbnVtYmVyLCBudW1iZXJdLCB2YWw6IG51bWJlciA9IDApOiBudW1iZXIge1xuICByZXR1cm4gdmFsIDw9IG1pbiA/IG1pbiA6IHZhbCA+PSBtYXggPyBtYXggOiB2YWw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTYW1wbGVEYXRhKGRhdGEsIHNhbXBsZVNpemUgPSA1MDAsIGdldFZhbHVlID0gZCA9PiBkKSB7XG4gIGNvbnN0IHNhbXBsZVN0ZXAgPSBNYXRoLm1heChNYXRoLmZsb29yKGRhdGEubGVuZ3RoIC8gc2FtcGxlU2l6ZSksIDEpO1xuICBjb25zdCBvdXRwdXQ6IGFueVtdID0gW107XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgZGF0YS5sZW5ndGg7IGkgKz0gc2FtcGxlU3RlcCkge1xuICAgIG91dHB1dC5wdXNoKGdldFZhbHVlKGRhdGFbaV0pKTtcbiAgfVxuXG4gIHJldHVybiBvdXRwdXQ7XG59XG5cbi8qKlxuICogQ29udmVydCBkaWZmZXJlbnQgdGltZSBmb3JtYXQgdG8gdW5peCBtaWxsaXNlY29uZHNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRpbWVUb1VuaXhNaWxsaSh2YWx1ZTogc3RyaW5nIHwgbnVtYmVyIHwgRGF0ZSwgZm9ybWF0OiBzdHJpbmcpOiBNaWxsaXNlY29uZCB8IG51bGwge1xuICBpZiAobm90TnVsbG9yVW5kZWZpbmVkKHZhbHVlKSkge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gbW9tZW50LnV0Yyh2YWx1ZSwgZm9ybWF0KS52YWx1ZU9mKCk7XG4gICAgfVxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgICByZXR1cm4gZm9ybWF0ID09PSAneCcgPyB2YWx1ZSAqIDEwMDAgOiB2YWx1ZTtcbiAgICB9XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgcmV0dXJuIHZhbHVlLnZhbHVlT2YoKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59XG5cbi8qKlxuICogd2hldGhlciBudWxsIG9yIHVuZGVmaW5lZFxuICovXG5leHBvcnQgZnVuY3Rpb24gbm90TnVsbG9yVW5kZWZpbmVkPFQgZXh0ZW5kcyBOb25OdWxsYWJsZTxhbnk+PihkOiBUIHwgbnVsbCB8IHVuZGVmaW5lZCk6IGQgaXMgVCB7XG4gIHJldHVybiBkICE9PSB1bmRlZmluZWQgJiYgZCAhPT0gbnVsbDtcbn1cblxuLyoqXG4gKiBXaGV0aGVyIGQgaXMgYSBudW1iZXIsIHRoaXMgZmlsdGVyZWQgb3V0IE5hTiBhcyB3ZWxsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc051bWJlcihkOiBhbnkpOiBib29sZWFuIHtcbiAgcmV0dXJuIE51bWJlci5pc0Zpbml0ZShkKTtcbn1cblxuLyoqXG4gKiB3aGV0aGVyIG9iamVjdCBoYXMgcHJvcGVydHlcbiAqIEBwYXJhbSB7c3RyaW5nfSBwcm9wXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSB5ZXMgb3Igbm9cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGhhc093blByb3BlcnR5PFggZXh0ZW5kcyB7fSwgWSBleHRlbmRzIFByb3BlcnR5S2V5PihcbiAgb2JqOiBYLFxuICBwcm9wOiBZXG4pOiBvYmogaXMgWCAmIFJlY29yZDxZLCB1bmtub3duPiB7XG4gIHJldHVybiBvYmouaGFzT3duUHJvcGVydHkocHJvcCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBudW1iZXJTb3J0KGE6IG51bWJlciwgYjogbnVtYmVyKTogbnVtYmVyIHtcbiAgcmV0dXJuIGEgLSBiO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U29ydGluZ0Z1bmN0aW9uKGZpZWxkVHlwZTogc3RyaW5nKTogdHlwZW9mIG51bWJlclNvcnQgfCB1bmRlZmluZWQge1xuICBzd2l0Y2ggKGZpZWxkVHlwZSkge1xuICAgIGNhc2UgQUxMX0ZJRUxEX1RZUEVTLnJlYWw6XG4gICAgY2FzZSBBTExfRklFTERfVFlQRVMuaW50ZWdlcjpcbiAgICBjYXNlIEFMTF9GSUVMRF9UWVBFUy50aW1lc3RhbXA6XG4gICAgICByZXR1cm4gbnVtYmVyU29ydDtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxufVxuXG4vKipcbiAqIHJvdW5kIG51bWJlciB3aXRoIGV4YWN0IG51bWJlciBvZiBkZWNpbWFsc1xuICogcmV0dXJuIGFzIGEgc3RyaW5nXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcmVjaXNlUm91bmQobnVtOiBudW1iZXIsIGRlY2ltYWxzOiBudW1iZXIpOiBzdHJpbmcge1xuICBjb25zdCB0ID0gTWF0aC5wb3coMTAsIGRlY2ltYWxzKTtcbiAgcmV0dXJuIChcbiAgICBNYXRoLnJvdW5kKFxuICAgICAgbnVtICogdCArIChkZWNpbWFscyA+IDAgPyAxIDogMCkgKiAoTWF0aC5zaWduKG51bSkgKiAoMTAgLyBNYXRoLnBvdygxMDAsIGRlY2ltYWxzKSkpXG4gICAgKSAvIHRcbiAgKS50b0ZpeGVkKGRlY2ltYWxzKTtcbn1cblxuLyoqXG4gKiByb3VuZCBhIGdpdmluZyBudW1iZXIgYXQgbW9zdCA0IGRlY2ltYWwgcGxhY2VzXG4gKiBlLmcuIDEwIC0+IDEwLCAxLjEyMzQ1IC0+IDEuMjM0NSwgMi4wIC0+IDJcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJvdW5kVG9Gb3VyKG51bTogbnVtYmVyKTogbnVtYmVyIHtcbiAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICByZXR1cm4gTnVtYmVyKGAke01hdGgucm91bmQoYCR7bnVtfWUrNGApfWUtNGApO1xufVxuLyoqXG4gKiBnZXQgbnVtYmVyIG9mIGRlY2ltYWxzIHRvIHJvdW5kIHRvIGZvciBzbGlkZXIgZnJvbSBzdGVwXG4gKiBAcGFyYW0gc3RlcFxuICogQHJldHVybnMtIG51bWJlciBvZiBkZWNpbWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRSb3VuZGluZ0RlY2ltYWxGcm9tU3RlcChzdGVwOiBudW1iZXIpOiBudW1iZXIge1xuICBpZiAoaXNOYU4oc3RlcCkpIHtcbiAgICBhc3NlcnQoJ3N0ZXAgaXMgbm90IGEgbnVtYmVyJyk7XG4gICAgYXNzZXJ0KHN0ZXApO1xuICB9XG5cbiAgY29uc3Qgc3RlcFN0ciA9IHN0ZXAudG9TdHJpbmcoKTtcblxuICAvLyBpbiBjYXNlIHRoZSBzdGVwIGlzIGEgdmVyeSBzbWFsbCBudW1iZXIgZS5nLiAxZS03LCByZXR1cm4gZGVjaW1hbCBlLmcuIDcgZGlyZWN0bHlcbiAgY29uc3Qgc3BsaXRFeHBvbmVudGlhbCA9IHN0ZXBTdHIuc3BsaXQoJ2UtJyk7XG4gIGlmIChzcGxpdEV4cG9uZW50aWFsLmxlbmd0aCA9PT0gMikge1xuICAgIGNvbnN0IGNvZWZmWmVybyA9IHNwbGl0RXhwb25lbnRpYWxbMF0uc3BsaXQoJy4nKTtcbiAgICBjb25zdCBjb2VmZkRlY2ltYWwgPSBjb2VmZlplcm8ubGVuZ3RoID09PSAxID8gMCA6IGNvZWZmWmVyb1sxXS5sZW5ndGg7XG4gICAgcmV0dXJuIHBhcnNlSW50KHNwbGl0RXhwb25lbnRpYWxbMV0sIDEwKSArIGNvZWZmRGVjaW1hbDtcbiAgfVxuXG4gIGNvbnN0IHNwbGl0WmVybyA9IHN0ZXBTdHIuc3BsaXQoJy4nKTtcbiAgaWYgKHNwbGl0WmVyby5sZW5ndGggPT09IDEpIHtcbiAgICByZXR1cm4gMDtcbiAgfVxuICByZXR1cm4gc3BsaXRaZXJvWzFdLmxlbmd0aDtcbn1cblxuLyoqXG4gKiBJZiBtYXJrcyBpcyBwcm92aWRlZCwgc25hcCB0byBtYXJrcywgaWYgbm90IG5vcm1hbGl6ZSB0byBzdGVwXG4gKiBAcGFyYW0gdmFsXG4gKiBAcGFyYW0gbWluVmFsdWVcbiAqIEBwYXJhbSBzdGVwXG4gKiBAcGFyYW0gbWFya3NcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZVNsaWRlclZhbHVlKFxuICB2YWw6IG51bWJlcixcbiAgbWluVmFsdWU6IG51bWJlcixcbiAgc3RlcDogbnVtYmVyLFxuICBtYXJrcz86IG51bWJlcltdXG4pOiBudW1iZXIge1xuICBpZiAobWFya3MgJiYgbWFya3MubGVuZ3RoKSB7XG4gICAgLy8gVXNlIGluIHNsaWRlciwgZ2l2ZW4gYSBudW1iZXIgYW5kIGFuIGFycmF5IG9mIG51bWJlcnMsIHJldHVybiB0aGUgbmVhcnMgbnVtYmVyIGZyb20gdGhlIGFycmF5XG4gICAgcmV0dXJuIHNuYXBUb01hcmtzKHZhbCwgbWFya3MpO1xuICB9XG5cbiAgcmV0dXJuIHJvdW5kVmFsVG9TdGVwKG1pblZhbHVlLCBzdGVwLCB2YWwpO1xufVxuXG4vKipcbiAqIHJvdW5kIHRoZSB2YWx1ZSB0byBzdGVwIGZvciB0aGUgc2xpZGVyXG4gKiBAcGFyYW0gbWluVmFsdWVcbiAqIEBwYXJhbSBzdGVwXG4gKiBAcGFyYW0gdmFsXG4gKiBAcmV0dXJucyAtIHJvdW5kZWQgbnVtYmVyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByb3VuZFZhbFRvU3RlcChtaW5WYWx1ZTogbnVtYmVyLCBzdGVwOiBudW1iZXIsIHZhbDogbnVtYmVyKTogbnVtYmVyIHtcbiAgaWYgKCFpc051bWJlcihzdGVwKSB8fCAhaXNOdW1iZXIobWluVmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbDtcbiAgfVxuXG4gIGNvbnN0IGRlY2ltYWwgPSBnZXRSb3VuZGluZ0RlY2ltYWxGcm9tU3RlcChzdGVwKTtcbiAgY29uc3Qgc3RlcHMgPSBNYXRoLmZsb29yKCh2YWwgLSBtaW5WYWx1ZSkgLyBzdGVwKTtcbiAgbGV0IHJlbWFpbiA9IHZhbCAtIChzdGVwcyAqIHN0ZXAgKyBtaW5WYWx1ZSk7XG5cbiAgLy8gaGFzIHRvIHJvdW5kIGJlY2F1c2UgamF2YXNjcmlwdCB0dXJucyAwLjEgaW50byAwLjk5OTk5OTk5OTk5OTk5ODdcbiAgcmVtYWluID0gTnVtYmVyKHByZWNpc2VSb3VuZChyZW1haW4sIDgpKTtcblxuICBsZXQgY2xvc2VzdDogbnVtYmVyO1xuICBpZiAocmVtYWluID09PSAwKSB7XG4gICAgY2xvc2VzdCA9IHZhbDtcbiAgfSBlbHNlIGlmIChyZW1haW4gPCBzdGVwIC8gMikge1xuICAgIGNsb3Nlc3QgPSBzdGVwcyAqIHN0ZXAgKyBtaW5WYWx1ZTtcbiAgfSBlbHNlIHtcbiAgICBjbG9zZXN0ID0gKHN0ZXBzICsgMSkgKiBzdGVwICsgbWluVmFsdWU7XG4gIH1cblxuICAvLyBwcmVjaXNlIHJvdW5kIHJldHVybiBhIHN0cmluZyByb3VuZGVkIHRvIHRoZSBkZWZpbmVkIGRlY2ltYWxcbiAgY29uc3Qgcm91bmRlZCA9IHByZWNpc2VSb3VuZChjbG9zZXN0LCBkZWNpbWFsKTtcblxuICByZXR1cm4gTnVtYmVyKHJvdW5kZWQpO1xufVxuXG4vKipcbiAqIEdldCB0aGUgdmFsdWUgZm9ybWF0IGJhc2VkIG9uIGZpZWxkIGFuZCBmb3JtYXQgb3B0aW9uc1xuICogVXNlZCBpbiByZW5kZXIgdG9vbHRpcCB2YWx1ZVxuICovXG5leHBvcnQgY29uc3QgZGVmYXVsdEZvcm1hdHRlcjogRmllbGRGb3JtYXR0ZXIgPSB2ID0+IChub3ROdWxsb3JVbmRlZmluZWQodikgPyBTdHJpbmcodikgOiAnJyk7XG5cbmV4cG9ydCBjb25zdCBmbG9hdEZvcm1hdHRlciA9IHYgPT4gKGlzTnVtYmVyKHYpID8gU3RyaW5nKHJvdW5kVG9Gb3VyKHYpKSA6ICcnKTtcblxuZXhwb3J0IGNvbnN0IEZJRUxEX0RJU1BMQVlfRk9STUFUOiB7XG4gIFtrZXk6IHN0cmluZ106IEZpZWxkRm9ybWF0dGVyO1xufSA9IHtcbiAgW0FMTF9GSUVMRF9UWVBFUy5zdHJpbmddOiBkZWZhdWx0Rm9ybWF0dGVyLFxuICBbQUxMX0ZJRUxEX1RZUEVTLnRpbWVzdGFtcF06IGRlZmF1bHRGb3JtYXR0ZXIsXG4gIFtBTExfRklFTERfVFlQRVMuaW50ZWdlcl06IGRlZmF1bHRGb3JtYXR0ZXIsXG4gIFtBTExfRklFTERfVFlQRVMucmVhbF06IGRlZmF1bHRGb3JtYXR0ZXIsXG4gIFtBTExfRklFTERfVFlQRVMuYm9vbGVhbl06IGRlZmF1bHRGb3JtYXR0ZXIsXG4gIFtBTExfRklFTERfVFlQRVMuZGF0ZV06IGRlZmF1bHRGb3JtYXR0ZXIsXG4gIFtBTExfRklFTERfVFlQRVMuZ2VvanNvbl06IGQgPT5cbiAgICB0eXBlb2YgZCA9PT0gJ3N0cmluZydcbiAgICAgID8gZFxuICAgICAgOiBpc1BsYWluT2JqZWN0KGQpXG4gICAgICA/IEpTT04uc3RyaW5naWZ5KGQpXG4gICAgICA6IEFycmF5LmlzQXJyYXkoZClcbiAgICAgID8gYFske1N0cmluZyhkKX1dYFxuICAgICAgOiAnJyxcbiAgW0FMTF9GSUVMRF9UWVBFUy5nZW9hcnJvd106IGQgPT4gZCxcbiAgW0FMTF9GSUVMRF9UWVBFUy5vYmplY3RdOiBKU09OLnN0cmluZ2lmeSxcbiAgW0FMTF9GSUVMRF9UWVBFUy5hcnJheV06IEpTT04uc3RyaW5naWZ5XG59O1xuXG4vKipcbiAqIFBhcnNlIGZpZWxkIHZhbHVlIGFuZCB0eXBlIGFuZCByZXR1cm4gYSBzdHJpbmcgcmVwcmVzZW50YXRpb25cbiAqL1xuZXhwb3J0IGNvbnN0IHBhcnNlRmllbGRWYWx1ZSA9ICh2YWx1ZTogYW55LCB0eXBlOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBpZiAoIW5vdE51bGxvclVuZGVmaW5lZCh2YWx1ZSkpIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cbiAgcmV0dXJuIEZJRUxEX0RJU1BMQVlfRk9STUFUW3R5cGVdID8gRklFTERfRElTUExBWV9GT1JNQVRbdHlwZV0odmFsdWUpIDogU3RyaW5nKHZhbHVlKTtcbn07XG5cbmNvbnN0IGFycmF5TW92ZU11dGF0ZSA9IDxUPihhcnJheTogVFtdLCBmcm9tOiBudW1iZXIsIHRvOiBudW1iZXIpID0+IHtcbiAgYXJyYXkuc3BsaWNlKHRvIDwgMCA/IGFycmF5Lmxlbmd0aCArIHRvIDogdG8sIDAsIGFycmF5LnNwbGljZShmcm9tLCAxKVswXSk7XG59O1xuXG4vKipcbiAqXG4gKiBAcGFyYW0gYXJyYXlcbiAqIEBwYXJhbSBmcm9tXG4gKiBAcGFyYW0gdG9cbiAqL1xuZXhwb3J0IGNvbnN0IGFycmF5TW92ZSA9IDxUPihhcnJheTogVFtdLCBmcm9tOiBudW1iZXIsIHRvOiBudW1iZXIpOiBUW10gPT4ge1xuICBhcnJheSA9IGFycmF5LnNsaWNlKCk7XG4gIGFycmF5TW92ZU11dGF0ZShhcnJheSwgZnJvbSwgdG8pO1xuICByZXR1cm4gYXJyYXk7XG59O1xuXG4vKipcbiAqIEdldCB0aGUgdmFsdWUgZm9ybWF0IGJhc2VkIG9uIGZpZWxkIGFuZCBmb3JtYXQgb3B0aW9uc1xuICogVXNlZCBpbiByZW5kZXIgdG9vbHRpcCB2YWx1ZVxuICogQHBhcmFtIGZvcm1hdFxuICogQHBhcmFtIGZpZWxkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRGb3JtYXR0ZXIoXG4gIGZvcm1hdDogc3RyaW5nIHwgUmVjb3JkPHN0cmluZywgc3RyaW5nPixcbiAgZmllbGQ/OiBGaWVsZFxuKTogRmllbGRGb3JtYXR0ZXIge1xuICBpZiAoIWZvcm1hdCkge1xuICAgIHJldHVybiBkZWZhdWx0Rm9ybWF0dGVyO1xuICB9XG4gIGNvbnN0IHRvb2x0aXBGb3JtYXQgPSBPYmplY3QudmFsdWVzKFRPT0xUSVBfRk9STUFUUykuZmluZChmID0+IGZbVE9PTFRJUF9LRVldID09PSBmb3JtYXQpO1xuXG4gIGlmICh0b29sdGlwRm9ybWF0KSB7XG4gICAgcmV0dXJuIGFwcGx5RGVmYXVsdEZvcm1hdCh0b29sdGlwRm9ybWF0IGFzIFRvb2x0aXBGb3JtYXQpO1xuICB9IGVsc2UgaWYgKHR5cGVvZiBmb3JtYXQgPT09ICdzdHJpbmcnICYmIGZpZWxkKSB7XG4gICAgcmV0dXJuIGFwcGx5Q3VzdG9tRm9ybWF0KGZvcm1hdCwgZmllbGQpO1xuICB9XG5cbiAgcmV0dXJuIGRlZmF1bHRGb3JtYXR0ZXI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb2x1bW5Gb3JtYXR0ZXIoY29sTWV0YTogQ29sTWV0YVByb3BzKTogRmllbGRGb3JtYXR0ZXIge1xuICBjb25zdCB7Zm9ybWF0LCBkaXNwbGF5Rm9ybWF0fSA9IGNvbE1ldGE7XG5cbiAgaWYgKCFmb3JtYXQgJiYgIWRpc3BsYXlGb3JtYXQpIHtcbiAgICByZXR1cm4gRklFTERfRElTUExBWV9GT1JNQVRbY29sTWV0YS50eXBlXTtcbiAgfVxuICBjb25zdCB0b29sdGlwRm9ybWF0ID0gT2JqZWN0LnZhbHVlcyhUT09MVElQX0ZPUk1BVFMpLmZpbmQoZiA9PiBmW1RPT0xUSVBfS0VZXSA9PT0gZGlzcGxheUZvcm1hdCk7XG5cbiAgaWYgKHRvb2x0aXBGb3JtYXQpIHtcbiAgICByZXR1cm4gYXBwbHlEZWZhdWx0Rm9ybWF0KHRvb2x0aXBGb3JtYXQpO1xuICB9IGVsc2UgaWYgKHR5cGVvZiBkaXNwbGF5Rm9ybWF0ID09PSAnc3RyaW5nJyAmJiBjb2xNZXRhKSB7XG4gICAgcmV0dXJuIGFwcGx5Q3VzdG9tRm9ybWF0KGRpc3BsYXlGb3JtYXQsIGNvbE1ldGEpO1xuICB9IGVsc2UgaWYgKHR5cGVvZiBkaXNwbGF5Rm9ybWF0ID09PSAnb2JqZWN0Jykge1xuICAgIHJldHVybiBhcHBseVZhbHVlTWFwKGRpc3BsYXlGb3JtYXQpO1xuICB9XG5cbiAgcmV0dXJuIGRlZmF1bHRGb3JtYXR0ZXI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhcHBseVZhbHVlTWFwKGZvcm1hdCkge1xuICByZXR1cm4gdiA9PiBmb3JtYXRbdl07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhcHBseURlZmF1bHRGb3JtYXQodG9vbHRpcEZvcm1hdDogVG9vbHRpcEZvcm1hdCk6ICh2OiBhbnkpID0+IHN0cmluZyB7XG4gIGlmICghdG9vbHRpcEZvcm1hdCB8fCAhdG9vbHRpcEZvcm1hdC5mb3JtYXQpIHtcbiAgICByZXR1cm4gZGVmYXVsdEZvcm1hdHRlcjtcbiAgfVxuXG4gIHN3aXRjaCAodG9vbHRpcEZvcm1hdC50eXBlKSB7XG4gICAgY2FzZSBUT09MVElQX0ZPUk1BVF9UWVBFUy5ERUNJTUFMOlxuICAgICAgcmV0dXJuIGQzRm9ybWF0KHRvb2x0aXBGb3JtYXQuZm9ybWF0KTtcbiAgICBjYXNlIFRPT0xUSVBfRk9STUFUX1RZUEVTLkRBVEU6XG4gICAgY2FzZSBUT09MVElQX0ZPUk1BVF9UWVBFUy5EQVRFX1RJTUU6XG4gICAgICByZXR1cm4gZGF0ZXRpbWVGb3JtYXR0ZXIobnVsbCkodG9vbHRpcEZvcm1hdC5mb3JtYXQpO1xuICAgIGNhc2UgVE9PTFRJUF9GT1JNQVRfVFlQRVMuUEVSQ0VOVEFHRTpcbiAgICAgIHJldHVybiB2ID0+IGAke2QzRm9ybWF0KFRPT0xUSVBfRk9STUFUUy5ERUNJTUFMX0RFQ0lNQUxfRklYRURfMi5mb3JtYXQpKHYpfSVgO1xuICAgIGNhc2UgVE9PTFRJUF9GT1JNQVRfVFlQRVMuQk9PTEVBTjpcbiAgICAgIHJldHVybiBnZXRCb29sZWFuRm9ybWF0dGVyKHRvb2x0aXBGb3JtYXQuZm9ybWF0KTtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGRlZmF1bHRGb3JtYXR0ZXI7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEJvb2xlYW5Gb3JtYXR0ZXIoZm9ybWF0OiBzdHJpbmcpOiBGaWVsZEZvcm1hdHRlciB7XG4gIHN3aXRjaCAoZm9ybWF0KSB7XG4gICAgY2FzZSAnMDEnOlxuICAgICAgcmV0dXJuICh2OiBCb29sZWFuKSA9PiAodiA/ICcxJyA6ICcwJyk7XG4gICAgY2FzZSAneW4nOlxuICAgICAgcmV0dXJuICh2OiBCb29sZWFuKSA9PiAodiA/ICd5ZXMnIDogJ25vJyk7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBkZWZhdWx0Rm9ybWF0dGVyO1xuICB9XG59XG4vLyBBbGxvdyB1c2VyIHRvIHNwZWNpZnkgY3VzdG9tIHRvb2x0aXAgZm9ybWF0IHZpYSBjb25maWdcbmV4cG9ydCBmdW5jdGlvbiBhcHBseUN1c3RvbUZvcm1hdChmb3JtYXQsIGZpZWxkKTogRmllbGRGb3JtYXR0ZXIge1xuICBzd2l0Y2ggKGZpZWxkLnR5cGUpIHtcbiAgICBjYXNlIEFMTF9GSUVMRF9UWVBFUy5yZWFsOlxuICAgIGNhc2UgQUxMX0ZJRUxEX1RZUEVTLmludGVnZXI6XG4gICAgICByZXR1cm4gZDNGb3JtYXQoZm9ybWF0KTtcbiAgICBjYXNlIEFMTF9GSUVMRF9UWVBFUy5kYXRlOlxuICAgIGNhc2UgQUxMX0ZJRUxEX1RZUEVTLnRpbWVzdGFtcDpcbiAgICAgIHJldHVybiBkYXRldGltZUZvcm1hdHRlcihudWxsKShmb3JtYXQpO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gdiA9PiB2O1xuICB9XG59XG5cbmZ1bmN0aW9uIGZvcm1hdExhcmdlTnVtYmVyKG4pIHtcbiAgLy8gU0ktcHJlZml4IHdpdGggNCBzaWduaWZpY2FudCBkaWdpdHNcbiAgcmV0dXJuIGQzRm9ybWF0KCcuNH5zJykobik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXROdW1iZXIobjogbnVtYmVyLCB0eXBlPzogc3RyaW5nKTogc3RyaW5nIHtcbiAgc3dpdGNoICh0eXBlKSB7XG4gICAgY2FzZSBBTExfRklFTERfVFlQRVMuaW50ZWdlcjpcbiAgICAgIGlmIChuIDwgMCkge1xuICAgICAgICByZXR1cm4gYC0ke2Zvcm1hdE51bWJlcigtbiwgJ2ludGVnZXInKX1gO1xuICAgICAgfVxuICAgICAgaWYgKG4gPCAxMDAwKSB7XG4gICAgICAgIHJldHVybiBgJHtNYXRoLnJvdW5kKG4pfWA7XG4gICAgICB9XG4gICAgICBpZiAobiA8IDEwICogMTAwMCkge1xuICAgICAgICByZXR1cm4gZDNGb3JtYXQoJywnKShNYXRoLnJvdW5kKG4pKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmb3JtYXRMYXJnZU51bWJlcihuKTtcbiAgICBjYXNlIEFMTF9GSUVMRF9UWVBFUy5yZWFsOlxuICAgICAgaWYgKG4gPCAwKSB7XG4gICAgICAgIHJldHVybiBgLSR7Zm9ybWF0TnVtYmVyKC1uLCAnbnVtYmVyJyl9YDtcbiAgICAgIH1cbiAgICAgIGlmIChuIDwgMTAwMCkge1xuICAgICAgICByZXR1cm4gZDNGb3JtYXQoJy40fnInKShuKTtcbiAgICAgIH1cbiAgICAgIGlmIChuIDwgMTAgKiAxMDAwKSB7XG4gICAgICAgIHJldHVybiBkM0Zvcm1hdCgnLC4yfmYnKShuKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmb3JtYXRMYXJnZU51bWJlcihuKTtcblxuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gZm9ybWF0TnVtYmVyKG4sICdyZWFsJyk7XG4gIH1cbn1cblxuLyoqXG4gKiBGb3JtYXQgZXBvY2ggbWlsbGlzZWNvbmRzIHdpdGggYSBmb3JtYXQgc3RyaW5nXG4gKiBAdHlwZSB0aW1lem9uZVxuICovXG5leHBvcnQgZnVuY3Rpb24gZGF0ZXRpbWVGb3JtYXR0ZXIoXG4gIHRpbWV6b25lPzogc3RyaW5nIHwgbnVsbFxuKTogKGZvcm1hdD86IHN0cmluZykgPT4gKHRzOiBudW1iZXIpID0+IHN0cmluZyB7XG4gIHJldHVybiB0aW1lem9uZVxuICAgID8gZm9ybWF0ID0+IHRzID0+XG4gICAgICAgIG1vbWVudFxuICAgICAgICAgIC51dGModHMpXG4gICAgICAgICAgLnR6KHRpbWV6b25lKVxuICAgICAgICAgIC5mb3JtYXQoZm9ybWF0KVxuICAgIDogLy8gcmV0dXJuIGVtcHR5IHN0cmluZyBpbnN0ZWFkIG9mICdJbnZhbGlkIGRhdGUnIGlmIHRzIGlzIHVuZGVmaW5lZC9udWxsXG4gICAgICBmb3JtYXQgPT4gdHMgPT4gKHRzID8gbW9tZW50LnV0Yyh0cykuZm9ybWF0KGZvcm1hdCkgOiAnJyk7XG59XG4iXX0=
|
package/dist/dataset-utils.d.ts
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
import { ProcessorResult, RGBColor, RowData, Field, FieldPair, TooltipFields } from '@kepler.gl/types';
|
1
|
+
import { ProcessorResult, RGBColor, RowData, Field, FieldPair, TooltipFields, ProtoDataset } from '@kepler.gl/types';
|
2
2
|
import { TooltipFormat } from '@kepler.gl/constants';
|
3
3
|
export declare const datasetColorMaker: Generator<RGBColor, any, unknown>;
|
4
4
|
/**
|
@@ -35,7 +35,7 @@ export declare const ACCEPTED_ANALYZER_TYPES: any[];
|
|
35
35
|
/**
|
36
36
|
* Validate input data, adding missing field types, rename duplicate columns
|
37
37
|
*/
|
38
|
-
export declare function validateInputData(data:
|
38
|
+
export declare function validateInputData(data: ProtoDataset['data']): ProcessorResult;
|
39
39
|
/**
|
40
40
|
* Getting sample data for analyzing field type.
|
41
41
|
*/
|