kepler.gl 3.1.0-alpha.7 → 3.1.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/src/components/src/common/data-table/index.d.ts +1 -1
- package/dist/src/components/src/common/data-table/option-dropdown.d.ts +3 -3
- package/dist/src/components/src/kepler-gl.d.ts +1 -0
- package/dist/src/reducers/src/vis-state-updaters.d.ts +1 -0
- package/dist/src/reducers/src/vis-state.d.ts +4 -0
- package/dist/src/utils/src/application-config.d.ts +2 -0
- package/package.json +3 -2
- package/src/actions/package.json +8 -8
- package/src/ai-assistant/dist/components/ai-assistant-config.js +66 -53
- package/src/ai-assistant/package.json +10 -9
- package/src/ai-assistant/src/components/ai-assistant-config.tsx +62 -48
- package/src/ai-assistant/src/config/models.json +32 -0
- package/src/cloud-providers/package.json +2 -2
- package/src/common-utils/package.json +3 -3
- package/src/components/dist/common/data-table/header-cell.js +10 -10
- package/src/components/dist/common/data-table/index.d.ts +1 -1
- package/src/components/dist/common/data-table/index.js +1 -1
- package/src/components/dist/common/data-table/option-dropdown.d.ts +3 -3
- package/src/components/dist/common/data-table/option-dropdown.js +5 -5
- package/src/components/dist/kepler-gl.d.ts +1 -0
- package/src/components/dist/modals/save-map-modal.js +4 -3
- package/src/components/package.json +15 -15
- package/src/components/src/common/data-table/header-cell.tsx +5 -3
- package/src/components/src/common/data-table/index.tsx +1 -1
- package/src/components/src/common/data-table/option-dropdown.tsx +7 -7
- package/src/components/src/modals/save-map-modal.tsx +6 -2
- package/src/constants/dist/default-settings.js +8 -5
- package/src/constants/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/72/80/7a7c561d7985e92aab7b9683e7baf5a0286b353a8f2609c4c71099f668d012be027929e4bbac937f9aa0c9a61be3bd4405136f582895f05aa0313c8efa42 +1 -0
- package/src/constants/node_modules/.cache/terser-webpack-plugin/index-v5/f0/6e/aadf3c48345aa72e7b2fb92e8c9788d04986b55caf83daa3fbd749c37c44 +2 -0
- package/src/constants/package.json +2 -2
- package/src/constants/src/default-settings.ts +8 -3
- package/src/constants/umd/keplergl.min.js +1 -1
- package/src/deckgl-arrow-layers/package.json +1 -1
- package/src/deckgl-layers/package.json +4 -4
- package/src/duckdb/dist/components/preview-data-panel.js +2 -9
- package/src/duckdb/dist/components/sql-panel.js +2 -2
- package/src/duckdb/dist/plugin.js +8 -2
- package/src/duckdb/package.json +6 -6
- package/src/duckdb/src/components/preview-data-panel.tsx +0 -3
- package/src/duckdb/src/components/sql-panel.tsx +1 -1
- package/src/duckdb/src/plugin.ts +7 -1
- package/src/effects/package.json +5 -5
- package/src/layers/dist/index.d.ts +3 -0
- package/src/layers/dist/index.js +6 -7
- package/src/layers/package.json +9 -9
- package/src/layers/src/index.ts +5 -5
- package/src/localization/package.json +1 -1
- package/src/processors/package.json +7 -7
- package/src/reducers/dist/vis-state-updaters.d.ts +1 -0
- package/src/reducers/dist/vis-state-updaters.js +2 -2
- package/src/reducers/dist/vis-state.d.ts +4 -0
- package/src/reducers/package.json +16 -16
- package/src/reducers/src/vis-state-updaters.ts +5 -2
- package/src/schemas/dist/dataset-schema.js +32 -2
- package/src/schemas/package.json +8 -7
- package/src/schemas/src/dataset-schema.ts +34 -1
- package/src/styles/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/5f/aa/96c67b383dbcd2b95625113a5389c6078fd8a53e6fc73a054229709f2dac1e0a409e7117049485a569fbebf8434a319451842671398904bfe1a7f7b5991c +1 -0
- package/src/styles/node_modules/.cache/terser-webpack-plugin/index-v5/c1/39/f7cd1d5947ec6e5d82bfa07041271344eb02f9e67bf5823acf2f22c2d01f +2 -0
- package/src/styles/package.json +2 -2
- package/src/styles/umd/keplergl.min.js +1 -1
- package/src/table/package.json +5 -5
- package/src/tasks/package.json +2 -2
- package/src/types/package.json +1 -1
- package/src/utils/dist/application-config.d.ts +2 -0
- package/src/utils/dist/application-config.js +4 -2
- package/src/utils/package.json +4 -4
- package/src/utils/src/application-config.ts +9 -1
- package/umd/keplergl.min.js +1151 -1149
|
@@ -32,6 +32,7 @@ export declare const visStateReducerFactory: (initialState?: {}) => import("redu
|
|
|
32
32
|
"3D": typeof import("@kepler.gl/layers").ScenegraphLayer;
|
|
33
33
|
trip: typeof import("@kepler.gl/layers/dist/trip-layer/trip-layer").default;
|
|
34
34
|
s2: typeof import("@kepler.gl/layers/dist/s2-geometry-layer/s2-geometry-layer").default;
|
|
35
|
+
vectorTile: typeof import("@kepler.gl/layers").VectorTileLayer;
|
|
35
36
|
};
|
|
36
37
|
animationConfig: import("@kepler.gl/types").AnimationConfig;
|
|
37
38
|
editor: import("@kepler.gl/types").Editor;
|
|
@@ -84,6 +85,7 @@ export declare const visStateReducerFactory: (initialState?: {}) => import("redu
|
|
|
84
85
|
"3D": typeof import("@kepler.gl/layers").ScenegraphLayer;
|
|
85
86
|
trip: typeof import("@kepler.gl/layers/dist/trip-layer/trip-layer").default;
|
|
86
87
|
s2: typeof import("@kepler.gl/layers/dist/s2-geometry-layer/s2-geometry-layer").default;
|
|
88
|
+
vectorTile: typeof import("@kepler.gl/layers").VectorTileLayer;
|
|
87
89
|
};
|
|
88
90
|
animationConfig: import("@kepler.gl/types").AnimationConfig;
|
|
89
91
|
editor: import("@kepler.gl/types").Editor;
|
|
@@ -137,6 +139,7 @@ declare const _default: import("redux-actions").ReduxCompatibleReducer<{
|
|
|
137
139
|
"3D": typeof import("@kepler.gl/layers").ScenegraphLayer;
|
|
138
140
|
trip: typeof import("@kepler.gl/layers/dist/trip-layer/trip-layer").default;
|
|
139
141
|
s2: typeof import("@kepler.gl/layers/dist/s2-geometry-layer/s2-geometry-layer").default;
|
|
142
|
+
vectorTile: typeof import("@kepler.gl/layers").VectorTileLayer;
|
|
140
143
|
};
|
|
141
144
|
animationConfig: import("@kepler.gl/types").AnimationConfig;
|
|
142
145
|
editor: import("@kepler.gl/types").Editor;
|
|
@@ -189,6 +192,7 @@ declare const _default: import("redux-actions").ReduxCompatibleReducer<{
|
|
|
189
192
|
"3D": typeof import("@kepler.gl/layers").ScenegraphLayer;
|
|
190
193
|
trip: typeof import("@kepler.gl/layers/dist/trip-layer/trip-layer").default;
|
|
191
194
|
s2: typeof import("@kepler.gl/layers/dist/s2-geometry-layer/s2-geometry-layer").default;
|
|
195
|
+
vectorTile: typeof import("@kepler.gl/layers").VectorTileLayer;
|
|
192
196
|
};
|
|
193
197
|
animationConfig: import("@kepler.gl/types").AnimationConfig;
|
|
194
198
|
editor: import("@kepler.gl/types").Editor;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kepler.gl/reducers",
|
|
3
3
|
"author": "Shan He <shan@uber.com>",
|
|
4
|
-
"version": "3.1.0
|
|
4
|
+
"version": "3.1.0",
|
|
5
5
|
"description": "kepler.gl constants used by kepler.gl components, actions and reducers",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"main": "dist/index.js",
|
|
@@ -31,21 +31,21 @@
|
|
|
31
31
|
],
|
|
32
32
|
"dependencies": {
|
|
33
33
|
"@dnd-kit/sortable": "^8.0.0",
|
|
34
|
-
"@kepler.gl/actions": "3.1.0
|
|
35
|
-
"@kepler.gl/cloud-providers": "3.1.0
|
|
36
|
-
"@kepler.gl/common-utils": "3.1.0
|
|
37
|
-
"@kepler.gl/constants": "3.1.0
|
|
38
|
-
"@kepler.gl/deckgl-arrow-layers": "3.1.0
|
|
39
|
-
"@kepler.gl/deckgl-layers": "3.1.0
|
|
40
|
-
"@kepler.gl/effects": "3.1.0
|
|
41
|
-
"@kepler.gl/layers": "3.1.0
|
|
42
|
-
"@kepler.gl/localization": "3.1.0
|
|
43
|
-
"@kepler.gl/processors": "3.1.0
|
|
44
|
-
"@kepler.gl/schemas": "3.1.0
|
|
45
|
-
"@kepler.gl/table": "3.1.0
|
|
46
|
-
"@kepler.gl/tasks": "3.1.0
|
|
47
|
-
"@kepler.gl/types": "3.1.0
|
|
48
|
-
"@kepler.gl/utils": "3.1.0
|
|
34
|
+
"@kepler.gl/actions": "3.1.0",
|
|
35
|
+
"@kepler.gl/cloud-providers": "3.1.0",
|
|
36
|
+
"@kepler.gl/common-utils": "3.1.0",
|
|
37
|
+
"@kepler.gl/constants": "3.1.0",
|
|
38
|
+
"@kepler.gl/deckgl-arrow-layers": "3.1.0",
|
|
39
|
+
"@kepler.gl/deckgl-layers": "3.1.0",
|
|
40
|
+
"@kepler.gl/effects": "3.1.0",
|
|
41
|
+
"@kepler.gl/layers": "3.1.0",
|
|
42
|
+
"@kepler.gl/localization": "3.1.0",
|
|
43
|
+
"@kepler.gl/processors": "3.1.0",
|
|
44
|
+
"@kepler.gl/schemas": "3.1.0",
|
|
45
|
+
"@kepler.gl/table": "3.1.0",
|
|
46
|
+
"@kepler.gl/tasks": "3.1.0",
|
|
47
|
+
"@kepler.gl/types": "3.1.0",
|
|
48
|
+
"@kepler.gl/utils": "3.1.0",
|
|
49
49
|
"@loaders.gl/loader-utils": "^4.3.2",
|
|
50
50
|
"@mapbox/geo-viewport": "^0.4.1",
|
|
51
51
|
"@math.gl/web-mercator": "^3.6.2",
|
|
@@ -72,7 +72,8 @@ import {
|
|
|
72
72
|
updateFilterPlot,
|
|
73
73
|
removeFilterPlot,
|
|
74
74
|
isLayerAnimatable,
|
|
75
|
-
isSideFilter
|
|
75
|
+
isSideFilter,
|
|
76
|
+
getApplicationConfig
|
|
76
77
|
} from '@kepler.gl/utils';
|
|
77
78
|
import {generateHashId, toArray} from '@kepler.gl/common-utils';
|
|
78
79
|
// Mergers
|
|
@@ -2789,7 +2790,9 @@ export const nextFileBatchUpdater = (
|
|
|
2789
2790
|
});
|
|
2790
2791
|
|
|
2791
2792
|
return withTask(stateWithProgress, [
|
|
2792
|
-
...(
|
|
2793
|
+
...(getApplicationConfig().useArrowProgressiveLoading &&
|
|
2794
|
+
fileName.endsWith('arrow') &&
|
|
2795
|
+
accumulated?.data?.length > 0
|
|
2793
2796
|
? [
|
|
2794
2797
|
PROCESS_FILE_DATA({content: accumulated, fileCache: []}).bimap(
|
|
2795
2798
|
result => loadFilesSuccess(result),
|
|
@@ -13,10 +13,12 @@ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/ge
|
|
|
13
13
|
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
14
14
|
var _lodash = _interopRequireDefault(require("lodash.pick"));
|
|
15
15
|
var _window = require("global/window");
|
|
16
|
+
var _apacheArrow = require("apache-arrow");
|
|
16
17
|
var _constants = require("@kepler.gl/constants");
|
|
17
18
|
var _versions = require("./versions");
|
|
18
19
|
var _schema = _interopRequireDefault(require("./schema"));
|
|
19
20
|
var _commonUtils = require("@kepler.gl/common-utils");
|
|
21
|
+
var _utils = require("@kepler.gl/utils");
|
|
20
22
|
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
21
23
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
22
24
|
function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2["default"])(o), (0, _possibleConstructorReturn2["default"])(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], (0, _getPrototypeOf2["default"])(t).constructor) : o.apply(t, e)); }
|
|
@@ -76,6 +78,34 @@ var propertiesV1 = exports.propertiesV1 = _objectSpread(_objectSpread({}, proper
|
|
|
76
78
|
metadata: null,
|
|
77
79
|
disableDataOperation: null
|
|
78
80
|
});
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* TODO Consider moving this cast to ArrowDataContainer?
|
|
84
|
+
* Prepare a data container for export as part of json / html.
|
|
85
|
+
* 1) Arrow tables can store Timestamps as BigInts, so convert numbers to ISOStrings compatible with Kepler.gl's TIMESTAMP.
|
|
86
|
+
* @param dataContainer A data container to flatten.
|
|
87
|
+
* @returns Row based data.
|
|
88
|
+
*/
|
|
89
|
+
var getAllDataForSaving = function getAllDataForSaving(dataContainer) {
|
|
90
|
+
var allData = dataContainer.flattenData();
|
|
91
|
+
if (dataContainer instanceof _utils.ArrowDataContainer) {
|
|
92
|
+
var numColumns = dataContainer.numColumns();
|
|
93
|
+
var _loop = function _loop(columnIndex) {
|
|
94
|
+
var _column$type;
|
|
95
|
+
var column = dataContainer.getColumn(columnIndex);
|
|
96
|
+
var typeId = (_column$type = column.type) === null || _column$type === void 0 ? void 0 : _column$type.typeId;
|
|
97
|
+
if (typeId === _apacheArrow.Type.Timestamp || typeId === _apacheArrow.Type.Date || typeId === _apacheArrow.Type.Time) {
|
|
98
|
+
allData.forEach(function (row) {
|
|
99
|
+
row[columnIndex] = new Date(row[columnIndex]).toISOString();
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
};
|
|
103
|
+
for (var columnIndex = 0; columnIndex < numColumns; ++columnIndex) {
|
|
104
|
+
_loop(columnIndex);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
return allData;
|
|
108
|
+
};
|
|
79
109
|
var DatasetSchema = exports.DatasetSchema = /*#__PURE__*/function (_Schema2) {
|
|
80
110
|
function DatasetSchema() {
|
|
81
111
|
var _this2;
|
|
@@ -92,7 +122,7 @@ var DatasetSchema = exports.DatasetSchema = /*#__PURE__*/function (_Schema2) {
|
|
|
92
122
|
key: "save",
|
|
93
123
|
value: function save(dataset) {
|
|
94
124
|
var datasetFlattened = dataset.dataContainer ? _objectSpread(_objectSpread({}, dataset), {}, {
|
|
95
|
-
allData: dataset.dataContainer
|
|
125
|
+
allData: getAllDataForSaving(dataset.dataContainer),
|
|
96
126
|
// we use flattenData to save arrow tables,
|
|
97
127
|
// but once flattened it's not an arrow file anymore.
|
|
98
128
|
metadata: _objectSpread(_objectSpread({}, dataset.metadata), dataset.metadata.format === _constants.DATASET_FORMATS.arrow ? {
|
|
@@ -160,4 +190,4 @@ var datasetSchema = exports.datasetSchema = (0, _defineProperty2["default"])((0,
|
|
|
160
190
|
properties: propertiesV1
|
|
161
191
|
}));
|
|
162
192
|
var _default = exports["default"] = datasetSchema;
|
|
163
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9kYXNoIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfd2luZG93IiwiX2NvbnN0YW50cyIsIl92ZXJzaW9ucyIsIl9zY2hlbWEiLCJfY29tbW9uVXRpbHMiLCJvd25LZXlzIiwiZSIsInIiLCJ0IiwiT2JqZWN0Iiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsIm8iLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkZWZpbmVQcm9wZXJ0eSIsIl9jYWxsU3VwZXIiLCJfZ2V0UHJvdG90eXBlT2YyIiwiX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4yIiwiX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCIsIlJlZmxlY3QiLCJjb25zdHJ1Y3QiLCJjb25zdHJ1Y3RvciIsIkJvb2xlYW4iLCJwcm90b3R5cGUiLCJ2YWx1ZU9mIiwiY2FsbCIsImZpZWxkUHJvcGVydGllc1YwIiwiZXhwb3J0cyIsIm5hbWUiLCJ0eXBlIiwiZmllbGRQcm9wZXJ0aWVzVjEiLCJmb3JtYXQiLCJhbmFseXplclR5cGUiLCJtZXRhZGF0YSIsIkZpZWxkU2NoZW1hIiwiX1NjaGVtYSIsIl9jbGFzc0NhbGxDaGVjazIiLCJfaW5oZXJpdHMyIiwiX2NyZWF0ZUNsYXNzMiIsImtleSIsInZhbHVlIiwic2F2ZSIsImZpZWxkcyIsIl90aGlzIiwibWFwIiwiZiIsInNhdmVQcm9wZXJ0aWVzT3JBcHBseVNjaGVtYSIsImxvYWQiLCJTY2hlbWEiLCJwcm9wZXJ0aWVzVjAiLCJpZCIsImxhYmVsIiwiY29sb3IiLCJhbGxEYXRhIiwidmVyc2lvbiIsIlZFUlNJT05TIiwidjAiLCJwcm9wZXJ0aWVzIiwicHJvcGVydGllc1YxIiwidjEiLCJkaXNhYmxlRGF0YU9wZXJhdGlvbiIsIkRhdGFzZXRTY2hlbWEiLCJfU2NoZW1hMiIsIl90aGlzMiIsIl9sZW4iLCJhcmdzIiwiQXJyYXkiLCJfa2V5IiwiY29uY2F0IiwiZGF0YXNldCIsImRhdGFzZXRGbGF0dGVuZWQiLCJkYXRhQ29udGFpbmVyIiwiZmxhdHRlbkRhdGEiLCJEQVRBU0VUX0ZPUk1BVFMiLCJhcnJvdyIsInJvdyIsInVwZGF0ZWRGaWVsZHMiLCJuZWVkQ2FsY3VsYXRlTWV0YSIsImhhc093blByb3BlcnR5IiwiZmllbGRPcmRlciIsInNhbXBsZURhdGEiLCJnZXRTYW1wbGVGb3JUeXBlQW5hbHl6ZSIsInJvd3MiLCJtZXRhIiwiZ2V0RmllbGRzRnJvbURhdGEiLCJpIiwicGljayIsImdsb2JhbENvbnNvbGUiLCJ3YXJuIiwiZGF0YSIsImluZm8iLCJkYXRhc2V0U2NoZW1hIiwiX2RlZmF1bHQiXSwic291cmNlcyI6WyIuLi9zcmMvZGF0YXNldC1zY2hlbWEudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IHBpY2sgZnJvbSAnbG9kYXNoLnBpY2snO1xuaW1wb3J0IHtjb25zb2xlIGFzIGdsb2JhbENvbnNvbGV9IGZyb20gJ2dsb2JhbC93aW5kb3cnO1xuXG5pbXBvcnQge0RBVEFTRVRfRk9STUFUU30gZnJvbSAnQGtlcGxlci5nbC9jb25zdGFudHMnO1xuaW1wb3J0IHtQcm90b0RhdGFzZXQsIFJHQkNvbG9yLCBKc29uT2JqZWN0fSBmcm9tICdAa2VwbGVyLmdsL3R5cGVzJztcbmltcG9ydCB7S2VwbGVyVGFibGV9IGZyb20gJ0BrZXBsZXIuZ2wvdGFibGUnO1xuaW1wb3J0IHtWRVJTSU9OU30gZnJvbSAnLi92ZXJzaW9ucyc7XG5pbXBvcnQgU2NoZW1hIGZyb20gJy4vc2NoZW1hJztcbmltcG9ydCB7Z2V0RmllbGRzRnJvbURhdGEsIGdldFNhbXBsZUZvclR5cGVBbmFseXplfSBmcm9tICdAa2VwbGVyLmdsL2NvbW1vbi11dGlscyc7XG5cbmV4cG9ydCB0eXBlIFNhdmVkRmllbGQgPSB7XG4gIG5hbWU6IHN0cmluZztcbiAgdHlwZTogc3RyaW5nO1xuICBmb3JtYXQ/OiBzdHJpbmc7XG4gIGFuYWx5emVyVHlwZT86IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIFBhcnNlZEZpZWxkID0ge1xuICBuYW1lOiBzdHJpbmc7XG4gIHR5cGU6IHN0cmluZztcbiAgZm9ybWF0OiBzdHJpbmc7XG4gIGFuYWx5emVyVHlwZTogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgU2F2ZWREYXRhc2V0VjEgPSB7XG4gIHZlcnNpb246ICd2MSc7XG4gIGRhdGE6IHtcbiAgICBpZDogc3RyaW5nO1xuICAgIGxhYmVsOiBzdHJpbmc7XG4gICAgY29sb3I6IFJHQkNvbG9yO1xuICAgIGFsbERhdGE6IGFueVtdW107XG4gICAgZmllbGRzOiBTYXZlZEZpZWxkW107XG4gICAgdHlwZT86IHN0cmluZztcbiAgICBtZXRhZGF0YT86IEpzb25PYmplY3Q7XG4gICAgZGlzYWJsZURhdGFPcGVyYXRpb24/OiBib29sZWFuO1xuICB9O1xufTtcblxuZXhwb3J0IHR5cGUgUGFyc2VkRGF0YXNldCA9IHtcbiAgZGF0YToge1xuICAgIGZpZWxkczogUGFyc2VkRmllbGRbXTtcbiAgICByb3dzOiBhbnlbXVtdO1xuICB9O1xuICBpbmZvOiB7XG4gICAgaWQ/OiBzdHJpbmc7XG4gICAgbGFiZWw/OiBzdHJpbmc7XG4gICAgY29sb3I/OiBSR0JDb2xvcjtcbiAgfTtcbn07XG5cbi8vIHZlcnNpb24gdjBcbmV4cG9ydCBjb25zdCBmaWVsZFByb3BlcnRpZXNWMCA9IHtcbiAgbmFtZTogbnVsbCxcbiAgdHlwZTogbnVsbFxufTtcblxuZXhwb3J0IGNvbnN0IGZpZWxkUHJvcGVydGllc1YxID0ge1xuICBuYW1lOiBudWxsLFxuICB0eXBlOiBudWxsLFxuICBmb3JtYXQ6IG51bGwsXG4gIGFuYWx5emVyVHlwZTogbnVsbCxcbiAgbWV0YWRhdGE6IG51bGxcbn07XG5cbmV4cG9ydCBjbGFzcyBGaWVsZFNjaGVtYSBleHRlbmRzIFNjaGVtYSB7XG4gIHNhdmUoZmllbGRzKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIFt0aGlzLmtleV06IGZpZWxkcy5tYXAoZiA9PiB0aGlzLnNhdmVQcm9wZXJ0aWVzT3JBcHBseVNjaGVtYShmKVt0aGlzLmtleV0pXG4gICAgfTtcbiAgfVxuICBsb2FkKGZpZWxkcykge1xuICAgIHJldHVybiB7W3RoaXMua2V5XTogZmllbGRzfTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgcHJvcGVydGllc1YwID0ge1xuICBpZDogbnVsbCxcbiAgbGFiZWw6IG51bGwsXG4gIGNvbG9yOiBudWxsLFxuICBhbGxEYXRhOiBudWxsLFxuICBmaWVsZHM6IG5ldyBGaWVsZFNjaGVtYSh7XG4gICAga2V5OiAnZmllbGRzJyxcbiAgICB2ZXJzaW9uOiBWRVJTSU9OUy52MCxcbiAgICBwcm9wZXJ0aWVzOiBmaWVsZFByb3BlcnRpZXNWMFxuICB9KVxufTtcblxuZXhwb3J0IGNvbnN0IHByb3BlcnRpZXNWMSA9IHtcbiAgLi4ucHJvcGVydGllc1YwLFxuICBmaWVsZHM6IG5ldyBGaWVsZFNjaGVtYSh7XG4gICAga2V5OiAnZmllbGRzJyxcbiAgICB2ZXJzaW9uOiBWRVJTSU9OUy52MSxcbiAgICBwcm9wZXJ0aWVzOiBmaWVsZFByb3BlcnRpZXNWMVxuICB9KSxcbiAgdHlwZTogbnVsbCxcbiAgbWV0YWRhdGE6IG51bGwsXG4gIGRpc2FibGVEYXRhT3BlcmF0aW9uOiBudWxsXG59O1xuXG5leHBvcnQgY2xhc3MgRGF0YXNldFNjaGVtYSBleHRlbmRzIFNjaGVtYSB7XG4gIGtleSA9ICdkYXRhc2V0JztcblxuICBzYXZlKGRhdGFzZXQ6IEtlcGxlclRhYmxlKTogU2F2ZWREYXRhc2V0VjFbJ2RhdGEnXSB7XG4gICAgY29uc3QgZGF0YXNldEZsYXR0ZW5lZCA9IGRhdGFzZXQuZGF0YUNvbnRhaW5lclxuICAgICAgPyB7XG4gICAgICAgICAgLi4uZGF0YXNldCxcbiAgICAgICAgICBhbGxEYXRhOiBkYXRhc2V0LmRhdGFDb250YWluZXIuZmxhdHRlbkRhdGEoKSxcbiAgICAgICAgICAvLyB3ZSB1c2UgZmxhdHRlbkRhdGEgdG8gc2F2ZSBhcnJvdyB0YWJsZXMsXG4gICAgICAgICAgLy8gYnV0IG9uY2UgZmxhdHRlbmVkIGl0J3Mgbm90IGFuIGFycm93IGZpbGUgYW55bW9yZS5cbiAgICAgICAgICBtZXRhZGF0YToge1xuICAgICAgICAgICAgLi4uZGF0YXNldC5tZXRhZGF0YSxcbiAgICAgICAgICAgIC4uLihkYXRhc2V0Lm1ldGFkYXRhLmZvcm1hdCA9PT0gREFUQVNFVF9GT1JNQVRTLmFycm93XG4gICAgICAgICAgICAgID8ge2Zvcm1hdDogREFUQVNFVF9GT1JNQVRTLnJvd31cbiAgICAgICAgICAgICAgOiB7fSlcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIDogZGF0YXNldDtcblxuICAgIHJldHVybiB0aGlzLnNhdmVQcm9wZXJ0aWVzT3JBcHBseVNjaGVtYShkYXRhc2V0RmxhdHRlbmVkKVt0aGlzLmtleV07XG4gIH1cbiAgbG9hZChkYXRhc2V0OiBTYXZlZERhdGFzZXRWMVsnZGF0YSddKTogUHJvdG9EYXRhc2V0IHtcbiAgICBjb25zdCB7ZmllbGRzLCBhbGxEYXRhfSA9IGRhdGFzZXQ7XG4gICAgbGV0IHVwZGF0ZWRGaWVsZHMgPSBmaWVsZHM7XG5cbiAgICAvLyByZWNhbGN1bGF0ZSBmaWVsZCB0eXBlXG4gICAgLy8gYmVjYXVzZSB3ZSBoYXZlIHVwZGF0ZWQgdHlwZS1hbmFseXplclxuICAgIC8vIHdlIG5lZWQgdG8gYWRkIGZvcm1hdCB0byBlYWNoIGZpZWxkXG4gICAgY29uc3QgbmVlZENhbGN1bGF0ZU1ldGEgPVxuICAgICAgZmllbGRzWzBdICYmXG4gICAgICAoIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChmaWVsZHNbMF0sICdmb3JtYXQnKSB8fFxuICAgICAgICAhT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGZpZWxkc1swXSwgJ2FuYWx5emVyVHlwZScpKTtcblxuICAgIGlmIChuZWVkQ2FsY3VsYXRlTWV0YSkge1xuICAgICAgY29uc3QgZmllbGRPcmRlciA9IGZpZWxkcy5tYXAoZiA9PiBmLm5hbWUpO1xuXG4gICAgICBjb25zdCBzYW1wbGVEYXRhID0gZ2V0U2FtcGxlRm9yVHlwZUFuYWx5emUoe1xuICAgICAgICBmaWVsZHM6IGZpZWxkT3JkZXIsXG4gICAgICAgIHJvd3M6IGFsbERhdGFcbiAgICAgIH0pO1xuICAgICAgY29uc3QgbWV0YSA9IGdldEZpZWxkc0Zyb21EYXRhKHNhbXBsZURhdGEsIGZpZWxkT3JkZXIpO1xuXG4gICAgICB1cGRhdGVkRmllbGRzID0gbWV0YS5tYXAoKGYsIGkpID0+ICh7XG4gICAgICAgIC4uLnBpY2sobWV0YVtpXSwgWyduYW1lJywgJ3R5cGUnLCAnZm9ybWF0J10pLFxuICAgICAgICBhbmFseXplclR5cGU6IG1ldGFbaV0uYW5hbHl6ZXJUeXBlXG4gICAgICB9KSk7XG5cbiAgICAgIHVwZGF0ZWRGaWVsZHMuZm9yRWFjaCgoZiwgaSkgPT4ge1xuICAgICAgICBpZiAoZmllbGRzW2ldLnR5cGUgIT09IGYudHlwZSkge1xuICAgICAgICAgIC8vIGlmIG5ld2x5IGRldGVjdGVkIGZpZWxkIHR5cGUgaXMgZGlmZmVyZW50IGZyb20gc2F2ZWQgdHlwZVxuICAgICAgICAgIC8vIHdlIGxvZyBpdCBidXQgd29uJ3QgdXBkYXRlIGl0LCBjYXVzZSB3ZSBkb24ndCB3YW50IHRvIGJyZWFrIHBlb3BsZSdzIG1hcFxuICAgICAgICAgIGdsb2JhbENvbnNvbGUud2FybihgZGV0ZWN0ICR7Zi5uYW1lfSB0eXBlIGlzIG5vdyAke2YudHlwZX0gaW5zdGVhZCBvZiAke2ZpZWxkc1tpXS50eXBlfWApO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBnZXQgZm9ybWF0IG9mIGFsbCBmaWVsZHNcbiAgICByZXR1cm4ge1xuICAgICAgZGF0YToge2ZpZWxkczogdXBkYXRlZEZpZWxkcywgcm93czogZGF0YXNldC5hbGxEYXRhfSxcbiAgICAgIGluZm86IHBpY2soZGF0YXNldCwgWydpZCcsICdsYWJlbCcsICdjb2xvcicsICd0eXBlJ10pLFxuICAgICAgLi4uKGRhdGFzZXQubWV0YWRhdGEgPyB7bWV0YWRhdGE6IGRhdGFzZXQubWV0YWRhdGF9IDoge30pLFxuICAgICAgLi4uKGRhdGFzZXQuZGlzYWJsZURhdGFPcGVyYXRpb24gPyB7ZGlzYWJsZURhdGFPcGVyYXRpb246IGRhdGFzZXQuZGlzYWJsZURhdGFPcGVyYXRpb259IDoge30pXG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgZGF0YXNldFNjaGVtYSA9IHtcbiAgW1ZFUlNJT05TLnYwXTogbmV3IERhdGFzZXRTY2hlbWEoe1xuICAgIGtleTogJ2RhdGFzZXQnLFxuICAgIHZlcnNpb246IFZFUlNJT05TLnYwLFxuICAgIHByb3BlcnRpZXM6IHByb3BlcnRpZXNWMFxuICB9KSxcbiAgW1ZFUlNJT05TLnYxXTogbmV3IERhdGFzZXRTY2hlbWEoe1xuICAgIGtleTogJ2RhdGFzZXQnLFxuICAgIHZlcnNpb246IFZFUlNJT05TLnYxLFxuICAgIHByb3BlcnRpZXM6IHByb3BlcnRpZXNWMVxuICB9KVxufTtcblxuZXhwb3J0IGRlZmF1bHQgZGF0YXNldFNjaGVtYTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUdBLElBQUFBLE9BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLE9BQUEsR0FBQUQsT0FBQTtBQUVBLElBQUFFLFVBQUEsR0FBQUYsT0FBQTtBQUdBLElBQUFHLFNBQUEsR0FBQUgsT0FBQTtBQUNBLElBQUFJLE9BQUEsR0FBQUwsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFLLFlBQUEsR0FBQUwsT0FB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
|
|
193
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9kYXNoIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfd2luZG93IiwiX2FwYWNoZUFycm93IiwiX2NvbnN0YW50cyIsIl92ZXJzaW9ucyIsIl9zY2hlbWEiLCJfY29tbW9uVXRpbHMiLCJfdXRpbHMiLCJvd25LZXlzIiwiZSIsInIiLCJ0IiwiT2JqZWN0Iiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsIm8iLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkZWZpbmVQcm9wZXJ0eSIsIl9jYWxsU3VwZXIiLCJfZ2V0UHJvdG90eXBlT2YyIiwiX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4yIiwiX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCIsIlJlZmxlY3QiLCJjb25zdHJ1Y3QiLCJjb25zdHJ1Y3RvciIsIkJvb2xlYW4iLCJwcm90b3R5cGUiLCJ2YWx1ZU9mIiwiY2FsbCIsImZpZWxkUHJvcGVydGllc1YwIiwiZXhwb3J0cyIsIm5hbWUiLCJ0eXBlIiwiZmllbGRQcm9wZXJ0aWVzVjEiLCJmb3JtYXQiLCJhbmFseXplclR5cGUiLCJtZXRhZGF0YSIsIkZpZWxkU2NoZW1hIiwiX1NjaGVtYSIsIl9jbGFzc0NhbGxDaGVjazIiLCJfaW5oZXJpdHMyIiwiX2NyZWF0ZUNsYXNzMiIsImtleSIsInZhbHVlIiwic2F2ZSIsImZpZWxkcyIsIl90aGlzIiwibWFwIiwiZiIsInNhdmVQcm9wZXJ0aWVzT3JBcHBseVNjaGVtYSIsImxvYWQiLCJTY2hlbWEiLCJwcm9wZXJ0aWVzVjAiLCJpZCIsImxhYmVsIiwiY29sb3IiLCJhbGxEYXRhIiwidmVyc2lvbiIsIlZFUlNJT05TIiwidjAiLCJwcm9wZXJ0aWVzIiwicHJvcGVydGllc1YxIiwidjEiLCJkaXNhYmxlRGF0YU9wZXJhdGlvbiIsImdldEFsbERhdGFGb3JTYXZpbmciLCJkYXRhQ29udGFpbmVyIiwiZmxhdHRlbkRhdGEiLCJBcnJvd0RhdGFDb250YWluZXIiLCJudW1Db2x1bW5zIiwiX2xvb3AiLCJjb2x1bW5JbmRleCIsIl9jb2x1bW4kdHlwZSIsImNvbHVtbiIsImdldENvbHVtbiIsInR5cGVJZCIsIkFycm93VHlwZXMiLCJUaW1lc3RhbXAiLCJEYXRlIiwiVGltZSIsInJvdyIsInRvSVNPU3RyaW5nIiwiRGF0YXNldFNjaGVtYSIsIl9TY2hlbWEyIiwiX3RoaXMyIiwiX2xlbiIsImFyZ3MiLCJBcnJheSIsIl9rZXkiLCJjb25jYXQiLCJkYXRhc2V0IiwiZGF0YXNldEZsYXR0ZW5lZCIsIkRBVEFTRVRfRk9STUFUUyIsImFycm93IiwidXBkYXRlZEZpZWxkcyIsIm5lZWRDYWxjdWxhdGVNZXRhIiwiaGFzT3duUHJvcGVydHkiLCJmaWVsZE9yZGVyIiwic2FtcGxlRGF0YSIsImdldFNhbXBsZUZvclR5cGVBbmFseXplIiwicm93cyIsIm1ldGEiLCJnZXRGaWVsZHNGcm9tRGF0YSIsImkiLCJwaWNrIiwiZ2xvYmFsQ29uc29sZSIsIndhcm4iLCJkYXRhIiwiaW5mbyIsImRhdGFzZXRTY2hlbWEiLCJfZGVmYXVsdCJdLCJzb3VyY2VzIjpbIi4uL3NyYy9kYXRhc2V0LXNjaGVtYS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQgcGljayBmcm9tICdsb2Rhc2gucGljayc7XG5pbXBvcnQge2NvbnNvbGUgYXMgZ2xvYmFsQ29uc29sZX0gZnJvbSAnZ2xvYmFsL3dpbmRvdyc7XG5pbXBvcnQge1R5cGUgYXMgQXJyb3dUeXBlc30gZnJvbSAnYXBhY2hlLWFycm93JztcblxuaW1wb3J0IHtEQVRBU0VUX0ZPUk1BVFN9IGZyb20gJ0BrZXBsZXIuZ2wvY29uc3RhbnRzJztcbmltcG9ydCB7UHJvdG9EYXRhc2V0LCBSR0JDb2xvciwgSnNvbk9iamVjdH0gZnJvbSAnQGtlcGxlci5nbC90eXBlcyc7XG5pbXBvcnQge0tlcGxlclRhYmxlfSBmcm9tICdAa2VwbGVyLmdsL3RhYmxlJztcbmltcG9ydCB7VkVSU0lPTlN9IGZyb20gJy4vdmVyc2lvbnMnO1xuaW1wb3J0IFNjaGVtYSBmcm9tICcuL3NjaGVtYSc7XG5pbXBvcnQge2dldEZpZWxkc0Zyb21EYXRhLCBnZXRTYW1wbGVGb3JUeXBlQW5hbHl6ZX0gZnJvbSAnQGtlcGxlci5nbC9jb21tb24tdXRpbHMnO1xuaW1wb3J0IHtBcnJvd0RhdGFDb250YWluZXIsIERhdGFDb250YWluZXJJbnRlcmZhY2V9IGZyb20gJ0BrZXBsZXIuZ2wvdXRpbHMnO1xuXG5leHBvcnQgdHlwZSBTYXZlZEZpZWxkID0ge1xuICBuYW1lOiBzdHJpbmc7XG4gIHR5cGU6IHN0cmluZztcbiAgZm9ybWF0Pzogc3RyaW5nO1xuICBhbmFseXplclR5cGU/OiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBQYXJzZWRGaWVsZCA9IHtcbiAgbmFtZTogc3RyaW5nO1xuICB0eXBlOiBzdHJpbmc7XG4gIGZvcm1hdDogc3RyaW5nO1xuICBhbmFseXplclR5cGU6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIFNhdmVkRGF0YXNldFYxID0ge1xuICB2ZXJzaW9uOiAndjEnO1xuICBkYXRhOiB7XG4gICAgaWQ6IHN0cmluZztcbiAgICBsYWJlbDogc3RyaW5nO1xuICAgIGNvbG9yOiBSR0JDb2xvcjtcbiAgICBhbGxEYXRhOiBhbnlbXVtdO1xuICAgIGZpZWxkczogU2F2ZWRGaWVsZFtdO1xuICAgIHR5cGU/OiBzdHJpbmc7XG4gICAgbWV0YWRhdGE/OiBKc29uT2JqZWN0O1xuICAgIGRpc2FibGVEYXRhT3BlcmF0aW9uPzogYm9vbGVhbjtcbiAgfTtcbn07XG5cbmV4cG9ydCB0eXBlIFBhcnNlZERhdGFzZXQgPSB7XG4gIGRhdGE6IHtcbiAgICBmaWVsZHM6IFBhcnNlZEZpZWxkW107XG4gICAgcm93czogYW55W11bXTtcbiAgfTtcbiAgaW5mbzoge1xuICAgIGlkPzogc3RyaW5nO1xuICAgIGxhYmVsPzogc3RyaW5nO1xuICAgIGNvbG9yPzogUkdCQ29sb3I7XG4gIH07XG59O1xuXG4vLyB2ZXJzaW9uIHYwXG5leHBvcnQgY29uc3QgZmllbGRQcm9wZXJ0aWVzVjAgPSB7XG4gIG5hbWU6IG51bGwsXG4gIHR5cGU6IG51bGxcbn07XG5cbmV4cG9ydCBjb25zdCBmaWVsZFByb3BlcnRpZXNWMSA9IHtcbiAgbmFtZTogbnVsbCxcbiAgdHlwZTogbnVsbCxcbiAgZm9ybWF0OiBudWxsLFxuICBhbmFseXplclR5cGU6IG51bGwsXG4gIG1ldGFkYXRhOiBudWxsXG59O1xuXG5leHBvcnQgY2xhc3MgRmllbGRTY2hlbWEgZXh0ZW5kcyBTY2hlbWEge1xuICBzYXZlKGZpZWxkcykge1xuICAgIHJldHVybiB7XG4gICAgICBbdGhpcy5rZXldOiBmaWVsZHMubWFwKGYgPT4gdGhpcy5zYXZlUHJvcGVydGllc09yQXBwbHlTY2hlbWEoZilbdGhpcy5rZXldKVxuICAgIH07XG4gIH1cbiAgbG9hZChmaWVsZHMpIHtcbiAgICByZXR1cm4ge1t0aGlzLmtleV06IGZpZWxkc307XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IHByb3BlcnRpZXNWMCA9IHtcbiAgaWQ6IG51bGwsXG4gIGxhYmVsOiBudWxsLFxuICBjb2xvcjogbnVsbCxcbiAgYWxsRGF0YTogbnVsbCxcbiAgZmllbGRzOiBuZXcgRmllbGRTY2hlbWEoe1xuICAgIGtleTogJ2ZpZWxkcycsXG4gICAgdmVyc2lvbjogVkVSU0lPTlMudjAsXG4gICAgcHJvcGVydGllczogZmllbGRQcm9wZXJ0aWVzVjBcbiAgfSlcbn07XG5cbmV4cG9ydCBjb25zdCBwcm9wZXJ0aWVzVjEgPSB7XG4gIC4uLnByb3BlcnRpZXNWMCxcbiAgZmllbGRzOiBuZXcgRmllbGRTY2hlbWEoe1xuICAgIGtleTogJ2ZpZWxkcycsXG4gICAgdmVyc2lvbjogVkVSU0lPTlMudjEsXG4gICAgcHJvcGVydGllczogZmllbGRQcm9wZXJ0aWVzVjFcbiAgfSksXG4gIHR5cGU6IG51bGwsXG4gIG1ldGFkYXRhOiBudWxsLFxuICBkaXNhYmxlRGF0YU9wZXJhdGlvbjogbnVsbFxufTtcblxuLyoqXG4gKiBUT0RPIENvbnNpZGVyIG1vdmluZyB0aGlzIGNhc3QgdG8gQXJyb3dEYXRhQ29udGFpbmVyP1xuICogUHJlcGFyZSBhIGRhdGEgY29udGFpbmVyIGZvciBleHBvcnQgYXMgcGFydCBvZiBqc29uIC8gaHRtbC5cbiAqIDEpIEFycm93IHRhYmxlcyBjYW4gc3RvcmUgVGltZXN0YW1wcyBhcyBCaWdJbnRzLCBzbyBjb252ZXJ0IG51bWJlcnMgdG8gSVNPU3RyaW5ncyBjb21wYXRpYmxlIHdpdGggS2VwbGVyLmdsJ3MgVElNRVNUQU1QLlxuICogQHBhcmFtIGRhdGFDb250YWluZXIgQSBkYXRhIGNvbnRhaW5lciB0byBmbGF0dGVuLlxuICogQHJldHVybnMgUm93IGJhc2VkIGRhdGEuXG4gKi9cbmNvbnN0IGdldEFsbERhdGFGb3JTYXZpbmcgPSAoZGF0YUNvbnRhaW5lcjogRGF0YUNvbnRhaW5lckludGVyZmFjZSk6IGFueVtdW10gPT4ge1xuICBjb25zdCBhbGxEYXRhID0gZGF0YUNvbnRhaW5lci5mbGF0dGVuRGF0YSgpO1xuXG4gIGlmIChkYXRhQ29udGFpbmVyIGluc3RhbmNlb2YgQXJyb3dEYXRhQ29udGFpbmVyKSB7XG4gICAgY29uc3QgbnVtQ29sdW1ucyA9IGRhdGFDb250YWluZXIubnVtQ29sdW1ucygpO1xuXG4gICAgZm9yIChsZXQgY29sdW1uSW5kZXggPSAwOyBjb2x1bW5JbmRleCA8IG51bUNvbHVtbnM7ICsrY29sdW1uSW5kZXgpIHtcbiAgICAgIGNvbnN0IGNvbHVtbiA9IGRhdGFDb250YWluZXIuZ2V0Q29sdW1uKGNvbHVtbkluZGV4KTtcbiAgICAgIGNvbnN0IHR5cGVJZCA9IGNvbHVtbi50eXBlPy50eXBlSWQ7XG4gICAgICBpZiAoXG4gICAgICAgIHR5cGVJZCA9PT0gQXJyb3dUeXBlcy5UaW1lc3RhbXAgfHxcbiAgICAgICAgdHlwZUlkID09PSBBcnJvd1R5cGVzLkRhdGUgfHxcbiAgICAgICAgdHlwZUlkID09PSBBcnJvd1R5cGVzLlRpbWVcbiAgICAgICkge1xuICAgICAgICBhbGxEYXRhLmZvckVhY2gocm93ID0+IHtcbiAgICAgICAgICByb3dbY29sdW1uSW5kZXhdID0gbmV3IERhdGUocm93W2NvbHVtbkluZGV4XSkudG9JU09TdHJpbmcoKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGFsbERhdGE7XG59O1xuXG5leHBvcnQgY2xhc3MgRGF0YXNldFNjaGVtYSBleHRlbmRzIFNjaGVtYSB7XG4gIGtleSA9ICdkYXRhc2V0JztcblxuICBzYXZlKGRhdGFzZXQ6IEtlcGxlclRhYmxlKTogU2F2ZWREYXRhc2V0VjFbJ2RhdGEnXSB7XG4gICAgY29uc3QgZGF0YXNldEZsYXR0ZW5lZCA9IGRhdGFzZXQuZGF0YUNvbnRhaW5lclxuICAgICAgPyB7XG4gICAgICAgICAgLi4uZGF0YXNldCxcbiAgICAgICAgICBhbGxEYXRhOiBnZXRBbGxEYXRhRm9yU2F2aW5nKGRhdGFzZXQuZGF0YUNvbnRhaW5lciksXG4gICAgICAgICAgLy8gd2UgdXNlIGZsYXR0ZW5EYXRhIHRvIHNhdmUgYXJyb3cgdGFibGVzLFxuICAgICAgICAgIC8vIGJ1dCBvbmNlIGZsYXR0ZW5lZCBpdCdzIG5vdCBhbiBhcnJvdyBmaWxlIGFueW1vcmUuXG4gICAgICAgICAgbWV0YWRhdGE6IHtcbiAgICAgICAgICAgIC4uLmRhdGFzZXQubWV0YWRhdGEsXG4gICAgICAgICAgICAuLi4oZGF0YXNldC5tZXRhZGF0YS5mb3JtYXQgPT09IERBVEFTRVRfRk9STUFUUy5hcnJvd1xuICAgICAgICAgICAgICA/IHtmb3JtYXQ6IERBVEFTRVRfRk9STUFUUy5yb3d9XG4gICAgICAgICAgICAgIDoge30pXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICA6IGRhdGFzZXQ7XG5cbiAgICByZXR1cm4gdGhpcy5zYXZlUHJvcGVydGllc09yQXBwbHlTY2hlbWEoZGF0YXNldEZsYXR0ZW5lZClbdGhpcy5rZXldO1xuICB9XG4gIGxvYWQoZGF0YXNldDogU2F2ZWREYXRhc2V0VjFbJ2RhdGEnXSk6IFByb3RvRGF0YXNldCB7XG4gICAgY29uc3Qge2ZpZWxkcywgYWxsRGF0YX0gPSBkYXRhc2V0O1xuICAgIGxldCB1cGRhdGVkRmllbGRzID0gZmllbGRzO1xuXG4gICAgLy8gcmVjYWxjdWxhdGUgZmllbGQgdHlwZVxuICAgIC8vIGJlY2F1c2Ugd2UgaGF2ZSB1cGRhdGVkIHR5cGUtYW5hbHl6ZXJcbiAgICAvLyB3ZSBuZWVkIHRvIGFkZCBmb3JtYXQgdG8gZWFjaCBmaWVsZFxuICAgIGNvbnN0IG5lZWRDYWxjdWxhdGVNZXRhID1cbiAgICAgIGZpZWxkc1swXSAmJlxuICAgICAgKCFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZmllbGRzWzBdLCAnZm9ybWF0JykgfHxcbiAgICAgICAgIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChmaWVsZHNbMF0sICdhbmFseXplclR5cGUnKSk7XG5cbiAgICBpZiAobmVlZENhbGN1bGF0ZU1ldGEpIHtcbiAgICAgIGNvbnN0IGZpZWxkT3JkZXIgPSBmaWVsZHMubWFwKGYgPT4gZi5uYW1lKTtcblxuICAgICAgY29uc3Qgc2FtcGxlRGF0YSA9IGdldFNhbXBsZUZvclR5cGVBbmFseXplKHtcbiAgICAgICAgZmllbGRzOiBmaWVsZE9yZGVyLFxuICAgICAgICByb3dzOiBhbGxEYXRhXG4gICAgICB9KTtcbiAgICAgIGNvbnN0IG1ldGEgPSBnZXRGaWVsZHNGcm9tRGF0YShzYW1wbGVEYXRhLCBmaWVsZE9yZGVyKTtcblxuICAgICAgdXBkYXRlZEZpZWxkcyA9IG1ldGEubWFwKChmLCBpKSA9PiAoe1xuICAgICAgICAuLi5waWNrKG1ldGFbaV0sIFsnbmFtZScsICd0eXBlJywgJ2Zvcm1hdCddKSxcbiAgICAgICAgYW5hbHl6ZXJUeXBlOiBtZXRhW2ldLmFuYWx5emVyVHlwZVxuICAgICAgfSkpO1xuXG4gICAgICB1cGRhdGVkRmllbGRzLmZvckVhY2goKGYsIGkpID0+IHtcbiAgICAgICAgaWYgKGZpZWxkc1tpXS50eXBlICE9PSBmLnR5cGUpIHtcbiAgICAgICAgICAvLyBpZiBuZXdseSBkZXRlY3RlZCBmaWVsZCB0eXBlIGlzIGRpZmZlcmVudCBmcm9tIHNhdmVkIHR5cGVcbiAgICAgICAgICAvLyB3ZSBsb2cgaXQgYnV0IHdvbid0IHVwZGF0ZSBpdCwgY2F1c2Ugd2UgZG9uJ3Qgd2FudCB0byBicmVhayBwZW9wbGUncyBtYXBcbiAgICAgICAgICBnbG9iYWxDb25zb2xlLndhcm4oYGRldGVjdCAke2YubmFtZX0gdHlwZSBpcyBub3cgJHtmLnR5cGV9IGluc3RlYWQgb2YgJHtmaWVsZHNbaV0udHlwZX1gKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gZ2V0IGZvcm1hdCBvZiBhbGwgZmllbGRzXG4gICAgcmV0dXJuIHtcbiAgICAgIGRhdGE6IHtmaWVsZHM6IHVwZGF0ZWRGaWVsZHMsIHJvd3M6IGRhdGFzZXQuYWxsRGF0YX0sXG4gICAgICBpbmZvOiBwaWNrKGRhdGFzZXQsIFsnaWQnLCAnbGFiZWwnLCAnY29sb3InLCAndHlwZSddKSxcbiAgICAgIC4uLihkYXRhc2V0Lm1ldGFkYXRhID8ge21ldGFkYXRhOiBkYXRhc2V0Lm1ldGFkYXRhfSA6IHt9KSxcbiAgICAgIC4uLihkYXRhc2V0LmRpc2FibGVEYXRhT3BlcmF0aW9uID8ge2Rpc2FibGVEYXRhT3BlcmF0aW9uOiBkYXRhc2V0LmRpc2FibGVEYXRhT3BlcmF0aW9ufSA6IHt9KVxuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IGRhdGFzZXRTY2hlbWEgPSB7XG4gIFtWRVJTSU9OUy52MF06IG5ldyBEYXRhc2V0U2NoZW1hKHtcbiAgICBrZXk6ICdkYXRhc2V0JyxcbiAgICB2ZXJzaW9uOiBWRVJTSU9OUy52MCxcbiAgICBwcm9wZXJ0aWVzOiBwcm9wZXJ0aWVzVjBcbiAgfSksXG4gIFtWRVJTSU9OUy52MV06IG5ldyBEYXRhc2V0U2NoZW1hKHtcbiAgICBrZXk6ICdkYXRhc2V0JyxcbiAgICB2ZXJzaW9uOiBWRVJTSU9OUy52MSxcbiAgICBwcm9wZXJ0aWVzOiBwcm9wZXJ0aWVzVjFcbiAgfSlcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGRhdGFzZXRTY2hlbWE7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFHQSxJQUFBQSxPQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxPQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxZQUFBLEdBQUFGLE9BQUE7QUFFQSxJQUFBRyxVQUFBLEdBQUFILE9BQUE7QUFHQSxJQUFBSSxTQUFBLEdBQUFKLE9BQUE7QUFDQSxJQUFBSyxPQUFBLEdBQUFOLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBTSxZQUFBLEdBQUFOLE9BQUE7QUFDQSxJQUFBTyxNQUFBLEdBQUFQLE9BQUE7QUFBNEUsU0FBQVEsUUFBQUMsQ0FBQSxFQUFBQyxDQUFBLFFBQUFDLENBQUEsR0FBQUMsTUFBQSxDQUFBQyxJQUFBLENBQUFKLENBQUEsT0FBQUcsTUFBQSxDQUFBRSxxQkFBQSxRQUFBQyxDQUFBLEdBQUFILE1BQUEsQ0FBQUUscUJBQUEsQ0FBQUwsQ0FBQSxHQUFBQyxDQUFBLEtBQUFLLENBQUEsR0FBQUEsQ0FBQSxDQUFBQyxNQUFBLFdBQUFOLENBQUEsV0FBQUUsTUFBQSxDQUFBSyx3QkFBQSxDQUFBUixDQUFBLEVBQUFDLENBQUEsRUFBQVEsVUFBQSxPQUFBUCxDQUFBLENBQUFRLElBQUEsQ0FBQUMsS0FBQSxDQUFBVCxDQUFBLEVBQUFJLENBQUEsWUFBQUosQ0FBQTtBQUFBLFNBQUFVLGNBQUFaLENB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
|
package/src/schemas/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kepler.gl/schemas",
|
|
3
3
|
"author": "Shan He <shan@uber.com>",
|
|
4
|
-
"version": "3.1.0
|
|
4
|
+
"version": "3.1.0",
|
|
5
5
|
"description": "kepler.gl schemas used by kepler.gl components, actions and reducers",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"main": "dist/index.js",
|
|
@@ -30,16 +30,17 @@
|
|
|
30
30
|
"umd"
|
|
31
31
|
],
|
|
32
32
|
"dependencies": {
|
|
33
|
-
"@kepler.gl/common-utils": "3.1.0
|
|
34
|
-
"@kepler.gl/constants": "3.1.0
|
|
35
|
-
"@kepler.gl/layers": "3.1.0
|
|
36
|
-
"@kepler.gl/table": "3.1.0
|
|
37
|
-
"@kepler.gl/types": "3.1.0
|
|
38
|
-
"@kepler.gl/utils": "3.1.0
|
|
33
|
+
"@kepler.gl/common-utils": "3.1.0",
|
|
34
|
+
"@kepler.gl/constants": "3.1.0",
|
|
35
|
+
"@kepler.gl/layers": "3.1.0",
|
|
36
|
+
"@kepler.gl/table": "3.1.0",
|
|
37
|
+
"@kepler.gl/types": "3.1.0",
|
|
38
|
+
"@kepler.gl/utils": "3.1.0",
|
|
39
39
|
"@loaders.gl/loader-utils": "^4.3.2",
|
|
40
40
|
"@types/keymirror": "^0.1.1",
|
|
41
41
|
"@types/lodash.clonedeep": "^4.5.7",
|
|
42
42
|
"@types/lodash.pick": "^4.4.6",
|
|
43
|
+
"apache-arrow": ">=15.0.0",
|
|
43
44
|
"global": "^4.3.0",
|
|
44
45
|
"keymirror": "^0.1.1",
|
|
45
46
|
"lodash.clonedeep": "^4.0.1",
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
|
|
4
4
|
import pick from 'lodash.pick';
|
|
5
5
|
import {console as globalConsole} from 'global/window';
|
|
6
|
+
import {Type as ArrowTypes} from 'apache-arrow';
|
|
6
7
|
|
|
7
8
|
import {DATASET_FORMATS} from '@kepler.gl/constants';
|
|
8
9
|
import {ProtoDataset, RGBColor, JsonObject} from '@kepler.gl/types';
|
|
@@ -10,6 +11,7 @@ import {KeplerTable} from '@kepler.gl/table';
|
|
|
10
11
|
import {VERSIONS} from './versions';
|
|
11
12
|
import Schema from './schema';
|
|
12
13
|
import {getFieldsFromData, getSampleForTypeAnalyze} from '@kepler.gl/common-utils';
|
|
14
|
+
import {ArrowDataContainer, DataContainerInterface} from '@kepler.gl/utils';
|
|
13
15
|
|
|
14
16
|
export type SavedField = {
|
|
15
17
|
name: string;
|
|
@@ -100,6 +102,37 @@ export const propertiesV1 = {
|
|
|
100
102
|
disableDataOperation: null
|
|
101
103
|
};
|
|
102
104
|
|
|
105
|
+
/**
|
|
106
|
+
* TODO Consider moving this cast to ArrowDataContainer?
|
|
107
|
+
* Prepare a data container for export as part of json / html.
|
|
108
|
+
* 1) Arrow tables can store Timestamps as BigInts, so convert numbers to ISOStrings compatible with Kepler.gl's TIMESTAMP.
|
|
109
|
+
* @param dataContainer A data container to flatten.
|
|
110
|
+
* @returns Row based data.
|
|
111
|
+
*/
|
|
112
|
+
const getAllDataForSaving = (dataContainer: DataContainerInterface): any[][] => {
|
|
113
|
+
const allData = dataContainer.flattenData();
|
|
114
|
+
|
|
115
|
+
if (dataContainer instanceof ArrowDataContainer) {
|
|
116
|
+
const numColumns = dataContainer.numColumns();
|
|
117
|
+
|
|
118
|
+
for (let columnIndex = 0; columnIndex < numColumns; ++columnIndex) {
|
|
119
|
+
const column = dataContainer.getColumn(columnIndex);
|
|
120
|
+
const typeId = column.type?.typeId;
|
|
121
|
+
if (
|
|
122
|
+
typeId === ArrowTypes.Timestamp ||
|
|
123
|
+
typeId === ArrowTypes.Date ||
|
|
124
|
+
typeId === ArrowTypes.Time
|
|
125
|
+
) {
|
|
126
|
+
allData.forEach(row => {
|
|
127
|
+
row[columnIndex] = new Date(row[columnIndex]).toISOString();
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
return allData;
|
|
134
|
+
};
|
|
135
|
+
|
|
103
136
|
export class DatasetSchema extends Schema {
|
|
104
137
|
key = 'dataset';
|
|
105
138
|
|
|
@@ -107,7 +140,7 @@ export class DatasetSchema extends Schema {
|
|
|
107
140
|
const datasetFlattened = dataset.dataContainer
|
|
108
141
|
? {
|
|
109
142
|
...dataset,
|
|
110
|
-
allData: dataset.dataContainer
|
|
143
|
+
allData: getAllDataForSaving(dataset.dataContainer),
|
|
111
144
|
// we use flattenData to save arrow tables,
|
|
112
145
|
// but once flattened it's not an arrow file anymore.
|
|
113
146
|
metadata: {
|